diff -Nrcpad gcc-15-20250726/ChangeLog gcc-15-20250809/ChangeLog
*** gcc-15-20250726/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/LAST_UPDATED gcc-15-20250809/LAST_UPDATED
*** gcc-15-20250726/LAST_UPDATED	Sat Jul 26 22:34:25 2025
--- gcc-15-20250809/LAST_UPDATED	Sat Aug  9 22:33:47 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision b26588f0cb42a6a37ad7c303e61b23f471758e0c
--- 1 ----
! Obtained from git: releases/gcc-15 revision 929da38d40817975265fbcfe7a3373f536b3383a
diff -Nrcpad gcc-15-20250726/MD5SUMS gcc-15-20250809/MD5SUMS
*** gcc-15-20250726/MD5SUMS	Sat Jul 26 22:34:29 2025
--- gcc-15-20250809/MD5SUMS	Sat Aug  9 22:33:51 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20250726.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-20250809.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
*************** b8acb527560fc760209d200fcfab8ff4  .githu
*** 21,31 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 8375ff90cdddca3fcb23984bb16384d9  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! a10528394b34ec4dc002bbe179398596  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 21,31 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 272b5deddad24f1fce1955c36d4e873b  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! b01781f0326a5618689c509c0d77075f  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
*************** b714b83dd28679b75c5fd3e619d35956  Makefi
*** 33,39 ****
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  d91842c1dd3e9080dd06b73340b682ee  SECURITY.txt
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
! 315518c6fe7919681faf8833f9abcc3c  c++tools/ChangeLog
  772c4970b4827d9e21c892d684ee204e  c++tools/Makefile.in
  edf805e559bf9ecb62db313d2e6edb47  c++tools/config.h.in
  c37ea1a2f77642729239faeefeabadb1  c++tools/configure
--- 33,39 ----
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  d91842c1dd3e9080dd06b73340b682ee  SECURITY.txt
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
! 6cf0c727fb5a7c8af403f38d3bd2ca35  c++tools/ChangeLog
  772c4970b4827d9e21c892d684ee204e  c++tools/Makefile.in
  edf805e559bf9ecb62db313d2e6edb47  c++tools/config.h.in
  c37ea1a2f77642729239faeefeabadb1  c++tools/configure
*************** c37ea1a2f77642729239faeefeabadb1  c++too
*** 46,52 ****
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! e9c59d4d5ac1ef99c83703a6f812ffe3  config/ChangeLog
  e8365ab73da09dccff77a6e2ad006a68  config/acinclude.m4
  e1b259699840442ff915265a77b3a578  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
--- 46,52 ----
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! a48242244fc185385c19765cc3045b86  config/ChangeLog
  e8365ab73da09dccff77a6e2ad006a68  config/acinclude.m4
  e1b259699840442ff915265a77b3a578  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 153,159 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  03e84607a1c4478aa65bd53937ed3aea  configure
  a10daf98a334165ec89e62510a1eb0a0  configure.ac
! 07ddb1eaec7fe2ca352e762c5887dc55  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
--- 153,159 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  03e84607a1c4478aa65bd53937ed3aea  configure
  a10daf98a334165ec89e62510a1eb0a0  configure.ac
! 485cb6acfe45fd1d86facd7ffa527544  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
*************** f87a91c941a8aaa300ac60c24979992b  contri
*** 212,218 ****
  587c829d88826fb8a7d70b7b8aa47a6c  contrib/git-fix-changelog.py
  5d80e88da5ae83c53513280bcff7c0a1  contrib/git-undescr.sh
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 5960586a45ba90cd32e362d2db8bdb54  contrib/header-tools/ChangeLog
  20f6fa0b5366976230b0538c5b0ae603  contrib/header-tools/README
  a674173d7f8b0f6c7c6cdb9f58e756f3  contrib/header-tools/count-headers
  8154e483c08f8955698d4e40aa8808ca  contrib/header-tools/gcc-order-headers
--- 212,218 ----
  587c829d88826fb8a7d70b7b8aa47a6c  contrib/git-fix-changelog.py
  5d80e88da5ae83c53513280bcff7c0a1  contrib/git-undescr.sh
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 92bfd0a60dd4b96066f6c876a94c3cb6  contrib/header-tools/ChangeLog
  20f6fa0b5366976230b0538c5b0ae603  contrib/header-tools/README
  a674173d7f8b0f6c7c6cdb9f58e756f3  contrib/header-tools/count-headers
  8154e483c08f8955698d4e40aa8808ca  contrib/header-tools/gcc-order-headers
*************** bda0e2d8e6960465c7778fe3856cdacc  contri
*** 254,260 ****
  2809fb88a72709fdece476dcdcb841a4  contrib/prerequisites.md5
  17fac6b39df387ffce2f399bf24a4193  contrib/prerequisites.sha512
  f6d7aacca35d091b5c304edef3e4472f  contrib/regenerate-sarif-spec-index.py
! b71a1fe0ab0f6758656bc29595baec62  contrib/reghunt/ChangeLog
  2f6b6802701c14f9274e2103987932d6  contrib/reghunt/bin/gcc-build-full
  371554c47a7769f6e4971984f84c5455  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
--- 254,260 ----
  2809fb88a72709fdece476dcdcb841a4  contrib/prerequisites.md5
  17fac6b39df387ffce2f399bf24a4193  contrib/prerequisites.sha512
  f6d7aacca35d091b5c304edef3e4472f  contrib/regenerate-sarif-spec-index.py
! c4edfcb7c08e5b93eb7d0be11414fa26  contrib/reghunt/ChangeLog
  2f6b6802701c14f9274e2103987932d6  contrib/reghunt/bin/gcc-build-full
  371554c47a7769f6e4971984f84c5455  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
*************** f251d49dd87647250fcd74dd50b7835f  contri
*** 313,319 ****
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 112777ac3f65c768701d16b591f23a6c  contrib/regression/ChangeLog
  30553bfced1b2b46bf7ca01ef6ba69d1  contrib/regression/GCC_Regression_Tester.wdgt/Default.png
  ad38ddd771df222eb9d413e3c7f6a751  contrib/regression/GCC_Regression_Tester.wdgt/Icon.png
  777bd286c147cc02861811f66b9a4440  contrib/regression/GCC_Regression_Tester.wdgt/Info.plist
--- 313,319 ----
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 079f53ac5fb01f742640a98b131c0567  contrib/regression/ChangeLog
  30553bfced1b2b46bf7ca01ef6ba69d1  contrib/regression/GCC_Regression_Tester.wdgt/Default.png
  ad38ddd771df222eb9d413e3c7f6a751  contrib/regression/GCC_Regression_Tester.wdgt/Icon.png
  777bd286c147cc02861811f66b9a4440  contrib/regression/GCC_Regression_Tester.wdgt/Info.plist
*************** f068aafb849bb6af444e7442e70106d7  contri
*** 365,371 ****
  9f709ddf34273ffe202ff79517103dbe  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! fb6064a7fd5431d130f354d05d549a15  fixincludes/ChangeLog
  4afe55f959b7cceb7055ff11a9ca0e32  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
--- 365,371 ----
  9f709ddf34273ffe202ff79517103dbe  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 1e570543150863bbe5c5d11eb8ece1fa  fixincludes/ChangeLog
  4afe55f959b7cceb7055ff11a9ca0e32  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 509,520 ****
  8baab8698bb83c6b90ef4091c00ddc1e  fixincludes/tests/base/unistd.h
  75d75572793b62bdd8ff4d1504e0cb4c  fixincludes/tests/base/yvals.h
  97329340dfb48ed4683fdb7d3f2f9014  gcc/ABOUT-GCC-NLS
! 3b6297fb9dd0de42b3f66287bbae45c4  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! cc53c3a4127f230f0cf5c86977832822  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 509,520 ----
  8baab8698bb83c6b90ef4091c00ddc1e  fixincludes/tests/base/unistd.h
  75d75572793b62bdd8ff4d1504e0cb4c  fixincludes/tests/base/yvals.h
  97329340dfb48ed4683fdb7d3f2f9014  gcc/ABOUT-GCC-NLS
! 42e810d1678bc1a2124c65c9e757b786  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 6c538d8031edeefa77269d13bdfea266  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
! 198c65b2d537bc5d194f380e2d9eb7ef  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
! ae9ad457d700b83fba127c1b231d73e5  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
! de24f3148ae61755decd3eb19669979a  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
! 5368a92edbfdaed06d06e3f0295dcd29  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** ec7cf235c00294fe67198b9bf264f3d9  gcc/ad
*** 838,844 ****
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  7d09f66d77b747916fdcfbba221e06d4  gcc/ada/gcc-interface/Make-lang.in
! 2aaadb71138cee29399d07dffa7d4f0c  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
--- 838,844 ----
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  7d09f66d77b747916fdcfbba221e06d4  gcc/ada/gcc-interface/Make-lang.in
! 340c726636cbeacc6902433be63c65a9  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
*************** df3f6c6882fc8f715d4cc537af0f6442  gcc/ad
*** 3080,3086 ****
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! 654fc53bc6a57dfe65c252da6fdcda3b  gcc/analyzer/ChangeLog
  0d3befc0b4bf59d902e1cf42adbe4bbf  gcc/analyzer/access-diagram.cc
  d06b0bdd3e866e801261efae99b70197  gcc/analyzer/access-diagram.h
  32d9f668dd8c176f7281357c6176be49  gcc/analyzer/analysis-plan.cc
--- 3080,3086 ----
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! 3508fa21f94580fa968e5f0996b93a23  gcc/analyzer/ChangeLog
  0d3befc0b4bf59d902e1cf42adbe4bbf  gcc/analyzer/access-diagram.cc
  d06b0bdd3e866e801261efae99b70197  gcc/analyzer/access-diagram.h
  32d9f668dd8c176f7281357c6176be49  gcc/analyzer/analysis-plan.cc
*************** f808dbcc1ad6add5a0867c4b3e03fc4d  gcc/bu
*** 3204,3210 ****
  2e944dea52dbc383e763e0585daa1b01  gcc/builtins.cc
  d86baafdac933140bc11c4cbfb28779e  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 1551b52b7e93ef9bc44fbb54633b846c  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
--- 3204,3210 ----
  2e944dea52dbc383e763e0585daa1b01  gcc/builtins.cc
  d86baafdac933140bc11c4cbfb28779e  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 4942911cf91e722d99706644ba8c3c55  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
*************** aaf683e3b02704cfbfab0627d82edf85  gcc/c-
*** 3247,3257 ****
  ce9d2259a1edb5d4b1f728988bd9ef6a  gcc/c-family/known-headers.h
  d1e9802a9c9cc0486941b538aaa07ff3  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 0f12263de1c204c8fdb7743b06770940  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! 68f235c0526998786d952f49f45e9d70  gcc/c/c-decl.cc
  3601ac6299bb2579fedc2dcf2aba7773  gcc/c/c-errors.cc
  d9b5dea1631cefab5fe5ca3602db30f0  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
--- 3247,3257 ----
  ce9d2259a1edb5d4b1f728988bd9ef6a  gcc/c-family/known-headers.h
  d1e9802a9c9cc0486941b538aaa07ff3  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 74f99d269b00bec80bf8cb8fedf92b1f  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! 8bf70b59fb3dc426c9608cd1fad229d9  gcc/c/c-decl.cc
  3601ac6299bb2579fedc2dcf2aba7773  gcc/c/c-errors.cc
  d9b5dea1631cefab5fe5ca3602db30f0  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
*************** f9dc3d10fbfaa2d38905bc4e2579ba2b  gcc/c/
*** 3262,3274 ****
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  f7331ce09e3bb7374f8cebf0a2195d47  gcc/c/c-tree.h
! 17aca11863d4c04fc1bf45fbb6d24d85  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  b908dbb3dee5ec448aacc3c5e1e430e7  gcc/c/gimple-parser.cc
  84e0373f5db72260d34cf125d8587f06  gcc/c/gimple-parser.h
  137bed6e3e62068dc6a3292ae42a0a4e  gcc/caller-save.cc
! 6d9c4078821fb156ad9b16d924229797  gcc/calls.cc
  5eea9a238f2c182f5964d1de966e6a34  gcc/calls.h
  f82c34d87e881cc4ed1624968519aa98  gcc/ccmp.cc
  5d9ee312518a07716ecbfe4b5ec17091  gcc/ccmp.h
--- 3262,3274 ----
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  f7331ce09e3bb7374f8cebf0a2195d47  gcc/c/c-tree.h
! a4abfef3c16be194f41e6d476f37b3a1  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  b908dbb3dee5ec448aacc3c5e1e430e7  gcc/c/gimple-parser.cc
  84e0373f5db72260d34cf125d8587f06  gcc/c/gimple-parser.h
  137bed6e3e62068dc6a3292ae42a0a4e  gcc/caller-save.cc
! 9fbd223ce209d612cdc332efec0e75f9  gcc/calls.cc
  5eea9a238f2c182f5964d1de966e6a34  gcc/calls.h
  f82c34d87e881cc4ed1624968519aa98  gcc/ccmp.cc
  5d9ee312518a07716ecbfe4b5ec17091  gcc/ccmp.h
*************** bbad65845fcf9cdbc5137d96f92eacab  gcc/cf
*** 3292,3352 ****
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
  c97195f1544d9bfc539271f27e7a26b4  gcc/cfgrtl.cc
  28d9dedd6044321fe1df02d3575f81e9  gcc/cfgrtl.h
! 93abcf1a38c47abbf2fa8a78a968389e  gcc/cgraph.cc
  f875e225a02290cf7ed2e05c968f6c5d  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
  0562ea4e5f8c7c62289a233a9c5b4268  gcc/cgraphclones.cc
  3be8ee84d005d8a1f5a65ed6a7fce76a  gcc/cgraphunit.cc
  70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
! ffabb89b93cc37785f3aa81ac6580151  gcc/cobol/ChangeLog
! deb0e476e1a3ed05018a11cf051df8ca  gcc/cobol/Make-lang.in
! 807541883353c7bbeb202e450714f616  gcc/cobol/cbldiag.h
! 2e07dc0042e68d69fc295c89702266f8  gcc/cobol/cdf-copy.cc
! f6a4da53b4f3a9a2bb01ef798976a717  gcc/cobol/cdf.y
! f0dbfcf1dedffa22b25991dbdc846baf  gcc/cobol/cdfval.h
! 77fc5e59eed5f55ff8b66d9138ca6c18  gcc/cobol/cobol-system.h
! 9730cec0c0f29c48260379a6352beec7  gcc/cobol/cobol1.cc
  5985e1898b04e553a91bdc474c56311f  gcc/cobol/config-lang.in
  aab9bcdb44bef72e1c3a8cd069bfcccd  gcc/cobol/convert.cc
! 85e293b3cfd63dd6ec31e1b03363d8de  gcc/cobol/copybook.h
! f65d6595cadb8c8279ca44981013ab0c  gcc/cobol/dts.h
! 82b8e55e34100aab5497fe2b06707279  gcc/cobol/except.cc
! d172f085bd37c1917b8d0019edfcfa37  gcc/cobol/exceptg.h
! a582c03845daff3a9fb0e5edba4a14f3  gcc/cobol/gcobc
! ab0636bdd5d2169c3e8d2ed11b1ac692  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
! 6d960c2f767b44b4eb386f424bbe4bd7  gcc/cobol/gcobolspec.cc
! 3630ffde37f1e156570ab13d04b2d17c  gcc/cobol/genapi.cc
! c64386b215dc54b1760982f960d196bf  gcc/cobol/genapi.h
! a4f2cba98579bb43f6c5fe1fd5053772  gcc/cobol/gengen.cc
! 5a15fbb14271aa588750f652642e3b68  gcc/cobol/gengen.h
! ea48e828f98b3272601ba527c745a987  gcc/cobol/genmath.cc
  d44e8c86d57fb704b6c1fbab3464fb9a  gcc/cobol/genmath.h
! 6cf88f8f4e6dd2038edb74db13756dfb  gcc/cobol/genutil.cc
! 73263b6727413c7095ca6a4e16ca88d8  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
! 7b5758bc973cca5cffb0d13f9071a412  gcc/cobol/inspect.h
! 9bff261865a91e8ee85d705fd5bb8143  gcc/cobol/lang-specs.h
! c0074d45ca6599230c4679735132c265  gcc/cobol/lang.opt
! d1170095b14aa5fa21862d07a27e29c8  gcc/cobol/lang.opt.urls
! f940454a6a9bdf88b764018c80d542c0  gcc/cobol/lexio.cc
! eab918ac4f71f5b18770f9dbb8f6b2b3  gcc/cobol/lexio.h
! 398d99f5fb4d1f5d49906524c0603428  gcc/cobol/parse.y
! 155650355ceebd00134399952c3b8201  gcc/cobol/parse_ante.h
! 4d55488629c09ff19bd872e7dd9d0fc7  gcc/cobol/parse_util.h
! 2d6e3f8957ed74c57219d6716cc6e349  gcc/cobol/scan.l
! 6167e94148de7a36424478c8b5ec44c8  gcc/cobol/scan_ante.h
! 412d402c454f4c3a5364bc98cfcf9096  gcc/cobol/scan_post.h
! 8085c8fff2ef5a491a4102efc3584d9f  gcc/cobol/show_parse.h
! 41da7e221616bf8ad018c4a6f314aa31  gcc/cobol/structs.cc
! 6a12fdf051ff87867b239b5ae272fd55  gcc/cobol/structs.h
! 3a6990c5b27156bdf03ff99b14b95a97  gcc/cobol/symbols.cc
! 0c1d589b57082cf5151b89c35374d3f2  gcc/cobol/symbols.h
! 14044cb9b824e92fc425d1c79db79d48  gcc/cobol/symfind.cc
! 7c1542762ea306322c1babf670d6b0aa  gcc/cobol/token_names.h
! 94ee230280ef44983fee5c81648f8669  gcc/cobol/udf/stored-char-length.cbl
! 32144a84bc901f5ecd6c557dab357b1b  gcc/cobol/util.cc
! 736341eac068276fa296b201670b03de  gcc/cobol/util.h
  0f3dba102a04da8ca1e45b9b16741bde  gcc/collect-utils.cc
  6e6685d60444844fecf36350b5956f77  gcc/collect-utils.h
  30202062ccc5696f6203f07ab6965763  gcc/collect2-aix.cc
--- 3292,3353 ----
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
  c97195f1544d9bfc539271f27e7a26b4  gcc/cfgrtl.cc
  28d9dedd6044321fe1df02d3575f81e9  gcc/cfgrtl.h
! 3ab8af6bed1c2fb237681bbc3cb6aed0  gcc/cgraph.cc
  f875e225a02290cf7ed2e05c968f6c5d  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
  0562ea4e5f8c7c62289a233a9c5b4268  gcc/cgraphclones.cc
  3be8ee84d005d8a1f5a65ed6a7fce76a  gcc/cgraphunit.cc
  70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
! c34034d7dfb097c181960ac975cfd92e  gcc/cobol/ChangeLog
! 38de2f3ba3eff58bbacc8dcdbdcd5be7  gcc/cobol/Make-lang.in
! 0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
! ff81b8f0fee01c60af0d84e2b6e6c7e3  gcc/cobol/cbldiag.h
! 030342886cc720f11f17d7691f6f24ae  gcc/cobol/cdf-copy.cc
! b7033ccad4ae579d60141168fb904aa8  gcc/cobol/cdf.y
! b916ef498fa1cc9821e56ab612f00f3a  gcc/cobol/cdfval.h
! fb65c7259141f1223fa29175a2e441ed  gcc/cobol/cobol-system.h
! 700d96c955db2d85a4da3d00138a4e5a  gcc/cobol/cobol1.cc
  5985e1898b04e553a91bdc474c56311f  gcc/cobol/config-lang.in
  aab9bcdb44bef72e1c3a8cd069bfcccd  gcc/cobol/convert.cc
! bdd6fbf13776c7983a16ac857615424c  gcc/cobol/copybook.h
! 3f5a0424b32cd09b107e8858af9cf15f  gcc/cobol/dts.h
! 0cc42085479c01abae9b69fd39db26a8  gcc/cobol/except.cc
! 8208f264c49dfd56f856e8a4229545b9  gcc/cobol/exceptg.h
! 4e726128e0c090e4f3a71efddf5ffa8c  gcc/cobol/gcobc
! 14b121f37018fb2571c4e1ac8f69d0a1  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
! 73289d340c158475a9c0e203a69fd96c  gcc/cobol/gcobolspec.cc
! b12bab0fac0bbfdd1adf898b5db34869  gcc/cobol/genapi.cc
! 797fd59c29555ae478d4d0c1d889e9a7  gcc/cobol/genapi.h
! 711ffde98c30b53bd78b59663250da5e  gcc/cobol/gengen.cc
! e9232e498b04c68faa18eb31fabd8177  gcc/cobol/gengen.h
! c1182aa9280b379f0ba83879a6008ef7  gcc/cobol/genmath.cc
  d44e8c86d57fb704b6c1fbab3464fb9a  gcc/cobol/genmath.h
! 8f32919e6f61718b1db29fb4b9ae2ea1  gcc/cobol/genutil.cc
! 0bf535aa2c65d8348460ace042ee6b79  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
! 0fa33dbe050697f40b5e8df91896da9a  gcc/cobol/inspect.h
! 2c85ade938027e95c4c411b384f6ad11  gcc/cobol/lang-specs.h
! 4ab99742b15962360c2189eb9cdb087c  gcc/cobol/lang.opt
! 746a2d46b3bc2a5f5663a9d64a78a674  gcc/cobol/lang.opt.urls
! 7bab28df69a22be2ad0a8d95ec263e2d  gcc/cobol/lexio.cc
! 5953c820cdc03feb815bfbf28c10730c  gcc/cobol/lexio.h
! 474efac0104ac60ca10e8144f1dec9f5  gcc/cobol/parse.y
! 86fab272aa025f60db4c44ca52316ffe  gcc/cobol/parse_ante.h
! e141e23293fb343e7ccbaa2fe6bcef33  gcc/cobol/parse_util.h
! 5867381ff3c4a77f01b91b925f3e9ce4  gcc/cobol/scan.l
! de93b808ce631b9d18f96b69bcbe4ac8  gcc/cobol/scan_ante.h
! 20dead6c32b0fb6b826220e76ae691a8  gcc/cobol/scan_post.h
! b1fcf3cab39d3874200f92620f2a54e9  gcc/cobol/show_parse.h
! d75653f25ec3b747265e4ab78aa71521  gcc/cobol/structs.cc
! be06e098e0c2eb8f8ac2f0094bf53181  gcc/cobol/structs.h
! e5ff9d25c23e0c5fd9a7d82589c83f27  gcc/cobol/symbols.cc
! 7fe837511da66531d20c3897e34bfa13  gcc/cobol/symbols.h
! de4928630bb37aa4064841c89cdf22a2  gcc/cobol/symfind.cc
! 27218e3639557e7e74246aa4982f089c  gcc/cobol/token_names.h
! 434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! f8c49d8f30488259dcd321525a0bc201  gcc/cobol/util.cc
! ed3f467605b997678af9e5189497d41b  gcc/cobol/util.h
  0f3dba102a04da8ca1e45b9b16741bde  gcc/collect-utils.cc
  6e6685d60444844fecf36350b5956f77  gcc/collect-utils.h
  30202062ccc5696f6203f07ab6965763  gcc/collect2-aix.cc
*************** dae02ebe59cdaaf21611ad354e939ca5  gcc/co
*** 3369,3375 ****
  583d89cf5b4ff63572bfcd107bd598e1  gcc/common/config/alpha/alpha-common.cc
  c54d5f1066ada6f197004c84bc9e6a63  gcc/common/config/arc/arc-common.cc
  a2257a45385715383445b186a608b85d  gcc/common/config/arm/arm-common.cc
! d46d4dd1040566e89c7089c05c95efb6  gcc/common/config/avr/avr-common.cc
  94fd737b0a4e5a33efec7b5a5e6ba9d1  gcc/common/config/bfin/bfin-common.cc
  539502c377f03b36d40016cfd9259d53  gcc/common/config/bpf/bpf-common.cc
  e278f87d704fd4b4533b822677f52229  gcc/common/config/c6x/c6x-common.cc
--- 3370,3376 ----
  583d89cf5b4ff63572bfcd107bd598e1  gcc/common/config/alpha/alpha-common.cc
  c54d5f1066ada6f197004c84bc9e6a63  gcc/common/config/arc/arc-common.cc
  a2257a45385715383445b186a608b85d  gcc/common/config/arm/arm-common.cc
! b834ac8f2f7b5ad39cb3c24d5299c633  gcc/common/config/avr/avr-common.cc
  94fd737b0a4e5a33efec7b5a5e6ba9d1  gcc/common/config/bfin/bfin-common.cc
  539502c377f03b36d40016cfd9259d53  gcc/common/config/bpf/bpf-common.cc
  e278f87d704fd4b4533b822677f52229  gcc/common/config/c6x/c6x-common.cc
*************** ddbb7a934f8b8aa068e7b765c4375fbe  gcc/co
*** 3429,3435 ****
  d1e3bcda28d89d23e45fed74c629752a  gcc/config/aarch64/aarch64-c.cc
  ba4e797220b33827e769b09447623896  gcc/config/aarch64/aarch64-cc-fusion.cc
  133f61af7e288fe91ca31c659939c551  gcc/config/aarch64/aarch64-coff.h
! 61a6ea51f727c8e7a93590b1a91c29fa  gcc/config/aarch64/aarch64-cores.def
  f0a8397b1e293e23f65674cd004845ae  gcc/config/aarch64/aarch64-cost-tables.h
  bef2a61270424fd606c71d78d20ad675  gcc/config/aarch64/aarch64-d.cc
  36405b6300d5ec6ca8faf17212ad1bc9  gcc/config/aarch64/aarch64-d.h
--- 3430,3436 ----
  d1e3bcda28d89d23e45fed74c629752a  gcc/config/aarch64/aarch64-c.cc
  ba4e797220b33827e769b09447623896  gcc/config/aarch64/aarch64-cc-fusion.cc
  133f61af7e288fe91ca31c659939c551  gcc/config/aarch64/aarch64-coff.h
! 8b59e9f9bf194c999ccfdbaf58382401  gcc/config/aarch64/aarch64-cores.def
  f0a8397b1e293e23f65674cd004845ae  gcc/config/aarch64/aarch64-cost-tables.h
  bef2a61270424fd606c71d78d20ad675  gcc/config/aarch64/aarch64-d.cc
  36405b6300d5ec6ca8faf17212ad1bc9  gcc/config/aarch64/aarch64-d.h
*************** d9450e0fa15cd8b8f6659555820ec24e  gcc/co
*** 3456,3462 ****
  f28e7beab7cc8baa0b1a2e5e9efc0597  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
  289754bc9c6eb2b3ec2ebb609d36de73  gcc/config/aarch64/aarch64-simd.md
! e3fe67e652934d5092addccac9c9f30a  gcc/config/aarch64/aarch64-sme.md
  221b858bba4517a3871cb07292c6b216  gcc/config/aarch64/aarch64-speculation.cc
  9ab182bab4cc10bb9676b1309abb562f  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
--- 3457,3463 ----
  f28e7beab7cc8baa0b1a2e5e9efc0597  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
  289754bc9c6eb2b3ec2ebb609d36de73  gcc/config/aarch64/aarch64-simd.md
! 400cf23fe3c345ede58d2194530c6231  gcc/config/aarch64/aarch64-sme.md
  221b858bba4517a3871cb07292c6b216  gcc/config/aarch64/aarch64-speculation.cc
  9ab182bab4cc10bb9676b1309abb562f  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
*************** a16f9cae06244c0294eb2792a27ba07a  gcc/co
*** 3479,3485 ****
  b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! 78e3320a3e2166f133ba5b1e387491a9  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
  411e1d3571eca6300daf26431a1f99c7  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
--- 3480,3486 ----
  b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! 07893eeffa57c0900abac4a060662839  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
  411e1d3571eca6300daf26431a1f99c7  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
*************** d1b95435bb177952f26d761fee7430d6  gcc/co
*** 3542,3547 ****
--- 3543,3549 ----
  067f90a712678085bed8b60608edfc4b  gcc/config/aarch64/tuning_models/neoversev2.h
  42edc79260b9e5687e2f6d3c54678870  gcc/config/aarch64/tuning_models/neoversev3.h
  53b5e25dd9d162d4a60fa9c5e2ad104f  gcc/config/aarch64/tuning_models/neoversev3ae.h
+ 7384cb5a512d446afe4c8d5d99ac4735  gcc/config/aarch64/tuning_models/olympus.h
  e0ea9a60e19c47697127edd6550da663  gcc/config/aarch64/tuning_models/qdf24xx.h
  1846be94d3382c182fb7d9a19bc9e042  gcc/config/aarch64/tuning_models/saphira.h
  9f37e6e78ab3e5e066a76b94257321a5  gcc/config/aarch64/tuning_models/thunderx.h
*************** d790ecc09ebef93e83ed249e4941fda4  gcc/co
*** 3723,3729 ****
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
  8f026aba2fb3043f536516c1ed3776c7  gcc/config/arm/parsecpu.awk
! 16b1cf453920910923274f7a62e5d3bb  gcc/config/arm/predicates.md
  1f3ea8d6e519c40935905506e989956d  gcc/config/arm/rtems.h
  708681c9ad5a879b29922f565c5b60e5  gcc/config/arm/semi.h
  ed31ef487dcad82d59af7752f594a2cf  gcc/config/arm/symbian.h
--- 3725,3731 ----
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
  8f026aba2fb3043f536516c1ed3776c7  gcc/config/arm/parsecpu.awk
! 606645cc0492fc19507b324c6e16713e  gcc/config/arm/predicates.md
  1f3ea8d6e519c40935905506e989956d  gcc/config/arm/rtems.h
  708681c9ad5a879b29922f565c5b60e5  gcc/config/arm/semi.h
  ed31ef487dcad82d59af7752f594a2cf  gcc/config/arm/symbian.h
*************** f43b68e01b2d61fffb5336ef45fa1e7f  gcc/co
*** 3766,3780 ****
  117bbef05f3fb7ba16a92cee51e0064c  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
! 2dc1345b11b865b9969cbb71e749f862  gcc/config/avr/avr-passes.cc
! 0f30b0a73f6c1a84b2ba73050f568645  gcc/config/avr/avr-passes.def
! 5e1a1c5c73b0e9dbabe637fa8700bf6e  gcc/config/avr/avr-protos.h
  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
  441eaa03acda9ba9c8febfe4aab09aaf  gcc/config/avr/builtins.def
  66196007356392102d57b2751db19590  gcc/config/avr/constraints.md
--- 3768,3782 ----
  117bbef05f3fb7ba16a92cee51e0064c  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
! ce627f4de03a506a4263a68742891105  gcc/config/avr/avr-passes.cc
! 6b425f8df921557284017d42be8efc3c  gcc/config/avr/avr-passes.def
! faa9a440c205461733203401725ce58c  gcc/config/avr/avr-protos.h
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
! f4b2e0ca9954dd6c1064849f3e485603  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
  3d964ad6aff7842114bb72be953b8364  gcc/config/avr/avr.md
! 01f3921785c44d9f7a522cba81a86fd0  gcc/config/avr/avr.opt
! 6010f6699565f81df0cf2aa3c7e89ba4  gcc/config/avr/avr.opt.urls
  e6d58e7505c28a23d3cd4e70e534521e  gcc/config/avr/avrlibc.h
  441eaa03acda9ba9c8febfe4aab09aaf  gcc/config/avr/builtins.def
  66196007356392102d57b2751db19590  gcc/config/avr/constraints.md
*************** f933c7ba771ce9476d266c70acbf222c  gcc/co
*** 3899,3905 ****
  01730ada4a07f2b6a7b9c6bedbe0ec39  gcc/config/csky/t-csky-linux
  aef9384ae90024aef8126c64c575f49a  gcc/config/darwin-c.cc
  2dbf19574a93063035f610f6be08f11c  gcc/config/darwin-d.cc
! 2ce45aafed3b2287c666fb70786bdcdc  gcc/config/darwin-driver.cc
  2a024d19058232321d7a1a03335e9894  gcc/config/darwin-f.cc
  a46b54a8716fb1a2a2bd542f2bfc433f  gcc/config/darwin-ppc-ldouble-patch.def
  8c4a62d056940f746dc7f1d2bec5d593  gcc/config/darwin-protos.h
--- 3901,3907 ----
  01730ada4a07f2b6a7b9c6bedbe0ec39  gcc/config/csky/t-csky-linux
  aef9384ae90024aef8126c64c575f49a  gcc/config/darwin-c.cc
  2dbf19574a93063035f610f6be08f11c  gcc/config/darwin-d.cc
! 94f210dcd1179db695ab8f1ac5c83715  gcc/config/darwin-driver.cc
  2a024d19058232321d7a1a03335e9894  gcc/config/darwin-f.cc
  a46b54a8716fb1a2a2bd542f2bfc433f  gcc/config/darwin-ppc-ldouble-patch.def
  8c4a62d056940f746dc7f1d2bec5d593  gcc/config/darwin-protos.h
*************** b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/co
*** 4200,4206 ****
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
  bc56596480d67d323c5d40302bce3fc8  gcc/config/i386/i386.cc
  814201a3143f3d15ba0b897e34e3d459  gcc/config/i386/i386.h
! 9aebd89ef46add3cf1d781d5f9ba91a6  gcc/config/i386/i386.md
  5a3c6fa6266505bbc0789e269da6e250  gcc/config/i386/i386.opt
  56dd2039e03b3ae92142eb68be464b98  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
--- 4202,4208 ----
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
  bc56596480d67d323c5d40302bce3fc8  gcc/config/i386/i386.cc
  814201a3143f3d15ba0b897e34e3d459  gcc/config/i386/i386.h
! 78ebb2bf35b2a4cabbdff4ced1fbc4e1  gcc/config/i386/i386.md
  5a3c6fa6266505bbc0789e269da6e250  gcc/config/i386/i386.opt
  56dd2039e03b3ae92142eb68be464b98  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
*************** fc41e4ebf77dd1f54ddeec4e60428d5e  gcc/co
*** 4245,4251 ****
  1d9e8c2f64fa31f36bfe9ac83a296943  gcc/config/i386/pmmintrin.h
  62337355ef8c4334a0cc9c1db0cfc0da  gcc/config/i386/popcntintrin.h
  d17b84bc85c341e7f386b3b24b231070  gcc/config/i386/ppro.md
! 10402fb0e9d35e3f08914ef6a684b9c7  gcc/config/i386/predicates.md
  e10e34eef814ce6c5e09777d378d36d3  gcc/config/i386/prfchiintrin.h
  eed7a3601ce61f497dcfc5655e5da7a6  gcc/config/i386/prfchwintrin.h
  bc11b09d2de8ba6b9ec2392f1cebdbd9  gcc/config/i386/raointintrin.h
--- 4247,4253 ----
  1d9e8c2f64fa31f36bfe9ac83a296943  gcc/config/i386/pmmintrin.h
  62337355ef8c4334a0cc9c1db0cfc0da  gcc/config/i386/popcntintrin.h
  d17b84bc85c341e7f386b3b24b231070  gcc/config/i386/ppro.md
! 232599d40a559d8953fbc4df86133936  gcc/config/i386/predicates.md
  e10e34eef814ce6c5e09777d378d36d3  gcc/config/i386/prfchiintrin.h
  eed7a3601ce61f497dcfc5655e5da7a6  gcc/config/i386/prfchwintrin.h
  bc11b09d2de8ba6b9ec2392f1cebdbd9  gcc/config/i386/raointintrin.h
*************** de4e89bc042c6bc7eb093bda5d33a266  gcc/co
*** 4263,4269 ****
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! abf173881f0b155f76aebc9287697db8  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
--- 4265,4271 ----
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! 8587a07756c99cb2fad4c72072c8e617  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
*************** c69ef27c10b319a5443289af516f40b8  gcc/co
*** 4410,4416 ****
  dfcc88ca848e0510d6a048cef812a984  gcc/config/loongarch/gnu-user.h
  0214c19eeeeb90d46d358333d5381814  gcc/config/loongarch/la464.md
  2da06c6340275c1c0670ab82a7252f77  gcc/config/loongarch/larchintrin.h
! cdc46bd440985e31de830ee818f5019b  gcc/config/loongarch/lasx.md
  64deba47bb6c4537af9a962db8e160d1  gcc/config/loongarch/lasxintrin.h
  a11605122c3f864d3527acf829c67179  gcc/config/loongarch/linux.h
  ac0512e8b259ed63d386edaa0457a5ad  gcc/config/loongarch/loongarch-builtins.cc
--- 4412,4418 ----
  dfcc88ca848e0510d6a048cef812a984  gcc/config/loongarch/gnu-user.h
  0214c19eeeeb90d46d358333d5381814  gcc/config/loongarch/la464.md
  2da06c6340275c1c0670ab82a7252f77  gcc/config/loongarch/larchintrin.h
! b74eced053703973adb776263950adbe  gcc/config/loongarch/lasx.md
  64deba47bb6c4537af9a962db8e160d1  gcc/config/loongarch/lasxintrin.h
  a11605122c3f864d3527acf829c67179  gcc/config/loongarch/linux.h
  ac0512e8b259ed63d386edaa0457a5ad  gcc/config/loongarch/loongarch-builtins.cc
*************** d3ad067b1fa15bbce42fd3cc4499966e  gcc/co
*** 4434,4445 ****
  688cd325dbeb853413435f029e712cb2  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! f0a4c6e5a7c0cbc0621c38506eb5fabf  gcc/config/loongarch/loongarch.cc
  cac7a4f19361731647870d2210078a9e  gcc/config/loongarch/loongarch.h
  9fd9109f20f7dfce6de910d45b5dbc85  gcc/config/loongarch/loongarch.md
  bcc951e237d5501fc2acd6ef3141724c  gcc/config/loongarch/loongarch.opt
  264f23ee79258ff82bda293d093dd06b  gcc/config/loongarch/loongarch.opt.urls
! 626538aad4ce79c9f33a19821084c1b3  gcc/config/loongarch/lsx.md
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
  e357122938174e9f48e1036cb67c8a21  gcc/config/loongarch/predicates.md
--- 4436,4447 ----
  688cd325dbeb853413435f029e712cb2  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! a9f0b7daa0d8e187bc6fc58f0b97baab  gcc/config/loongarch/loongarch.cc
  cac7a4f19361731647870d2210078a9e  gcc/config/loongarch/loongarch.h
  9fd9109f20f7dfce6de910d45b5dbc85  gcc/config/loongarch/loongarch.md
  bcc951e237d5501fc2acd6ef3141724c  gcc/config/loongarch/loongarch.opt
  264f23ee79258ff82bda293d093dd06b  gcc/config/loongarch/loongarch.opt.urls
! a1ceaab52de5f1950f6c6b63c5a718ea  gcc/config/loongarch/lsx.md
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
  e357122938174e9f48e1036cb67c8a21  gcc/config/loongarch/predicates.md
*************** f51037a9e437f8e9ce7215b2da5ad4e2  gcc/co
*** 4951,4957 ****
  9a0be0e3c4d4b0eec09eef7dee2a028a  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 9683aceb419c131edaf7f66f9f9192f0  gcc/config/riscv/riscv.cc
  1153302a8d65cedebba8e1a3f67931b2  gcc/config/riscv/riscv.h
  4454024804f9347267bff50e57227934  gcc/config/riscv/riscv.md
  c799356a57b52ab91ff324ab22516fba  gcc/config/riscv/riscv.opt
--- 4953,4959 ----
  9a0be0e3c4d4b0eec09eef7dee2a028a  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 959f9025a3246cbc8914e965e8965b76  gcc/config/riscv/riscv.cc
  1153302a8d65cedebba8e1a3f67931b2  gcc/config/riscv/riscv.h
  4454024804f9347267bff50e57227934  gcc/config/riscv/riscv.md
  c799356a57b52ab91ff324ab22516fba  gcc/config/riscv/riscv.opt
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5496,5502 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 6b21fd95851de5bd57bd895a76244a99  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5498,5504 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 93a25177a5b3663c288453824626257f  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp
*** 5535,5548 ****
  f8d105353c88fb102e9216372bc4b70c  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
! bfc0a4cea2b61e7ae38934b220f84e85  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 412671f1c527300315c6baa785d08c07  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
--- 5537,5550 ----
  f8d105353c88fb102e9216372bc4b70c  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
! 72b4d6a8d812051e10ad2e17d1d2dfa8  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 72fc656c53568afa693dd531c8b3b16d  gcc/cp/constexpr.cc
  d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
! 564af52a675c5727faa9f84885de41dc  gcc/cp/coroutines.cc
! be1619275f92c0a0eb6eb83c1e3c7f6b  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
*** 5550,5566 ****
  7475950f94ad8c7218f451feb5e71424  gcc/cp/cp-objcp-common.h
  6a7554ee20d49ef2b66e0b7cc2a696a1  gcc/cp/cp-trait.def
  ce9f2ccac9e2657417018bc8f8064421  gcc/cp/cp-tree.def
! 77d456f52638813e78ce294d1dcfea11  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
  64450079a2dd9e5a8767bb5e4bf3d904  gcc/cp/cvt.cc
  29df6edf4122d4be24abc0274514c9bc  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  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
  f1581b369c1962c764264b1b2af61ca2  gcc/cp/expr.cc
  3b7c086cfb4ed89e6ae40a09ca796704  gcc/cp/friend.cc
--- 5552,5568 ----
  7475950f94ad8c7218f451feb5e71424  gcc/cp/cp-objcp-common.h
  6a7554ee20d49ef2b66e0b7cc2a696a1  gcc/cp/cp-trait.def
  ce9f2ccac9e2657417018bc8f8064421  gcc/cp/cp-tree.def
! 9ecc07c9a369453c25914654540a1164  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
  64450079a2dd9e5a8767bb5e4bf3d904  gcc/cp/cvt.cc
  29df6edf4122d4be24abc0274514c9bc  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! 9f9cd31507a85abfedf778a5046dc99a  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
  0b589466f97f1843080d9667c2263668  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
! 837b6648692cfc90631f43732905eba0  gcc/cp/error.cc
  86f47b28d673601022d0205cdd718f9d  gcc/cp/except.cc
  f1581b369c1962c764264b1b2af61ca2  gcc/cp/expr.cc
  3b7c086cfb4ed89e6ae40a09ca796704  gcc/cp/friend.cc
*************** aaf76a9b03fd0532d2904aef004fd66a  gcc/cp
*** 5576,5589 ****
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  1fb77a33ed1eaaf5ffbe1fc992f353ff  gcc/cp/method.cc
! 5139fb9da079aeb4211d5605568c1ec9  gcc/cp/module.cc
  4191315bfa6c793b37107497c36d367f  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 9d9c59c6d70b160ba677798af8ec4c05  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! 27a10d7b6902641140f84afb4830228b  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  318c5e4a338363a8183b4a01222aa800  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
--- 5578,5591 ----
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  1fb77a33ed1eaaf5ffbe1fc992f353ff  gcc/cp/method.cc
! b45a9fcdee93f140fe52a76dcb1e8215  gcc/cp/module.cc
  4191315bfa6c793b37107497c36d367f  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 6ee3e41f349ec9e1b9c084a2fdcf5930  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! 8b7b76acb9a2c9b6a0b4e0dfd38cd5cd  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  318c5e4a338363a8183b4a01222aa800  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
*************** b58bf61fbfed45af179b7104e72a9486  gcc/cp
*** 5592,5598 ****
  67c8ace75ad63aabe8efb9f9c016b437  gcc/cp/std-name-hint.h
  e3798db73e0b3e892e772acbe569a5b8  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! a935e600afe4c661c30f0f5b35413cd9  gcc/cp/typeck.cc
  1fea2b59dbf93b59626d7546b3c1f738  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
--- 5594,5600 ----
  67c8ace75ad63aabe8efb9f9c016b437  gcc/cp/std-name-hint.h
  e3798db73e0b3e892e772acbe569a5b8  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! 1bf95758f700eb2864247d2a58e4934b  gcc/cp/typeck.cc
  1fea2b59dbf93b59626d7546b3c1f738  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
*************** ec1e9c9456a8530e241079823e2fc126  gcc/cr
*** 5609,5615 ****
  15aef1bfc1d9935a8df200d3827b59c6  gcc/ctfc.cc
  3df123e84e7c118eb423425f2100e3b5  gcc/ctfc.h
  aec0cd5251de880945c96eb21e97eac9  gcc/ctfout.cc
! 430071212aebef2f9dcc9ce311b81709  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
  362a026d745031260b2e4dd8eba9becc  gcc/d/ChangeLog-2008
--- 5611,5617 ----
  15aef1bfc1d9935a8df200d3827b59c6  gcc/ctfc.cc
  3df123e84e7c118eb423425f2100e3b5  gcc/ctfc.h
  aec0cd5251de880945c96eb21e97eac9  gcc/ctfout.cc
! 3cbbedb9e1e4456dc79ccf9d4564f743  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
  362a026d745031260b2e4dd8eba9becc  gcc/d/ChangeLog-2008
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 5948,5954 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  4cf31ce9dc9e7079c1c99e7dd07215ae  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! f3e416a05ee6ea0661a3a72eb0c11efb  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 5950,5956 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  4cf31ce9dc9e7079c1c99e7dd07215ae  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 9c88cabb8fa15f07666c1108c79290a5  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6056,6062 ****
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! cbd2a8bda7b6996dae4c5d9d3f61fd13  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6058,6064 ----
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 38ad62ff3dc32741a630b142f27a6f25  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** c33e2c4c7527bec8a125dd093dc59f2a  gcc/fo
*** 6102,6108 ****
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9982bdf75ac5c9630f66edd2aea1fe8b  gcc/fortran/dump-parse-tree.cc
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
! a93e1bd402bad56cbe102f421f0c2963  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
  76bb26929c446b45cc1efbf25d27ea82  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
--- 6104,6110 ----
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9982bdf75ac5c9630f66edd2aea1fe8b  gcc/fortran/dump-parse-tree.cc
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
! 5b4fa713f1f7da55d9cef4d9a5f58e45  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
  76bb26929c446b45cc1efbf25d27ea82  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
*************** a0c225f8a1deb41873e5984a058b0f45  gcc/gi
*** 6259,6265 ****
  9d283d6d05cc10c386454e9c6a25e22a  gcc/gimple-loop-versioning.cc
  de516dc4a59882c258bf01584c25b2de  gcc/gimple-low.cc
  a507a70e7f4b0dd99e594d15a5a9a89b  gcc/gimple-low.h
! d0c07be6406911d79ae5087fbc68d02a  gcc/gimple-lower-bitint.cc
  bb02db160d1eb3a985d3b5dfa8e0566c  gcc/gimple-lower-bitint.h
  da1cba564288415af1f675747c508315  gcc/gimple-match-exports.cc
  144911a83796283e587e0c84378e118d  gcc/gimple-match-head.cc
--- 6261,6267 ----
  9d283d6d05cc10c386454e9c6a25e22a  gcc/gimple-loop-versioning.cc
  de516dc4a59882c258bf01584c25b2de  gcc/gimple-low.cc
  a507a70e7f4b0dd99e594d15a5a9a89b  gcc/gimple-low.h
! e2d061e1eca685362ec3ff0fd57a52f8  gcc/gimple-lower-bitint.cc
  bb02db160d1eb3a985d3b5dfa8e0566c  gcc/gimple-lower-bitint.h
  da1cba564288415af1f675747c508315  gcc/gimple-match-exports.cc
  144911a83796283e587e0c84378e118d  gcc/gimple-match-head.cc
*************** b417ca4d3d865879d0e642790dafa8cf  gcc/gi
*** 6296,6302 ****
  93101472142eb5910d34b5c961eee66b  gcc/gimple-ssa-sccopy.cc
  b551cb1f1566bf3aa2bca3816f2b1c98  gcc/gimple-ssa-split-paths.cc
  c7ec9ee38b6e99c1260bd3e794ead05f  gcc/gimple-ssa-sprintf.cc
! 827b9a16d251acce8466dcb4fc8420da  gcc/gimple-ssa-store-merging.cc
  5081e3b07e7210c50573a328ecd9e1b9  gcc/gimple-ssa-strength-reduction.cc
  7e1a423dea2ff7a1182e9c4fb5227344  gcc/gimple-ssa-warn-access.cc
  3ae7b597d9d5e0c5ba61dc7ee8a7f2c2  gcc/gimple-ssa-warn-access.h
--- 6298,6304 ----
  93101472142eb5910d34b5c961eee66b  gcc/gimple-ssa-sccopy.cc
  b551cb1f1566bf3aa2bca3816f2b1c98  gcc/gimple-ssa-split-paths.cc
  c7ec9ee38b6e99c1260bd3e794ead05f  gcc/gimple-ssa-sprintf.cc
! 196fa6a0efca1e6e5b17a7cf0d0aaff9  gcc/gimple-ssa-store-merging.cc
  5081e3b07e7210c50573a328ecd9e1b9  gcc/gimple-ssa-strength-reduction.cc
  7e1a423dea2ff7a1182e9c4fb5227344  gcc/gimple-ssa-warn-access.cc
  3ae7b597d9d5e0c5ba61dc7ee8a7f2c2  gcc/gimple-ssa-warn-access.h
*************** d7408ac6c915c3e2f58cd40bdb6a0671  gcc/gi
*** 6333,6339 ****
  18dd241fd4e77ac61edc90586b9fb2b6  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  b41648f499a7db07e24806aae26998b5  gcc/glimits.h
! 06aebf778e89b3e0b6c86d3535d8ef65  gcc/go/ChangeLog
  e697a6a6e7d6942b7375c665c70d34b4  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  88217f68368328f3ce651c46f0830df8  gcc/go/config-lang.in
--- 6335,6341 ----
  18dd241fd4e77ac61edc90586b9fb2b6  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  b41648f499a7db07e24806aae26998b5  gcc/glimits.h
! 584d3e97bc14e9745300416832fa94a2  gcc/go/ChangeLog
  e697a6a6e7d6942b7375c665c70d34b4  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  88217f68368328f3ce651c46f0830df8  gcc/go/config-lang.in
*************** a6162cabbfeb130d9e619b6dc2676776  gcc/ir
*** 6507,6513 ****
  e02a7a08ca9acaac686d9cb897ac121b  gcc/ira.h
  101bad313081e351312c8d42e0b24b31  gcc/is-a.h
  4e832d29f0e621d177da3fa9c3e11b69  gcc/iterator-utils.h
! f063ea21177d8112b60143192ec0af1f  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  40388d7c9424c7364e6ace25461e381e  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
--- 6509,6515 ----
  e02a7a08ca9acaac686d9cb897ac121b  gcc/ira.h
  101bad313081e351312c8d42e0b24b31  gcc/is-a.h
  4e832d29f0e621d177da3fa9c3e11b69  gcc/iterator-utils.h
! d2dba4605ad160fefb3b64e89280dee1  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  40388d7c9424c7364e6ace25461e381e  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
*************** dfa3caf86a8bb6ea08cabdee56e570e9  gcc/lt
*** 6654,6660 ****
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  78ea6d3e135322dfe8157d78aba82074  gcc/lto-streamer.h
  8acdefc9fffd53b3f4f16af933640084  gcc/lto-wrapper.cc
! 4c5f46a1dafc2f4b9ab971a2ddc6e08d  gcc/lto/ChangeLog
  e33b56ae6d73ecb6b658dd2ffff4202a  gcc/lto/Make-lang.in
  705d8eaa74b456d79367c2c42b7a2fef  gcc/lto/common.cc
  3d201b30f0538a8cfddc450739b1c8c5  gcc/lto/common.h
--- 6656,6662 ----
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  78ea6d3e135322dfe8157d78aba82074  gcc/lto-streamer.h
  8acdefc9fffd53b3f4f16af933640084  gcc/lto-wrapper.cc
! a6e9af147c6704cc913ec083fc0af467  gcc/lto/ChangeLog
  e33b56ae6d73ecb6b658dd2ffff4202a  gcc/lto/Make-lang.in
  705d8eaa74b456d79367c2c42b7a2fef  gcc/lto/common.cc
  3d201b30f0538a8cfddc450739b1c8c5  gcc/lto/common.h
*************** e44c0bf9cc0411d7bd57c6585eb6d0e4  gcc/lt
*** 6678,6684 ****
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! dd71da47425982351767793819170f15  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6680,6686 ----
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! 4c23fc224260b311ee1fd06bf909ab72  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** d8c314554dde17baabdee11b802264b3  gcc/m2
*** 7632,7638 ****
  ff4d04d0175889f5cc05d2c0c762fe57  gcc/m2/tools-src/tidydates.py
  f9608e9005487c369e6c38949ab36fa1  gcc/m2/version.c
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
! db2ee1a68662c8370d59f7e4f6cf917b  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
  d053620a6d75e0f59842e390386fd917  gcc/make-unique.h
  5ff78726c1db0bc193472a8b82102221  gcc/match.pd
--- 7634,7640 ----
  ff4d04d0175889f5cc05d2c0c762fe57  gcc/m2/tools-src/tidydates.py
  f9608e9005487c369e6c38949ab36fa1  gcc/m2/version.c
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
! 550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
  d053620a6d75e0f59842e390386fd917  gcc/make-unique.h
  5ff78726c1db0bc193472a8b82102221  gcc/match.pd
*************** a9772a5a6b37efbf620593d1ecb9a9a2  gcc/mo
*** 7648,7654 ****
  dc32936944eec23defd5fd5af215d9ad  gcc/modulo-sched.cc
  9c6a28ae7944e5f796f3439aa2df1d22  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
! 8638ca4f5792260da81b3ac2d744e51e  gcc/objc/ChangeLog
  8d082f55b0cdfd75ea3681dfa074f5b2  gcc/objc/Make-lang.in
  9afcb04ac4a886901dfab5e553774a8e  gcc/objc/config-lang.in
  42a524a0868e4113a592235af9fd222a  gcc/objc/lang-specs.h
--- 7650,7656 ----
  dc32936944eec23defd5fd5af215d9ad  gcc/modulo-sched.cc
  9c6a28ae7944e5f796f3439aa2df1d22  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
! 6a7f587617f64fe9418c3c61808f3594  gcc/objc/ChangeLog
  8d082f55b0cdfd75ea3681dfa074f5b2  gcc/objc/Make-lang.in
  9afcb04ac4a886901dfab5e553774a8e  gcc/objc/config-lang.in
  42a524a0868e4113a592235af9fd222a  gcc/objc/lang-specs.h
*************** d014415973aeadfa317bbf58d7670cb3  gcc/ob
*** 7667,7673 ****
  698aa8c8e68ec8bd5aa475f9a380de0f  gcc/objc/objc-runtime-shared-support.cc
  5b47b9b3c7bb8072b197715dfe71a9a2  gcc/objc/objc-runtime-shared-support.h
  b648849750be8f504a100c2ba7c790e0  gcc/objc/objc-tree.def
! 050987c418264dabbae277f9450b974e  gcc/objcp/ChangeLog
  150f27d7488f95ff898f3ff26d4d4973  gcc/objcp/Make-lang.in
  004fa5a83d6b4ad3094b9b495f104ac6  gcc/objcp/config-lang.in
  b6aaded8e85e2c15678b63196f1010b6  gcc/objcp/lang-specs.h
--- 7669,7675 ----
  698aa8c8e68ec8bd5aa475f9a380de0f  gcc/objc/objc-runtime-shared-support.cc
  5b47b9b3c7bb8072b197715dfe71a9a2  gcc/objc/objc-runtime-shared-support.h
  b648849750be8f504a100c2ba7c790e0  gcc/objc/objc-tree.def
! e3eced05eff33b00c0d027d5a0ccc709  gcc/objcp/ChangeLog
  150f27d7488f95ff898f3ff26d4d4973  gcc/objcp/Make-lang.in
  004fa5a83d6b4ad3094b9b495f104ac6  gcc/objcp/config-lang.in
  b6aaded8e85e2c15678b63196f1010b6  gcc/objcp/lang-specs.h
*************** e3f908061f2b051f55381b513a49022b  gcc/pa
*** 7736,7742 ****
  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
--- 7738,7744 ----
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! 457c685dd4451503f097cc50d8a8bccd  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  ad3ed4d3a0135fbf9610627185805a14  gcc/po/be.po
  f06a600ee92348bc59755f3b4e3508bd  gcc/po/da.po
*************** eb727b61fc41c69f8eb58feed8f6f9af  gcc/po
*** 7746,7752 ****
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
  fc82e39614cbd5712e526b5f96bc1f74  gcc/po/fi.po
  52fd9ff2ae03e28d28ad65440d9548b2  gcc/po/fr.po
! 6e4fa7a176dcec44efe73e6aa4c94f3c  gcc/po/gcc.pot
  a503217da1c8b34e8ca24bdf9a1da071  gcc/po/hr.po
  af3c799251d1ccd778d079cc33d83a66  gcc/po/id.po
  cdadc1058f06d0ca6243acd3565a7639  gcc/po/ja.po
--- 7748,7754 ----
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
  fc82e39614cbd5712e526b5f96bc1f74  gcc/po/fi.po
  52fd9ff2ae03e28d28ad65440d9548b2  gcc/po/fr.po
! 33581fd74cfda499d4056d86643578f2  gcc/po/gcc.pot
  a503217da1c8b34e8ca24bdf9a1da071  gcc/po/hr.po
  af3c799251d1ccd778d079cc33d83a66  gcc/po/id.po
  cdadc1058f06d0ca6243acd3565a7639  gcc/po/ja.po
*************** c08edc659010d9072c249418c1be7fe6  gcc/rt
*** 7862,7868 ****
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! ee58c7a7f9b0deb825fe3b4ac3c10b1d  gcc/rust/ChangeLog
  c2a8648800b13beaa7b2efef8e94ea6f  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  1bde08bec2946c34ff76bc8cdc25d05c  gcc/rust/ast/rust-ast-builder-type.cc
--- 7864,7870 ----
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 380f5899ac477369766307c9879f3f15  gcc/rust/ChangeLog
  c2a8648800b13beaa7b2efef8e94ea6f  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  1bde08bec2946c34ff76bc8cdc25d05c  gcc/rust/ast/rust-ast-builder-type.cc
*************** bbd5abaa55463a5497e6ff9d14de3a1b  gcc/st
*** 8409,8415 ****
  3fc844db346b8f5e70da401bd3f4ad0d  gcc/statistics.h
  7a7a1a9ae9adfd12a338920b6553fb7c  gcc/stmt.cc
  dbd64f0fc5e750c51b3fae1183025ef5  gcc/stmt.h
! fcae8e98ad3984aaa2c9d5e34c19efb0  gcc/stor-layout.cc
  eb7d04020ade148a4c8969151c6d5478  gcc/stor-layout.h
  2937cf13aa5116018232748c5e245c4f  gcc/store-motion.cc
  c1c0312db7dfa4c3180e5d38177bfaf0  gcc/streamer-hooks.cc
--- 8411,8417 ----
  3fc844db346b8f5e70da401bd3f4ad0d  gcc/statistics.h
  7a7a1a9ae9adfd12a338920b6553fb7c  gcc/stmt.cc
  dbd64f0fc5e750c51b3fae1183025ef5  gcc/stmt.h
! ace168df68feeff6e6062dce7285a09c  gcc/stor-layout.cc
  eb7d04020ade148a4c8969151c6d5478  gcc/stor-layout.h
  2937cf13aa5116018232748c5e245c4f  gcc/store-motion.cc
  c1c0312db7dfa4c3180e5d38177bfaf0  gcc/streamer-hooks.cc
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8443,8449 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! aeb564de47c1424fd3683ee3ed7dbf01  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8445,8451 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! dabf1e2b3bb8e9e719824131217d29b2  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** fabe4f563e2a6b04ace68b9b7e010e6b  gcc/te
*** 12019,12024 ****
--- 12021,12030 ----
  a81fada6339487ed882e8189aae31718  gcc/testsuite/c-c++-common/asan/pr120608-2.c
  4bf79f26fda6692969b7b7acd3996a01  gcc/testsuite/c-c++-common/asan/pr120608-3.c
  bfeb7c22d0f9799de47d33dd1bcdde09  gcc/testsuite/c-c++-common/asan/pr120608-4.c
+ b3355bfb51e6a87d724e18d36b9ac8b6  gcc/testsuite/c-c++-common/asan/pr121389-1.c
+ eb77e0bf098a564e4879891993b2971a  gcc/testsuite/c-c++-common/asan/pr121389-2.c
+ deda343ed2f61c0d2a95534b8cfcec30  gcc/testsuite/c-c++-common/asan/pr121389-3.c
+ c4e5247a7ee4e73d4190e5abea3941e0  gcc/testsuite/c-c++-common/asan/pr121389-4.c
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
  65128b17436f6406d9e224257030e000  gcc/testsuite/c-c++-common/asan/pr59063-1.c
*************** e82c7b7752e66456db57ee27e9f0dea7  gcc/te
*** 13507,13512 ****
--- 13513,13519 ----
  37cc7dc995f0abf1366c2a87f7cbb453  gcc/testsuite/c-c++-common/pr119614-3.c
  8c1cd068c408ff1fcd80c540de835599  gcc/testsuite/c-c++-common/pr119616.c
  9032f3bb916ba5c274bdfec86c5c4ef5  gcc/testsuite/c-c++-common/pr119618.c
+ c9f6665aa9cce2133e7c5f9edba34076  gcc/testsuite/c-c++-common/pr121159.c
  f5dce8e27cfb8a6bfffe57596fecb796  gcc/testsuite/c-c++-common/pr19807-1.c
  8a7d9a8dd4af1ada80ca6a4b3201e073  gcc/testsuite/c-c++-common/pr19807-2.c
  39c0873a2c1c7f951e8b2f90ebc9e12d  gcc/testsuite/c-c++-common/pr19807-3.c
*************** db2bfc8380fd1e62f000b54dfdcfd976  gcc/te
*** 14400,14406 ****
  f456a5ff39ab3b5cd7b09f407dbc7751  gcc/testsuite/cobol.dg/dg.exp
  a1fc188c12430e21de6bc4300334ed8a  gcc/testsuite/cobol.dg/error-1.cob
  25cc9f40c748ffa5428ace6fdad21f50  gcc/testsuite/cobol.dg/fail.cob
! d34be5aa4f7d69580259b32b0b88455e  gcc/testsuite/cobol.dg/group1/check_88.cob
  db28dfa30d559599116ed73bed8ba2c7  gcc/testsuite/cobol.dg/group1/comp5.cob
  8b649e919b79f028012b621f1eb03473  gcc/testsuite/cobol.dg/group1/declarative_1.cob
  a30a2548a358ec40d49dfe00d4ec3eb0  gcc/testsuite/cobol.dg/group1/display.cob
--- 14407,14413 ----
  f456a5ff39ab3b5cd7b09f407dbc7751  gcc/testsuite/cobol.dg/dg.exp
  a1fc188c12430e21de6bc4300334ed8a  gcc/testsuite/cobol.dg/error-1.cob
  25cc9f40c748ffa5428ace6fdad21f50  gcc/testsuite/cobol.dg/fail.cob
! 6dbf2bea1d77e1b1a1d788500e5b387e  gcc/testsuite/cobol.dg/group1/check_88.cob
  db28dfa30d559599116ed73bed8ba2c7  gcc/testsuite/cobol.dg/group1/comp5.cob
  8b649e919b79f028012b621f1eb03473  gcc/testsuite/cobol.dg/group1/declarative_1.cob
  a30a2548a358ec40d49dfe00d4ec3eb0  gcc/testsuite/cobol.dg/group1/display.cob
*************** d05ac6fedd74d96b8e1466d0110a8fdb  gcc/te
*** 14414,14426 ****
  215a2b0959e47205085dc8ab2dea5181  gcc/testsuite/cobol.dg/group1/pointer1.cob
  763d4c9a2cbca2b2ac0a07933c54862f  gcc/testsuite/cobol.dg/group1/simple-arithmetic.cob
  9e254bdae56a5c8d106f6559999ae973  gcc/testsuite/cobol.dg/group1/simple-classes.cob
! e6506adcce16e102a54735fb17bb1159  gcc/testsuite/cobol.dg/group1/simple-if.cob
  352864656e5132dd6192fdb77af9987a  gcc/testsuite/cobol.dg/group1/simple-perform.cob
  6cb318606836bdff2bd6050ff874a2ca  gcc/testsuite/cobol.dg/group2/ACCEPT_DATE___DAY_and_intrinsic_functions__1_.cob
  10340b571703d27504a57aa49aab60af  gcc/testsuite/cobol.dg/group2/ACCEPT_DATE___DAY_and_intrinsic_functions__2_.cob
  21c94051fc5b07016ef525f144877840  gcc/testsuite/cobol.dg/group2/ACCEPT_FROM_TIME___DATE___DAY___DAY-OF-WEEK__1_.cob
  388034c0665d67367102703c40e60d82  gcc/testsuite/cobol.dg/group2/ACCEPT_FROM_TIME___DATE___DAY___DAY-OF-WEEK__2_.cob
  5ddb193893e5c3d53c840e244900c4db  gcc/testsuite/cobol.dg/group2/ACCEPT_FROM_TIME___DATE___DAY___DAY-OF-WEEK__2_.out
  f4905b3cede4cad548e4f57e046904d7  gcc/testsuite/cobol.dg/group2/COMP-6_arithmetic.cob
  4c557552ba46fff61c6bba359bbd2426  gcc/testsuite/cobol.dg/group2/COMP-6_arithmetic.out
  2060aa8f44c5912adef0f47ec97a60cb  gcc/testsuite/cobol.dg/group2/COMP-6_numeric_test.cob
--- 14421,14470 ----
  215a2b0959e47205085dc8ab2dea5181  gcc/testsuite/cobol.dg/group1/pointer1.cob
  763d4c9a2cbca2b2ac0a07933c54862f  gcc/testsuite/cobol.dg/group1/simple-arithmetic.cob
  9e254bdae56a5c8d106f6559999ae973  gcc/testsuite/cobol.dg/group1/simple-classes.cob
! 0cc60851f56f7ed82c6a307ff07078c5  gcc/testsuite/cobol.dg/group1/simple-if.cob
  352864656e5132dd6192fdb77af9987a  gcc/testsuite/cobol.dg/group1/simple-perform.cob
+ 03d9e0410a78ac1572fca647e641b070  gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.cob
+ 1ab98bfe6cbef69dac2f301c94c9c93b  gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.out
+ 26c1ac1d56c360477adc8efe577f1a5e  gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.cob
+ 79adac8c671790504a142ab2392cf927  gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out
+ 291db84fb7e37ae587f8903785b25b1d  gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.cob
+ 2901c188067e745960930ae0bfdd4749  gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.out
+ 0c8262ef265dd1714f65d56d9efd8a4d  gcc/testsuite/cobol.dg/group2/88_level_with_FALSE_IS_clause.cob
+ 1d136358908b310454c8f9b5d93e9505  gcc/testsuite/cobol.dg/group2/88_level_with_FILLER.cob
+ 0daefa9454d2fcfd38eab59b677c2f0b  gcc/testsuite/cobol.dg/group2/88_level_with_THRU.cob
  6cb318606836bdff2bd6050ff874a2ca  gcc/testsuite/cobol.dg/group2/ACCEPT_DATE___DAY_and_intrinsic_functions__1_.cob
  10340b571703d27504a57aa49aab60af  gcc/testsuite/cobol.dg/group2/ACCEPT_DATE___DAY_and_intrinsic_functions__2_.cob
  21c94051fc5b07016ef525f144877840  gcc/testsuite/cobol.dg/group2/ACCEPT_FROM_TIME___DATE___DAY___DAY-OF-WEEK__1_.cob
  388034c0665d67367102703c40e60d82  gcc/testsuite/cobol.dg/group2/ACCEPT_FROM_TIME___DATE___DAY___DAY-OF-WEEK__2_.cob
  5ddb193893e5c3d53c840e244900c4db  gcc/testsuite/cobol.dg/group2/ACCEPT_FROM_TIME___DATE___DAY___DAY-OF-WEEK__2_.out
+ 474497d0d9932a1aab0b9170a17813c6  gcc/testsuite/cobol.dg/group2/ADD_CORRESPONDING.cob
+ 767d019c56f84421d2032de38d5d7a66  gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.cob
+ 8fd96e62b5175b3043acd696faa33b48  gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.out
+ 41b22c71a81bf978936f067a5e86fbca  gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob
+ d027fc8d21ca1611a90d0c14e0d761bb  gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out
+ 8f0656d61e90ca0e664146f324d6a710  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob
+ 2b1582f66ad9f780abf8a240d7a2362c  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.out
+ 3f46e56a7a70b93a9ec8f0338c27535c  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob
+ 330041faa87c3b309191307bb47d50e8  gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__2_.cob
+ 7cd127ee703dda8fd87b3d893fb1a1ac  gcc/testsuite/cobol.dg/group2/ALPHABETIC-LOWER_test.cob
+ 4813e57661505d12b8d076d95b58763b  gcc/testsuite/cobol.dg/group2/ALPHABETIC-UPPER_test.cob
+ 51db431e076a4f40819ee3a98ebd545b  gcc/testsuite/cobol.dg/group2/ALPHABETIC_test.cob
+ 9de32e3a40a5725b946d743b98d349f0  gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.cob
+ aff0f09a3eba923f1e9dbff586adddb7  gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.out
+ 0aa406fd2c4bb80f4a52187ccca601ca  gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.cob
+ 1f7449eeeb89ffaad20f5e0371fb5c23  gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.out
+ 3ef70635d96c1f906130c519db9716b8  gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.cob
+ fd54d0316d26094ad051387055973254  gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.out
+ 7d15adc805acb940d24d04a2ec408e45  gcc/testsuite/cobol.dg/group2/ANY_LENGTH__4_.cob
+ 32833b6da2fe6c3630d21fccc504eaa4  gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.cob
+ a759f684e27357ca4bac1c1fecf39802  gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.out
+ f8d2ab98ca2b042e089c9758ae3a2b30  gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.cob
+ ce7bdbfa73ff92ed34eac3534df66e86  gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.out
+ c7cf12c0e90e1d426210bb32a56623a3  gcc/testsuite/cobol.dg/group2/Alphanumeric_and_binary_numeric.cob
+ 738b5e86f6b162a7f4b44d0ecfedf06b  gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.cob
+ b13823e6ef73b208ab307bb3612a5ce8  gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.out
+ 04bb991b042a76cfcf01bc1c8817a56a  gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.cob
+ 56a12a09adb0c17ac03345d06ae419b3  gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.out
  f4905b3cede4cad548e4f57e046904d7  gcc/testsuite/cobol.dg/group2/COMP-6_arithmetic.cob
  4c557552ba46fff61c6bba359bbd2426  gcc/testsuite/cobol.dg/group2/COMP-6_arithmetic.out
  2060aa8f44c5912adef0f47ec97a60cb  gcc/testsuite/cobol.dg/group2/COMP-6_numeric_test.cob
*************** baa95b2447f116f5a631da79ad316762  gcc/te
*** 14431,14446 ****
--- 14475,14548 ----
  e597ad321e86d60527f8c7000011bc2b  gcc/testsuite/cobol.dg/group2/COMP-6_used_with_MOVE.out
  eb99b99c9e6dabc94c8069e3bad4a645  gcc/testsuite/cobol.dg/group2/COMPUTE_multiplication_to_FIX4.cob
  c0496fa7d0e5acfed15b3bde8f302ebc  gcc/testsuite/cobol.dg/group2/COMPUTE_multiplication_to_FIX4.out
+ 7d985ae4194b9390f54f136df8642114  gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.cob
+ d37be4e494df6cbb370f405931df02e6  gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.out
+ c04168a2acd1bc44234f01ab517cfb97  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.cob
+ 889ec5fde47e76be7c971e6deca40cd0  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.out
+ c5cf04eb9938774927bb9fc355958f13  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob
+ 40ee71e6000b91748c4cd8f864a83cd2  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out
+ 51d5769dbd81a9e375bce8bcd01a3840  gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob
+ e3cc25d3e34c98b2bc1d9014612f3464  gcc/testsuite/cobol.dg/group2/Class_check_with_reference_modification.cob
+ 5a5abbc24fc75759207ca6686fa86a79  gcc/testsuite/cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob
  f7e4a3f2c5c85ddeb645aecc5792a186  gcc/testsuite/cobol.dg/group2/Complex_EVALUATE__1_.cob
  770e7f54918037f396938dcd095f8cf0  gcc/testsuite/cobol.dg/group2/Complex_EVALUATE__1_.out
  4ceb6523fae1934daa01b428e6d5b854  gcc/testsuite/cobol.dg/group2/Complex_EVALUATE__2_.cob
  33011658a399a6a9be5c37899eb4a306  gcc/testsuite/cobol.dg/group2/Complex_EVALUATE__2_.out
+ 26032dd568fd1bfb10fc1b817396c802  gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.cob
+ 7d1e4c4461dc538a7b081cd9ab9a781f  gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.out
+ 0343efd58f9da12b239e6d571691602b  gcc/testsuite/cobol.dg/group2/Complex_IF.cob
+ 441e3a4f6a2da5b2f89b7f633fa3ad23  gcc/testsuite/cobol.dg/group2/Complex_IF.out
+ c3fc0b5b4a5207f75f31c3f153fe63ef  gcc/testsuite/cobol.dg/group2/Concatenation_operator.cob
+ cda4428dac30cd85aca26da3ca3f7520  gcc/testsuite/cobol.dg/group2/Concatenation_operator.out
+ f3ca8e281db42abc9943d0fa7c38d798  gcc/testsuite/cobol.dg/group2/Contained_program_visibility__3_.cob
+ f5497e8935b43ea0c29ad7500d8689a8  gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.cob
+ 40200625b438d75f97febca3f471e303  gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.out
+ 75bda7768a956ba99eb6b2fd9dcf8af1  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.cob
+ b026324c6904b2a9cb4b88d6d61c81d1  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.out
+ 69df913fbec72ea61e7c149d01effbe8  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.cob
+ 897316929176464ebc9ad085f31e7284  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.out
+ 9eee9b55a262625055761f3164405e74  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.cob
+ 897316929176464ebc9ad085f31e7284  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.out
+ 99ac3a86c2e88011b84201ea491175d6  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.cob
+ 897316929176464ebc9ad085f31e7284  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.out
+ 4ef313f5c382508fba520a0d43043100  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.cob
+ 897316929176464ebc9ad085f31e7284  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.out
+ 1b4027521f6a0c3575c370f32011b7a8  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.cob
+ 897316929176464ebc9ad085f31e7284  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.out
+ 1a39bff3bdda3b9311ee0b14ca57a7fa  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.cob
+ fe9d26c3e620eeb69bd166c8be89fb8f  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.out
+ b3d5fc2d4df2b935a379f0eca20cf15a  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.cob
+ 84315cd1eac36ec2ab6248bb81f1c443  gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.out
+ e8eb1625cf1bf0a19bc7e28773fdd2d5  gcc/testsuite/cobol.dg/group2/DEBUG_Line.cob
+ e63f1cd9d134b515c696bba014cb1dff  gcc/testsuite/cobol.dg/group2/DEBUG_Line.out
+ 020056f99a3f85893322ab8e2d0ee543  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.cob
+ aafaf4e72769812a7c6252f63c7c0c66  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.out
+ 76a11ca63a2a964c4dcac1449578dd76  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.cob
+ 871a17bb2c1aacc38b547cba0b4390b2  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.out
+ 6c9696b1107c8acd86a9755fae819387  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.cob
+ 049d86b26e87f2345599dec9004709c6  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.out
+ ab92263ab6dfc24c4a0c606696f4f6e1  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.cob
+ 049d86b26e87f2345599dec9004709c6  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.out
+ fd9430749a440e568057ebda5d8b3a14  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.cob
+ 20c0a856e7157356b21d2254ce9c991d  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.out
  4828b4306ea036529b36c0bb44d8b712  gcc/testsuite/cobol.dg/group2/DISPLAY__Sign_ASCII.cob
  018756473be729c6950d876365dc573b  gcc/testsuite/cobol.dg/group2/DISPLAY__Sign_ASCII.out
  e7fe51602fe10ca42c5fe456512ba76c  gcc/testsuite/cobol.dg/group2/DISPLAY__Sign_ASCII__2_.cob
  6e6aab814ba43523e2b313c46a3e3780  gcc/testsuite/cobol.dg/group2/DISPLAY__Sign_ASCII__2_.out
+ 04241cac92aea6609cadd8cd6985a09a  gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.cob
+ 54367b98d070c4c1d66f9ec1f393cb3c  gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.out
+ c666c4233d26da9e7a6429ffb0f00751  gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.cob
+ b6823d7dc09b85613f18938c657a010b  gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.out
+ e2d60c2db69ee22b6355d1e4f14b8a0f  gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.cob
+ b6823d7dc09b85613f18938c657a010b  gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.out
+ c69954f56fcc483a81f9930ef5a010cc  gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.cob
+ e1a5fc78e52a4348f53e9fcdcc6b849c  gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.out
  9231024e09658f2c0b51c5863c9ff925  gcc/testsuite/cobol.dg/group2/Dynamic_reference_modification.cob
  4d861c72470e2812c684041e91621642  gcc/testsuite/cobol.dg/group2/Dynamic_reference_modification.out
+ dd8c6393c06b4230c216b0d2985c7d04  gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.cob
+ 71114c6e947dbc572836dc13b66e981d  gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.out
+ b2ddfc5676452eaa657c53fed65d0c04  gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.cob
+ b190c55e6f544248ffcabacd76c76fc8  gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.out
  dc52fd3893842d57477c07b7ab30b016  gcc/testsuite/cobol.dg/group2/EVALUATE_WHEN_NEGATIVE.cob
  612112a8ffee04167daaa2bc2a1c9631  gcc/testsuite/cobol.dg/group2/EVALUATE_WHEN_NEGATIVE.out
  2b4e9b7084d7b6f0d982f80f1bc1eca8  gcc/testsuite/cobol.dg/group2/EVALUATE_condition__2_.cob
*************** dc52fd3893842d57477c07b7ab30b016  gcc/te
*** 14449,14454 ****
--- 14551,14568 ----
  81ce28588b2b73f5386b5a67a8c4983a  gcc/testsuite/cobol.dg/group2/EVALUATE_doubled_WHEN.out
  6c9a6e7a5666de16640af114337126d9  gcc/testsuite/cobol.dg/group2/EVALUATE_with_WHEN_using_condition-1.cob
  ed5a6aa98312fb3870ac8ff7290b6548  gcc/testsuite/cobol.dg/group2/EVALUATE_with_WHEN_using_condition-1.out
+ c3f57ed3e785263bd5bc1a11e5861290  gcc/testsuite/cobol.dg/group2/EXIT_PARAGRAPH.cob
+ 52a7f942d80b85e3e73e3ff8b22276bf  gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.cob
+ d36f8f9425c4a8000ad9c4a97185aca5  gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.out
+ aa1720f718ef240d3daee562b785968f  gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.cob
+ 30ba69874bf877e7942aa9267564e81f  gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.out
+ 97606b94b868e2e008b042559073a65c  gcc/testsuite/cobol.dg/group2/EXIT_SECTION.cob
+ 5fe71ed47fbfd1c9732d0d55b7498960  gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.cob
+ 6acf9b0d605a58415d5a29fd842dee44  gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.out
+ ef38a3c35d6d1c92713a58b802edb16a  gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.cob
+ 0cb3a3dc88e7eed83ac94513e259bc5e  gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.out
+ 18535704cb2e88b1cf3c4bb117c1e498  gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.cob
+ e41dd883ade6ec80e48d3831162987be  gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.out
  a5bc55a19aac50fe6e2eab8eeb6db994  gcc/testsuite/cobol.dg/group2/FUNCTION_ABS.cob
  250ae5f323e99de59af8a58b18f592e9  gcc/testsuite/cobol.dg/group2/FUNCTION_ABS.out
  a9ea9148bd9d7d8e58c2f43b9fb45819  gcc/testsuite/cobol.dg/group2/FUNCTION_ACOS.cob
*************** ffdb3a28cbf8051dd2ad3d9d4cc9b068  gcc/te
*** 14555,14560 ****
--- 14669,14676 ----
  1575a07d330f581a46e89cdf8fdc04a7  gcc/testsuite/cobol.dg/group2/FUNCTION_SIGN.cob
  c1ff3f157967069935826b9d9be10055  gcc/testsuite/cobol.dg/group2/FUNCTION_SIN.cob
  1fbecd756e0491800acc29e54bb4740a  gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT.cob
+ 19516cce0fbf1cc247002d9d7b7ca4b4  gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob
+ cd74df35f207526ac9b3e80b12374d94  gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out
  ef4ef5dd7192b580f10056381fb739fa  gcc/testsuite/cobol.dg/group2/FUNCTION_STANDARD-DEVIATION.cob
  f9b9b58c1d970e5ac3ea46939698c0f6  gcc/testsuite/cobol.dg/group2/FUNCTION_SUBSTITUTE-CASE.cob
  9a30d9649e24eb08874d9513d62dae9c  gcc/testsuite/cobol.dg/group2/FUNCTION_SUBSTITUTE-CASE_with_reference_mod.cob
*************** e20062d5967eee32cece32410ee28ffc  gcc/te
*** 14589,14596 ****
--- 14705,14724 ----
  db7ffe2c01cc3731d9709182dc2a2056  gcc/testsuite/cobol.dg/group2/FUNCTION_YEAR-TO-YYYY.cob
  99f57082b8394f028588ff82c46c39d9  gcc/testsuite/cobol.dg/group2/FUNCTION_as_CALL_parameter_BY_CONTENT.cob
  607cf19be0770d73f7d3b5ec45f2d2b9  gcc/testsuite/cobol.dg/group2/FUNCTION_as_CALL_parameter_BY_CONTENT.out
+ ec91588e98bc7e4e7ee785627a66d2f0  gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.cob
+ d64b7fc84a379356d3c1ace327a9ae49  gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.out
  8bc30bbd5af3931c5987010e1d132185  gcc/testsuite/cobol.dg/group2/Floating_continuation_indicator__1_.cob
  ba6b3227a078619c9a062cd5ce2edeb7  gcc/testsuite/cobol.dg/group2/Floating_continuation_indicator__1_.out
+ 63ff422fa3042c8264e56b8bcb428dbc  gcc/testsuite/cobol.dg/group2/GLOBAL_FD__1_.cob
+ 95a7930c3a2d5a078ebb8e25a2a7694a  gcc/testsuite/cobol.dg/group2/GLOBAL_FD__2_.cob
+ ed915c803fb3c38dcccb14bab74114d6  gcc/testsuite/cobol.dg/group2/GLOBAL_FD__3_.cob
+ 4b148151ec55637b972c0e05e075ab0f  gcc/testsuite/cobol.dg/group2/GLOBAL_FD__4_.cob
+ 0202a04c110cbb5a532fe702b694c982  gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.cob
+ 5dad2cfa3d0898b583ca8152caae19ec  gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.out
+ 8c4d9fb8e8480e8eab3c85a8913fbdd2  gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.cob
+ e067afbb5887269d86386f7435562a4c  gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.out
+ 41be3efaab48b38de913b91187967dbf  gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.cob
+ b481bb58b296a62d744d3006d0156f61  gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.out
  ff665234d4e228729254d9f9088ddf64  gcc/testsuite/cobol.dg/group2/IBM_dialect_COMP_redefined_by_POINTER_as_64-bit.cob
  6edee3c216c6b5bc598396e40997f632  gcc/testsuite/cobol.dg/group2/IBM_dialect_COMP_redefined_by_POINTER_as_64-bit.out
  196e1b03222bd46fd53dd357a3d65c2b  gcc/testsuite/cobol.dg/group2/INSPECT_BACKWARD_REPLACING_LEADING.cob
*************** ead1f36f491fbcf2f8c5934348162ae0  gcc/te
*** 14605,14629 ****
  99d55c0be2cdb43ce848d5f01632f68c  gcc/testsuite/cobol.dg/group2/INSPECT_BACKWARD_simple_TALLYING.out
  058646f1f1ece86ff1566d76196dc06f  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_NULL.cob
  2fc81b1d02d22ad7740fa1e18f09d394  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constant.cob
! 099cea5849a1b7640f87859d868396ff  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob
! 7aa39c6d21d122277fdeefb41ced037a  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out
! c1c517bbaa6c584a3d715ade80aa18c9  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob
  28b183457c03adb078fa91f4a8150fed  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.out
! df690f4f23ad3fed0c1621643cf6b2ac  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob
  08556188ad41151849881b9a6f0d0a33  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.out
! 0bfaf296c2fb11b4afa65e0c7798f951  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob
  fdfb3dc2b9735cbe887d03147369a3cc  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.out
! d8504c87ddee0f9c464f5b49fa044eb3  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob
  91f5a07cc9b72ec1c09a50a81ae0ffdb  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.out
! a00d39f1507b4945dfc43e5b73057885  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob
  2c1d3bb5db82a97ce5d7540ffc67dcbe  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.out
  52092c9aff24e2f54a8e4535e369a069  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-r.cob
  246ed1e6a601496d05efb276f9fdf5da  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-r.out
  a428833cf91a3ada64cd8637a547c4a9  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5.cob
  dcc2eb016f705df7ad97ebdf85854454  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5.out
! c94f25f72ca7e9b19b3096c24f8c5df6  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob
  ff08d1a4483a22fd540f344cadcbfb52  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.out
! ee2382fa9d2d416428791140d3099b7d  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob
  a7910735e17060f2f8ce3d93ff13ca14  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.out
  b66f419a027d04379a43e95d166d37b6  gcc/testsuite/cobol.dg/group2/INSPECT_No_repeat_conversion_check.cob
  9be81b0bf1b87e4506eb4052e7db6289  gcc/testsuite/cobol.dg/group2/INSPECT_REPLACING_LEADING_ZEROS_BY_SPACES.cob
--- 14733,14757 ----
  99d55c0be2cdb43ce848d5f01632f68c  gcc/testsuite/cobol.dg/group2/INSPECT_BACKWARD_simple_TALLYING.out
  058646f1f1ece86ff1566d76196dc06f  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_NULL.cob
  2fc81b1d02d22ad7740fa1e18f09d394  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constant.cob
! 3fd332a73a25809c1f32be0852877123  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob
! 86271bbfced1dbb2e3d79743fcaf01e8  gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out
! 26fa67a6b7f3967cff667cf39d1f7616  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob
  28b183457c03adb078fa91f4a8150fed  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.out
! 191d37ef27c96c54a7cb610c0f5dcaab  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob
  08556188ad41151849881b9a6f0d0a33  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.out
! 8c7b0420f09784a736295cd3754220ea  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob
  fdfb3dc2b9735cbe887d03147369a3cc  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.out
! 1287680db8ff8bfa6ea856a56b56dc5d  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob
  91f5a07cc9b72ec1c09a50a81ae0ffdb  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.out
! 7fbe3d9b657916ef795b247fa838f671  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob
  2c1d3bb5db82a97ce5d7540ffc67dcbe  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.out
  52092c9aff24e2f54a8e4535e369a069  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-r.cob
  246ed1e6a601496d05efb276f9fdf5da  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-r.out
  a428833cf91a3ada64cd8637a547c4a9  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5.cob
  dcc2eb016f705df7ad97ebdf85854454  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5.out
! be0eef4c122af745e8e8ca19faed2cd0  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob
  ff08d1a4483a22fd540f344cadcbfb52  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.out
! 8ca7ca3dec39ca2f1419f6a8450425cf  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob
  a7910735e17060f2f8ce3d93ff13ca14  gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.out
  b66f419a027d04379a43e95d166d37b6  gcc/testsuite/cobol.dg/group2/INSPECT_No_repeat_conversion_check.cob
  9be81b0bf1b87e4506eb4052e7db6289  gcc/testsuite/cobol.dg/group2/INSPECT_REPLACING_LEADING_ZEROS_BY_SPACES.cob
*************** c7fa947f8d0bc34a12532d5fcd5f2624  gcc/te
*** 14634,14642 ****
  7a9665b9b0209c94433773c7ad518c72  gcc/testsuite/cobol.dg/group2/INSPECT_TALLYING_REPLACING_ISO_Example.out
  1da66825f23b1fdfdb39ab98eff13f46  gcc/testsuite/cobol.dg/group2/INSPECT_TRAILING.cob
  eac533e1d20c6fc3182209d89d95dce1  gcc/testsuite/cobol.dg/group2/INSPECT_TRAILING.out
  5f5ef3353680e2b791ea5a108b7f3876  gcc/testsuite/cobol.dg/group2/Indicators_______________-____D__.cob
  85a1b4e081b0827d61acd2b576f8e44d  gcc/testsuite/cobol.dg/group2/Indicators_______________-____D__.out
! bb1ae587bbebd3a1c6a04cf9b5ba7730  gcc/testsuite/cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__2_.cob
  23e5d4acb2cfe1daabc7c1196edf48e9  gcc/testsuite/cobol.dg/group2/Length_overflow__1_.cob
  60b725f10c9c85c70d97880dfe8191b3  gcc/testsuite/cobol.dg/group2/Length_overflow__1_.out
  4ca8d1c9c513d53c80702fd0b0d90ff9  gcc/testsuite/cobol.dg/group2/Length_overflow__2_.cob
--- 14762,14778 ----
  7a9665b9b0209c94433773c7ad518c72  gcc/testsuite/cobol.dg/group2/INSPECT_TALLYING_REPLACING_ISO_Example.out
  1da66825f23b1fdfdb39ab98eff13f46  gcc/testsuite/cobol.dg/group2/INSPECT_TRAILING.cob
  eac533e1d20c6fc3182209d89d95dce1  gcc/testsuite/cobol.dg/group2/INSPECT_TRAILING.out
+ 3ec6de10463d8d6cd1a8a964f7866bae  gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.cob
+ d36f8f9425c4a8000ad9c4a97185aca5  gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.out
  5f5ef3353680e2b791ea5a108b7f3876  gcc/testsuite/cobol.dg/group2/Indicators_______________-____D__.cob
  85a1b4e081b0827d61acd2b576f8e44d  gcc/testsuite/cobol.dg/group2/Indicators_______________-____D__.out
! 21310f898eb7367c6b0b6e944a94b53d  gcc/testsuite/cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__2_.cob
! c72d199ef391d7ef4f0dc80fb62d8518  gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.cob
! 9205da278ccf673e088502edc93ae569  gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.out
! 411c711305a2c39d1b45ddc6c640bb98  gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.cob
! b7b5c0b13c0986bd9870b8774c94506f  gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.out
! 1673dc1d35fc0941c252aa3d338886b7  gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.cob
! b7b5c0b13c0986bd9870b8774c94506f  gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.out
  23e5d4acb2cfe1daabc7c1196edf48e9  gcc/testsuite/cobol.dg/group2/Length_overflow__1_.cob
  60b725f10c9c85c70d97880dfe8191b3  gcc/testsuite/cobol.dg/group2/Length_overflow__1_.out
  4ca8d1c9c513d53c80702fd0b0d90ff9  gcc/testsuite/cobol.dg/group2/Length_overflow__2_.cob
*************** c37d3a6c238b882f0bdd37216ad6f2e2  gcc/te
*** 14647,14654 ****
--- 14783,14829 ----
  68b329da9893e34099c7d8ad5cb9c940  gcc/testsuite/cobol.dg/group2/Length_overflow_with_offset__2_.out
  6d1a930a76d4ab5cc520ba673d35ff38  gcc/testsuite/cobol.dg/group2/Length_overflow_with_offset__3_.cob
  68b329da9893e34099c7d8ad5cb9c940  gcc/testsuite/cobol.dg/group2/Length_overflow_with_offset__3_.out
+ 19fd942f8e59f704767cd4c3801d15eb  gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.cob
+ d36f8f9425c4a8000ad9c4a97185aca5  gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.out
+ 5ebd149ed7f04a25c51fa7d8de980d8c  gcc/testsuite/cobol.dg/group2/MOVE_indexes.cob
+ 97c01b68b11637098435c3a02e14bd02  gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.cob
+ 1e6c9ca775f50b1b92cdcb94da587ce1  gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.out
+ b769d75207f79ebe3eb2563bb30dd3af  gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.cob
+ 30919e1201a8434fdc9703fe9f44220e  gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.out
+ 76e9e3faeedd3093f630747e1e553d7e  gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.cob
+ 0a11f109c59b17f4d98bfef38f072257  gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.out
+ f29c6d152229f76d4f713afb775c12ec  gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.cob
+ 289564f851db3c7eaa453fd128838cef  gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.out
+ 93987462255f141a33e3e46599d42432  gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.cob
+ efa0252ae468d0d532211e8789da5ca2  gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.out
+ df1c0f569b9f309795cfc3ac22dac71d  gcc/testsuite/cobol.dg/group2/MOVE_to_itself.cob
+ c94667798e53c8974de0912e64b9f68a  gcc/testsuite/cobol.dg/group2/MOVE_with_group_refmod.cob
+ 2c123c5dbbc69e721ee716529140b779  gcc/testsuite/cobol.dg/group2/MOVE_with_refmod.cob
+ 8f8c59936f320caa5cbf1e76e96e0bf4  gcc/testsuite/cobol.dg/group2/MOVE_with_refmod__variable_.cob
+ 0c0ecf77a8e923475016b253a23bcada  gcc/testsuite/cobol.dg/group2/MULTIPLY_BY_literal_in_INITIAL_program.cob
  87b0bc0c9121907b31f6ee3692914a41  gcc/testsuite/cobol.dg/group2/MULTIPLY_to_FIX4.cob
  cf6cb0baac26cccf2005d78a4a1afb78  gcc/testsuite/cobol.dg/group2/MULTIPLY_to_FIX4.out
+ 94f742027b483c887f7c7d9b88ce3763  gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob
+ 92cebaacd47235a03b5cdfc283882a86  gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out
+ b0cd20ec9807fca430e620486c4f9568  gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob
+ 3b4538b5070b02cf4ebc653902e53e31  gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out
+ 860bb03d750b0e6019c8c327424cfe69  gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob
+ 4138538135757cec647177acf7df8383  gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.out
+ 74218fe0c6b8b43e4de4bc3003808fd7  gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob
+ 1ca492b7a58e4937f96a4f5658dd5109  gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out
+ 2132911af2c47babd039e20a0db5df2b  gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.cob
+ 1ca492b7a58e4937f96a4f5658dd5109  gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.out
+ 12c0eded4796b227fdba9f06f2750ed7  gcc/testsuite/cobol.dg/group2/Non-overflow_after_overflow.cob
+ 5161d2856532911f6000decbf4a94043  gcc/testsuite/cobol.dg/group2/Numeric_operations__1_.cob
+ 98fd8157724545e43c15a0a98294b8af  gcc/testsuite/cobol.dg/group2/Numeric_operations__2_.cob
+ 28a8c6a41a47ecd245f6d919206e8f3c  gcc/testsuite/cobol.dg/group2/Numeric_operations__3_.cob
+ 3a0295ca0da6e25b960c9002da4e43d0  gcc/testsuite/cobol.dg/group2/Numeric_operations__4_.cob
+ 283cefe1696fad0d72e2fe9feb37c82d  gcc/testsuite/cobol.dg/group2/Numeric_operations__5_.cob
+ f8541a2487ec2c1ec0315c33f8353f7a  gcc/testsuite/cobol.dg/group2/Numeric_operations__7_.cob
+ d52ba26b5b8852b2b84b61c6178bf74c  gcc/testsuite/cobol.dg/group2/Numeric_operations__8_.cob
+ 10b319abadd72ac43d077c2c8abc4b29  gcc/testsuite/cobol.dg/group2/OCCURS_clause_with_1_entry.cob
+ ffadeb7f068a020678b9d84378d57a88  gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.cob
+ a190093222cd87b2cfc63630a06ab84f  gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.out
  3a7c9ac63710b9bf9e307d6c2a2e15f2  gcc/testsuite/cobol.dg/group2/Offset_overflow.cob
  1dcca23355272056f04fe8bf20edfce0  gcc/testsuite/cobol.dg/group2/Offset_overflow.out
  9c84934cecd7d57e9badb90f27ae5490  gcc/testsuite/cobol.dg/group2/Offset_underflow.cob
*************** dcd8593c5a4b24a84b102089db6380bb  gcc/te
*** 14671,14692 ****
--- 14846,14923 ----
  5896e728b5c04b4052a5b32df688d156  gcc/testsuite/cobol.dg/group2/PACKED-DECIMAL_used_with_INITIALIZE.out
  b300246edd93d2e432dc797364e34d4f  gcc/testsuite/cobol.dg/group2/PACKED-DECIMAL_used_with_MOVE.cob
  ff6a0c9a67d9d8da4dc2990fd3c74ca5  gcc/testsuite/cobol.dg/group2/PACKED-DECIMAL_used_with_MOVE.out
+ 3c471fd2bf3ab723cf0d9de45db50eb8  gcc/testsuite/cobol.dg/group2/PERFORM_..._CONTINUE.cob
+ ff9955b77b5d71505880b825a02d148d  gcc/testsuite/cobol.dg/group2/PERFORM_inline__1_.cob
+ e3cbddf76f9632ea000d7a5beec1b0ea  gcc/testsuite/cobol.dg/group2/PERFORM_inline__2_.cob
+ f447900f3d80fb422f0e33541a0a216c  gcc/testsuite/cobol.dg/group2/PERFORM_type_OSVS.cob
+ a3a031c83f7e6f75afedffdeac38a3ee  gcc/testsuite/cobol.dg/group2/PIC_ZZZ-__ZZZ_.cob
  f81e4d1631666dc73cab672753a19f96  gcc/testsuite/cobol.dg/group2/POINTER__display.cob
  1a03d00f7a2dbbf286fe10017695b9e0  gcc/testsuite/cobol.dg/group2/POINTER__display.out
  b998cc667e7bffb26d211ded81f2ea9a  gcc/testsuite/cobol.dg/group2/Program-to-program_parameters_and_retvals.cob
  ae1cac648a1ff6940b99fbaaedea1b6e  gcc/testsuite/cobol.dg/group2/Program-to-program_parameters_and_retvals.out
+ ddc1206a8eee9490055e91297ef1f969  gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.cob
+ 3808cca0e34b8c45520af32017d2be67  gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.out
+ 038d6a02037bfd4730dd1a5d0e6fa0e5  gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.cob
+ 86aff1382616475acd4027fc4a483952  gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.out
+ 75dfdc364dc4cb8d9203030c20a0193a  gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.cob
+ 306b917492c853025f4e121e140dee5c  gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.out
+ 448a75a2b6dd9b774660282c8eb9b9db  gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.cob
+ 01fa1923d7242ef724d4c43d1ded0d40  gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.out
+ bd5f52542e3c7acb921b24bc4f5a7c1d  gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.cob
+ c57825a7ce86a25371220c76c9d5d3c9  gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.out
+ d7fe2305e491fd8885140a04859ff19c  gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.cob
+ c1f681651e4d01da0b34482dc0b89b58  gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.out
+ 8e670864954effb1cf137ecb02b97b07  gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.cob
+ fcbc6d6de41732df5f40b31bfac4e98c  gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.out
+ 1b30fc213b7b91ec552f8787c62d178c  gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.cob
+ a5bda2370aa714273444745d8c682793  gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.out
+ 031793e65aa34e22fc01b3dcfac377d2  gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.cob
+ 2e6eff1d26a181e9b797221fdcea3b35  gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.out
+ b86e5964232de4ac07fe7de4a22f3130  gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.cob
+ dc147fd7a0a3e750a028e4cc6772dfc7  gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.out
+ 8185297b4e03e58c0c9f0a0f2d7f4411  gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.cob
+ 912e77fc81a18dc6a7f5b8332a5f5533  gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.out
+ de18d438e9f2018ba6c22153beb87973  gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.cob
+ dc1dafad7c3c0c3499ca87dd61a0cb48  gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.out
  e38fa87f68f46664a4a725247faeaab1  gcc/testsuite/cobol.dg/group2/Recursive_FUNCTION_with_local-storage.cob
  0bba0c9388bb78c11a2533fbadc2974e  gcc/testsuite/cobol.dg/group2/Recursive_FUNCTION_with_local-storage.out
+ c63f4ece442994445b3b97fe2a8108dd  gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.cob
+ 43121e1ed7ce9778e6515a6349aeef22  gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.out
  2abb04d0384876e94a8ebacbc571d302  gcc/testsuite/cobol.dg/group2/Refmod__comparisons_inside_numeric-display.cob
  ed75a024a3fc8efd498fecff6e287928  gcc/testsuite/cobol.dg/group2/Refmod__comparisons_inside_numeric-display.out
  7bf14a602d7a0547e0f9f2164a3df0c3  gcc/testsuite/cobol.dg/group2/Refmod_sources_are_figurative_constants.cob
  0a74c346e7576df97fc8cd5eda3c6f43  gcc/testsuite/cobol.dg/group2/Refmod_sources_are_figurative_constants.out
  3a05b449be7a9a0c7692038ca6fa06e2  gcc/testsuite/cobol.dg/group2/Repository_functions_clause.cob
  295a45c9a89fce7d2454228853007a55  gcc/testsuite/cobol.dg/group2/Repository_functions_clause.out
+ 551208604a39f8c738cb04d9f3974c15  gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__1_.cob
+ 5bf43d6c0e0a558aadbd49c154ddb2c2  gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__2_.cob
+ 67b7a6e377e56135eafa5ca5bee77713  gcc/testsuite/cobol.dg/group2/SORT__table_sort.cob
+ 79c7d1cb85a494559fd0b684a57f9610  gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.cob
+ 4c0be3d6a1647497be537a28be82aeff  gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.out
+ 174e83c4551c443a8cada72eb7490f43  gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.cob
+ 60568a7a1509ccec1196f00551390628  gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.out
+ 1e60801f92662a00d2d0251bd9a22d72  gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.cob
+ 17e17c62bf9081a1ce5669bfc908c04f  gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.out
+ 44864579b2b9e89a3f8efbc748ef644e  gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.cob
+ 5f6e08b25387e623d5bda7820b74d798  gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.out
+ da4c31a3bdb07cd296d7d6c9ce1f9f79  gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_ERROR_STATUS.cob
+ bfe9a0e1b08273f3d0f06b4b69cff91b  gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_NORMAL_STATUS.cob
+ 9e9aafcfe8f4f958de32e91230e49790  gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.cob
+ 431cfffda18b4925568723730bb76095  gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.out
+ 53ea64d68396f6b00adec1fc82ac8a37  gcc/testsuite/cobol.dg/group2/STRING_with_subscript_reference.cob
+ 404f41d00a6cdadc15664ec7458639f4  gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.cob
+ 5cde5131bc03a36e9d12bccadc6a28a0  gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.out
+ f5fd4be048d78f148c18cc810bf4e8f5  gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.cob
+ 3600adb8ebbf8edcf3186ed5624861a2  gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.out
+ 823d710919a70fb1dd428c79bce5775c  gcc/testsuite/cobol.dg/group2/Simple_TYPEDEF.cob
  089c486b1d98af62c01e8d392d6bda48  gcc/testsuite/cobol.dg/group2/Simple_floating-point_MOVE.cob
  0f9c7dc18a0ed01c8e5aaf241723dbb2  gcc/testsuite/cobol.dg/group2/Simple_floating-point_MOVE.out
  83d33552cd4dabbace4977d9979e39bf  gcc/testsuite/cobol.dg/group2/Simple_floating-point_VALUE_and_MOVE.cob
  f1433e4ad768b452d26c539bc7c90c60  gcc/testsuite/cobol.dg/group2/Simple_floating-point_VALUE_and_MOVE.out
+ ef7879926c9e6fc15a9b649742410f18  gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob
+ 80c9433022b9df365ff07308d32b9336  gcc/testsuite/cobol.dg/group2/Simple_p-scaling.out
+ da9195f694cdf531af045955fcb1be4f  gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob
+ fb4f975832cfa17a33f58aba4b9cb092  gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out
  7f3d1774a5a66e799e1f242a238d9ead  gcc/testsuite/cobol.dg/group2/Static_reference_modification.cob
  935e5657c4ee72898cfbc35dcd96645b  gcc/testsuite/cobol.dg/group2/Static_reference_modification.out
  f63ca4b717f71c2f2a1bf43cab87b9fe  gcc/testsuite/cobol.dg/group2/UDF_RETURNING_group_and_PIC_9_5_.cob
*************** ec066836b3ad69bb7892cc5d9a34cc93  gcc/te
*** 14697,14704 ****
--- 14928,14948 ----
  bf21188860d25a68d2f9c85951bdde9b  gcc/testsuite/cobol.dg/group2/UDF_in_COMPUTE.out
  491ea987363ee8408cc92ed94c3156c1  gcc/testsuite/cobol.dg/group2/UDF_with_recursion.cob
  7941221362e9e3a59bf6bc5f15a12beb  gcc/testsuite/cobol.dg/group2/UDF_with_recursion.out
+ 37efd0098c6603b02633159392087a45  gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_LOW-VALUE.cob
+ 54ecfd7028c403ed7b72366f1bf5fe52  gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_SPACE-2.cob
+ 509be5022c900a7a34acd8eb097a0c6e  gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_POINTER.cob
+ bdbf9d12e14720fb7081dad4477a7bae  gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITER_IN.cob
+ 94779fadfcd69b9dabbc720f231c4593  gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.cob
+ db11d5a6931ffe03ab944182745e5364  gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.out
+ 8b384b3032fcac908a2fdc502dc156e8  gcc/testsuite/cobol.dg/group2/_-static__compilation.cob
+ 7ccbb0b17254a4346153a02e58218979  gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob
+ e54e577d8de75b710938fa62794487fc  gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out
  a75f94d635d6f81fcf6e666df78229f2  gcc/testsuite/cobol.dg/group2/call_subprogram_using_pointer__passing_pointer.cob
  5bc38b398042105e78868858a0adf5fd  gcc/testsuite/cobol.dg/group2/call_subprogram_using_pointer__passing_pointer.out
+ 5ee523a5b423e4957df5452b15a66ba1  gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.cob
+ 7abd1cea9afc680263418e1915b26370  gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.out
+ a79ad6ae6b95575c93ce475a6e7f019e  gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.cob
+ d36f8f9425c4a8000ad9c4a97185aca5  gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.out
  d19aee10ee780d01f992ae8e3163de2c  gcc/testsuite/cobol.dg/group2/floating-point_ADD_FORMAT_1.cob
  1f4c980c1ffe9180ceedc2adc73a4761  gcc/testsuite/cobol.dg/group2/floating-point_ADD_FORMAT_1.out
  921b344e7a1d544de6b267024c352bbb  gcc/testsuite/cobol.dg/group2/floating-point_ADD_FORMAT_2.cob
*************** dd53d7fb55d0e27adf37351af8df5cf2  gcc/te
*** 14717,14722 ****
--- 14961,14967 ----
  9cb056616f86c1cb844545727c347732  gcc/testsuite/cobol.dg/group2/floating-point_SUBTRACT_FORMAT_2.out
  1c314570f7cbb362dd3e7e739487c960  gcc/testsuite/cobol.dg/group2/floating-point_literals.cob
  96b2c647c950f5d1637c902171619577  gcc/testsuite/cobol.dg/group2/floating-point_literals.out
+ d23088a98a20d2069d7fb0cad5a416f7  gcc/testsuite/cobol.dg/group2/integer_arithmetic_on_floating-point_var.cob
  c834ffdd674f78d7b72f01018a77ff6a  gcc/testsuite/cobol.dg/literal1.cob
  3cc71e02a97975e9e88d7c2952f11912  gcc/testsuite/cobol.dg/output1.cob
  3615bcff9cca29fcbf752691f3481ef9  gcc/testsuite/cobol.dg/pass.cob
*************** e272ef3520e23457da8ff42e7d7411cb  gcc/te
*** 15794,15799 ****
--- 16039,16045 ----
  a3a3822acc6c0ae0b1c800209c7c3369  gcc/testsuite/g++.dg/conversion/to-virtual-base-1.C
  7a062897a2b4fb8f55640e4a532239dd  gcc/testsuite/g++.dg/conversion/void1.C
  11a0651cbba544a16a3a99edc6dd1232  gcc/testsuite/g++.dg/conversion/void2.C
+ 0ac77b28b37707df51a1cdf4180006e6  gcc/testsuite/g++.dg/coroutines/assume.C
  328c92600a7878c243c41f5fbc6d94ff  gcc/testsuite/g++.dg/coroutines/co-await-initlist1.C
  ada1ece7347c7f19252ad084712f97d6  gcc/testsuite/g++.dg/coroutines/co-await-initlist2.C
  f74a9d1bf6640b367d56a51317dbd163  gcc/testsuite/g++.dg/coroutines/co-await-moveonly1.C
*************** c460f4ef8e2c4347cfa3c06d82869353  gcc/te
*** 15840,15846 ****
  bf25ae08316051d9833582ee358711b2  gcc/testsuite/g++.dg/coroutines/coro-bad-grooaf-01-grooaf-expected.C
  8e2244c730152e6c96e90cb463a33d11  gcc/testsuite/g++.dg/coroutines/coro-builtins.C
  a20d9c7dba9d8ca91ca47515997e5b82  gcc/testsuite/g++.dg/coroutines/coro-function-decl.C
! 2ee732d97a353f9dae689cd5e7a0e6bf  gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C
  c650db04adc1ddeff58daa89681ac083  gcc/testsuite/g++.dg/coroutines/coro-missing-gro.C
  d622746579a0968e8d80e69091842263  gcc/testsuite/g++.dg/coroutines/coro-missing-initial-suspend.C
  01aba67828b1315bbab362390efef076  gcc/testsuite/g++.dg/coroutines/coro-missing-promise-yield.C
--- 16086,16092 ----
  bf25ae08316051d9833582ee358711b2  gcc/testsuite/g++.dg/coroutines/coro-bad-grooaf-01-grooaf-expected.C
  8e2244c730152e6c96e90cb463a33d11  gcc/testsuite/g++.dg/coroutines/coro-builtins.C
  a20d9c7dba9d8ca91ca47515997e5b82  gcc/testsuite/g++.dg/coroutines/coro-function-decl.C
! 07743b60abf7b730475c646065f5cff7  gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C
  c650db04adc1ddeff58daa89681ac083  gcc/testsuite/g++.dg/coroutines/coro-missing-gro.C
  d622746579a0968e8d80e69091842263  gcc/testsuite/g++.dg/coroutines/coro-missing-initial-suspend.C
  01aba67828b1315bbab362390efef076  gcc/testsuite/g++.dg/coroutines/coro-missing-promise-yield.C
*************** bd0ea3710f987fa8b866de1dda671af6  gcc/te
*** 15855,15861 ****
  4cd3a4318393e911038536b6ead6b491  gcc/testsuite/g++.dg/coroutines/coro-range-for1.C
  022bd06252ed95612a4c379cb3d160c6  gcc/testsuite/g++.dg/coroutines/coro.h
  cb41fef7448625fa4e0c8fd96e24fc4d  gcc/testsuite/g++.dg/coroutines/coro1-allocators.h
! 478574fcd282b18447d13478fa0bec3f  gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
  6f5627b19b794cfdd383607165c8ad4e  gcc/testsuite/g++.dg/coroutines/coro1-refs-and-ctors.h
  6487c0454968e62ff493f215450a35cc  gcc/testsuite/g++.dg/coroutines/coro1-ret-int-yield-int.h
  1c56e1e606c086d4fa5237e15e9d14e2  gcc/testsuite/g++.dg/coroutines/coroutines.exp
--- 16101,16107 ----
  4cd3a4318393e911038536b6ead6b491  gcc/testsuite/g++.dg/coroutines/coro-range-for1.C
  022bd06252ed95612a4c379cb3d160c6  gcc/testsuite/g++.dg/coroutines/coro.h
  cb41fef7448625fa4e0c8fd96e24fc4d  gcc/testsuite/g++.dg/coroutines/coro1-allocators.h
! 2d774ec6394ae7666d4e6bc4ec3e6183  gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
  6f5627b19b794cfdd383607165c8ad4e  gcc/testsuite/g++.dg/coroutines/coro1-refs-and-ctors.h
  6487c0454968e62ff493f215450a35cc  gcc/testsuite/g++.dg/coroutines/coro1-ret-int-yield-int.h
  1c56e1e606c086d4fa5237e15e9d14e2  gcc/testsuite/g++.dg/coroutines/coroutines.exp
*************** db554dd8b7e091b17b59c6d8ebf5684e  gcc/te
*** 15875,15881 ****
  ef7a17d165b83f4a1f6f2146ca741d68  gcc/testsuite/g++.dg/coroutines/pr102489.C
  85cc1b4c4f0e73f17a81693bed3275fa  gcc/testsuite/g++.dg/coroutines/pr103328.C
  858276614776f5f89fec709b05c75e87  gcc/testsuite/g++.dg/coroutines/pr103868.C
! a49dbbbe1c94b2689489e4c418d84316  gcc/testsuite/g++.dg/coroutines/pr104051.C
  b134bf48c5d1c37a3f48e0c7f25bd714  gcc/testsuite/g++.dg/coroutines/pr104981-preview-this.C
  9bcaec9fc97ae958d52ca93f20348767  gcc/testsuite/g++.dg/coroutines/pr105287.C
  3ed2837ec0a605227e3db035996b80d7  gcc/testsuite/g++.dg/coroutines/pr105301.C
--- 16121,16128 ----
  ef7a17d165b83f4a1f6f2146ca741d68  gcc/testsuite/g++.dg/coroutines/pr102489.C
  85cc1b4c4f0e73f17a81693bed3275fa  gcc/testsuite/g++.dg/coroutines/pr103328.C
  858276614776f5f89fec709b05c75e87  gcc/testsuite/g++.dg/coroutines/pr103868.C
! dd1a29fabad954f753ab8031a31e31d0  gcc/testsuite/g++.dg/coroutines/pr104051-0.C
! c8f94348fa3a6378ec5c6fd9589d0c4c  gcc/testsuite/g++.dg/coroutines/pr104051-1.C
  b134bf48c5d1c37a3f48e0c7f25bd714  gcc/testsuite/g++.dg/coroutines/pr104981-preview-this.C
  9bcaec9fc97ae958d52ca93f20348767  gcc/testsuite/g++.dg/coroutines/pr105287.C
  3ed2837ec0a605227e3db035996b80d7  gcc/testsuite/g++.dg/coroutines/pr105301.C
*************** c5029b3ababd909d21fec108130560c2  gcc/te
*** 15892,15897 ****
--- 16139,16145 ----
  95d1fc3ce20e1869ccfe0388d864bb6f  gcc/testsuite/g++.dg/coroutines/pr106973.C
  7801d6d5799eadc6c00398b3003e9a6d  gcc/testsuite/g++.dg/coroutines/pr107768.C
  f0ecdfa3037177a9490a46764f03f03b  gcc/testsuite/g++.dg/coroutines/pr108620.C
+ 00e5597997342d1d4ffa052764327afc  gcc/testsuite/g++.dg/coroutines/pr109283.C
  3d4d02626804c550ebe1e4cd3be90908  gcc/testsuite/g++.dg/coroutines/pr109682.C
  e871dade9f29aef626c6c2b971763df6  gcc/testsuite/g++.dg/coroutines/pr110171-1.C
  2d41ae2373f79574814b547e58adf65b  gcc/testsuite/g++.dg/coroutines/pr110171.C
*************** d94eaf98fb64f996342be49a4c220def  gcc/te
*** 15909,15921 ****
  d1a28daa3c4755a0f709ca07f8c48994  gcc/testsuite/g++.dg/coroutines/pr115858.C
  8496292f23f33e07ff0fe7b9e8f1eb91  gcc/testsuite/g++.dg/coroutines/pr115906-yield.C
  9514f224b21eb90bcef5ab37ae609a92  gcc/testsuite/g++.dg/coroutines/pr115906.C
- b23bcd7c0e520fe5a372838baf5a4e22  gcc/testsuite/g++.dg/coroutines/pr115908.C
  b75b654187426934820f1e2a8a63aaad  gcc/testsuite/g++.dg/coroutines/pr116327-preview-this.C
  36259c7c65f78b7358d2efa4fb0a9e54  gcc/testsuite/g++.dg/coroutines/pr116482.C
  808c70848e15a3d82e09b131dabb149b  gcc/testsuite/g++.dg/coroutines/pr116502.C
  99fb6f2e5c0e7bc8a3c78cbf8090a91f  gcc/testsuite/g++.dg/coroutines/pr116506.C
  59d8e6cfa9a450642b4a378751f44e8a  gcc/testsuite/g++.dg/coroutines/pr116793-1.C
  16df01e113e50e8969f23cb32c1ab8fd  gcc/testsuite/g++.dg/coroutines/pr116880.C
  cbb42d13b1660a8eb1d40a3d88308140  gcc/testsuite/g++.dg/coroutines/pr93458-1-missing-traits.C
  d9151fc224e4913ed7ffacd748769917  gcc/testsuite/g++.dg/coroutines/pr93458-2-bad-traits.C
  e9b715cb41c54f5b179b4725b788e338  gcc/testsuite/g++.dg/coroutines/pr93458-3-missing-handle.C
--- 16157,16173 ----
  d1a28daa3c4755a0f709ca07f8c48994  gcc/testsuite/g++.dg/coroutines/pr115858.C
  8496292f23f33e07ff0fe7b9e8f1eb91  gcc/testsuite/g++.dg/coroutines/pr115906-yield.C
  9514f224b21eb90bcef5ab37ae609a92  gcc/testsuite/g++.dg/coroutines/pr115906.C
  b75b654187426934820f1e2a8a63aaad  gcc/testsuite/g++.dg/coroutines/pr116327-preview-this.C
  36259c7c65f78b7358d2efa4fb0a9e54  gcc/testsuite/g++.dg/coroutines/pr116482.C
  808c70848e15a3d82e09b131dabb149b  gcc/testsuite/g++.dg/coroutines/pr116502.C
  99fb6f2e5c0e7bc8a3c78cbf8090a91f  gcc/testsuite/g++.dg/coroutines/pr116506.C
+ a086058df225e5fda842f4ebd12d6dbd  gcc/testsuite/g++.dg/coroutines/pr116775.C
  59d8e6cfa9a450642b4a378751f44e8a  gcc/testsuite/g++.dg/coroutines/pr116793-1.C
  16df01e113e50e8969f23cb32c1ab8fd  gcc/testsuite/g++.dg/coroutines/pr116880.C
+ 6f5d9f0541a73db813050efb87fec0d6  gcc/testsuite/g++.dg/coroutines/pr118903.C
+ 4ba2a97e93d914ad5510f0a3df7d5dba  gcc/testsuite/g++.dg/coroutines/pr120273.C
+ 639bf3d722d542a1aab7bcbf3114716a  gcc/testsuite/g++.dg/coroutines/pr120453.C
+ 5e0a6f554522f0537a21112c91d33895  gcc/testsuite/g++.dg/coroutines/pr120495.C
  cbb42d13b1660a8eb1d40a3d88308140  gcc/testsuite/g++.dg/coroutines/pr93458-1-missing-traits.C
  d9151fc224e4913ed7ffacd748769917  gcc/testsuite/g++.dg/coroutines/pr93458-2-bad-traits.C
  e9b715cb41c54f5b179b4725b788e338  gcc/testsuite/g++.dg/coroutines/pr93458-3-missing-handle.C
*************** d70e1067c46528fe83662185c66bef45  gcc/te
*** 16088,16094 ****
--- 16340,16351 ----
  ab314765ac0eb201bb3e11222207ee40  gcc/testsuite/g++.dg/coroutines/torture/pr109867.C
  25fa35420b604bea9857061f35656b5b  gcc/testsuite/g++.dg/coroutines/torture/pr113773.C
  90760c8a1f8f820b4edb0f623596ca78  gcc/testsuite/g++.dg/coroutines/torture/pr115905.C
+ 0028a1a5c1c37a5572baeb20adcf1a82  gcc/testsuite/g++.dg/coroutines/torture/pr115908.C
  980fc5bc26d63a8dc9bc8ac151650f40  gcc/testsuite/g++.dg/coroutines/torture/pr118874.C
+ f5e05a528274f5ccbd128504d532f540  gcc/testsuite/g++.dg/coroutines/torture/pr119916.C
+ 7056081fe2b2eea558f97e0e51454360  gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-1.C
+ 4462334c65b930d35ef9130fd5dee6e3  gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-2.C
+ 63b467f89662af371e2a58a44b0b9042  gcc/testsuite/g++.dg/coroutines/torture/pr121219.C
  33c54ba08ef1e709e2fb67d90cc048b4  gcc/testsuite/g++.dg/coroutines/torture/pr92933.C
  56811f88338809bbea0a94b564f9b4da  gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
  2248a954a08f9c689c19929abad2771e  gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
*************** ab314765ac0eb201bb3e11222207ee40  gcc/te
*** 16099,16113 ****
  e31d7e9c9741a6022f86423a2dc05bf0  gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
  f8ced3c48c7b4157a0ce42b6357a57e1  gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
  a1d47e00d8d93531524293eaeb79d679  gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
! c5d894e875c93d964067c3d3f2840963  gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
! c4c4d941093caafa7fa4360b5d87ebda  gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
! 5530bd9067a590a4775e1e93032ae665  gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
! f0b8bd59fbe4178958a8d3d093454011  gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
! fbd5b9659b98a2782504a53f6a2ed13a  gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
! bc3eb934e3efbca87efc62810de25ebb  gcc/testsuite/g++.dg/coroutines/torture/pr95615.inc
  0c46a0da3de6e20a370e03838d0a76dd  gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
! 268d67ce285ba96b8d0e8cf7ce79a0c6  gcc/testsuite/g++.dg/coroutines/torture/special-termination-00-sync-completion.C
! 769f8ad9c6a37192347486ae52ba1f81  gcc/testsuite/g++.dg/coroutines/torture/special-termination-01-self-destruct.C
  074cd02b7474e8119248041c10f08ad3  gcc/testsuite/g++.dg/cpp/_Pragma1.C
  8ce78309bd631829da82f2798d24d628  gcc/testsuite/g++.dg/cpp/c++98-pedantic.C
  731959b0908b124d4eee4dab104d68bb  gcc/testsuite/g++.dg/cpp/c++98.C
--- 16356,16376 ----
  e31d7e9c9741a6022f86423a2dc05bf0  gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
  f8ced3c48c7b4157a0ce42b6357a57e1  gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
  a1d47e00d8d93531524293eaeb79d679  gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
! d82e0c0f07010e61dd18cb83f8c2057b  gcc/testsuite/g++.dg/coroutines/torture/pr95615-00-nothing-throws.C
! c4c4d941093caafa7fa4360b5d87ebda  gcc/testsuite/g++.dg/coroutines/torture/pr95615-01-promise-ctor-throws.C
! 5530bd9067a590a4775e1e93032ae665  gcc/testsuite/g++.dg/coroutines/torture/pr95615-02-get-return-object-throws.C
! c5d894e875c93d964067c3d3f2840963  gcc/testsuite/g++.dg/coroutines/torture/pr95615-03-initial-suspend-throws.C
! f0b8bd59fbe4178958a8d3d093454011  gcc/testsuite/g++.dg/coroutines/torture/pr95615-04-initial-await-ready-throws.C
! fbd5b9659b98a2782504a53f6a2ed13a  gcc/testsuite/g++.dg/coroutines/torture/pr95615-05-initial-await-suspend-throws.C
! bdd30a73b1365621820d564740c53d71  gcc/testsuite/g++.dg/coroutines/torture/pr95615-06-initial-await-resume-throws.C
! 39c96ceeab4854929c3d9a217f5423cc  gcc/testsuite/g++.dg/coroutines/torture/pr95615-07-body-throws.C
! 1d02f63a995e0883f0ad09bc49f3a816  gcc/testsuite/g++.dg/coroutines/torture/pr95615-08-initial-suspend-throws-uhe-throws.C
! 3ee461e682d9360fa4d43d551ba5c1cf  gcc/testsuite/g++.dg/coroutines/torture/pr95615-09-body-throws-uhe-throws.C
! 8ae590f83f84cf2460b308be265813e9  gcc/testsuite/g++.dg/coroutines/torture/pr95615.inc
  0c46a0da3de6e20a370e03838d0a76dd  gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
! 5e7bca6d14a61fe329d1a4e54dd0d041  gcc/testsuite/g++.dg/coroutines/torture/special-termination-00-sync-completion.C
! 729d7261244a4b93f8caf0dadbea7c82  gcc/testsuite/g++.dg/coroutines/torture/special-termination-01-self-destruct.C
! d571703303e59ab43d8a90e6e4926187  gcc/testsuite/g++.dg/coroutines/unevaluated.C
  074cd02b7474e8119248041c10f08ad3  gcc/testsuite/g++.dg/cpp/_Pragma1.C
  8ce78309bd631829da82f2798d24d628  gcc/testsuite/g++.dg/cpp/c++98-pedantic.C
  731959b0908b124d4eee4dab104d68bb  gcc/testsuite/g++.dg/cpp/c++98.C
*************** b7603919caddaa5fd970651b9b859a39  gcc/te
*** 16340,16345 ****
--- 16603,16609 ----
  ecc0ef1a879b400ac24f5ea090a2027c  gcc/testsuite/g++.dg/cpp0x/alias-decl-79.C
  82163eb65f3dd2851d5aa67b8d473252  gcc/testsuite/g++.dg/cpp0x/alias-decl-79a.C
  77aa48fcd9f9b9ffab08fa7ebc5d52e2  gcc/testsuite/g++.dg/cpp0x/alias-decl-8.C
+ 2c4b73fa235be0a7a7f59ce113d65ff8  gcc/testsuite/g++.dg/cpp0x/alias-decl-80.C
  0fea677a266ad89646463d41e4df0566  gcc/testsuite/g++.dg/cpp0x/alias-decl-80296.C
  2b0ac9ee7e77902ee76b92dfbfcc37b3  gcc/testsuite/g++.dg/cpp0x/alias-decl-9.C
  0c857f35d307877fbdc35abb07bb117c  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286.C
*************** f4f262de9adf968192a3da56a3c4adc1  gcc/te
*** 16612,16617 ****
--- 16876,16882 ----
  216c8de64dd9752d2d84eb202e80c708  gcc/testsuite/g++.dg/cpp0x/constexpr-array28.C
  1c4a44e298a16b855d3f955b665c3dc6  gcc/testsuite/g++.dg/cpp0x/constexpr-array29.C
  8b7c8e7c1b64cfa0626f7f2311c9fef5  gcc/testsuite/g++.dg/cpp0x/constexpr-array3.C
+ 6a5432548c6c9078379174727c5c44ec  gcc/testsuite/g++.dg/cpp0x/constexpr-array30.C
  6451aa5bb5fa736dda3ebad1dc2e8336  gcc/testsuite/g++.dg/cpp0x/constexpr-array4.C
  1d46f32449f9e0292d662928246ec784  gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C
  be6358dd3b71be0a5561e5437089998e  gcc/testsuite/g++.dg/cpp0x/constexpr-array6.C
*************** b06aea4ef34a1015ed525413558ddac0  gcc/te
*** 21322,21327 ****
--- 21587,21594 ----
  a95dbf28241ffec87fb48912ed83e629  gcc/testsuite/g++.dg/cpp2a/concepts-using2.C
  8d75a7bd1dff1e92992b77d66deb889b  gcc/testsuite/g++.dg/cpp2a/concepts-using3.C
  1c0b6956abb6cc9d451cbad9763665e0  gcc/testsuite/g++.dg/cpp2a/concepts-using4.C
+ 10200cb73b1bb6443f53044708cc6c85  gcc/testsuite/g++.dg/cpp2a/concepts-using5.C
+ d413557ac25b939174ec565ccf9ef3a8  gcc/testsuite/g++.dg/cpp2a/concepts-using5a.C
  eb51a2e88a343491b3a0676b4ff623cf  gcc/testsuite/g++.dg/cpp2a/concepts-var-templ1.C
  c344a88e2fb58ca9d19beb62602dabc5  gcc/testsuite/g++.dg/cpp2a/concepts-var-templ1a.C
  d29bcca633bb639bebf16b846292cebc  gcc/testsuite/g++.dg/cpp2a/concepts-var-templ1b.C
*************** b5f4f9a8f5933754f321648f67e54dac  gcc/te
*** 21447,21452 ****
--- 21714,21721 ----
  1a30baf82f09866d37d6e96a76379f47  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic16.C
  b64753c380df7428569f8befeb1510e8  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic17.C
  8fe226b0e900985b1f76643e8aaf737b  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic18.C
+ ba2b3d3cd6f23028bc237ee7025256fb  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic19.C
+ dd98bfd651ed53723db105ea6def894e  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic1a.C
  6a856dd4720aaf5ca7ba6e7422f849a9  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic2.C
  6ddf97a1878f89c02ca0c76de5f0f08f  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic3.C
  28c0eaf9ba35a479b5d50ddb90e7dc07  gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic4.C
*************** ac5555b4df88275d04e41aa95b0aca9a  gcc/te
*** 25713,25718 ****
--- 25982,25989 ----
  f1d9eed0025353353019a54838c87ed9  gcc/testsuite/g++.dg/lto/pr113208.h
  22230575f68a36106d16454407701753  gcc/testsuite/g++.dg/lto/pr113208_0.C
  36a6b4f47dbbdcca4469926f1398a598  gcc/testsuite/g++.dg/lto/pr113208_1.C
+ 56055cfb3b55c9e36f0d7e5af4adee7f  gcc/testsuite/g++.dg/lto/pr114790_0.C
+ 944a89dbdddf4ca4f396efb802bbd896  gcc/testsuite/g++.dg/lto/pr114790_1.C
  09299bd83d910caa117e38cf3391ebd9  gcc/testsuite/g++.dg/lto/pr118785_0.C
  50e4e380af101cf3819f543c64d428ba  gcc/testsuite/g++.dg/lto/pr118817_0.C
  170fab8219ca5d2db78f5026f9bf82c8  gcc/testsuite/g++.dg/lto/pr119067_0.C
*************** d35c4ba42a40c90525ba6fdc0e2639be  gcc/te
*** 26096,26101 ****
--- 26367,26373 ----
  4eba97bb9fb87086def101e7b749a77b  gcc/testsuite/g++.dg/modules/cpp-18.C
  c0ef2b8d52cd62eb091cd6a8355a3f55  gcc/testsuite/g++.dg/modules/cpp-19.C
  d3b0a55e79b15e865f383cb22a8e75f3  gcc/testsuite/g++.dg/modules/cpp-20.C
+ eca303993798718fc515fd54bb62d96e  gcc/testsuite/g++.dg/modules/cpp-21.C
  7df70a1a3701f4e80b19b9464ac25c08  gcc/testsuite/g++.dg/modules/cpp-2_a.H
  783ab638033bc17058b529268c3f6d93  gcc/testsuite/g++.dg/modules/cpp-2_b.H
  e1048ef57be07983f84fafa8dc76318c  gcc/testsuite/g++.dg/modules/cpp-2_c.C
*************** a86953a3ff1628b1d63b12ffe6288868  gcc/te
*** 26664,26669 ****
--- 26936,26944 ----
  2991f7376dac2c4c117eb1695b965df2  gcc/testsuite/g++.dg/modules/merge-18_a.H
  6c422e6c5277ccdfb90784932bec2657  gcc/testsuite/g++.dg/modules/merge-18_b.H
  b96974b9a375faece8796bfa8110e67f  gcc/testsuite/g++.dg/modules/merge-18_c.C
+ d729d452704fc2a7d62fde224acc1f3d  gcc/testsuite/g++.dg/modules/merge-19.h
+ eea88cc62cf091daa90c9da3714651e9  gcc/testsuite/g++.dg/modules/merge-19_a.H
+ 42f128106dcccfb827c0d63b8aa87a9b  gcc/testsuite/g++.dg/modules/merge-19_b.C
  c55f90e5ef6f7ab3992f6606da04c6d7  gcc/testsuite/g++.dg/modules/merge-1_a.C
  8dfdc3716d1dda6833ec359936a84a2c  gcc/testsuite/g++.dg/modules/merge-1_b.C
  4f1ab1a658f8fe8b82d453787cd70235  gcc/testsuite/g++.dg/modules/merge-2_a.H
*************** d71ad1e42d5edd10bf65dd64c81a4107  gcc/te
*** 26932,26937 ****
--- 27207,27213 ----
  57c308104a9d589b59baa6c5289ef1ae  gcc/testsuite/g++.dg/modules/pr106761_b.C
  ce1fbbd73d685e48bf6b219484083996  gcc/testsuite/g++.dg/modules/pr106820_a.H
  d7c5aacc3100ff130d9b06f0b4d7b551  gcc/testsuite/g++.dg/modules/pr106820_b.C
+ 633de5cc96e42a8f75edab46b98b2a45  gcc/testsuite/g++.dg/modules/pr108080.H
  d6c4487b2cdfe513fca59a9da2b03d10  gcc/testsuite/g++.dg/modules/pr113580_a.C
  2d13920b57e09bfba57cfacc02b5548b  gcc/testsuite/g++.dg/modules/pr113580_b.C
  b0187e4110d3e1feaedea59af55274e1  gcc/testsuite/g++.dg/modules/pr114005_a.C
*************** f678b424d2148346313809851fbbe611  gcc/te
*** 29265,29270 ****
--- 29541,29547 ----
  adfc90a4ec5f7e6acacbdafc592a2862  gcc/testsuite/g++.dg/pr113673.C
  6431e5522e8138d482199836afdeb823  gcc/testsuite/g++.dg/pr114501_0.C
  ad9259e6bdf3bdde202871cc62bd27bb  gcc/testsuite/g++.dg/pr115232.C
+ d817d87f4590a7694dcb15ea0a0856a3  gcc/testsuite/g++.dg/pr115605.C
  af4c6212c5e52bf135c1867c6656d88b  gcc/testsuite/g++.dg/pr117222.C
  907af190ec2f3efd086d2b352c9934cd  gcc/testsuite/g++.dg/pr117919.C
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
*************** d5e518a89029e53244731ceed8c64fc4  gcc/te
*** 33279,33284 ****
--- 33556,33562 ----
  26bafcbe2a9f3729e0b0e2ff8ccf5317  gcc/testsuite/g++.dg/warn/deprecated-2.C
  a0b26ea4922bc88a4f4ca39b3ee18d6f  gcc/testsuite/g++.dg/warn/deprecated-20.C
  d49d9ec1f461eba29eaa5264d9b35572  gcc/testsuite/g++.dg/warn/deprecated-21.C
+ 2d65fcc7a592e874c83b7927e739b934  gcc/testsuite/g++.dg/warn/deprecated-22.C
  482df2a6c06bdf9046c6729484298715  gcc/testsuite/g++.dg/warn/deprecated-3.C
  98c2c2dc0644115f45902f826dc56a04  gcc/testsuite/g++.dg/warn/deprecated-4.C
  9fb0087e50484de53d979d8e849be2eb  gcc/testsuite/g++.dg/warn/deprecated-5.C
*************** edc1a994e1246279f2c5c7c45650e061  gcc/te
*** 33380,33385 ****
--- 33658,33667 ----
  adea0a023eba0c3c51b6a4894014d35a  gcc/testsuite/g++.dg/warn/pr11159.C
  f257fca4d00c8c67aa2b9d6e43ee906f  gcc/testsuite/g++.dg/warn/pr11492.C
  b095255e81269c7739d80713d78edfb0  gcc/testsuite/g++.dg/warn/pr117825.C
+ 2dc63f140d1acf805a2308a1da3d3c66  gcc/testsuite/g++.dg/warn/pr121133-1.C
+ 72a44d8057b9fd194014f5fd4d0dd103  gcc/testsuite/g++.dg/warn/pr121133-2.C
+ cf0c4d575c42bdb9c6e7c4896c869563  gcc/testsuite/g++.dg/warn/pr121133-3.C
+ 05cce23e42b4b2cd226ee30196b78b71  gcc/testsuite/g++.dg/warn/pr121133-4.C
  5fab7f879534ef351718dc73d825b667  gcc/testsuite/g++.dg/warn/pr12242.C
  5ea14e490362652b825c770f9d00d814  gcc/testsuite/g++.dg/warn/pr13358-2.C
  5af7a1b2eded6ae8e6b38e3c1b5e15a6  gcc/testsuite/g++.dg/warn/pr13358-3.C
*************** f8e0507acf1da471f9078e673cd34f50  gcc/te
*** 41849,41854 ****
--- 42131,42138 ----
  8efb6297e02533cf0675e999d59cfd22  gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-2.c
  27c4dc4a5d5cceb63e98ff9d18a69060  gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-3.c
  361244e98a5aa655bb702c901a203431  gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-4.c
+ 0bf1d907914116fd8f750db8179f95e0  gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-5.c
+ 6833de76a1c433d35cafcf8eae1797d0  gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-6.c
  7929f22a4e631866685ffbcf83fe6de6  gcc/testsuite/gcc.dg/Wdesignated-init-2.c
  49177ef77099fc022a700d8577598a0f  gcc/testsuite/gcc.dg/Wdesignated-init.c
  1d41eb4285603abaa2b5f0a778ebef1a  gcc/testsuite/gcc.dg/Wdouble-promotion.c
*************** d217543f954eb3f31e246355824f653a  gcc/te
*** 43254,43259 ****
--- 43538,43544 ----
  43db7c5f800ce763fcf885501389882a  gcc/testsuite/gcc.dg/bitint-122.c
  7d02ff9539e664bbbcfc85b464d916c1  gcc/testsuite/gcc.dg/bitint-123.c
  11e6d8eaf7b16f3f8aeaf1c2e626996f  gcc/testsuite/gcc.dg/bitint-124.c
+ c446cf331d60d19eea3950d7f444f8b3  gcc/testsuite/gcc.dg/bitint-125.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
*************** ee94511375797117140ca777fd1695b1  gcc/te
*** 45314,45320 ****
  704c9a2dca0a451cca6e5855f7f2347f  gcc/testsuite/gcc.dg/darwin-minversion-7.c
  5a8b775f8ce1e0cafb8782fbc39b58e4  gcc/testsuite/gcc.dg/darwin-minversion-8.c
  aa9dfa39c42ef65a88c0a708412fb842  gcc/testsuite/gcc.dg/darwin-minversion-9.c
! b663e3641887fa62bae033abee133eae  gcc/testsuite/gcc.dg/darwin-minversion-link.c
  b66bb093837bda7692b73c8aa9711e00  gcc/testsuite/gcc.dg/darwin-sections.c
  f7857b3d082c7452ee5a60411d5f02bc  gcc/testsuite/gcc.dg/darwin-segaddr.c
  e3d2d2840d7d23dee7e2cd94e097a114  gcc/testsuite/gcc.dg/darwin-version-1.c
--- 45599,45605 ----
  704c9a2dca0a451cca6e5855f7f2347f  gcc/testsuite/gcc.dg/darwin-minversion-7.c
  5a8b775f8ce1e0cafb8782fbc39b58e4  gcc/testsuite/gcc.dg/darwin-minversion-8.c
  aa9dfa39c42ef65a88c0a708412fb842  gcc/testsuite/gcc.dg/darwin-minversion-9.c
! c4adb9fbe996928419d7acb79ac559cd  gcc/testsuite/gcc.dg/darwin-minversion-link.c
  b66bb093837bda7692b73c8aa9711e00  gcc/testsuite/gcc.dg/darwin-sections.c
  f7857b3d082c7452ee5a60411d5f02bc  gcc/testsuite/gcc.dg/darwin-segaddr.c
  e3d2d2840d7d23dee7e2cd94e097a114  gcc/testsuite/gcc.dg/darwin-version-1.c
*************** d599542d2bc9679a29260101b5c82178  gcc/te
*** 48837,48843 ****
  96ff609825b6520f9e9cc6f866930933  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173.h
  47922d1e280d753ecebc1c5e88e9463e  gcc/testsuite/gcc.dg/plugin/location_overflow_plugin.cc
  c323b7b4ac0cf2caa641c6bb31350375  gcc/testsuite/gcc.dg/plugin/must-tail-call-1.c
! de7a6b85ff1667e6ef4b89117e774f2d  gcc/testsuite/gcc.dg/plugin/must-tail-call-2.c
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
--- 49122,49128 ----
  96ff609825b6520f9e9cc6f866930933  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173.h
  47922d1e280d753ecebc1c5e88e9463e  gcc/testsuite/gcc.dg/plugin/location_overflow_plugin.cc
  c323b7b4ac0cf2caa641c6bb31350375  gcc/testsuite/gcc.dg/plugin/must-tail-call-1.c
! 15d6ac5e32e6d81f4432170c9841a27a  gcc/testsuite/gcc.dg/plugin/must-tail-call-2.c
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
*************** e33af444b933ae4b76c6fd6ea535e112  gcc/te
*** 49478,49487 ****
--- 49763,49775 ----
  2518844f3bab4851f61e1608c80ae741  gcc/testsuite/gcc.dg/pr120057-1.c
  cb7b5505103ef079e746dd619a21ee86  gcc/testsuite/gcc.dg/pr120057-2.c
  5db833c38de3e5ade44290c729fb748c  gcc/testsuite/gcc.dg/pr120074.c
+ 5bcef1d2686ff4144a4a4fcce9aad3ec  gcc/testsuite/gcc.dg/pr120353.c
+ 419de75d508972d0daecf2c3b360b2c8  gcc/testsuite/gcc.dg/pr120354.c
  9444444b4f048eadd4b6a2d7592f5fca  gcc/testsuite/gcc.dg/pr120480.c
  4a9d9632d82cf6c4f4f4acbad8ab018d  gcc/testsuite/gcc.dg/pr120638.c
  c57884e34f257e33d206372fc675b716  gcc/testsuite/gcc.dg/pr121035.c
  d602fec0c129037ce49acd7cccfd6266  gcc/testsuite/gcc.dg/pr121202.c
+ 7032b52dc2dd1e6cab514293c2d0b276  gcc/testsuite/gcc.dg/pr121322.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** d74952b1e73d78295fc0ccb16c0a8b6f  gcc/te
*** 52528,52533 ****
--- 52816,52822 ----
  896ba6298bac21304239e8c0dcbadbd9  gcc/testsuite/gcc.dg/torture/bitint-76.c
  2608aa69ac055d04559dce7394b97765  gcc/testsuite/gcc.dg/torture/bitint-77.c
  cf2a2337cf009457d836bd48e49c0af3  gcc/testsuite/gcc.dg/torture/bitint-8.c
+ 368a2f51dfadfa4e9fbd0017065b6a83  gcc/testsuite/gcc.dg/torture/bitint-85.c
  4d03bd57dac0507a44cc15b9afacd8a3  gcc/testsuite/gcc.dg/torture/bitint-9.c
  cf9904d4026e69bddaf745011bbaaab3  gcc/testsuite/gcc.dg/torture/builtin-attr-1.c
  c3c39411545c83e500562780b71883b6  gcc/testsuite/gcc.dg/torture/builtin-complex-1.c
*************** ad2bfdd6a893fdb581e5cffc0c618d52  gcc/te
*** 55521,55526 ****
--- 55810,55817 ----
  308d8846eea85f9ac56f27fb495845ee  gcc/testsuite/gcc.dg/tree-ssa/pr118487.c
  b8236d8ce423075243050d2ed9692781  gcc/testsuite/gcc.dg/tree-ssa/pr118517.c
  6d2d98158a34d9ab09e487779a321f3d  gcc/testsuite/gcc.dg/tree-ssa/pr118637.c
+ b0891b1dddf226da47f4f976abdd7cb0  gcc/testsuite/gcc.dg/tree-ssa/pr119085.c
+ ef9f94de68c006babcf9169489ed1b51  gcc/testsuite/gcc.dg/tree-ssa/pr121264.c
  78e6c5fe63f7305009c8a79840fe20dc  gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
  eab19e0c04884cd782c9879cbe292109  gcc/testsuite/gcc.dg/tree-ssa/pr14341.c
  9945ed7002a5f7d4918e8ff5eb4cb647  gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c
*************** f3a261701959ac2b47476c1030a0b0f0  gcc/te
*** 57832,57838 ****
  fcd62ed55b3c39965db79cc237474ba7  gcc/testsuite/gcc.dg/vect/pr111860.c
  9386a649786af115ac3366d153cb1ece  gcc/testsuite/gcc.dg/vect/pr111882.c
  e0a4c017051217573c6b9a677272bd56  gcc/testsuite/gcc.dg/vect/pr111915.c
! bfdd53552f9b391621a13f05b561eb3c  gcc/testsuite/gcc.dg/vect/pr112325.c
  769cf4bfcb97c43ac962799ae8d222c5  gcc/testsuite/gcc.dg/vect/pr112505.c
  61f2084097045706a89a10ff2539ff64  gcc/testsuite/gcc.dg/vect/pr112774.c
  74f8fa21b890e04b38c4f16805d074a3  gcc/testsuite/gcc.dg/vect/pr112818.c
--- 58123,58129 ----
  fcd62ed55b3c39965db79cc237474ba7  gcc/testsuite/gcc.dg/vect/pr111860.c
  9386a649786af115ac3366d153cb1ece  gcc/testsuite/gcc.dg/vect/pr111882.c
  e0a4c017051217573c6b9a677272bd56  gcc/testsuite/gcc.dg/vect/pr111915.c
! a1f7656934a32011b88a5a6d41811297  gcc/testsuite/gcc.dg/vect/pr112325.c
  769cf4bfcb97c43ac962799ae8d222c5  gcc/testsuite/gcc.dg/vect/pr112505.c
  61f2084097045706a89a10ff2539ff64  gcc/testsuite/gcc.dg/vect/pr112774.c
  74f8fa21b890e04b38c4f16805d074a3  gcc/testsuite/gcc.dg/vect/pr112818.c
*************** e7fb560a26e6ba7e4ff2b3e4099c2ee1  gcc/te
*** 57887,57893 ****
  8bffd7683085678a0836b663cddf1a51  gcc/testsuite/gcc.dg/vect/pr117594.c
  e1e47aa962c21b731de5571124e64863  gcc/testsuite/gcc.dg/vect/pr117767.c
  f2d7cfefe800e015616ceccb1b7e09df  gcc/testsuite/gcc.dg/vect/pr117874.c
! 0184865387ef1351c545760f67bafe0c  gcc/testsuite/gcc.dg/vect/pr117888-1.c
  5209a0642c46507918b4eda25788f727  gcc/testsuite/gcc.dg/vect/pr118140.c
  61d81eb435eb88fefa0ff5432239ee6a  gcc/testsuite/gcc.dg/vect/pr118558.c
  823ee04b806e8d8fb9336c6daa4d0a05  gcc/testsuite/gcc.dg/vect/pr118653.c
--- 58178,58184 ----
  8bffd7683085678a0836b663cddf1a51  gcc/testsuite/gcc.dg/vect/pr117594.c
  e1e47aa962c21b731de5571124e64863  gcc/testsuite/gcc.dg/vect/pr117767.c
  f2d7cfefe800e015616ceccb1b7e09df  gcc/testsuite/gcc.dg/vect/pr117874.c
! 6e15dfe8ada5810fd5f8e07a27fc1f09  gcc/testsuite/gcc.dg/vect/pr117888-1.c
  5209a0642c46507918b4eda25788f727  gcc/testsuite/gcc.dg/vect/pr118140.c
  61d81eb435eb88fefa0ff5432239ee6a  gcc/testsuite/gcc.dg/vect/pr118558.c
  823ee04b806e8d8fb9336c6daa4d0a05  gcc/testsuite/gcc.dg/vect/pr118653.c
*************** a9f60b255bd045a55a1c552ca8a26db4  gcc/te
*** 58914,58919 ****
--- 59205,59211 ----
  3081c4b62e6b3d9d8577275748ef795d  gcc/testsuite/gcc.dg/vect/vect-early-break_135-pr120143.c
  d69a35cfdc5358c8603e5c2e35112d75  gcc/testsuite/gcc.dg/vect/vect-early-break_135-pr120211.c
  b14a7c563931d32378d5a7c177b4a9c9  gcc/testsuite/gcc.dg/vect/vect-early-break_136-pr120357.c
+ 40ef6dac17d7e04eaed85a5b371dc2eb  gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c
  73bc7475d6af2bd77455abec5df316e4  gcc/testsuite/gcc.dg/vect/vect-early-break_14.c
  e90473e2ecf7c08db9278bdca5060773  gcc/testsuite/gcc.dg/vect/vect-early-break_15.c
  2232d395ceff11af9b28f269e86162c9  gcc/testsuite/gcc.dg/vect/vect-early-break_16.c
*************** f2db07147352fcd7264392170cb624f2  gcc/te
*** 58956,58962 ****
  a5b43e5af772bc8bb12357c98990bc22  gcc/testsuite/gcc.dg/vect/vect-early-break_5.c
  747e14cd2aefae21174fa633459a497c  gcc/testsuite/gcc.dg/vect/vect-early-break_50.c
  cb74e82e285dc1e77625b4824212b14a  gcc/testsuite/gcc.dg/vect/vect-early-break_51.c
! 3efbc9af84b1e7c0ba4b15e63613cb4f  gcc/testsuite/gcc.dg/vect/vect-early-break_52.c
  dcc3e392d1541bca93c5897e85d33746  gcc/testsuite/gcc.dg/vect/vect-early-break_53.c
  2b148b4ecaed809d92b99c39a15d788c  gcc/testsuite/gcc.dg/vect/vect-early-break_54.c
  cedec433c63e1267dec0f94451d7b0f7  gcc/testsuite/gcc.dg/vect/vect-early-break_55.c
--- 59248,59254 ----
  a5b43e5af772bc8bb12357c98990bc22  gcc/testsuite/gcc.dg/vect/vect-early-break_5.c
  747e14cd2aefae21174fa633459a497c  gcc/testsuite/gcc.dg/vect/vect-early-break_50.c
  cb74e82e285dc1e77625b4824212b14a  gcc/testsuite/gcc.dg/vect/vect-early-break_51.c
! 47982af4cbf8cd42f51222bfe781ad1f  gcc/testsuite/gcc.dg/vect/vect-early-break_52.c
  dcc3e392d1541bca93c5897e85d33746  gcc/testsuite/gcc.dg/vect/vect-early-break_53.c
  2b148b4ecaed809d92b99c39a15d788c  gcc/testsuite/gcc.dg/vect/vect-early-break_54.c
  cedec433c63e1267dec0f94451d7b0f7  gcc/testsuite/gcc.dg/vect/vect-early-break_55.c
*************** cb231639cf786430567a587f38a8ff9f  gcc/te
*** 59228,59233 ****
--- 59520,59527 ----
  4a8dea4dc7d611321a7a1df3ee9fa8ca  gcc/testsuite/gcc.dg/vect/vect-recurr-4.c
  9f9e3510ab63ced839b8ee9b73968135  gcc/testsuite/gcc.dg/vect/vect-recurr-5.c
  1260c41ed0bc0989cd1bae4b33c037b5  gcc/testsuite/gcc.dg/vect/vect-recurr-6.c
+ 7871d15555bf4ec0abcd6a88f3433086  gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256-2.c
+ 39b82075f86d610ada0f9574ce45d00a  gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256.c
  14379418c35bd92a759c557ae5c861c6  gcc/testsuite/gcc.dg/vect/vect-reduc-1.c
  22a0d53785f7d6c47cd23f6847097e73  gcc/testsuite/gcc.dg/vect/vect-reduc-10.c
  5e2267c9823c709c9186c2bae29c4b9e  gcc/testsuite/gcc.dg/vect/vect-reduc-11.c
*************** bc0f68b226839ed569e371de527479fe  gcc/te
*** 59394,59399 ****
--- 59688,59694 ----
  e0f38a9b3ec0f742abed22cd672aa982  gcc/testsuite/gcc.dg/vect/vect-simd-clone-7.c
  c3250637f281a41b33f82d785f31ae71  gcc/testsuite/gcc.dg/vect/vect-simd-clone-8.c
  068515d98cb76263014fe2d1f01ac267  gcc/testsuite/gcc.dg/vect/vect-simd-clone-9.c
+ 881d4e505bcbd60c6207348fb3385c98  gcc/testsuite/gcc.dg/vect/vect-simd-pr121130.c
  6e90abcda205699fc9e9fbcaeb293a8e  gcc/testsuite/gcc.dg/vect/vect-singleton_1.c
  c007274fcf98c292ac6a9827d7cc665e  gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
  0ce7615b1fe7bfcc4f7eec3834127876  gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
*************** afe62fa89b5483576738572de037298b  gcc/te
*** 62328,62336 ****
  d6f0c95fd7a6f5179274aac3f6cc20c4  gcc/testsuite/gcc.target/aarch64/sme/arm_neon_1.c
  dadcd855a787ed42d61441acfdf07035  gcc/testsuite/gcc.target/aarch64/sme/arm_neon_2.c
  ee7a30eb13293817fbc0761ba471e1dc  gcc/testsuite/gcc.target/aarch64/sme/arm_neon_3.c
! eb580446b9c202515566ebe3c407f886  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_1.c
  84feb7d27fbd53171100e87b74c92cb0  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_10.c
! 89058a2808c1b72afc62d38caf8a3e03  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_11.c
  11e2ce1b161d5c2f033e70deb98ef99d  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_2.c
  484b7eb2527c452159f353eabdaf3c5a  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_3.c
  c383c91adda41f85554329e5922e2985  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_4.c
--- 62623,62631 ----
  d6f0c95fd7a6f5179274aac3f6cc20c4  gcc/testsuite/gcc.target/aarch64/sme/arm_neon_1.c
  dadcd855a787ed42d61441acfdf07035  gcc/testsuite/gcc.target/aarch64/sme/arm_neon_2.c
  ee7a30eb13293817fbc0761ba471e1dc  gcc/testsuite/gcc.target/aarch64/sme/arm_neon_3.c
! 20f0fd449cd7c00774afe0e41e6b997a  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_1.c
  84feb7d27fbd53171100e87b74c92cb0  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_10.c
! d97792582b32991bd0603548569a5a10  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_11.c
  11e2ce1b161d5c2f033e70deb98ef99d  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_2.c
  484b7eb2527c452159f353eabdaf3c5a  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_3.c
  c383c91adda41f85554329e5922e2985  gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_4.c
*************** df9a1b5d24aec3bc8a0ef502ec0a64b9  gcc/te
*** 62374,62379 ****
--- 62669,62675 ----
  82a3cecab61caec3898c65f70b69ae31  gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_5.c
  7f0a2bc5b5ada7add64168ea0a4c5b53  gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_6.c
  cea477cbfc0138870da19d13a6f78a5c  gcc/testsuite/gcc.target/aarch64/sme/nonlocal_goto_7.c
+ adb1015c9aa632296ceca120cacf20e3  gcc/testsuite/gcc.target/aarch64/sme/pr121028.c
  b4e79a733b5f7121eaeed1af03f9454b  gcc/testsuite/gcc.target/aarch64/sme/sibcall_1.c
  e1bebbe2531d4c2ec4fb9cfa4437f1cb  gcc/testsuite/gcc.target/aarch64/sme/sibcall_2.c
  fab5f8d90e717b628f306df26d55a4c6  gcc/testsuite/gcc.target/aarch64/sme/sibcall_3.c
*************** f05f061869c6f335b6395f5250ec83ee  gcc/te
*** 65321,65327 ****
  60a6cb5f3583610557e9b4dde6cd5453  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntd_pat_1.c
  2279605ca76a398874fa5ee6664d3d52  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnth_pat_1.c
  ccec270f903888ca00fe8baba907fa5f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntw_pat_1.c
! adff197d6435e0a1e9ec2dcd172e75f4  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c
  fb0b99833eb0c168abc014e0554a156c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cpy_1.c
  75a2cc5eaade2a1a499200b05ae5f53c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/debug_1.c
  16c8b0fa40139dcbb0edba6873a09834  gcc/testsuite/gcc.target/aarch64/sve/acle/general/debug_2.c
--- 65617,65623 ----
  60a6cb5f3583610557e9b4dde6cd5453  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntd_pat_1.c
  2279605ca76a398874fa5ee6664d3d52  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnth_pat_1.c
  ccec270f903888ca00fe8baba907fa5f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntw_pat_1.c
! 2c4b75f5af375e44324610f217676d50  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c
  fb0b99833eb0c168abc014e0554a156c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cpy_1.c
  75a2cc5eaade2a1a499200b05ae5f53c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/debug_1.c
  16c8b0fa40139dcbb0edba6873a09834  gcc/testsuite/gcc.target/aarch64/sve/acle/general/debug_2.c
*************** c2682b969fcec66bb2ebb2442ff4221b  gcc/te
*** 71923,71928 ****
--- 72219,72225 ----
  95b83592cd208bcb180064639fd1558f  gcc/testsuite/gcc.target/arm/pr115153.c
  39327fb26a438561d0617a9bfe99c59f  gcc/testsuite/gcc.target/arm/pr115188.c
  01f3623877a32b45af0d229eab49f4cf  gcc/testsuite/gcc.target/arm/pr117675.c
+ bc84b25bc522b6ed07bd7885605c00d7  gcc/testsuite/gcc.target/arm/pr120351.c
  3ce2c6a399da67ae36390d522e1f1296  gcc/testsuite/gcc.target/arm/pr19599.c
  3425143e88f989a8f52f345e6237106a  gcc/testsuite/gcc.target/arm/pr26702.c
  fc0dd660f56108005b4f0b142e94d10d  gcc/testsuite/gcc.target/arm/pr37780_1.c
*************** eea712e5edcebcf47419b6442fd41bd4  gcc/te
*** 78123,78129 ****
  b72099cd966e9c576a224799821d5d28  gcc/testsuite/gcc.target/i386/cold-attribute-1.c
  0167fa6749ad93cf0251a4b9260fbccd  gcc/testsuite/gcc.target/i386/cold-attribute-2.c
  c1eab7ffc4e6134b9c680fe0c2920314  gcc/testsuite/gcc.target/i386/cold-attribute-3.c
! dcc5b76590328fd9f7c421fcb66d52d6  gcc/testsuite/gcc.target/i386/cold-attribute-4.c
  6475e870c428b4aeb9a5a7ed5149bb30  gcc/testsuite/gcc.target/i386/combine-mul.c
  51ddf79878f8a3a62bc3a456a718ddb8  gcc/testsuite/gcc.target/i386/compress-float-387-pic.c
  f5b6283707f17b1db37120fd03d9ecf7  gcc/testsuite/gcc.target/i386/compress-float-387.c
--- 78420,78426 ----
  b72099cd966e9c576a224799821d5d28  gcc/testsuite/gcc.target/i386/cold-attribute-1.c
  0167fa6749ad93cf0251a4b9260fbccd  gcc/testsuite/gcc.target/i386/cold-attribute-2.c
  c1eab7ffc4e6134b9c680fe0c2920314  gcc/testsuite/gcc.target/i386/cold-attribute-3.c
! fb80b8e91abc0725f03bd2c87f0692c9  gcc/testsuite/gcc.target/i386/cold-attribute-4.c
  6475e870c428b4aeb9a5a7ed5149bb30  gcc/testsuite/gcc.target/i386/combine-mul.c
  51ddf79878f8a3a62bc3a456a718ddb8  gcc/testsuite/gcc.target/i386/compress-float-387-pic.c
  f5b6283707f17b1db37120fd03d9ecf7  gcc/testsuite/gcc.target/i386/compress-float-387.c
*************** ef2cdb48cbe0dedfce0d7eb770a1f30f  gcc/te
*** 79739,79746 ****
--- 80036,80049 ----
  3cee806d4474b5711bc99a7abe73cadc  gcc/testsuite/gcc.target/i386/pr119549.c
  bb420ee68e25b3f2c223a9b99a8e7c79  gcc/testsuite/gcc.target/i386/pr119784a.c
  038406363ec46be9b531268d03546b94  gcc/testsuite/gcc.target/i386/pr119784b.c
+ 1404641b6882eb8151341efedd467313  gcc/testsuite/gcc.target/i386/pr120427-1.c
+ b912addc770944f54b5baa8db2467d9d  gcc/testsuite/gcc.target/i386/pr120427-2.c
+ c87152a8a84d546309327b3da89eb566  gcc/testsuite/gcc.target/i386/pr120427-3.c
+ f5a1252b1fe24ea2b97ff3762c399ed9  gcc/testsuite/gcc.target/i386/pr120427-4.c
+ 16984aa55364473d08d90334f60bf59e  gcc/testsuite/gcc.target/i386/pr120427-5.c
  e33b63cd8f6d60b286b2286424f25714  gcc/testsuite/gcc.target/i386/pr120908.c
  b03b1d817538a863277c823b5e4cdf75  gcc/testsuite/gcc.target/i386/pr12092-1.c
+ 12e796120a8d76792772ddd159f57f3f  gcc/testsuite/gcc.target/i386/pr121274.c
  f99f88a6e994ad6e55e065e41bc58f8f  gcc/testsuite/gcc.target/i386/pr12329.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
*************** a7ba2e5c68834495ccecdd75f123f220  gcc/te
*** 83033,83038 ****
--- 83336,83342 ----
  dbfbd76701c5c3e6c8ed37ced1ba9cc7  gcc/testsuite/gcc.target/loongarch/pr119084.c
  bfebec3a4dbfa9680a4285589498905c  gcc/testsuite/gcc.target/loongarch/pr119127.c
  dde2cba27bc4292492e4c0dd492a70e0  gcc/testsuite/gcc.target/loongarch/pr119408.c
+ 359760e5160f4b52d2fa349806589a0d  gcc/testsuite/gcc.target/loongarch/pr121064.c
  1eac553341d725c6e59615b593aedb0d  gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c
  3adba2a8ae6f671eb22ec8228777c1ac  gcc/testsuite/gcc.target/loongarch/prolog-opt.c
  1bfa30f99dc5f04f569fbff68640ab19  gcc/testsuite/gcc.target/loongarch/recip-divf.c
*************** d128b18a20f2a55978e519508f48f1ae  gcc/te
*** 87199,87205 ****
  db5d1e3c602d7352acfe4e2bd42aa314  gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c
  0dc1b977f9f3965f6a1537554d57ebdc  gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c
  69b4e6af3daccab6666b3b17e26175fb  gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c
! cb404ead9c4f91da9ac4ca280474d7dd  gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c
  2c3abdb62eb2a43590aa3c4938aa05c6  gcc/testsuite/gcc.target/powerpc/vsx-builtin-8.c
  33633751eb0bfabbb2951a0070770508  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c
  2e9c4b2355be46611bfe42e4a9f8d1f3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c
--- 87503,87509 ----
  db5d1e3c602d7352acfe4e2bd42aa314  gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c
  0dc1b977f9f3965f6a1537554d57ebdc  gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c
  69b4e6af3daccab6666b3b17e26175fb  gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c
! 2d4b274537060accb8588a288971c71c  gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c
  2c3abdb62eb2a43590aa3c4938aa05c6  gcc/testsuite/gcc.target/powerpc/vsx-builtin-8.c
  33633751eb0bfabbb2951a0070770508  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c
  2e9c4b2355be46611bfe42e4a9f8d1f3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c
*************** b22a15e86fb70037feb383a055b6e153  gcc/te
*** 88364,88369 ****
--- 88668,88674 ----
  b2926d7d0c3ebd0521abd5b1bd13e5f8  gcc/testsuite/gcc.target/riscv/pr118241.c
  8c91cf2796ff0e2ea816e9d35b520e8d  gcc/testsuite/gcc.target/riscv/pr118248.c
  b62a32eafb5e661786b5ef2b03b30be9  gcc/testsuite/gcc.target/riscv/pr119971.c
+ 0cdcf97373ed486ded9f3c10ef04348d  gcc/testsuite/gcc.target/riscv/pr120714.c
  37a08389ba95284cc27832767dfc1430  gcc/testsuite/gcc.target/riscv/pr43644.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
  c2ac0b53d6af56f5ec5bded3d252dddc  gcc/testsuite/gcc.target/riscv/pr93202.c
*************** c8e89c3bb1a8878396e32769b9a78d05  gcc/te
*** 99603,99608 ****
--- 99908,99914 ----
  fbcbf467a3284c5a09b9e5e8efc5e0c7  gcc/testsuite/gfortran.dg/array_constructor_55.f90
  051843c0c65fec8a2e1118f76be9d705  gcc/testsuite/gfortran.dg/array_constructor_56.f90
  b9213dc9c7da43f7ac35cb2a5bf0c55b  gcc/testsuite/gfortran.dg/array_constructor_57.f90
+ ddaf878ce1cf2b6a4fed9a83158509ff  gcc/testsuite/gfortran.dg/array_constructor_58.f90
  3c35c0aa8a8229010e90452ed87d7792  gcc/testsuite/gfortran.dg/array_constructor_6.f90
  d3bb011093e16f988efba6816262fb16  gcc/testsuite/gfortran.dg/array_constructor_7.f90
  ae5f56f53be9d3bbc6c562e48080a252  gcc/testsuite/gfortran.dg/array_constructor_8.f90
*************** eb1595e729e2eaac81c7ffe330d8f24e  gcc/te
*** 114917,114923 ****
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 135dd50be05ca691d7b072c5db5ee68c  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
--- 115223,115229 ----
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! d73fc42d5648ab78fab5fe8b42d8d398  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
*************** fd4dd1219acc650a4f7855faa0097964  gcc/tr
*** 117410,117421 ****
  f2fea638426d89fe9ea58081e5c46b3a  gcc/tree-profile.cc
  b2ea6fc51eae4a47de35dc40a3f0235c  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
! 0f2a9168426ad250817cbabd3ff1a336  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
  3e42023ef3fe5187ffffddbbb5740208  gcc/tree-ssa-address.cc
  c724c8becbea9eec0f806e3335942c32  gcc/tree-ssa-address.h
  b8450f3f71eba56c45cfa47b8a520ef2  gcc/tree-ssa-alias-compare.h
! 34e846f14e9bc92a7bf94b3df502bd99  gcc/tree-ssa-alias.cc
  9d359861d05b5dfbc59cbf45c70feb0f  gcc/tree-ssa-alias.h
  8dc44d35f782ba1dee0da995849e4e40  gcc/tree-ssa-ccp.cc
  0facf771754439bdf307ff1c5ae92cb5  gcc/tree-ssa-ccp.h
--- 117716,117727 ----
  f2fea638426d89fe9ea58081e5c46b3a  gcc/tree-profile.cc
  b2ea6fc51eae4a47de35dc40a3f0235c  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
! 13a1a3c110f5436efaea0ba67d84704f  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
  3e42023ef3fe5187ffffddbbb5740208  gcc/tree-ssa-address.cc
  c724c8becbea9eec0f806e3335942c32  gcc/tree-ssa-address.h
  b8450f3f71eba56c45cfa47b8a520ef2  gcc/tree-ssa-alias-compare.h
! 4fd21ec021c4ec50ec3ce679c9690886  gcc/tree-ssa-alias.cc
  9d359861d05b5dfbc59cbf45c70feb0f  gcc/tree-ssa-alias.h
  8dc44d35f782ba1dee0da995849e4e40  gcc/tree-ssa-ccp.cc
  0facf771754439bdf307ff1c5ae92cb5  gcc/tree-ssa-ccp.h
*************** da72a60de8a6f51a635ead26120d3cc7  gcc/tr
*** 117457,117463 ****
  299c5d8dabcb4a4d30bab51fbedc4e68  gcc/tree-ssa-propagate.h
  233d764ee886ccb3223d08a55f2a1ddc  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
! cc8929c04e484f163030aae8d2caab38  gcc/tree-ssa-sccvn.cc
  4b05103d4706bf37cd0bc9f018b40965  gcc/tree-ssa-sccvn.h
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
--- 117763,117769 ----
  299c5d8dabcb4a4d30bab51fbedc4e68  gcc/tree-ssa-propagate.h
  233d764ee886ccb3223d08a55f2a1ddc  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
! 9345c4fd15591c1c4b2ae0642aa4848e  gcc/tree-ssa-sccvn.cc
  4b05103d4706bf37cd0bc9f018b40965  gcc/tree-ssa-sccvn.h
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
*************** af4c63760c432f66b1c6c8e7e7666699  gcc/tr
*** 117487,117501 ****
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
  899a002f8aec509c2457b02d6c7634d9  gcc/tree-switch-conversion.cc
  834999e1b44b915632e773927cdaa397  gcc/tree-switch-conversion.h
! 4395c5694fb8d6adf7c34f1dc685bc7c  gcc/tree-tailcall.cc
! bfc68615867b54241bfd19017f8bcd78  gcc/tree-vect-data-refs.cc
  7ac587d2dd45a9437f9daa1b6409dca9  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! 7ea120edfd69e73498dd90e3a1dfc0fc  gcc/tree-vect-loop.cc
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
  ab9bcf6e6a2121e20b6e65fff17d0f2e  gcc/tree-vect-slp.cc
! 2590b0485a03c281bd6f19e91eaaea64  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
--- 117793,117807 ----
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
  899a002f8aec509c2457b02d6c7634d9  gcc/tree-switch-conversion.cc
  834999e1b44b915632e773927cdaa397  gcc/tree-switch-conversion.h
! cac3afe79bbadb8c304cebff78dbb3df  gcc/tree-tailcall.cc
! 61a9b445a765d6b6d497bc7273d05f64  gcc/tree-vect-data-refs.cc
  7ac587d2dd45a9437f9daa1b6409dca9  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! a41c3fb8911461149186ff901cf31d4a  gcc/tree-vect-loop.cc
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
  ab9bcf6e6a2121e20b6e65fff17d0f2e  gcc/tree-vect-slp.cc
! c095caa5b1ced0e7d097e6a525709865  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
*************** e3fa3f45e512510e34655f420629cbd8  gcc/wa
*** 117556,117566 ****
  88adca0d34004d3f3c8775540086085e  gcc/wide-int.cc
  4fc8c5d5a4dbeb10715da964977f1c81  gcc/wide-int.h
  818a3384157138e5a3f6fbc6368d2b11  gcc/xcoff.h
! f5d6dcdf7af758d330a544b76edff09e  gnattools/ChangeLog
  d8c97efb6bf9731cb774fb1b1b60a266  gnattools/Makefile.in
  813c7b1a065693bfcbc0b340b658fa5a  gnattools/configure
  b76be6d8444e427c06e4f182aa4a6a18  gnattools/configure.ac
! 6459b683e3966f1ec92ef7e32453ec96  gotools/ChangeLog
  d0cd4560ae9ca95137adac2f96734dfc  gotools/Makefile.am
  a9620fe98e0c9bf3a5beee26347a0a27  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
--- 117862,117872 ----
  88adca0d34004d3f3c8775540086085e  gcc/wide-int.cc
  4fc8c5d5a4dbeb10715da964977f1c81  gcc/wide-int.h
  818a3384157138e5a3f6fbc6368d2b11  gcc/xcoff.h
! 86176175b63824354a6deb07f6fb101b  gnattools/ChangeLog
  d8c97efb6bf9731cb774fb1b1b60a266  gnattools/Makefile.in
  813c7b1a065693bfcbc0b340b658fa5a  gnattools/configure
  b76be6d8444e427c06e4f182aa4a6a18  gnattools/configure.ac
! 90a22df00478b856182fa10f992b0be2  gotools/ChangeLog
  d0cd4560ae9ca95137adac2f96734dfc  gotools/Makefile.am
  a9620fe98e0c9bf3a5beee26347a0a27  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 117571,117577 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 38a18f8659e25c2b1438a397888a76d2  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
--- 117877,117883 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 542f8f9bb46e56403c56935bc38cfc6e  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
*************** c7399bbb7eadd31d7cd04991cd79c238  includ
*** 117625,117636 ****
  7127faa31e0d81ec43716b364e6b9577  include/xtensa-config.h
  8f560be172a91474b12b0b99071f2f02  include/xtensa-dynconfig.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 2b35b69b4da9f6a06c9166e882475f34  libada/ChangeLog
  66b34d64be399ddc98db2b4a844f1911  libada/Makefile.in
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  c01f38de8270d558b8d3ecac839d3bbf  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 6f85838274ef078aedf3ad4d345c758c  libatomic/ChangeLog
  71c1b6c36a41008494bf13a4a0863768  libatomic/Makefile.am
  4edf5a5514d9eb3764c1536ce393dfb2  libatomic/Makefile.in
  04a8eb275561484cf0d6f8c459a38177  libatomic/acinclude.m4
--- 117931,117942 ----
  7127faa31e0d81ec43716b364e6b9577  include/xtensa-config.h
  8f560be172a91474b12b0b99071f2f02  include/xtensa-dynconfig.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 9c4dbd8f1a68dad455d605c3f24fd122  libada/ChangeLog
  66b34d64be399ddc98db2b4a844f1911  libada/Makefile.in
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  c01f38de8270d558b8d3ecac839d3bbf  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 96918bf036e38d558876be76cdfb3c9d  libatomic/ChangeLog
  71c1b6c36a41008494bf13a4a0863768  libatomic/Makefile.am
  4edf5a5514d9eb3764c1536ce393dfb2  libatomic/Makefile.in
  04a8eb275561484cf0d6f8c459a38177  libatomic/acinclude.m4
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 117727,117733 ****
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 6fe10d5e415dbad8030386103dfda5e3  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  d8ded612c0b12538d827f766c2ac1f16  libbacktrace/Makefile.am
  069039740ab2b76bff90e7ff6c92e85d  libbacktrace/Makefile.in
--- 118033,118039 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! e81dc4e18ea68829705eb87ac1cc9138  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  d8ded612c0b12538d827f766c2ac1f16  libbacktrace/Makefile.am
  069039740ab2b76bff90e7ff6c92e85d  libbacktrace/Makefile.in
*************** c0fa0a593b3a9b1ffd2f84bc40a22980  libbac
*** 117776,117782 ****
  69e738d1cd72baaeda073609f133f005  libbacktrace/xztest.c
  4d7dab09ddbe953244044c8a60434ad9  libbacktrace/zstdtest.c
  08e64385c7a2a6f5a8d0e25f4c237e51  libbacktrace/ztest.c
! 50413c522dc3deed3e4af133e7edd1e8  libcc1/ChangeLog
  e396ef427fc1a75d765f69ea2b48aef9  libcc1/Makefile.am
  0c197f689319d609a20206994cd5eb7e  libcc1/Makefile.in
  b39668f1b706dbfe7203b3cfa277b792  libcc1/aclocal.m4
--- 118082,118088 ----
  69e738d1cd72baaeda073609f133f005  libbacktrace/xztest.c
  4d7dab09ddbe953244044c8a60434ad9  libbacktrace/zstdtest.c
  08e64385c7a2a6f5a8d0e25f4c237e51  libbacktrace/ztest.c
! 7b173db7242a13a41417d3900a51dab7  libcc1/ChangeLog
  e396ef427fc1a75d765f69ea2b48aef9  libcc1/Makefile.am
  0c197f689319d609a20206994cd5eb7e  libcc1/Makefile.in
  b39668f1b706dbfe7203b3cfa277b792  libcc1/aclocal.m4
*************** a3bae9c01d333f7db29d4511561a7d00  libcc1
*** 117813,117819 ****
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! da501d7d9520d45717436fb970a11192  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
  55625eec19bfdb5cee37f8c7ae4b796b  libcody/Makefile.in
  ca1c6fe3df5427016005ce753c73d454  libcody/README.md
--- 118119,118125 ----
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! 5f49e0df6f35e08d415c29a22477a588  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
  55625eec19bfdb5cee37f8c7ae4b796b  libcody/Makefile.in
  ca1c6fe3df5427016005ce753c73d454  libcody/README.md
*************** cffdeae41b78da05839b193e90188f55  libcod
*** 117832,117838 ****
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! 4cbf1f1b1ebb722288f6b754f015e910  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
--- 118138,118144 ----
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! 9cbc48b9bb76aeb3d26782ac2984304f  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
*************** ac88522f7fec46badcd2623d11a4b61e  libcpp
*** 117855,117861 ****
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  3f05e522dd9325c9807fc4f662533f7b  libcpp/init.cc
  a0d37c297f3d462529b502a4e1bd2378  libcpp/internal.h
! 14cdb8c198f4e4c14696bfbf98d11563  libcpp/lex.cc
  afb53d91467e0952508a757742351dd6  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
  9ca45c4c9e1829d625f4cc03b82debd1  libcpp/macro.cc
--- 118161,118167 ----
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  3f05e522dd9325c9807fc4f662533f7b  libcpp/init.cc
  a0d37c297f3d462529b502a4e1bd2378  libcpp/internal.h
! f8244960014eef467c6c06a22e72feac  libcpp/lex.cc
  afb53d91467e0952508a757742351dd6  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
  9ca45c4c9e1829d625f4cc03b82debd1  libcpp/macro.cc
*************** b4c085899eca6fc0e5ddc81d15fc2e67  libcpp
*** 117863,117869 ****
  f6299826ad91c3ae3e8be64e87bb7d20  libcpp/makeuname2c.cc
  15ffbe55bf3e5cc75e66cfb1125773a8  libcpp/mkdeps.cc
  893a85ab3fc4806dc0c614afce9b7110  libcpp/pch.cc
! 53e965a77da9899b67c9bdbc60810d15  libcpp/po/ChangeLog
  5a131bbc2e718f87b148455d3b557800  libcpp/po/be.po
  4c220e08630ab2f3bc879ac1f37815d4  libcpp/po/ca.po
  bded59a97064870a8660599effc8a029  libcpp/po/cpplib.pot
--- 118169,118175 ----
  f6299826ad91c3ae3e8be64e87bb7d20  libcpp/makeuname2c.cc
  15ffbe55bf3e5cc75e66cfb1125773a8  libcpp/mkdeps.cc
  893a85ab3fc4806dc0c614afce9b7110  libcpp/pch.cc
! 45105001df77838b6bd31a5734b42d53  libcpp/po/ChangeLog
  5a131bbc2e718f87b148455d3b557800  libcpp/po/be.po
  4c220e08630ab2f3bc879ac1f37815d4  libcpp/po/ca.po
  bded59a97064870a8660599effc8a029  libcpp/po/cpplib.pot
*************** e13b22e52701d595c8621cb228f76700  libcpp
*** 117881,117887 ****
  f83609e8cef5a06acade0e1451c8995e  libcpp/po/pt_BR.po
  12ff169dfc0c63e59419e3b44dd392da  libcpp/po/ro.po
  800c6ad9105282dc5390a81924bee9bf  libcpp/po/ru.po
! 7eb4b989d236fe24ad3aed7a690b134a  libcpp/po/sr.po
  639e14f17da017cc3860f9e7886e8261  libcpp/po/sv.po
  aa3c4e908796418ca7107cf6ed8e9757  libcpp/po/tr.po
  3b866f248ceead26e4432280c9c89b0c  libcpp/po/uk.po
--- 118187,118193 ----
  f83609e8cef5a06acade0e1451c8995e  libcpp/po/pt_BR.po
  12ff169dfc0c63e59419e3b44dd392da  libcpp/po/ro.po
  800c6ad9105282dc5390a81924bee9bf  libcpp/po/ru.po
! c58601ae47b55b5f934cab674aa29518  libcpp/po/sr.po
  639e14f17da017cc3860f9e7886e8261  libcpp/po/sv.po
  aa3c4e908796418ca7107cf6ed8e9757  libcpp/po/tr.po
  3b866f248ceead26e4432280c9c89b0c  libcpp/po/uk.po
*************** decade758397edc223aca3be57c768ad  libcpp
*** 117896,117902 ****
  1933481613c4f7407662993c6089cf72  libcpp/ucnid.tab
  0da0352ccc865ea7f669ddaaa85a1640  libcpp/uname2c.h
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! b2aef49c6d50ebb4b2feb5f0b5f5996c  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  9f6ee29a7a652a85e55a84de49ff996b  libdecnumber/Makefile.in
  2a70099a79e40a57a666d5430a5e2529  libdecnumber/aclocal.m4
--- 118202,118208 ----
  1933481613c4f7407662993c6089cf72  libcpp/ucnid.tab
  0da0352ccc865ea7f669ddaaa85a1640  libcpp/uname2c.h
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 127b78115291039b4b3834a93ee028de  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  9f6ee29a7a652a85e55a84de49ff996b  libdecnumber/Makefile.in
  2a70099a79e40a57a666d5430a5e2529  libdecnumber/aclocal.m4
*************** a97c47969dfc92a7666dfe3c2e1e1448  libdec
*** 117960,117966 ****
  beb433e3e74659ef6595bb7dc6760d90  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
  055606b47e85369c5d003f6e3a1b657e  libffi/.gitattributes
! 85fcc3a382e64ad83be713af6b98494d  libffi/ChangeLog
  0e38ead823643c45765e5fe55e7ab16b  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
--- 118266,118272 ----
  beb433e3e74659ef6595bb7dc6760d90  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
  055606b47e85369c5d003f6e3a1b657e  libffi/.gitattributes
! c6e6b7204d1960a3044622a4f927c4c7  libffi/ChangeLog
  0e38ead823643c45765e5fe55e7ab16b  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 118356,118362 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 83173704469db6c668fec8a23bf51370  libgcc/ChangeLog
  b1229d68a3a67c6e30daf30379e7bb8f  libgcc/Makefile.in
  0f39724f440135be7a62bbd4e67e6840  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 118662,118668 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 5bb0f726ae7ef162284d7dc141c17e9e  libgcc/ChangeLog
  b1229d68a3a67c6e30daf30379e7bb8f  libgcc/Makefile.in
  0f39724f440135be7a62bbd4e67e6840  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** b38cbc5c54988720ae33d36a2ff78fd3  libgcc
*** 118502,118508 ****
  5ab16e6eec7523296afc7c8bfee38565  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  e6604d88f15777c25f5d887ca1f9148c  libgcc/config/avr/lib2funcs.c
! a480977bbb99df88b3ab12ed9ea6a4b8  libgcc/config/avr/libf7/ChangeLog
  dd74908d3b47db38a7aaa2e9f130f20f  libgcc/config/avr/libf7/asm-defs.h
  a5efc328f8686b92830ca73ea0b4d047  libgcc/config/avr/libf7/f7-renames.h
  9bc93ce2b7213ad3cabff898a2d31774  libgcc/config/avr/libf7/f7-wraps.h
--- 118808,118814 ----
  5ab16e6eec7523296afc7c8bfee38565  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  e6604d88f15777c25f5d887ca1f9148c  libgcc/config/avr/lib2funcs.c
! 7ea0bb5e33f184a9e54a72e3c121a20d  libgcc/config/avr/libf7/ChangeLog
  dd74908d3b47db38a7aaa2e9f130f20f  libgcc/config/avr/libf7/asm-defs.h
  a5efc328f8686b92830ca73ea0b4d047  libgcc/config/avr/libf7/f7-renames.h
  9bc93ce2b7213ad3cabff898a2d31774  libgcc/config/avr/libf7/f7-wraps.h
*************** bdd08773400d12af9ac3b370d255ccca  libgcc
*** 118799,118805 ****
  40eda5c7825bbaa25723845c3f9caabd  libgcc/config/ia64/vms-unwind.h
  82cf742d0711f5ea45c5d4ae1837083b  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 04c1d1609f39d39ea95c46f84fcf886b  libgcc/config/libbid/ChangeLog
  c32cb18bbfd73dda967b708b16ce8e89  libgcc/config/libbid/_addsub_dd.c
  a0801827ba65b25ba20a91e765121b7f  libgcc/config/libbid/_addsub_sd.c
  1047ed1c06b6914a7df19b0739d305c3  libgcc/config/libbid/_addsub_td.c
--- 119105,119111 ----
  40eda5c7825bbaa25723845c3f9caabd  libgcc/config/ia64/vms-unwind.h
  82cf742d0711f5ea45c5d4ae1837083b  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! a65f08d6dc5d71b4f04aa72d72715e4d  libgcc/config/libbid/ChangeLog
  c32cb18bbfd73dda967b708b16ce8e89  libgcc/config/libbid/_addsub_dd.c
  a0801827ba65b25ba20a91e765121b7f  libgcc/config/libbid/_addsub_sd.c
  1047ed1c06b6914a7df19b0739d305c3  libgcc/config/libbid/_addsub_td.c
*************** f017ba40c4699f1549cd341ad688007f  libgcc
*** 119914,119950 ****
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! ef48b94fef1f1455d01c64b8e2796817  libgcobol/ChangeLog
  573e7a1dee0641f56d9b797b23dff44b  libgcobol/Makefile.am
  23cf4646d213d05645a0bf48209b374d  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
  8c9140838556aedbca129aeaedf0855b  libgcobol/acinclude.m4
  0bf6afe766a6886d2ac1f175300477f2  libgcobol/aclocal.m4
! 01d874537a0c1097b229eb5d5af518e1  libgcobol/charmaps.cc
  08bac5426c592bca32b87e76cd4a87a1  libgcobol/charmaps.h
! bc3d1f02ce5f6bee7c10bd1b36a6d1db  libgcobol/common-defs.h
! 07c063d2f73d09e8cea9163eb227fff4  libgcobol/config.h.in
! cfe2d215c4271d60e3f38be1acfa636b  libgcobol/configure
! 15b870274b7080041b1fdbbfed766f53  libgcobol/configure.ac
  5aec96a7dfdb0d6e7b10cc13d65c53a3  libgcobol/configure.tgt
! 795e97e53b8fe43c41e1b6169e9c2294  libgcobol/constants.cc
! 50c34404ebdad01c82b97ac6d262d7a2  libgcobol/ec.h
! c3916da3eb612bdfc67ae057bd7b08e3  libgcobol/exceptl.h
! 9d3945ff6b266e755806306ad5f097dc  libgcobol/gcobolio.h
! b609e2cae4a20192f8ddbcdeedb9186f  libgcobol/gfileio.cc
  4c5dc966be490381f53924b2441c9300  libgcobol/gfileio.h
! 1c551b7ea1202a1193beb270bd283e05  libgcobol/gmath.cc
  9b52995346d1f02cab9c3e2b816722d6  libgcobol/gmath.h
! 2c1e880eefa7922d7aad0c15e2026320  libgcobol/intrinsic.cc
! b40580a5065188e3a6887000b8ab9de2  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! ab5ceec27db3c928f977137e07f98ee5  libgcobol/libgcobol.cc
! a92501f6652c6261f981817076ae3254  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
! 9d7af7d1d108f358d1abce503b889dbd  libgcobol/valconv.cc
! 04c19ca3fa2ce47103a80f82c288c484  libgcobol/valconv.h
! b31271f765affc5ea3518889dd13926d  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 120220,120257 ----
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! 8deaac610cfe07be16f3ac03083e03e8  libgcobol/ChangeLog
! b227feb8ac8df349788743a8ade3e840  libgcobol/LICENSE
  573e7a1dee0641f56d9b797b23dff44b  libgcobol/Makefile.am
  23cf4646d213d05645a0bf48209b374d  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
  8c9140838556aedbca129aeaedf0855b  libgcobol/acinclude.m4
  0bf6afe766a6886d2ac1f175300477f2  libgcobol/aclocal.m4
! 3d3a800933c22566d11e09ab88c455e1  libgcobol/charmaps.cc
  08bac5426c592bca32b87e76cd4a87a1  libgcobol/charmaps.h
! 22bb2a7ba78f63e95702f5b92a8f8856  libgcobol/common-defs.h
! 6a3b66323eab3b40a9c109aafd9f27c6  libgcobol/config.h.in
! 7c39e3ffa421728393475f0c1e747e59  libgcobol/configure
! faf06b9fb823d12e0ec967db524ba97e  libgcobol/configure.ac
  5aec96a7dfdb0d6e7b10cc13d65c53a3  libgcobol/configure.tgt
! dc7dba3ea14b23da0b28124acfa2ca32  libgcobol/constants.cc
! 641fcbe1c4aa0a6cde86f5b185638e11  libgcobol/ec.h
! fbd99afdab52fcee0543b901042350ef  libgcobol/exceptl.h
! ef8b11373d27f5ca4df73f09c6ccab75  libgcobol/gcobolio.h
! 277d281d0d500adc75c24b68380de568  libgcobol/gfileio.cc
  4c5dc966be490381f53924b2441c9300  libgcobol/gfileio.h
! 42a0be811da2d9bccec1fc42d43424cb  libgcobol/gmath.cc
  9b52995346d1f02cab9c3e2b816722d6  libgcobol/gmath.h
! 7b73c809113d6b9961b7ace6fb9bf96f  libgcobol/intrinsic.cc
! 0cf9ce2863c11a8fd875185c371fe6e6  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 8a2f491e4c4bea77a47fd9697ba6639f  libgcobol/libgcobol.cc
! 9d6654e5bf93e5b028f7a514320a7ede  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
! 7921a81e3cbf784d960d70db7bc6e242  libgcobol/valconv.cc
! c7d27fb7e36a42567d7cc4d14e7ed3fe  libgcobol/valconv.h
! ac7f063c8cb82a1c85489ce9730592e3  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** f63a06d746592d67d8c161bc2461a24e  libgfo
*** 120969,120975 ****
  e90afde1ec8653f66d433a7cc5e070a7  libgfortran/runtime/select_inc.c
  fa1f81a5ee204308c775545490d24fbd  libgfortran/runtime/stop.c
  08f6570c94f64b0aaf21fb2ec9aa10e9  libgfortran/runtime/string.c
! b9f83f87178a4d8c446a2c8a3430a5e8  libgm2/ChangeLog
  81dadb03add7a7278a98cd845177e76a  libgm2/Makefile.am
  38778826306c4efe1f6a33cb21cece23  libgm2/Makefile.in
  5655398e9c1e3027c587898dc4fce566  libgm2/acinclude.m4
--- 121276,121282 ----
  e90afde1ec8653f66d433a7cc5e070a7  libgfortran/runtime/select_inc.c
  fa1f81a5ee204308c775545490d24fbd  libgfortran/runtime/stop.c
  08f6570c94f64b0aaf21fb2ec9aa10e9  libgfortran/runtime/string.c
! 7eaf962fb503b1eb3abdbf614799a7e6  libgm2/ChangeLog
  81dadb03add7a7278a98cd845177e76a  libgm2/Makefile.am
  38778826306c4efe1f6a33cb21cece23  libgm2/Makefile.in
  5655398e9c1e3027c587898dc4fce566  libgm2/acinclude.m4
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 126506,126512 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 34c389ada5d744bba2e0487c26bf0247  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  54c7bc8277669e3bf5f1a3db179ae206  libgomp/Makefile.in
--- 126813,126819 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 112418432f958b0c7d637d694e34ae4a  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  54c7bc8277669e3bf5f1a3db179ae206  libgomp/Makefile.in
*************** c3d837ee5481f078c8b7875c1c8306be  libgom
*** 126649,126655 ****
  69e5cac35d68ce6db01326f45f2fc005  libgomp/libgomp.h
  794094e4a415fa9d14baf5f132c3d098  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! 407d25c7bf887d85293fd46c20e6021d  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
--- 126956,126962 ----
  69e5cac35d68ce6db01326f45f2fc005  libgomp/libgomp.h
  794094e4a415fa9d14baf5f132c3d098  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! 7d6392be778d70e12dc7ada711cee1aa  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
*************** e8a3245c095430c8ef2413afe2ee4c48  libgom
*** 129231,129237 ****
  1d2e2e1ab9f0d92351625f2c5661dbb8  libgomp/testsuite/libgomp.oacc-fortran/update-dt-array.f90
  989e6535f20045be32e9e91643a0b08f  libgomp/testsuite/libgomp.oacc-fortran/vector-routine.f90
  9b8b2dd0e3a57784ab6771591edb6c3b  libgomp/work.c
! 3fcd313d6a6384d2252a24fad0940d5c  libgrust/ChangeLog
  e61ce18b1a86e6764b3436d0638ec4d2  libgrust/Makefile.am
  d670b72d54b9c3daeabf87ef1a8f629b  libgrust/Makefile.in
  ec9513341b9bd1ba3b60bf6fec70f852  libgrust/aclocal.m4
--- 129538,129544 ----
  1d2e2e1ab9f0d92351625f2c5661dbb8  libgomp/testsuite/libgomp.oacc-fortran/update-dt-array.f90
  989e6535f20045be32e9e91643a0b08f  libgomp/testsuite/libgomp.oacc-fortran/vector-routine.f90
  9b8b2dd0e3a57784ab6771591edb6c3b  libgomp/work.c
! 492ac4f275708fcea2b2188532ccdf46  libgrust/ChangeLog
  e61ce18b1a86e6764b3436d0638ec4d2  libgrust/Makefile.am
  d670b72d54b9c3daeabf87ef1a8f629b  libgrust/Makefile.in
  ec9513341b9bd1ba3b60bf6fec70f852  libgrust/aclocal.m4
*************** d310c3612a920f243d62620f007dec94  libgru
*** 129541,129547 ****
  4d27195db5805ea05b982a2971711c94  libgrust/libproc_macro_internal/tokentree.h
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! b299ffa87ad727d08b76ce54b1da1f73  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  9b063cff28e2237e897ffbd7475e05ac  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
--- 129848,129854 ----
  4d27195db5805ea05b982a2971711c94  libgrust/libproc_macro_internal/tokentree.h
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 52338dddd1262aa912d85964fff55388  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  9b063cff28e2237e897ffbd7475e05ac  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
*************** e52d95644dc6f186070f349a5903ca72  libibe
*** 129710,129716 ****
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  9ee73c41e33c5385829971172a184c87  libiberty/xstrndup.c
  264565e1673eec920dc95fb09d4605ea  libiberty/xvasprintf.c
! a6e4e74f6d6653d72f084e6e7e04ce08  libitm/ChangeLog
  763fe82c2e5c5ae9547defb28107952a  libitm/Makefile.am
  9615a863768090f60933c0f1de86e7b0  libitm/Makefile.in
  354a4dc018f4a1bb610d11d1743d3cb1  libitm/aatree.cc
--- 130017,130023 ----
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  9ee73c41e33c5385829971172a184c87  libiberty/xstrndup.c
  264565e1673eec920dc95fb09d4605ea  libiberty/xvasprintf.c
! ee5397100239985c93c02d500e53ccaa  libitm/ChangeLog
  763fe82c2e5c5ae9547defb28107952a  libitm/Makefile.am
  9615a863768090f60933c0f1de86e7b0  libitm/Makefile.in
  354a4dc018f4a1bb610d11d1743d3cb1  libitm/aatree.cc
*************** b4e503ecfdccc9f13da8f73eeb6f23a9  libitm
*** 129819,129825 ****
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
  5eec74b1eee8d819e88b284abf80ec7c  libitm/useraction.cc
  6aa0b92295a7511a2af5672f4ad1cec4  libitm/util.cc
! 8cac871f21407684665c381f3b121bab  libobjc/ChangeLog
  da63bef4f8e0d2401aecc4ea0b7a15bd  libobjc/Makefile.in
  f641586fd7145ce4812e780e634634c0  libobjc/NXConstStr.m
  1c7a98dcda1e595d5dfefb22b7ac0cd0  libobjc/Object.m
--- 130126,130132 ----
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
  5eec74b1eee8d819e88b284abf80ec7c  libitm/useraction.cc
  6aa0b92295a7511a2af5672f4ad1cec4  libitm/util.cc
! ab9b23e859dab00aa9fb66d051cd337e  libobjc/ChangeLog
  da63bef4f8e0d2401aecc4ea0b7a15bd  libobjc/Makefile.in
  f641586fd7145ce4812e780e634634c0  libobjc/NXConstStr.m
  1c7a98dcda1e595d5dfefb22b7ac0cd0  libobjc/Object.m
*************** a50aaef4b803051d8c8de65277787205  libobj
*** 129876,129882 ****
  1529c9317f23aa02b19c43cda7528d66  libobjc/selector.c
  e48bb3c47cdcb1bfade3ef0007f5a149  libobjc/sendmsg.c
  06be35842165837797461a0db264aeea  libobjc/thr.c
! 06244d2c384f7d8500028a5cbc788e55  libphobos/ChangeLog
  e188e263b43a1566b83ecb298034d491  libphobos/Makefile.am
  156e9416d3f91f179bb662effed69086  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
--- 130183,130189 ----
  1529c9317f23aa02b19c43cda7528d66  libobjc/selector.c
  e48bb3c47cdcb1bfade3ef0007f5a149  libobjc/sendmsg.c
  06be35842165837797461a0db264aeea  libobjc/thr.c
! 3bffe58389e1a4498ec4bc68d08c7d9d  libphobos/ChangeLog
  e188e263b43a1566b83ecb298034d491  libphobos/Makefile.am
  156e9416d3f91f179bb662effed69086  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
*************** b394cf23a598d3271d7bd5c679c7febd  libpho
*** 130870,130876 ****
  fc53a03ee850127a74ad6bd174963745  libphobos/testsuite/libphobos.unittest/unittest.exp
  a8de1f183b347afc269d237f3fd14b61  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! 67c5352784af29f3e9ad6d7623cc76c6  libquadmath/ChangeLog
  d981cb45023d55b1fe9629d54c616528  libquadmath/Makefile.am
  a3052de69d6eb9f6a29ceb534e231eda  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
--- 131177,131183 ----
  fc53a03ee850127a74ad6bd174963745  libphobos/testsuite/libphobos.unittest/unittest.exp
  a8de1f183b347afc269d237f3fd14b61  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! a02d2848c2f592194c07b6580d173983  libquadmath/ChangeLog
  d981cb45023d55b1fe9629d54c616528  libquadmath/Makefile.am
  a3052de69d6eb9f6a29ceb534e231eda  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
*************** a73fdec6746eaad8ccdc8e8403aac562  libqua
*** 131010,131016 ****
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! bb15e33cc6b99a0bd9a432e448db5ce2  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  1a2ca7cd408b1705dc84c19070a7049b  libsanitizer/LOCAL_PATCHES
--- 131317,131323 ----
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! f6f7d9a88f7cf39f4a823115f8095a9c  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  1a2ca7cd408b1705dc84c19070a7049b  libsanitizer/LOCAL_PATCHES
*************** abc3d4588ee1b4576e4493c95b0b0583  libsan
*** 131286,131294 ****
  fcccc17ab9511f4da14279e7828a5ddd  libsanitizer/sanitizer_common/sanitizer_libc.h
  ddfd6af3f87a47b1ce8919e05e930d24  libsanitizer/sanitizer_common/sanitizer_libignore.cpp
  08871b2f457db946621b7b929d40e4c9  libsanitizer/sanitizer_common/sanitizer_libignore.h
! d548dbe3e01cfbec99a852d1f7efda02  libsanitizer/sanitizer_common/sanitizer_linux.cpp
  0e9136f3c4cd9ebab1135b8c7fc95b49  libsanitizer/sanitizer_common/sanitizer_linux.h
! 9513a8f1d32126288f643f4d63acec31  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
  b744ae519d9a0007389121695e32a90b  libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp
  51d4c37472c1c2c6010e5d1eb5bf340f  libsanitizer/sanitizer_common/sanitizer_list.h
  15f5a30dda04b6f3bc49cb5206d92e7b  libsanitizer/sanitizer_common/sanitizer_local_address_space_view.h
--- 131593,131601 ----
  fcccc17ab9511f4da14279e7828a5ddd  libsanitizer/sanitizer_common/sanitizer_libc.h
  ddfd6af3f87a47b1ce8919e05e930d24  libsanitizer/sanitizer_common/sanitizer_libignore.cpp
  08871b2f457db946621b7b929d40e4c9  libsanitizer/sanitizer_common/sanitizer_libignore.h
! 2b88de7322e61cd7d89c0b59bef0682e  libsanitizer/sanitizer_common/sanitizer_linux.cpp
  0e9136f3c4cd9ebab1135b8c7fc95b49  libsanitizer/sanitizer_common/sanitizer_linux.h
! b1e56ece7ce8aaa37374e2df63d0a192  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
  b744ae519d9a0007389121695e32a90b  libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp
  51d4c37472c1c2c6010e5d1eb5bf340f  libsanitizer/sanitizer_common/sanitizer_list.h
  15f5a30dda04b6f3bc49cb5206d92e7b  libsanitizer/sanitizer_common/sanitizer_local_address_space_view.h
*************** c20619c1cdd5936e7b8b0c701a9389ef  libsan
*** 131309,131316 ****
  b582d1c8ad1dfab45211cbb7c25cf5f6  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
  a4d7b3990585330fb0fbc99e5afaf019  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
  0865bdc585846a1c9cfa5d1df0517d02  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! 798b0285b482b8fc25da5925d98b05d8  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
! 55a7ec91568b796d067dbe1a86239ef0  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  711b54008ada7faff939a95e325b185b  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
  ab1ad414331f77e459da9a32b756cbac  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
  f0b890407c0f914a601ad28f17dadfee  libsanitizer/sanitizer_common/sanitizer_posix.cpp
--- 131616,131623 ----
  b582d1c8ad1dfab45211cbb7c25cf5f6  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
  a4d7b3990585330fb0fbc99e5afaf019  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
  0865bdc585846a1c9cfa5d1df0517d02  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! ae39fafc805d942f70ebb97140084eae  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
! 292ad6a7d436278e2f125cecbe8cd711  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  711b54008ada7faff939a95e325b185b  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
  ab1ad414331f77e459da9a32b756cbac  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
  f0b890407c0f914a601ad28f17dadfee  libsanitizer/sanitizer_common/sanitizer_posix.cpp
*************** c924ab59f0a14028d44589b5772ec4a4  libsan
*** 131348,131354 ****
  76324ac84f5eb512c3e2351dbfd9ce24  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
  c1faa837dd50d9ad2162751a200fa58b  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp
  60c0888eff94b59773f87548c52f756a  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.h
! 98a554043ebfdd95ff2987dd09c6d64e  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
  c22a391491d33bcbef7758f001dc204d  libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp
  0f7617268ce454b6bb3c1180966d7092  libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
  bdb416b455b14acf317962318eb84924  libsanitizer/sanitizer_common/sanitizer_stoptheworld_win.cpp
--- 131655,131661 ----
  76324ac84f5eb512c3e2351dbfd9ce24  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
  c1faa837dd50d9ad2162751a200fa58b  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp
  60c0888eff94b59773f87548c52f756a  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.h
! 022ee2ebd01a6e9a6587f6890a6f18e1  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
  c22a391491d33bcbef7758f001dc204d  libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp
  0f7617268ce454b6bb3c1180966d7092  libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
  bdb416b455b14acf317962318eb84924  libsanitizer/sanitizer_common/sanitizer_stoptheworld_win.cpp
*************** f01966720c236be4a6f849bb79c2e3a0  libsan
*** 131506,131512 ****
  36c349526a8bcc6a104185c4571b5363  libsanitizer/ubsan/ubsan_value.cpp
  f95aed5d713e73ada16956190fa4ac58  libsanitizer/ubsan/ubsan_value.h
  f44dc970bc1adae9a128b178a339fd0e  libsanitizer/ubsan/ubsan_win_runtime_thunk.cpp
! e156d460e06759d0d2fcc4ea0da2cd3f  libssp/ChangeLog
  3c64b74eec15b8c16d5cfabfe903d655  libssp/Makefile.am
  2223a5c6fc2f0f67afde93329459a92e  libssp/Makefile.in
  f6f6c804e40e3a3ef407d3d13fafb6c0  libssp/aclocal.m4
--- 131813,131819 ----
  36c349526a8bcc6a104185c4571b5363  libsanitizer/ubsan/ubsan_value.cpp
  f95aed5d713e73ada16956190fa4ac58  libsanitizer/ubsan/ubsan_value.h
  f44dc970bc1adae9a128b178a339fd0e  libsanitizer/ubsan/ubsan_win_runtime_thunk.cpp
! af6904a8912a381750a55cc06b8b5a16  libssp/ChangeLog
  3c64b74eec15b8c16d5cfabfe903d655  libssp/Makefile.am
  2223a5c6fc2f0f67afde93329459a92e  libssp/Makefile.in
  f6f6c804e40e3a3ef407d3d13fafb6c0  libssp/aclocal.m4
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 131536,131542 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 81388b138c1db8d6e6db99822de9a248  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 131843,131849 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! de2261c384a284d1b52ed72dfdbf799d  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** d85f3a53465585d54b96880e79456c79  libstd
*** 133290,133296 ****
  2f142e6a788b76b05091ff09d99ae47c  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! 8b077c814dc27cd11461b13dd51dcbb3  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  97527213996a1ca6a0910b1ab5f6c3a3  libstdc++-v3/src/c++26/Makefile.am
  5dd6b2acd5d63f897ba1545bb9a07d25  libstdc++-v3/src/c++26/Makefile.in
--- 133597,133603 ----
  2f142e6a788b76b05091ff09d99ae47c  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! 0fa00f74a58a600c0511bf8564c30401  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  97527213996a1ca6a0910b1ab5f6c3a3  libstdc++-v3/src/c++26/Makefile.am
  5dd6b2acd5d63f897ba1545bb9a07d25  libstdc++-v3/src/c++26/Makefile.in
*************** a44ae6829c2d6cbdbd08359d948c3328  libstd
*** 143332,143338 ****
  8b5ea64e3eece45f10f299183d0e13bd  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  39cc83ca69ddbbe398dd79a2ba6b5499  libtool.m4
! 79a4e8a6b571ff146defcf4d7f9c673b  libvtv/ChangeLog
  2d74ef98580bcc9fd2c7902f0022be3a  libvtv/Makefile.am
  b1170aae9472f26fdc8326737dc22aba  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
--- 143639,143645 ----
  8b5ea64e3eece45f10f299183d0e13bd  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  39cc83ca69ddbbe398dd79a2ba6b5499  libtool.m4
! 52402cf6d88e998acd38454cbd155994  libvtv/ChangeLog
  2d74ef98580bcc9fd2c7902f0022be3a  libvtv/Makefile.am
  b1170aae9472f26fdc8326737dc22aba  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
*************** b75b4606a8f849a2e4931aeabb4c2165  libvtv
*** 143415,143421 ****
  343510afde83a825cc4129be092e4f05  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  2d10540be0b9516e14daf48616877aad  ltmain.sh
! 34b7a40559e115a0cf9665ef724ecb12  lto-plugin/ChangeLog
  aced0d5ba993307440be577533b64eb3  lto-plugin/Makefile.am
  18a64561ab77c015f8c0e477b147509f  lto-plugin/Makefile.in
  75fc65b35d0a47ac098f7a278d37060b  lto-plugin/aclocal.m4
--- 143722,143728 ----
  343510afde83a825cc4129be092e4f05  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  2d10540be0b9516e14daf48616877aad  ltmain.sh
! 2568c05dfebfd0651754a59ddd5a90d7  lto-plugin/ChangeLog
  aced0d5ba993307440be577533b64eb3  lto-plugin/Makefile.am
  18a64561ab77c015f8c0e477b147509f  lto-plugin/Makefile.in
  75fc65b35d0a47ac098f7a278d37060b  lto-plugin/aclocal.m4
*************** dee72a6a60e99528b0d17bf3ff9a1e15  ltopti
*** 143428,143434 ****
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 36de424b53515a4695f83f70c1daa2df  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  507e832af5f2d63b8a78eef217c807a7  maintainer-scripts/branch_changer.py
  c819510f0d438149c1518bda7b165ac4  maintainer-scripts/bugzilla-close-candidate.py
--- 143735,143741 ----
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! bb857d2f1b2d601cae2111929d78badd  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  507e832af5f2d63b8a78eef217c807a7  maintainer-scripts/branch_changer.py
  c819510f0d438149c1518bda7b165ac4  maintainer-scripts/bugzilla-close-candidate.py
*************** cf2baa0854f564a7785307e79f155efc  symlin
*** 143449,143455 ****
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! 7ed2cf76762884814bbd67eb5a52e2ea  zlib/ChangeLog
  f10e5e9394787b288e91fed29533720a  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
--- 143756,143762 ----
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! f436b7937562a47023e4688dd6acea58  zlib/ChangeLog
  f10e5e9394787b288e91fed29533720a  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
diff -Nrcpad gcc-15-20250726/c++tools/ChangeLog gcc-15-20250809/c++tools/ChangeLog
*** gcc-15-20250726/c++tools/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/c++tools/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/config/ChangeLog gcc-15-20250809/config/ChangeLog
*** gcc-15-20250726/config/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/config/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/contrib/ChangeLog gcc-15-20250809/contrib/ChangeLog
*** gcc-15-20250726/contrib/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/contrib/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/contrib/header-tools/ChangeLog gcc-15-20250809/contrib/header-tools/ChangeLog
*** gcc-15-20250726/contrib/header-tools/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/contrib/header-tools/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/contrib/reghunt/ChangeLog gcc-15-20250809/contrib/reghunt/ChangeLog
*** gcc-15-20250726/contrib/reghunt/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/contrib/reghunt/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/contrib/regression/ChangeLog gcc-15-20250809/contrib/regression/ChangeLog
*** gcc-15-20250726/contrib/regression/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/contrib/regression/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/fixincludes/ChangeLog gcc-15-20250809/fixincludes/ChangeLog
*** gcc-15-20250726/fixincludes/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/fixincludes/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gcc/BASE-VER gcc-15-20250809/gcc/BASE-VER
*** gcc-15-20250726/gcc/BASE-VER	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/gcc/BASE-VER	Sat Aug  9 22:32:36 2025
***************
*** 1 ****
! 15.1.1
--- 1 ----
! 15.2.1
diff -Nrcpad gcc-15-20250726/gcc/ChangeLog gcc-15-20250809/gcc/ChangeLog
*** gcc-15-20250726/gcc/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/gcc/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,305 ----
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121389
+ 	* tree-tailcall.cc (find_tail_calls): For finally_tmp.N
+ 	handle not just GIMPLE_CONDs with EQ_EXPR/NE_EXPR and only
+ 	values 0 and 1, but arbitrary non-negative values, arbitrary
+ 	comparisons in conditions and also GIMPLE_SWITCH next to
+ 	GIMPLE_CONDs.
+ 
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121413
+ 	* gimple-lower-bitint.cc (abi_limb_prec): New variable
+ 	(bitint_precision_kind): Initialize it.
+ 	(gimple_lower_bitint): Clear it at the start.  For
+ 	min_prec > limb_prec descreased precision vars for
+ 	INTEGER_CST PHI arguments ensure min_prec is either
+ 	prec or multiple of abi_limb_prec.
+ 
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121127
+ 	* gimple-lower-bitint.cc (bitint_large_huge::handle_operand_addr): For
+ 	uninitialized SSA_NAME, set *prec_stored to 0 rather than *prec.
+ 	Handle that case in narrowing casts.  If prec_stored is non-NULL,
+ 	set *prec_stored to prec_stored_val.
+ 
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-08-07  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-08-06  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/96226
+ 	* config/i386/predicates.md (and_operator): New operator.
+ 	* config/i386/i386.md (splitter after *<rotate_insn><mode>3_mask):
+ 	Use and_operator to match AND RTX and use its mode
+ 	in the split pattern.
+ 
+ 2025-08-01  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-05-19  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/120351
+ 	* config/arm/predicates.md (mem_noofs_operand): Also check the op
+ 	is a valid memory_operand.
+ 
+ 2025-08-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121323
+ 	* tree-ssa-alias.cc (ao_ref_init_from_ptr_and_range): Check
+ 	the pointer offset fits in a HWI when represented in bits.
+ 
+ 2025-08-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121320
+ 	* tree-ssa-sccvn.cc (ao_ref_init_from_vn_reference): Convert
+ 	op->off to poly_offset_int before multiplying by
+ 	BITS_PER_UNIT.
+ 
+ 2025-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121322
+ 	* gimple-ssa-store-merging.cc (find_bswap_or_nop): Return NULL if
+ 	count is 0.
+ 
+ 2025-07-31  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-07-31  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR rtl-optimization/121340
+ 	* config/avr/avr.opt (-mfuse-move2): New option.
+ 	* config/avr/avr-passes.def (avr_pass_2moves): Insert after combine.
+ 	* config/avr/avr-passes.cc (make_avr_pass_2moves): New function.
+ 	(pass_data avr_pass_data_2moves): New static variable.
+ 	(avr_pass_2moves): New rtl_opt_pass.
+ 	* config/avr/avr-protos.h (make_avr_pass_2moves): New proto.
+ 	* common/config/avr/avr-common.cc
+ 	(default_options avr_option_optimization_table) <-mfuse-move2>:
+ 	Set for -O1 and higher.
+ 	* doc/invoke.texi (AVR Options) <-mfuse-move2>: Document.
+ 	* config/avr/avr.opt.urls (-mfuse-move2): Add url.
+ 
+ 2025-07-31  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-07-31  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.cc (avr_output_addr_vec) <labl>: Asm out its .type.
+ 
+ 2025-07-31  Spencer Abson  <spencer.abson@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-31  Spencer Abson  <spencer.abson@arm.com>
+ 
+ 	PR target/121028
+ 	* config/aarch64/aarch64-sme.md (aarch64_smstart_sm): Use the .inst
+ 	directive if !TARGET_SME.
+ 	(aarch64_smstop_sm): Likewise.
+ 
+ 2025-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121256
+ 	* tree-vect-loop.cc (vectorizable_recurr): Handle the case
+ 	of a NULL SLP node.
+ 
+ 2025-07-31  Andreas Schwab  <schwab@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-21  Andreas Schwab  <schwab@suse.de>
+ 
+ 	PR target/121121
+ 	* config/riscv/riscv.cc (riscv_allocate_and_probe_stack_space):
+ 	Use temp2 instead of temp1 for the CFA note.
+ 
+ 2025-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121264
+ 	* machmode.h (get_best_mode): Change type of first 2 arguments
+ 	from int to HOST_WIDE_INT.
+ 	* stor-layout.cc (get_best_mode): Likewise.
+ 
+ 2025-07-31  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	Backported from master:
+ 	2025-07-11  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/114790
+ 	* cgraph.cc (cgraph_update_edges_for_call_stmt_node): Resolve devirtualization
+ 	if call statement was optimized out or turned to direct call.
+ 
+ 2025-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121256
+ 	* tree-vect-loop.cc (vectorizable_recurr): Build a correct
+ 	initialization vector for SLP_TREE_LANES > 1.
+ 
+ 2025-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121130
+ 	* tree-vect-stmts.cc (vectorizable_call): Bail out for
+ 	.MASK_CALL.
+ 
+ 2025-07-31  Pengfei Li  <Pengfei.Li2@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-30  Pengfei Li  <Pengfei.Li2@arm.com>
+ 
+ 	PR tree-optimization/121190
+ 	* tree-vect-data-refs.cc (vect_enhance_data_refs_alignment):
+ 	Increase alignment requirement for speculative loads.
+ 
+ 2025-07-31  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-07-30  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/120427
+ 	* config/i386/i386.md (peephole2): Transform "movq $-1,reg" to
+ 	"pushq $-1; popq reg" for -Oz if reg is a legacy integer register.
+ 
+ 2025-07-31  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2025-07-30  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/121274
+ 	* config/i386/sse.md (*vec_concatv2di_0): Add a splitter
+ 	before it.
+ 
+ 2025-07-30  Jennifer Schmitz  <jschmitz@nvidia.com>
+ 	    Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (olympus): Use olympus tuning
+ 	model.
+ 	* config/aarch64/aarch64.cc: Include olympus.h.
+ 	* config/aarch64/tuning_models/olympus.h: New file.
+ 
+ 2025-07-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-14  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	PR target/120645
+ 	* config/darwin-driver.cc: Account for latest macOS numbering
+ 	scheme.
+ 
+ 2025-07-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2025-07-23  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/119085
+ 	* tree-sra.cc (sort_and_splice_var_accesses): Prevent total
+ 	scalarization if two incompatible aggregates access the same place.
+ 
+ 2025-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121159
+ 	* calls.cc (can_implement_as_sibling_call_p): Don't reject declared
+ 	noreturn functions in musttail calls.
+ 
+ 2025-07-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-06-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/120427
+ 	* config/i386/i386.md (*mov<mode>_and): Changed to
+ 	define_insn_and_split.  Split it to "mov $0,mem" if not -Oz.
+ 	(*mov<mode>_or): Changed to define_insn_and_split.  Split it
+ 	to "mov $-1,mem" if not -Oz.
+ 	(peephole2): Don't transform "mov $-1,reg" to "push $-1; pop reg"
+ 	for -Oz since it will be transformed to "or $-1,reg".
+ 
+ 2025-07-28  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-07-28  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/121277
+ 	* config/avr/avr.cc (avr_addr_space_convert): When converting
+ 	from generic AS to __flashx, don't set bit 23.
+ 	(avr_convert_to_type): Don't -Waddr-space-convert when NULL
+ 	is converted to __flashx or to __flash.
+ 
+ 2025-07-28  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2025-07-17  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/121064
+ 	* config/loongarch/lsx.md (lsx_vshuf_<lsxfmt_f>): Add '@' to
+ 	generate a mode-aware helper.  Use <VIMODE> as the mode of the
+ 	operand 1 (selector).
+ 	* config/loongarch/lasx.md (lasx_xvshuf_<lasxfmt_f>): Likewise.
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_try_expand_lsx_vshuf_const): Create a new pseudo for
+ 	the selector.  Use the mode-aware helper to simplify the code.
+ 	(loongarch_expand_vec_perm_const): Likewise.
+ 
+ 2025-07-27  Alexey Merzlyakov  <alexey.merzlyakov@samsung.com>
+ 
+ 	Backported from master:
+ 	2025-06-30  Alexey Merzlyakov  <alexey.merzlyakov@samsung.com>
+ 
+ 	PR target/120714
+ 	* config/riscv/riscv.cc (riscv_allocate_and_probe_stack_space):
+ 	Fix SP-addresses in REG_CFA_DEF_CFA notes for stack-clash case.
+ 
+ 2025-07-26  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-07-17  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR middle-end/121095
+ 	* gcse.cc (execute_hardreg_pre): Skip if the hardreg which is never live.
+ 
+ 2025-07-26  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-07-23  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR target/120119
+ 	* config/aarch64/cortex-a57-fma-steering.cc (func_fma_steering::analyze):
+ 	Skip if renaming fails.
+ 
  2025-07-24  Richard Biener  <rguenther@suse.de>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/gcc/DATESTAMP gcc-15-20250809/gcc/DATESTAMP
*** gcc-15-20250726/gcc/DATESTAMP	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/gcc/DATESTAMP	Sat Aug  9 22:32:36 2025
***************
*** 1 ****
! 20250726
--- 1 ----
! 20250809
diff -Nrcpad gcc-15-20250726/gcc/ada/ChangeLog gcc-15-20250809/gcc/ada/ChangeLog
*** gcc-15-20250726/gcc/ada/ChangeLog	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/gcc/ada/ChangeLog	Sat Aug  9 22:32:36 2025
***************
*** 1,3 ****
--- 1,13 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-07-31  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/120440
+ 	* gcc-interface/Makefile.in (GNATLINK_OBJS): Add s-excmac.o.
+ 	(GNATMAKE_OBJS): Likewise.
+ 
  2025-07-25  Bob Duff  <duff@adacore.com>
  
  	* sem_ch12.adb (Check_Formal_Package_Instance):
diff -Nrcpad gcc-15-20250726/gcc/ada/gcc-interface/Makefile.in gcc-15-20250809/gcc/ada/gcc-interface/Makefile.in
*** gcc-15-20250726/gcc/ada/gcc-interface/Makefile.in	Sat Jul 26 22:32:09 2025
--- gcc-15-20250809/gcc/ada/gcc-interface/Makefile.in	Sat Aug  9 22:32:37 2025
*************** Makefile: ../config.status $(srcdir)/ada
*** 312,327 ****
  GNATLINK_OBJS = gnatlink.o \
   a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \
   gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \
!  osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \
!  sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o \
!  types.o validsw.o widechar.o
  
  GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o alloc.o \
   atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o errout.o \
   erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \
   gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \
   make.o makeusg.o make_util.o namet.o nlists.o opt.o osint.o osint-m.o \
!  output.o restrict.o rident.o s-exctab.o \
   s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
   s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
   snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
--- 312,327 ----
  GNATLINK_OBJS = gnatlink.o \
   a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \
   gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \
!  osint.o output.o rident.o s-excmac.o s-exctab.o s-secsta.o s-stalib.o \
!  s-stoele.o sdefault.o snames.o stylesw.o switch.o system.o table.o \
!  targparm.o types.o validsw.o widechar.o
  
  GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o alloc.o \
   atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o errout.o \
   erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \
   gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \
   make.o makeusg.o make_util.o namet.o nlists.o opt.o osint.o osint-m.o \
!  output.o restrict.o rident.o s-excmac.o s-exctab.o \
   s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
   s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
   snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
diff -Nrcpad gcc-15-20250726/gcc/analyzer/ChangeLog gcc-15-20250809/gcc/analyzer/ChangeLog
*** gcc-15-20250726/gcc/analyzer/ChangeLog	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/analyzer/ChangeLog	Sat Aug  9 22:32:37 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gcc/c/ChangeLog gcc-15-20250809/gcc/c/ChangeLog
*** gcc-15-20250726/gcc/c/ChangeLog	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/c/ChangeLog	Sat Aug  9 22:32:37 2025
***************
*** 1,3 ****
--- 1,42 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-08-01  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-05-02  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	PR c/120055
+ 	* c-typeck.cc (convert_arguments): Check if fundecl is null
+ 	before checking for builtin function declaration.
+ 
+ 2025-08-01  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-05-01  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	PR c/119950
+ 	* c-typeck.cc (convert_arguments): Check for built-in
+ 	function declaration before warning.
+ 
+ 2025-07-30  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR c/120354
+ 	* c-decl.cc (finish_struct): Or the results for TYPE_INCLUDES_FLEXARRAY.
+ 
+ 2025-07-30  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR c/120353
+ 	* c-decl.cc (finish_struct): Copy TYPE_INCLUDES_FLEXARRAY marking
+ 	to all the variant types of the current structure type.
+ 
  2025-05-30  Sandra Loosemore  <sloosemore@baylibre.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/gcc/c/c-decl.cc gcc-15-20250809/gcc/c/c-decl.cc
*** gcc-15-20250726/gcc/c/c-decl.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/c/c-decl.cc	Sat Aug  9 22:32:37 2025
*************** finish_struct (location_t loc, tree t, t
*** 9665,9679 ****
        DECL_NOT_FLEXARRAY (x) = !is_flexible_array_member_p (is_last_field, x);
  
        /* Set TYPE_INCLUDES_FLEXARRAY for the context of x, t.
! 	 when x is an array and is the last field.  */
        if (TREE_CODE (TREE_TYPE (x)) == ARRAY_TYPE)
  	TYPE_INCLUDES_FLEXARRAY (t)
! 	  = is_last_field && c_flexible_array_member_type_p (TREE_TYPE (x));
        /* Recursively set TYPE_INCLUDES_FLEXARRAY for the context of x, t
  	 when x is an union or record and is the last field.  */
        else if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (x)))
  	TYPE_INCLUDES_FLEXARRAY (t)
! 	  = is_last_field && TYPE_INCLUDES_FLEXARRAY (TREE_TYPE (x));
  
        if (warn_flex_array_member_not_at_end
  	  && !is_last_field
--- 9665,9682 ----
        DECL_NOT_FLEXARRAY (x) = !is_flexible_array_member_p (is_last_field, x);
  
        /* Set TYPE_INCLUDES_FLEXARRAY for the context of x, t.
! 	 when x is an array and is the last field.
! 	 There is only one last_field for a structure type, but there might
! 	 be multiple last_fields for a union type, therefore we should ORed
! 	 the result for multiple last_fields.  */
        if (TREE_CODE (TREE_TYPE (x)) == ARRAY_TYPE)
  	TYPE_INCLUDES_FLEXARRAY (t)
! 	  |= is_last_field && c_flexible_array_member_type_p (TREE_TYPE (x));
        /* Recursively set TYPE_INCLUDES_FLEXARRAY for the context of x, t
  	 when x is an union or record and is the last field.  */
        else if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (x)))
  	TYPE_INCLUDES_FLEXARRAY (t)
! 	  |= is_last_field && TYPE_INCLUDES_FLEXARRAY (TREE_TYPE (x));
  
        if (warn_flex_array_member_not_at_end
  	  && !is_last_field
*************** finish_struct (location_t loc, tree t, t
*** 9909,9914 ****
--- 9912,9918 ----
        C_TYPE_VARIABLE_SIZE (x) = C_TYPE_VARIABLE_SIZE (t);
        C_TYPE_VARIABLY_MODIFIED (x) = C_TYPE_VARIABLY_MODIFIED (t);
        C_TYPE_INCOMPLETE_VARS (x) = NULL_TREE;
+       TYPE_INCLUDES_FLEXARRAY (x) = TYPE_INCLUDES_FLEXARRAY (t);
      }
  
    /* Update type location to the one of the definition, instead of e.g.
diff -Nrcpad gcc-15-20250726/gcc/c/c-typeck.cc gcc-15-20250809/gcc/c/c-typeck.cc
*** gcc-15-20250726/gcc/c/c-typeck.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/c/c-typeck.cc	Sat Aug  9 22:32:37 2025
*************** convert_arguments (location_t loc, vec<l
*** 4342,4348 ****
  	  builtin_typetail = NULL_TREE;
  	}
  
!       if (!typetail && parmnum == 0 && !TYPE_NO_NAMED_ARGS_STDARG_P (fntype))
  	{
  	  auto_diagnostic_group d;
  	  bool warned;
--- 4342,4349 ----
  	  builtin_typetail = NULL_TREE;
  	}
  
!       if (!typetail && parmnum == 0 && !TYPE_NO_NAMED_ARGS_STDARG_P (fntype)
! 	  && !(fundecl && fndecl_built_in_p (fundecl)))
  	{
  	  auto_diagnostic_group d;
  	  bool warned;
diff -Nrcpad gcc-15-20250726/gcc/c-family/ChangeLog gcc-15-20250809/gcc/c-family/ChangeLog
*** gcc-15-20250726/gcc/c-family/ChangeLog	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/c-family/ChangeLog	Sat Aug  9 22:32:37 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-07-11  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/gcc/calls.cc gcc-15-20250809/gcc/calls.cc
*** gcc-15-20250726/gcc/calls.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/calls.cc	Sat Aug  9 22:32:37 2025
*************** can_implement_as_sibling_call_p (tree ex
*** 2580,2586 ****
        return false;
      }
  
!   if (TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (addr))))
      {
        maybe_complain_about_tail_call (exp, _("volatile function type"));
        return false;
--- 2580,2587 ----
        return false;
      }
  
!   if (TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (addr)))
!       && !CALL_EXPR_MUST_TAIL_CALL (exp))
      {
        maybe_complain_about_tail_call (exp, _("volatile function type"));
        return false;
diff -Nrcpad gcc-15-20250726/gcc/cgraph.cc gcc-15-20250809/gcc/cgraph.cc
*** gcc-15-20250726/gcc/cgraph.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cgraph.cc	Sat Aug  9 22:32:37 2025
*************** cgraph_update_edges_for_call_stmt_node (
*** 1640,1645 ****
--- 1640,1658 ----
  
        if (e)
  	{
+ 	  /* If call was devirtualized during cloning, mark edge
+ 	     as resolved.  */
+ 	  if (e->speculative)
+ 	    {
+ 	      if (new_stmt && is_gimple_call (new_stmt))
+ 		{
+ 		  tree decl = gimple_call_fndecl (new_stmt);
+ 		  if (decl)
+ 		    e = cgraph_edge::resolve_speculation (e, decl);
+ 		}
+ 	      else
+ 		e = cgraph_edge::resolve_speculation (e, NULL);
+ 	    }
  	  /* Keep calls marked as dead dead.  */
  	  if (new_stmt && is_gimple_call (new_stmt) && e->callee
  	      && fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE,
diff -Nrcpad gcc-15-20250726/gcc/cobol/ChangeLog gcc-15-20250809/gcc/cobol/ChangeLog
*** gcc-15-20250726/gcc/cobol/ChangeLog	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/ChangeLog	Sat Aug  9 22:32:37 2025
***************
*** 1,3 ****
--- 1,1636 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-24  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119231
+ 	* gcobolspec.cc: (lang_specific_driver): Pass OPT_static through.
+ 	Handle -static and -static-libgcobol properly.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-23  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* genapi.cc (leave_procedure): Adjust location_t for PERFORM.
+ 	(parser_perform_times): Likewise.
+ 	(internal_perform_through_times): Likewise.
+ 	(perform_outofline_before_until): Likewise.
+ 	(perform_outofline_after_until): Likewise.
+ 	(perform_outofline_testafter_varying): Likewise.
+ 	(perform_outofline_before_varying): Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-21  Robert Dubner  <rdubner@symas.com>
+ 		    James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120402
+ 	* Make-lang.in: Elminate commented-out scripting.
+ 	* cbldiag.h (_CBLDIAG_H): Change #if 0 to #if GCOBOL_GETENV
+ 	(warn_msg): Add printf attributes.
+ 	(location_dump): Add debugging message.
+ 	* cdf.y: Improved linemap tracking.
+ 	* genapi.cc (treeplet_fill_source): const attribute for formal parameter.
+ 	(insert_nop): Created to consolidate var_decl_nop writes.
+ 	(build_main_that_calls_something): Move generation to the end of executable.
+ 	(level_88_helper): Formatting.
+ 	(parser_call_targets_dump): Formatting.
+ 	(function_pointer_from_name): const attribute for formal parameter.
+ 	(parser_initialize_programs): const attribute for formal parameter.
+ 	(parser_statement_begin): Improved linemap handling.
+ 	(section_label):  Improved linemap handling.
+ 	(paragraph_label): Improved linemap handling.
+ 	(pseudo_return_pop): Improved linemap handling.
+ 	(leave_procedure): Formatting.
+ 	(parser_enter_section):  Improved linemap handling.
+ 	(parser_enter_paragraph): Improved linemap handling.
+ 	(parser_perform): Formatting.
+ 	(parser_leave_file): Move creation of main() to this routine.
+ 	(parser_enter_program): Move creation of main from here to leave_file.
+ 	(parser_accept): Formatting. const attribute for formal parameter.
+ 	(parser_accept_command_line): const attribute for formal parameter.
+ 	(parser_accept_command_line_count): const attribute for formal parameter.
+ 	(parser_accept_envar): Likewise.
+ 	(parser_set_envar): Likewise.
+ 	(parser_display): Likewise.
+ 	(get_exhibit_name): Implement EXHIBIT verb.
+ 	(parser_exhibit): Likewise.
+ 	(parser_sleep): const attribute for formal parameter.
+ 	(parser_division): Improved linemap handling.
+ 	(parser_classify): const attribute for formal parameter.
+ 	(create_iline_address_pairs): Improved linemap handling.
+ 	(parser_perform_start): Likewise.
+ 	(perform_inline_until): Likewise.
+ 	(perform_inline_testbefore_varying): Likewise.
+ 	(parser_perform_until): Likewise.
+ 	(parser_perform_inline_times): Likewise.
+ 	(parser_intrinsic_subst): const attribute for formal parameter.
+ 	(parser_file_merge): Formatting.
+ 	(create_and_call): Improved linemap handling.
+ 	(mh_identical): const attribute for formal parameter.
+ 	(mh_numeric_display): const attribute for formal parameter.
+ 	(mh_little_endian): Likewise.
+ 	(mh_source_is_group): Likewise.
+ 	(psa_FldLiteralA): Formatting.
+ 	* genapi.h (parser_accept): const attribute for formal parameter.
+ 	(parser_accept_envar): Likewise.
+ 	(parser_set_envar): Likewise.
+ 	(parser_accept_command_line): Likewise.
+ 	(parser_accept_command_line_count): Likewise.
+ 	(parser_add): Likewise.
+ 	(parser_classify): Likewise.
+ 	(parser_sleep): Likewise.
+ 	(parser_exhibit): Likewise.
+ 	(parser_display): Likewise.
+ 	(parser_initialize_programs): Likewise.
+ 	(parser_intrinsic_subst): Likewise.
+ 	* gengen.cc (gg_assign): Improved linemap handling.
+ 	(gg_add_field_to_structure): Likewise.
+ 	(gg_define_from_declaration): Likewise.
+ 	(gg_build_relational_expression): Likewise.
+ 	(gg_goto_label_decl): Likewise.
+ 	(gg_goto): Likewise.
+ 	(gg_printf): Likewise.
+ 	(gg_fprintf): Likewise.
+ 	(gg_memset): Likewise.
+ 	(gg_memchr): Likewise.
+ 	(gg_memcpy): Likewise.
+ 	(gg_memmove): Likewise.
+ 	(gg_strcpy): Likewise.
+ 	(gg_strcmp): Likewise.
+ 	(gg_strncmp): Likewise.
+ 	(gg_return): Likewise.
+ 	(chain_parameter_to_function): Likewise.
+ 	(gg_define_function): Likewise.
+ 	(gg_get_function_decl): Likewise.
+ 	(gg_call_expr): Likewise.
+ 	(gg_call): Likewise.
+ 	(gg_call_expr_list): Likewise.
+ 	(gg_exit): Likewise.
+ 	(gg_abort): Likewise.
+ 	(gg_strlen): Likewise.
+ 	(gg_strdup): Likewise.
+ 	(gg_malloc): Likewise.
+ 	(gg_realloc): Likewise.
+ 	(gg_free): Likewise.
+ 	(gg_set_current_line_number): Likewise.
+ 	(gg_get_current_line_number): Likewise.
+ 	(gg_insert_into_assembler): Likewise.
+ 	(token_location_override): Likewise.
+ 	(gg_token_location): Likewise.
+ 	* gengen.h (location_from_lineno): Likewise.
+ 	(gg_set_current_line_number): Likewise.
+ 	(gg_get_current_line_number): Likewise.
+ 	(gg_token_location): Likewise.
+ 	(current_token_location): Likewise.
+ 	(current_location_minus_one): Likewise.
+ 	(current_location_minus_one_clear): Likewise.
+ 	(token_location_override): Likewise.
+ 	* genmath.cc (fast_divide):  const attribute for formal parameter.
+ 	* genutil.cc (get_and_check_refstart_and_reflen): Likewise.
+ 	(get_data_offset): Likewise.
+ 	(refer_refmod_length): Likewise.
+ 	(refer_offset): Likewise.
+ 	(refer_size): Likewise.
+ 	(refer_size_dest): Likewise.
+ 	(refer_size_source): Likewise.
+ 	(qualified_data_location): Likewise.
+ 	* genutil.h (refer_offset): Likewise.
+ 	(refer_size_source): Likewise.
+ 	(refer_size_dest): Likewise.
+ 	(qualified_data_location): Likewise.
+ 	* parse.y: EVALUATE token; Implement EXHIBIT verb;
+ 	Improved linemap handling.
+ 	* parse_ante.h (input_file_status_notify): Improved linemap handling.
+ 	(location_set): Likewise.
+ 	* scan.l: PICTURE string validation.
+ 	* scan_ante.h (class picture_t): PICTURE string validation.
+ 	(validate_picture): Likewise.
+ 	* symbols.cc (symbol_currency): Revised default currency handling.
+ 	* symbols.h (symbol_currency): Likewise.
+ 	* util.cc (location_from_lineno): Improved linemap handling.
+ 	(current_token_location): Improved linemap handling.
+ 	(current_location_minus_one): Improved linemap handling.
+ 	(current_location_minus_one_clear): Improved linemap handling.
+ 	(gcc_location_set_impl): Improved linemap handling.
+ 	(warn_msg): Improved linemap handling.
+ 	* util.h (cobol_lineno): Improved linemap handling.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-14  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol1.cc (cobol_langhook_handle_option): Eliminate cppcheck warnings.
+ 	* dts.h: Likewise.
+ 	* except.cc (cbl_enabled_exceptions_t::dump): Likewise.
+ 	* gcobolspec.cc (lang_specific_driver): Likewise.
+ 	* genapi.cc (parser_file_merge): Likewise.
+ 	* gengen.cc (gg_unique_in_function): Likewise.
+ 	(gg_declare_variable): Likewise.
+ 	(gg_peek_fn_decl): Likewise.
+ 	(gg_define_function): Likewise.
+ 	* genmath.cc (set_up_on_exception_label): Likewise.
+ 	(set_up_compute_error_label): Likewise.
+ 	(arithmetic_operation): Likewise.
+ 	(fast_divide): Likewise.
+ 	* genutil.cc (get_and_check_refstart_and_reflen): Likewise.
+ 	(get_depending_on_value_from_odo): Likewise.
+ 	(get_data_offset): Likewise.
+ 	(get_binary_value): Likewise.
+ 	(process_this_exception): Likewise.
+ 	(copy_little_endian_into_place): Likewise.
+ 	(refer_is_clean): Likewise.
+ 	(refer_fill_depends): Likewise.
+ 	* genutil.h (process_this_exception): Likewise.
+ 	(copy_little_endian_into_place): Likewise.
+ 	(refer_is_clean): Likewise.
+ 	* lexio.cc (check_push_pop_directive): Likewise.
+ 	(check_source_format_directive): Likewise.
+ 	(location_in): Likewise.
+ 	(lexer_input): Likewise.
+ 	(cdftext::lex_open): Likewise.
+ 	(lexio_dialect_mf): Likewise.
+ 	(valid_sequence_area): Likewise.
+ 	(cdftext::free_form_reference_format): Likewise.
+ 	(cdftext::segment_line): Likewise.
+ 	* lexio.h (struct span_t): Likewise.
+ 	* scan_ante.h (trim_location): Likewise.
+ 	* symbols.cc (symbol_elem_cmp): Likewise.
+ 	(symbol_alphabet): Likewise.
+ 	(end_of_group): Likewise.
+ 	(cbl_field_t::attr_str): Likewise.
+ 	(symbols_update): Likewise.
+ 	(symbol_typedef_add): Likewise.
+ 	(symbol_field_add): Likewise.
+ 	(new_temporary_impl): Likewise.
+ 	(symbol_label_section_exists): Likewise.
+ 	(symbol_program_callables): Likewise.
+ 	(file_status_status_of): Likewise.
+ 	* symfind.cc (is_data_field): Likewise.
+ 	(finalize_symbol_map2): Likewise.
+ 	(class in_scope): Likewise.
+ 	(symbol_match2): Likewise.
+ 	* util.cc (get_current_dir_name): Likewise.
+ 	(gb4): Likewise.
+ 	(class cdf_directives_t): Likewise.
+ 	(cbl_field_t::report_invalid_initial_value): Likewise.
+ 	(literal_subscript_oob): Likewise.
+ 	(cbl_refer_t::str): Likewise.
+ 	(date_time_fmt): Likewise.
+ 	(class unique_stack): Likewise.
+ 	(cobol_set_pp_option): Likewise.
+ 	(cobol_filename): Likewise.
+ 	(cobol_filename_restore): Likewise.
+ 	(gcc_location_set_impl): Likewise.
+ 	(ydferror): Likewise.
+ 	(error_msg_direct): Likewise.
+ 	(yyerror): Likewise.
+ 	(cbl_unimplemented_at): Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-13  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* Make-lang.in: Eliminate the .cc.o override.
+ 	* genapi.cc (level_88_helper): Eliminate cppcheck warning.
+ 	(get_level_88_domain): Likewise.
+ 	(get_class_condition_string): Likewise.
+ 	(parser_call_targets_dump): Likewise.
+ 	(parser_compile_ecs): Likewise.
+ 	(initialize_variable_internal): Likewise.
+ 	(move_tree): Likewise.
+ 	(combined_name): Likewise.
+ 	(assembler_label): Likewise.
+ 	(find_procedure): Likewise.
+ 	(parser_perform): Likewise.
+ 	(parser_perform_times): Likewise.
+ 	(internal_perform_through): Likewise.
+ 	(internal_perform_through_times): Likewise.
+ 	(psa_FldLiteralN): Likewise.
+ 	(psa_FldBlob): Likewise.
+ 	(parser_accept): Likewise.
+ 	(parser_accept_exception): Likewise.
+ 	(parser_accept_exception_end): Likewise.
+ 	(parser_accept_command_line): Likewise.
+ 	(parser_accept_envar): Likewise.
+ 	(parser_display_internal): Likewise.
+ 	(parser_display): Likewise.
+ 	(parser_assign): Likewise.
+ 	(parser_initialize_table): Likewise.
+ 	(parser_arith_error): Likewise.
+ 	(parser_arith_error_end): Likewise.
+ 	(parser_division): Likewise.
+ 	(label_fetch): Likewise.
+ 	(parser_label_label): Likewise.
+ 	(parser_label_goto): Likewise.
+ 	(parser_perform_start): Likewise.
+ 	(parser_perform_conditional): Likewise.
+ 	(parser_perform_conditional_end): Likewise.
+ 	(parser_perform_until): Likewise.
+ 	(parser_file_delete): Likewise.
+ 	(parser_intrinsic_subst): Likewise.
+ 	(create_lsearch_address_pairs): Likewise.
+ 	(parser_bsearch_start): Likewise.
+ 	(is_ascending_key): Likewise.
+ 	(parser_sort): Likewise.
+ 	(parser_file_sort): Likewise.
+ 	(parser_return_start): Likewise.
+ 	(parser_file_merge): Likewise.
+ 	(parser_string_overflow): Likewise.
+ 	(parser_unstring): Likewise.
+ 	(parser_string): Likewise.
+ 	(parser_call_exception): Likewise.
+ 	(create_and_call): Likewise.
+ 	(mh_identical): Likewise.
+ 	(move_helper): Likewise.
+ 	(binary_initial_from_float128): Likewise.
+ 	(initial_from_initial): Likewise.
+ 	(psa_FldLiteralA): Likewise.
+ 	(parser_local_add): Likewise.
+ 	(parser_symbol_add): Likewise.
+ 	* genapi.h (parser_display): Likewise.
+ 	* gengen.cc (gg_call_expr): Explict check for NULL_TREE.
+ 	(gg_call): Likewise.
+ 	* show_parse.h (SHOW_PARSE_LABEL_OK): Likewise.
+ 	(TRACE1_FIELD_VALUE): Likewise.
+ 	(CHECK_FIELD): Likewise.
+ 	(CHECK_FIELD2): Likewise.
+ 	(CHECK_LABEL): Likewise.
+ 	* util.cc (cbl_internal_error): Apply [[noreturn]] attribute.
+ 	* util.h (cbl_internal_error): Likewise.
+ 
+ 2025-07-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backported from master:
+ 	2025-07-11  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR cobol/120621
+ 	* lexio.cc (parse_replace_pairs): Cast mfile.lineno() to fmt_size_t.
+ 	* parse.y (intrinsic): Print ptrdiff_t using %ld, cast arg to long.
+ 	* scan_ante.h (numstr_of): Print nx using %ld, cast arg to long.
+ 	* util.cc (cbl_field_t::report_invalid_initial_value): Print
+ 	ptrdiff_t using %ld, cast arg to long.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120765
+ 	* cdf.y: Extend grammar for new CDF syntax, relocate dictionary.
+ 	* cdfval.h (cdf_dictionary): Use new CDF dictionary.
+ 	* dts.h: Remove useless assignment, note incorrect behavior.
+ 	* except.cc: Remove obsolete EC state.
+ 	* gcobol.1: Document CDF in its own section.
+ 	* genapi.cc (parser_statement_begin): Use new EC state function.
+ 	(parser_file_merge): Same.
+ 	(parser_check_fatal_exception): Same.
+ 	* genutil.cc (get_and_check_refstart_and_reflen): Same.
+ 	(get_depending_on_value_from_odo): Same.
+ 	(get_data_offset): Same.
+ 	(process_this_exception): Same.
+ 	* lexio.cc (check_push_pop_directive): New function.
+ 	(check_source_format_directive): Restrict regex search to 1 line.
+ 	(cdftext::free_form_reference_format): Use new function.
+ 	* parse.y: Define new CDF tokens, use new CDF state.
+ 	* parse_ante.h (cdf_tokens): Use new CDF state.
+ 	(redefined_token): Same.
+ 	(class prog_descr_t): Remove obsolete CDF state.
+ 	(class program_stack_t): Same.
+ 	(current_call_convention): Same.
+ 	* scan.l: Recognize new CDF tokens.
+ 	* scan_post.h (is_cdf_token): Same.
+ 	* symbols.h (cdf_current_tokens): Change current_call_convention to return void.
+ 	* token_names.h: Regenerate.
+ 	* udf/stored-char-length.cbl: Use new PUSH/POP CDF functionality.
+ 	* util.cc (class cdf_directives_t): Define cdf_directives_t.
+ 	(current_call_convention): Same.
+ 	(cdf_current_tokens): Same.
+ 	(cdf_dictionary): Same.
+ 	(cdf_enabled_exceptions): Same.
+ 	(cdf_push): Same.
+ 	(cdf_push_call_convention): Same.
+ 	(cdf_push_current_tokens): Same.
+ 	(cdf_push_dictionary): Same.
+ 	(cdf_push_enabled_exceptions): Same.
+ 	(cdf_push_source_format): Same.
+ 	(cdf_pop): Same.
+ 	(cdf_pop_call_convention): Same.
+ 	(cdf_pop_current_tokens): Same.
+ 	(cdf_pop_dictionary): Same.
+ 	(cdf_pop_enabled_exceptions): Same.
+ 	(cdf_pop_source_format): Same.
+ 	* util.h (cdf_push): Declare cdf_directives_t.
+ 	(cdf_push_call_convention): Same.
+ 	(cdf_push_current_tokens): Same.
+ 	(cdf_push_dictionary): Same.
+ 	(cdf_push_enabled_exceptions): Same.
+ 	(cdf_push_source_format): Same.
+ 	(cdf_pop): Same.
+ 	(cdf_pop_call_convention): Same.
+ 	(cdf_pop_current_tokens): Same.
+ 	(cdf_pop_dictionary): Same.
+ 	(cdf_pop_source_format): Same.
+ 	(cdf_pop_enabled_exceptions): Same.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Robert Dubner  <rdubner@symas.com>
+ 		    James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120765
+ 	PR cobol/119337
+ 	PR cobol/120794
+ 	* Make-lang.in: Take control of the .cc.o rule.
+ 	* cbldiag.h (error_msg_direct): New declaration.
+ 	(gcc_location_dump): Forward declaration.
+ 	(location_dump): Use gcc_location_dump.
+ 	* cdf.y: Change some tokens.
+ 	* gcobc: Change dialect handling.
+ 	* genapi.cc (parser_call_targets_dump): Temporarily remove from service.
+ 	(parser_compile_dcls): Combine temporary arrays.
+ 	(get_binary_value_from_float): Apply const to one parameter.
+ 	(depending_on_value): Localize a boolean variable.
+ 	(normal_normal_compare): Likewise.
+ 	(cobol_compare): Eliminate cppcheck warning.
+ 	(combined_name): Apply const to an input parameter.
+ 	(parser_perform): Apply const to a variable.
+ 	(parser_accept): Improve handling of special_name_t parameter and
+ 	the exception conditions.
+ 	(parser_display): Improve handling of speciat_name_t parameter; use the
+ 	os_filename[] string when appropriate.
+ 	(program_end_stuff): Rename shadowing variable.
+ 	(parser_division): Consolidate temporary char[] arrays.
+ 	(parser_file_start): Apply const to a parameter.
+ 	(inspect_replacing): Likewise.
+ 	(parser_program_hierarchy): Rename shadowing variable.
+ 	(mh_identical): Apply const to parameters.
+ 	(float_type_of): Likewise.
+ 	(picky_memcpy): Likewise.
+ 	(mh_numeric_display): Likewise.
+ 	(mh_little_endian): Likewise.
+ 	(mh_source_is_group): Apply static to a variable it.
+ 	(move_helper): Quiet a cppcheck warning.
+ 	* genapi.h (parser_accept): Add exceptions to declaration.
+ 	(parser_accept_under_discussion): Add declaration.
+ 	(parser_display): Change to std::vector; add exceptions to declaration.
+ 	* lexio.cc (cdf_source_format): Improve source code location handling.
+ 	(source_format_t::infer): Likewise.
+ 	(is_fixed_format): Likewise.
+ 	(is_reference_format): Likewise.
+ 	(left_margin): Likewise.
+ 	(right_margin): Likewise.
+ 	(cobol_set_indicator_column): Likewise.
+ 	(include_debug): Likewise.
+ 	(continues_at): Likewise.
+ 	(indicated): Likewise.
+ 	(check_source_format_directive): Likewise.
+ 	(cdftext::free_form_reference_format): Likewise.
+ 	* parse.y: Tokens; program and function names; DISPLAY and ACCEPT
+ 	handling.
+ 	* parse_ante.h (class tokenset_t): Removed.
+ 	(class current_tokens_t): Removed.
+ 	(field_of): Removed.
+ 	* scan.l: Token handling.
+ 	* scan_ante.h (level_found): Comment.
+ 	* scan_post.h (start_condition_str): Remove cast author_state:.
+ 	* symbols.cc (symbols_update): Change error message.
+ 	(symbol_table_init): Correct and reorder entries.
+ 	(symbol_unresolved_file_key): New function definition.
+ 	(cbl_file_key_t::deforward): Change error message.
+ 	* symbols.h (symbol_unresolved_file_key): New declaration.
+ 	(keyword_tok): New function.
+ 	(redefined_token): New function.
+ 	(class current_tokens_t): New class.
+ 	* symfind.cc (symbol_match): Revise error message.
+ 	* token_names.h: Reorder and change numbers in comments.
+ 	* util.cc (class cdf_directives_t): New class.
+ 	(cobol_set_indicator_column): New function.
+ 	(cdf_source_format): New function.
+ 	(gcc_location_set_impl): Improve column handling in token_location.
+ 	(gcc_location_dump): New function.
+ 	(class temp_loc_t): Modify constructor.
+ 	(error_msg_direct): New function.
+ 	* util.h (class source_format_t): New class.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* Make-lang.in: Use && instead of semicolon between commands.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* parse.y: printf() of size_t is %zu, not %ld.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-06-30  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120772
+ 	PR cobol/120779
+ 	PR cobol/120790
+ 	PR cobol/120791
+ 	PR cobol/120794
+ 	* gcobc: Supply -fPIC for shared objects.
+ 	* genapi.cc (linemap_add): Delete empty macro.
+ 	(parser_enter_file): Do not call linemap_add.
+ 	(parser_leave_file): Same.
+ 	* gengen.cc (location_from_lineno): Remove function.
+ 	* lexio.cc (parse_replacing_term): Allow empty term.
+ 	(cdftext::process_file): Always append to output.
+ 	(cdftext::segment_line): Output #line directives.
+ 	* lexio.h (struct span_t): Count lines in span.
+ 	* parse.y: Revamp REPOSITORY, and minor syntax extensions.
+ 	* parse_ante.h (input_file_status_notify): Update linemap filename before location.
+ 	(intrinsic_token_of): Declare.
+ 	(parser_move_carefully): Support MOVE pointer.
+ 	* parse_util.h (intrinsic_token_of): New function.
+ 	* scan.l: New EOF logic, accept NOT=, own yylloc and yylineno.
+ 	* scan_ante.h (class enter_leave_t): Do not store newline count.
+ 	(cdf_location_set): Remove declaration.
+ 	(ydfltype_of): New function.
+ 	(update_location): Accept location parameter.
+ 	(reset_location): New function.
+ 	(YY_USER_ACTION): Use update_location().
+ 	(YY_USER_INIT): Update CDF location.
+ 	(verify_ws): New function.
+ 	(wait_for_the_child): Removed.
+ 	* symbols.h (cobol_fileline_set): return line number.
+ 	* util.cc (valid_move): Use range-based for loop.
+ 	(struct input_file_t): Remove line_map pointer.
+ 	(class unique_stack): New peek() member function.
+ 	(cobol_lineno_save): Rename to overload cobol_lineno().
+ 	(cobol_lineno): Replaces cobol_lineno_save().
+ 	(cobol_filename): Return void.
+ 	(location_from_lineno): New function used by genapi.cc.
+ 	(cdf_location_set): Remove.
+ 	(matched_length): No change.
+ 	(cobol_fileline_set): Return line number.
+ 	(fisspace): Remove extra semicolon.
+ 	(fisprint): Same.
+ 	* util.h (cobol_filename_restore): Return void.
+ 	(cobol_lineno_save): Remove declaration.
+ 	(cobol_lineno): Declare.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* Make-lang.in: Incorporate gcobol.clean.
+ 	* except.cc (cbl_enabled_exceptions_t::dump): Update debug message.
+ 	* genapi.cc (gg_attribute_bit_get): Formatting.
+ 	(file_static_variable): Formatting.
+ 	(trace1_init): Formatting.
+ 	(build_main_that_calls_something): Normalize function_decl use.
+ 	(parser_call_target): Likewise.
+ 	(set_call_convention): Likewise.
+ 	(parser_call_target_convention): Likewise.
+ 	(parser_call_targets_dump): Likewise.
+ 	(function_handle_from_name): Likewise.
+ 	(function_pointer_from_name): Likewise.
+ 	(parser_initialize_programs): Likewise.
+ 	(parser_statement_begin): Formatting.
+ 	(parser_leave_file): Use function_decl FIFO.
+ 	(enter_program_common): Normalize function_decl use.
+ 	(parser_enter_program): Normalize function_decl use.
+ 	(tree_type_from_field_type): Normalize function_decl use.
+ 	(is_valuable): Comment.
+ 	(pe_stuff): Change name to program_end_stuff.
+ 	(program_end_stuff): Likewise.
+ 	(parser_exit): Likewise.
+ 	(parser_division): Normalize function_decl use.
+ 	(create_and_call): Normalize function_decl use.
+ 	(parser_call): Normalize function_decl use.
+ 	(parser_set_pointers): Normalize function_decl use.
+ 	(parser_program_hierarchy): Normalize function_decl use.
+ 	(psa_FldLiteralA): Defeat attempt to re-use literals. (Fails on some aarch64).
+ 	(parser_symbol_add): Error message formatting.
+ 	* genapi.h: Formatting.
+ 	* gengen.cc (struct cbl_translation_unit_t): Add function_decl FIFO.
+ 	(show_type): Rename to gg_show_type.
+ 	(gg_show_type): Correct an error message.
+ 	(gg_assign): Formatting; change error handling.
+ 	(gg_modify_function_type): Normalize function_decl use.
+ 	(gg_define_function_with_no_parameters): Fold into gg_defint_function().
+ 	(function_decl_key): Normalize function_decl use.
+ 	(gg_peek_fn_decl): Normalize function_decl use.
+ 	(gg_build_fn_decl): Normalize function_decl use.
+ 	(gg_define_function): Normalize function_decl use.
+ 	(gg_tack_on_function_parameters): Remove.
+ 	(gg_finalize_function): Normalize function_decl use.
+ 	(gg_leaving_the_source_code_file): Normalize function_decl use.
+ 	(gg_call_expr_list): Normalize function_decl use.
+ 	(gg_trans_unit_var_decl): Normalize function_decl use.
+ 	(gg_insert_into_assemblerf): New function; formatting.
+ 	* gengen.h (struct gg_function_t): Eliminate "is_truly_nested" flag.
+ 	(gg_assign): Incorporate return value.
+ 	(gg_define_function): Normalize function_decl use.
+ 	(gg_define_function_with_no_parameters): Eliminate.
+ 	(gg_build_fn_decl): Normalize function_decl use.
+ 	(gg_peek_fn_decl): Normalize function_decl use.
+ 	(gg_modify_function_type): Normalize function_decl use.
+ 	(gg_call_expr_list): Normalize function_decl use.
+ 	(gg_get_function_decl): Normalize function_decl use.
+ 	(location_from_lineno): Prefix with "extern".
+ 	(gg_open): Likewise.
+ 	(gg_close): Likewise.
+ 	(gg_get_indirect_reference): Likewise.
+ 	(gg_insert_into_assembler): Likewise.
+ 	(gg_insert_into_assemblerf): Likewise.
+ 	(gg_show_type): New declaration.
+ 	(gg_leaving_the_source_code_file): New declaration.
+ 	* parse.y: Format debugging message.
+ 	* parse_ante.h: Normalize function_decl use.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-06-20  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120621
+ 	* genapi.cc (parser_compile_ecs): Cast argument to unsigned long.
+ 	(parser_compile_dcls): Same.
+ 	(parser_division): RAII.
+ 	(inspect_tally): Cast argument to unsigned long.
+ 	* lexio.cc (cdftext::lex_open): Cast pid_t to long.
+ 	* parse.y: hard-code values for old versions of Bison, and message format.
+ 	* scan_ante.h (wait_for_the_child): Cast pid_t to long.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-06-18  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120621
+ 	* cbldiag.h (yyerror): Add diagnostic attributes.
+ 	(yywarn): Same.
+ 	(error_msg): Same.
+ 	(yyerrorvl): Same.
+ 	(cbl_unimplementedw): Same.
+ 	(cbl_unimplemented): Same.
+ 	(cbl_unimplemented_at): Same.
+ 	* cdf-copy.cc (copybook_elem_t::open_file): Supply string argument.
+ 	* cdf.y: Use %<%>.
+ 	* cobol-system.h (if): Check GCC_VERSION.
+ 	(ATTRIBUTE_GCOBOL_DIAG): Define.
+ 	* except.cc (cbl_enabled_exception_t::dump): Remove extra %s.
+ 	* genapi.cc (get_class_condition_string): Use acceptable message.
+ 	(get_bytes_needed): Same.
+ 	(move_tree): Same.
+ 	(get_string_from): Same.
+ 	(internal_perform_through): Same.
+ 	(tree_type_from_field_type): Same.
+ 	(is_valuable): Same.
+ 	(parser_logop): Same.
+ 	(parser_relop): Same.
+ 	(parser_relop_long): Same.
+ 	(parser_if): Same.
+ 	(parser_setop): Same.
+ 	(parser_perform_conditional): Same.
+ 	(parser_file_add): Same.
+ 	(parser_file_open): Same.
+ 	(parser_file_close): Same.
+ 	(parser_file_read): Same.
+ 	(parser_file_write): Same.
+ 	(inspect_replacing): Same.
+ 	(parser_sort): Same.
+ 	(parser_file_sort): Same.
+ 	(parser_file_merge): Same.
+ 	(create_and_call): Same.
+ 	(parser_bitop): Same.
+ 	(parser_bitwise_op): Same.
+ 	(hijack_for_development): Same.
+ 	(mh_source_is_literalN): Same.
+ 	(mh_dest_is_float): Same.
+ 	(parser_symbol_add): Same.
+ 	* gengen.cc (show_type): Use acceptable message.
+ 	(gg_find_field_in_struct): Same.
+ 	(gg_declare_variable): Same.
+ 	(gg_printf): Same.
+ 	(gg_fprintf): Same.
+ 	(gg_tack_on_function_parameters): Same.
+ 	(gg_define_function): Same.
+ 	(gg_get_function_decl): Same.
+ 	(gg_finalize_function): Same.
+ 	(gg_call_expr): Same.
+ 	(gg_call): Same.
+ 	(gg_insert_into_assembler): Define new function.
+ 	(gg_insert_into_assemblerf): Use gg_insert_into_assembler().
+ 	* gengen.h (gg_insert_into_assembler): Simpler function declaration.
+ 	(gg_insert_into_assemblerf): Declare new function.
+ 	* genmath.cc (parser_op): Use acceptable message.
+ 	* genutil.cc (get_binary_value): Use acceptable message.
+ 	* lexio.cc (parse_replacing_pair): Correct diagnostic arguments.
+ 	(preprocess_filter_add): Same.
+ 	(cdftext::open_input): Same.
+ 	* parse.y: Use acceptable messages.
+ 	* parse_ante.h (struct evaluate_elem_t): Use %<%>.
+ 	(is_callable): Same.
+ 	* parse_util.h (intrinsic_invalid_parameter): Use %qs.
+ 	* scan.l: Use dialect_error().
+ 	* scan_ante.h (numstr_of): Use %qs.
+ 	(scanner_token): Quote COBOL tokens in messages.
+ 	(scanner_parsing): Correct diagnostic message.
+ 	(scanner_parsing_toggle): Quote COBOL tokens in messages.
+ 	(scanner_parsing_pop): Same.
+ 	(typed_name): Use %qs.
+ 	* scan_post.h (prelex): Quote COBOL tokens in message.
+ 	* show_parse.h (CHECK_FIELD): Use acceptable message format.
+ 	(CHECK_LABEL): Same.
+ 	* symbols.cc (symbol_field_same_as): Remove extra spaces.
+ 	(cbl_alphabet_t::assign): Use %<%>.
+ 	(cbl_field_t::internalize): Quote library name in message.
+ 	* symbols.h (struct os_locale_t): Constify codeset.
+ 	(class temporaries_t): Add copy constructor.
+ 	(struct cbl_alphabet_t): Use acceptable message.
+ 	* util.cc (symbol_type_str): Use cbl_internal_error.
+ 	(cbl_field_type_str): Same.
+ 	(is_elementary): Same.
+ 	(cbl_field_t::report_invalid_initial_value): Use %qs.
+ 	(class unique_stack): Avoid %m.
+ 	(ydferror): Declare function with attributes.
+ 	(error_msg): Same.
+ 	(cobol_fileline_set): Use %<%>.
+ 	(os_locale_t): Remove use of xstrdup.
+ 	(cobol_parse_files): Quote C names in message.
+ 	(dialect_error): Use %<%>.
+ 	* util.h (cbl_message): Add attributes.
+ 	(cbl_internal_error): Same.
+ 	(cbl_err): Same.
+ 	(cbl_errx): Same.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-06-16  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120621
+ 	* Make-lang.in: Use STRICT_WARN.
+ 	* cbldiag.h (location_dump): suppress shadowVariable.
+ 	* cdf-copy.cc (esc): Fix shadowVariable.
+ 	(copybook_elem_t::open_file): Do not use %m.
+ 	* cdf.y: suppress invalidPrintfArgType for target format.
+ 	* cdfval.h (struct cdfval_t): Suppress noExplicitConstructor.
+ 	* cobol1.cc (cobol_name_mangler): Use C++ cast.
+ 	* copybook.h (class copybook_elem_t): Same.
+ 	* dts.h: Fixes and suppressions due to cppcheck.
+ 	* except.cc (cbl_enabled_exceptions_t::status): Suppress useStlAlgorithm.
+ 	(cbl_enabled_exceptions_t::turn_on_off): Const parameter.
+ 	(class choose_declarative): Removed.
+ 	* genapi.cc (struct called_tree_t): Explicit constructor.
+ 	(parser_compile_ecs): Cast to void * for %p.
+ 	(parser_compile_dcls): Same.
+ 	(parser_statement_begin): Same.
+ 	(initialize_variable_internal): Use std::vector for subscripts.
+ 	(parser_initialize): Constification.
+ 	(get_string_from): Same.
+ 	(combined_name): Same.
+ 	(parser_perform): Same.
+ 	(psa_FldLiteralN): Same.
+ 	(is_figconst): Const parameter.
+ 	(is_figconst_t): Same.
+ 	(parser_exit): Same.
+ 	(parser_division): Const pointer.
+ 	(parser_perform_conditional): Whitespace.
+ 	(parser_set_conditional88): Const parameter.
+ 	(inspect_tally): Use std::vector.
+ 	(inspect_replacing): Same.
+ 	(parser_inspect): Same.
+ 	(parser_intrinsic_subst): Use std::vector (constuct elements).
+ 	(parser_intrinsic_call_1): Use std::vector for subscripts.
+ 	(is_ascending_key): Const pointer.
+ 	(parser_sort): Use std::vector.
+ 	(parser_file_sort): Same.
+ 	(parser_file_merge): Same.
+ 	(parser_unstring): Same.
+ 	(parser_string): Same.
+ 	(parser_call): Const pointer.
+ 	(parser_program_hierarchy): Use std::vector.
+ 	(conditional_abs): Const paraemeter.
+ 	(float_type_of): Same.
+ 	(initial_from_initial): Set value, quoted or not.
+ 	(parser_symbol_add): Remove redundant nested test.
+ 	* genapi.h (parser_add): Const parameters.
+ 	(parser_subtract): Same.
+ 	(parser_multiply): Same.
+ 	(parser_divide): Same.
+ 	(parser_perform): Same.
+ 	(parser_exit): Same.
+ 	(parser_initialize): Same.
+ 	(parser_set_conditional88): Same.
+ 	(parser_sort): Same.
+ 	(parser_file_sort): Same.
+ 	(parser_file_merge): Same.
+ 	(parser_string): Same.
+ 	(is_ascending_key): Same.
+ 	* genmath.cc (arithmetic_operation): Use std::vector.
+ 	(is_somebody_float): Const parameter.
+ 	(all_results_binary): Const parameter.
+ 	(fast_multiply): Remove redundant nested test.
+ 	(parser_add): Const parameter.
+ 	(parser_multiply): Remove redundant nested test.
+ 	(parser_divide): Const parameter.
+ 	(parser_subtract): Same.
+ 	* genutil.cc (get_depending_on_value): Use std::vector.
+ 	(get_data_offset): Same.
+ 	(tree_type_from_field): Const parameter.
+ 	(refer_has_depends): Const pointers.
+ 	(get_literal_string): RAII.
+ 	(refer_is_clean): Use std::vector.
+ 	(get_time_nanoseconds): Newline at EOF.
+ 	* genutil.h (tree_type_from_field): Remove declaration.
+ 	* inspect.h (struct cbx_inspect_qual_t): Use std::vector.
+ 	(struct cbl_inspect_qual_t): Same.
+ 	(struct cbx_inspect_match_t): Same.
+ 	(class cbl_inspect_match_t): Same.
+ 	(struct cbx_inspect_replace_t): Same.
+ 	(struct cbl_inspect_replace_t): Same.
+ 	(struct cbx_inspect_oper_t): Same.
+ 	(struct cbl_inspect_oper_t): Same.
+ 	(struct cbx_inspect_t): Same.
+ 	(struct cbl_inspect_t): Same.
+ 	(parser_inspect): Same.
+ 	* lexio.cc (indicated): Const pointer.
+ 	(remove_inline_comment): Scope reduction.
+ 	(maybe_add_space): Const pointer.
+ 	(recognize_replacements): C++ cast.
+ 	(check_source_format_directive): Same.
+ 	(struct replacing_term_t): Explicit constructor.
+ 	(parse_replace_pairs): Const reference.
+ 	(location_in): Const reference.
+ 	(parse_copy_directive): C++ cast.
+ 	(parse_replace_last_off): Const parameter.
+ 	(parse_replace_text): Const reference.
+ 	(parse_replace_directive): C++ cast.
+ 	(cdftext::lex_open): Const reference.
+ 	(cdftext::open_output): Scope reduction.
+ 	(cdftext::free_form_reference_format): Remove unused variable.
+ 	(cdftext::process_file): Simplify.
+ 	* lexio.h (struct bytespan_t): Use nullptr.
+ 	(struct filespan_t): Initialize icol in constructor.
+ 	(struct span_t): Suppress confused operatorEqRetRefThis.
+ 	(struct replace_t): Eliminate single-value constructor.
+ 	* parse.y: Many const cppcheck reports, and portable bit-shift.
+ 	* parse_ante.h (reject_refmod): Const parameter.
+ 	(require_pointer): Same.
+ 	(require_integer): Same.
+ 	(struct evaluate_elem_t): Explicit constructor.
+ 	(struct arith_t): Use std::vector.
+ 	(class eval_subject_t): Const parameter.
+ 	(dump_inspect_match): Declare.
+ 	(struct perform_t): Explicit constructor.
+ 	(list_add):  Const parameter.
+ 	(class tokenset_t): Avoid negative array index.
+ 	(struct file_list_t): Explicit constructor.
+ 	(struct field_list_t): Same.
+ 	(struct refer_list_t): Same.
+ 	(struct refer_marked_list_t): Const parameter.
+ 	(struct refer_collection_t): Explicit constructor.
+ 	(struct ast_inspect_oper_t): Remove class.
+ 	(ast_inspect_oper_t): Same.
+ 	(struct ast_inspect_t): Same.
+ 	(struct ast_inspect_list_t): Same.
+ 	(ast_inspect): Add location.
+ 	(struct elem_list_t): Explicit constructor.
+ 	(struct unstring_tgt_t): Same.
+ 	(struct unstring_tgt_list_t): Same.
+ 	(struct unstring_into_t): Same.
+ 	(struct ffi_args_t): Same.
+ 	(struct file_sort_io_t): Same.
+ 	(merge_t): Same.
+ 	(struct vargs_t): Same.
+ 	(class prog_descr_t): Eliminate single-value constructor.
+ 	(class program_stack_t): Suppress useStlAlgorithm.
+ 	(struct rel_part_t): Eliminate single-value constructor.
+ 	(class log_expr_t): Explicit constructor.
+ 	(add_debugging_declarative): Rename local variable.
+ 	(intrinsic_call_2): Const parameter.
+ 	(invalid_key): Use std::find_if.
+ 	(parser_add2): Const parameter.
+ 	(parser_subtract2): Same.
+ 	(stringify): Same.
+ 	(unstringify): Same.
+ 	(anybody_redefines): Same.
+ 	(ast_call): Same.
+ 	* parse_util.h (class cname_cmp): Explicit constructor.
+ 	(intrinsic_inconsistent_parameter): Same.
+ 	* scan_ante.h (struct cdf_status_t): Eliminate single-value constructor.
+ 	(class enter_leave_t): Explicit constructor.
+ 	(update_location): Const pointer, explicit constructor.
+ 	(symbol_function_token): Const pointer.
+ 	(typed_name): Same.
+ 	* scan_post.h (datetime_format_of): Scope reduction.
+ 	* show_parse.h (class ANALYZE): Use std::vector, explicit consstructor.
+ 	* symbols.cc (symbol_table_extend): Scope reduction.
+ 	(cbl_ffi_arg_t::cbl_ffi_arg_t): Define default constructor.
+ 	(end_of_group): Const pointer.
+ 	(symbol_find_odo): Const parameter.
+ 	(rename_not_ok): Same.
+ 	(field_str): Use %u instead of %d.
+ 	(struct capacity_of): Const pointer.
+ 	(symbols_update): Same.
+ 	(symbol_field_parent_set): Same.
+ 	(symbol_file_add): Same.
+ 	(symbol_typedef_add): Same.
+ 	(symbol_field_add): Use new operator=().
+ 	(symbol_field): Suppress CastIntegerToAddressAtReturn.
+ 	(symbol_register): Same.
+ 	(symbol_file): Suppress knownConditionTrueFalse.
+ 	(next_program): Const parameter.
+ 	(symbol_file_record): Same.
+ 	(class is_section): Explicit constructor.
+ 	(cbl_file_t::no_key): Remove.
+ 	(cbl_prog_hier_t::cbl_prog_hier_t): Use std::vector.
+ 	(symbol_label_add): Assert pointer is not NULL.
+ 	(symbol_label_section_exists): Const reference in lambda.
+ 	(expand_picture): Use C++ cast.
+ 	(symbol_program_callables): Const pointer.
+ 	(symbol_currency_add): Suppress nullPointerRedundantCheck.
+ 	(cbl_key_t): Use std::vector.
+ 	(cbl_occurs_t::field_add): Const parameter.
+ 	(cbl_occurs_t::index_add): Explicit constructor.
+ 	(class is_field_at): Same.
+ 	(cbl_file_key_t::deforward): Scope reduction.
+ 	(cbl_file_t::keys_str): Use allocated memory only.
+ 	(file_status_status_of): Const pointer.
+ 	(is_register_field): Const parameter.
+ 	* symbols.h (struct cbl_field_data_t): Eliminate single-value constructor.
+ 	(struct cbl_occurs_bounds_t): Same.
+ 	(struct cbl_refer_t): Use std::vector.
+ 	(valid_move): Const parameter.
+ 	(is_register_field): Same.
+ 	(struct cbl_key_t): Use std::vector.
+ 	(struct cbl_substitute_t): Eliminate single-value constructor.
+ 	(refer_of): Return const reference
+ 	(struct cbl_ffi_arg_t): Eliminate single-value constructor.
+ 	(class temporaries_t): Same.
+ 	(struct cbl_file_key_t): Define default constructor.
+ 	(struct cbl_file_lock_t): Define copy constructor and operator=().
+ 	(struct cbl_file_t): Complete default constructor.
+ 	(struct symbol_elem_t): Explicit constructor.
+ 	(symbol_elem_of): Suppress cstyleCast.
+ 	(symbol_redefines): Const parameter.
+ 	(struct cbl_field_t): Same.
+ 	(cbl_section_of): Test for NULL pointer.
+ 	(cbl_field_of): Same.
+ 	(cbl_label_of): Same.
+ 	(cbl_special_name_of): Same.
+ 	(cbl_alphabet_of): Same.
+ 	(cbl_file_of): Same.
+ 	(is_figconst): Delete extra "struct" keyword.
+ 	(is_figconst_low): Same.
+ 	(is_figconst_zero): Same.
+ 	(is_figconst_space): Same.
+ 	(is_figconst_quote): Same.
+ 	(is_figconst_high): Same.
+ 	(is_space_value): Same.
+ 	(is_quoted): Same.
+ 	(symbol_index): Const parameter.
+ 	(struct cbl_prog_hier_t): Suppress noExplicitConstructor.
+ 	(struct cbl_perform_vary_t): Eliminate single-value constructor.
+ 	(is_signable): Const parameter.
+ 	(is_temporary): Same.
+ 	(rename_not_ok): Same.
+ 	(field_at): Test for NULL pointer.
+ 	(class procref_base_t): Eliminate single-value constructor.
+ 	* symfind.cc (is_data_field): Const pointer.
+ 	(finalize_symbol_map2): Same.
+ 	(class in_scope): Same.
+ 	(symbol_match2): Same.
+ 	* token_names.h: Suppress useInitializationList.
+ 	* util.cc (normalize_picture): Whitespace and remove extra "continue".
+ 	(redefine_field): Const pointer.
+ 	(cbl_field_t::report_invalid_initial_value): Same.
+ 	(literal_subscript_oob): Rename shadow variable.
+ 	(cbl_refer_t::subscripts_set): Use std::vector.
+ 	(cbl_refer_t::str): Same.
+ 	(cbl_refer_t::deref_str): Same.
+ 	(locally_unique): Use explicit constructor.
+ 	(ambiguous_reference): Same.
+ 	(class unique_stack): Use const reference.
+ 	(cobol_filename): Const pointer.
+ 	(verify_format): Scope reduction.
+ 	(class temp_loc_t): Do not derive from YYLTYPE.
+ 	(cobol_parse_files): Const pointer.
+ 	* util.h (as_voidp): Define convenient converter.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-06-10  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* Make-lang.in: cobol.clean does not remove libgcobol files.
+ 	* cdf.y: Suppress 1 cppcheck false positive.
+ 	* cdfval.h (scanner_parsing):  Partial via cppcheck for PR119324.
+ 	* gcobol.1: Fix groff errors.
+ 	* gcobolspec.cc (append_arg): Const parameter.
+ 	* parse_ante.h (intrinsic_call_2): Avoid NULL dereference.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-06  Robert Dubner  <rdubner@symas.com>
+ 		    James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120328
+ 	PR cobol/119695
+ 	* Make-lang.in: Success with non-English locale.
+ 	* cbldiag.h (cbl_unimplemented_at): Comment:
+ 	* cdf-copy.cc (copybook_elem_t::open_file): Indentation.
+ 	* cdf.y: YYABORT on certain errors.
+ 	* cdfval.h (cdf_value): Const parameter.
+ 	* copybook.h (class copybook_elem_t): Initialization.
+ 	(class uppername_t): Explicit constructor.
+ 	* except.cc (ec_type_descr): Remove %04s.
+ 	(cbl_enabled_exceptions_t::dump): Remove %zu.
+ 	* exceptg.h (class exception_turn_t): Explicit constructor.
+ 	* genapi.cc (parser_perform_conditional): Remove %zu.
+ 	(set_exception_environment): Formatting.
+ 	(parser_statement_begin): Exception overhead.
+ 	(parser_perform_conditional): Formatting:
+ 	(parser_perform_conditional_end): Eliminate size_t.
+ 	(parser_check_fatal_exception): Exception overhead.
+ 	(parser_perform_conditional_end): Remove %zu.
+ 	* inspect.h (struct cbx_inspect_match_t): Const reference.
+ 	(struct cbx_inspect_t): Const parameter.
+ 	* lexio.cc (cdftext::process_file): Remove %zu.
+ 	* lexio.h (struct YYLTYPE): Remove unneeded struct.
+ 	(YYLTYPE_IS_DECLARED): Likewise.
+ 	(YYLTYPE_IS_TRIVIAL): Likewise.
+ 	* parse.y: Comment; change DOT.
+ 	* scan.l: Scan function names without swallowing whitespace.
+ 	* scan_ante.h (scanner_parsing): Remove %zu.
+ 	(scanner_parsing_pop): Remove %zu.
+ 	(binary_integer_usage): Remove %zu.
+ 	* scan_post.h (prelex): Correct post-CDF resumption.
+ 	(yylex): Clearer message.
+ 	* symbols.cc (symbol_table_extend): Explicit constructor.
+ 	(elementize): Const parameter.
+ 	(is_variable_length): Correct always-false.
+ 	(symbols_update): Remove unnecessary shadow variable.
+ 	(struct symbol_elem_t): Const parameter.
+ 	(symbol_alphabet_add): Const parameter.
+ 	(new_literal_add): Initialization.
+ 	* symbols.h (class cbl_domain_elem_t): Correct assignment.
+ 	(struct cbl_span_t): Improve constructor.
+ 	(struct cbl_refer_t): Initialization.
+ 	(struct cbl_alphabet_t): Rename shadow variable.
+ 	(struct cbl_file_key_t): Remove unused constructor.
+ 	(struct symbol_elem_t): Initialization.
+ 	(struct cbl_until_addresses_t): Use unsigned int, for messages.
+ 	(struct cbl_prog_hier_t): Initialization.
+ 	(struct cbl_perform_tgt_t): Repair constructor.
+ 	(struct cbl_label_t): Const parameter.
+ 	(symbol_typedef_add): Const parameter.
+ 	(symbol_field_add): Explicit constructor.
+ 	(symbol_label_add): Explicit constructor.
+ 	(symbol_program_add): Remove C-style "struct" use.
+ 	(symbol_special_add): Remove C-style "struct" use.
+ 	(symbol_alphabet_add): Const parameter.
+ 	(symbol_file_add): Remove C-style "struct" use.
+ 	(symbol_section_add): Remove C-style "struct" use.
+ 	* symfind.cc: Const parameter.
+ 	* util.cc (gb4): New function.
+ 	* util.h (gb4): New function.
+ 	* TODO: New file.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119975
+ 	* genapi.cc (parser_intrinsic_call_0): Use get_time_nanoseconds().
+ 	* genutil.cc (get_time_64): Rename to get_time_nanoseconds().
+ 	(get_time_nanoseconds): Likewise.
+ 	* genutil.h (get_time_64): Likewise.
+ 	(get_time_nanoseconds): Likewise.
+ 	* util.cc (class cbl_timespec): Timing routine uses
+ 	get_time_nanoseconds().
+ 	(operator-): Likewise.
+ 	(parse_file): Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-02  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119975
+ 	* genapi.cc (parser_intrinsic_call_0): Use get_time_64() function.
+ 	* genutil.cc (get_time_64): Definition created.
+ 	* genutil.h (get_time_64): Declaration created.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-01  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119524
+ 	* gengen.cc (gg_printf): Use the new __gg__fprintf_stderr() function
+ 	instead of generating a call to fprintf().
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-20  Robert Dubner  <rdubner@symas.com>
+ 		    James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/119770
+ 	PR cobol/119772
+ 	PR cobol/119790
+ 	PR cobol/119771
+ 	PR cobol/119810
+ 	PR cobol/119335
+ 	PR cobol/119632
+ 	* cdf-copy.cc (GLOB_BRACE): Eliminate <glob.h>.
+ 	* cdfval.h (_CDF_VAL_H_): Switch to C++ headers.
+ 	* copybook.h (class copybook_elem_t): Eliminate <glob.h>.
+ 	(class copybook_t): Likewise.
+ 	* gcobc: Numerous changes to improve utility.
+ 	* gcobol.1: Correct names in the list of functions.
+ 	* genapi.cc (compare_binary_binary): Use has_attr() function.
+ 	* lexio.cc (cdftext::lex_open): Typo; filename logic.
+ 	(cdftext::process_file): Filename logic.
+ 	* parse.y: Numerous parsing changes.
+ 	* parse_ante.h (new_alphanumeric): C++ includes; changes to temporaries.
+ 	(new_tempnumeric): Likewise.
+ 	(new_tempnumeric_float): Likewise.
+ 	(set_real_from_capacity): Created.
+ 	* scan.l: Use yy_pop_state().
+ 	* scan_ante.h (typed_name): Find figconst from data.initial.
+ 	* symbols.cc (symbol_valid_udf_args): Eliminate.
+ 	(symbols_update): figconst processing.
+ 	(new_temporary_impl): For functions, set .initial to function name.
+ 	(temporaries_t::acquire): Likewise.
+ 	(new_alphanumeric): Likewise.
+ 	(new_temporary): Likewise.
+ 	* symbols.h (_SYMBOLS_H_): Use C++ includes.
+ 	(cbl_figconst_tok): Change handling of figconst.
+ 	(cbl_figconst_field_of): Change handling of figconst.
+ 	(symbol_valid_udf_args): Eliminate.
+ 	* symfind.cc (symbol_match2): Change declaration.
+ 	(symbol_match): Change declaration.
+ 
+ 2025-07-29  Mark Wielaard  <mark@klomp.org>
+ 
+ 	Backported from master:
+ 	2025-05-18  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* lang.opt.urls: Regenerated.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-16  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol1.cc (cobol_langhook_handle_option): Eliminate OPT_M.
+ 	* except.cc (cbl_enabled_exception_t::dump): Formatting.
+ 	(symbol_declaratives_add): Remove.
+ 	(declarative_runtime_match): Change to no-blob processing.
+ 	* exceptg.h (declarative_runtime_match): Change declaration.
+ 	(symbol_declaratives_add): Remove declaration.
+ 	* gcobc: Dialect handling.
+ 	* genapi.cc (parser_compile_ecs): Formatting; add SHOW_IF_PARSE.
+ 	(parser_compile_dcls): Likewise.
+ 	(parser_statement_begin): Avoid unnecessary store_location_stuff() call.
+ 	(gg_get_depending_on_value): Streamline get_depending_on_value_from_odo().
+ 	(depending_on_value): Likewise.
+ 	(parser_display_field): Formatting.
+ 	(parser_display): Handle case ENV_NAME_e.
+ 	(parser_file_open): Avoid unnecessary store_location_stuff.
+ 	(parser_file_close): Likewise.
+ 	(parser_file_read): Likewise.
+ 	(parser_file_write): Likewise.
+ 	(parser_file_delete): Likewise.
+ 	(parser_file_rewrite): Likewise.
+ 	(parser_file_start): Likewise.
+ 	(parser_intrinsic_subst): Streamline get_depending_on_value_from_odo().
+ 	(parser_intrinsic_call_1): Likewise.
+ 	(parser_lsearch_start): Likewise.
+ 	(parser_bsearch_start): Likewise.
+ 	(parser_sort): Likewise.
+ 	(store_location_stuff): Avoid unnecessary assignments.
+ 	(parser_pop_exception): Formatting.
+ 	* genmath.cc (parser_add): Avoid var_decl_default_compute_error assignment
+ 	when doing fast_add().
+ 	(parser_subtract): Likewise.
+ 	* genutil.cc (REFER): Macro for analyzing code generation.
+ 	(get_integer_value): Use data_decl_node for integer value from FldLiteralN.
+ 	(get_data_offset): Streamline exception code processing.
+ 	(get_and_check_refstart_and_reflen): Likewise.
+ 	(get_depending_on_value_from_odo): Likewise.
+ 	(get_depending_on_value): Likewise.
+ 	(refer_is_clean): Formatting.
+ 	(refer_refmod_length): Streamline exception code processing.
+ 	(refer_fill_depends): Likewise.
+ 	(refer_offset): Likewise.
+ 	(refer_size_dest): Likewise.
+ 	(refer_size_source): Likewise.
+ 	* genutil.h (get_depending_on_value_from_odo): Likewise.
+ 	* lang-specs.h: Options definition.
+ 	* lang.opt: -M as in c.opt.
+ 	* lexio.h: Formatting.
+ 	* parse.y: Expand -dialect suggestions; SECTION SEGMENT messages.
+ 	* parse_ante.h (declarative_runtime_match): Dialect handling.
+ 	(labels_dump): Likewise.
+ 	(class current_tokens_t): Likewise.
+ 	(class prog_descr_t): Make program_index size_t to prevent padding bytes.
+ 	* scan.l: POP_FILE directive.
+ 	* scan_ante.h (class enter_leave_t): Better handle line number when
+ 	processing COPY statements.
+ 	* symbols.cc (symbol_elem_cmp): Eliminate SymFunction.
+ 	(symbols_dump): Likewise.
+ 	(symbol_label_section_exists): Likewise.
+ 	* symbols.h (NAME_MAX): Eliminate.  (Was part of SymFunction).
+ 	(dialect_is): Improve dialect handling.
+ 	(dialect_gcc): Likewise.
+ 	(dialect_ibm): Likewise.
+ 	(dialect_gnu): Likewise.
+ 	(enum symbol_type_t): Eliminate SymFunction.
+ 	* util.cc (symbol_type_str): Likewise.
+ 	(class unique_stack): Option -M handling.
+ 	(cobol_set_pp_option): Likewise.
+ 	(parse_file): Likewise.
+ 	* util.h (cobol_set_pp_option): Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-10  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119337
+ 	* Make-lang.in: Change how $(FLEX) is invoked.
+ 	* cdf.y: Change parser tokens.
+ 	* gcobc: Changed how name is inferred for PR119337
+ 	* gcobol.1: Documentation for SOURCE format heuristic
+ 	* genapi.cc: Eliminate __gg__odo_violation.
+ 	(parser_display_field): Change comment.
+ 	* genutil.cc:Eliminate __gg__odo_violation.
+ 	(REFER): New macro for analyzing subscript/refmod calculations.
+ 	(get_integer_value): Likewise.
+ 	(get_data_offset): Eliminate __gg__odo_violation.
+ 	(scale_by_power_of_ten_N): Eliminate unnecessary var_decl_rdigits operation.
+ 	(refer_is_clean): Check for FldLiteralN.
+ 	(REFER_CHECK): Eliminate.
+ 	(refer_refmod_length): Streamline var_decl_rdigits processing.
+ 	(refer_fill_depends): Likewise.
+ 	(refer_offset): Streamline processing when FldLiteralN.
+ 	(refer_size): Tag with REFER macro.
+ 	(refer_size_dest): Likewise.
+ 	(refer_size_source): Likewise.
+ 	* genutil.h (get_integer_value): Delete declaration for odo_violation;
+ 	change comment for get_integer_value
+ 	(REFER_CHECK): Delete declaration.
+ 	(refer_check): Delete #define.
+ 	* lexio.cc (is_fixed_format): Changes for source format auto-detect.
+ 	(is_reference_format): Likewise.
+ 	(check_source_format_directive): Likewise.
+ 	(valid_sequence_area): Likewise.
+ 	(is_p): Likewise.
+ 	(is_program_id): Likewise.
+ 	(likely_nist_file): Likewise.
+ 	(infer_reference_format): Likewise.
+ 	(cdftext::free_form_reference_format): Likewise.
+ 	* parse.y: Token changes.
+ 	* parse_ante.h (class tokenset_t):  Likewise.
+ 	(class current_tokens_t):  Likewise.
+ 	(cmd_or_env_special_of): Likewise.
+ 	* scan.l:  Likewise.
+ 	* scan_ante.h (bcomputable): Likewise.
+ 	(keyword_alias_add): Likewise.
+ 	(struct bint_t): Likewise.
+ 	(binary_integer_usage): Likewise.
+ 	(binary_integer_usage_of): Likewise.
+ 	* scan_post.h (start_condition_str): Likewise.
+ 	* symbols.cc (symbol_table_init): Formatting.
+ 	* symbols.h (struct cbl_field_data_t): Add "input" method to field_data_t.
+ 	(keyword_alias_add): Add forward declaration.
+ 	(binary_integer_usage_of): Likewise.
+ 	* token_names.h: Change list of tokens.
+ 	* util.cc (iso_cobol_word): Change list of COBOL reserved words.
+ 
+ 2025-07-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backported from master:
+ 	2025-05-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR cobol/119217
+ 	* symbols.h (NAME_MAX): Define fallback.
+ 
+ 2025-07-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backported from master:
+ 	2025-05-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR cobol/119217
+ 	* dts.h (csub_match): Initialize rm_so, rm_eo fields explicitly.
+ 
+ 2025-07-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backported from master:
+ 	2025-05-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR cobol/119217
+ 	* cdf-copy.cc (GLOB_BRACE): Define fallback.
+ 	(GLOB_TILDE): Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cdf.y: Exceptions.
+ 	* except.cc (cbl_enabled_exception_t::dump): Likewise.
+ 	(cbl_enabled_exceptions_t::dump): Likewise.
+ 	(cbl_enabled_exceptions_t::status): Likewise.
+ 	(cbl_enabled_exceptions_t::encode): Likewise.
+ 	(cbl_enabled_exceptions_t::turn_on_off): Likewise.
+ 	(cbl_enabled_exceptions_t::match): Likewise.
+ 	(declarative_runtime_match): Likewise. Likewise.
+ 	* exceptg.h (struct cbl_exception_files_t): Likewise.
+ 	(class exception_turn_t): Likewise.
+ 	(apply_cdf_turn): Likewise.
+ 	* genapi.cc (treeplet_fill_source): Use refer_offset().
+ 	(function_handle_from_name): Likewise.
+ 	(parser_initialize_programs): Likewise.
+ 	(parser_statement_begin): Likewise.
+ 	(array_of_long_long): Exceptions.
+ 	(parser_compile_ecs): Exceptions.
+ 	(parser_compile_dcls): Exceptions.
+ 	(store_location_stuff): Exceptions.
+ 	(initialize_variable_internal): Use refer_offset().
+ 	(compare_binary_binary): Use refer_offset().
+ 	(cobol_compare): Use refer_offset().
+ 	(paragraph_label): Formatting.
+ 	(parser_goto): Use refer_offset().
+ 	(parser_perform_times): Likewise.
+ 	(internal_perform_through_times): Likewise.
+ 	(parser_enter_file): Exceptions.
+ 	(psa_FldLiteralN): Add comment.
+ 	(parser_accept): Use refer_offset().
+ 	(parser_accept_command_line): Likewise.
+ 	(parser_accept_command_line_count): Likewise.
+ 	(parser_accept_envar): Likewise.
+ 	(parser_set_envar): Likewise.
+ 	(parser_display_internal): Likewise.
+ 	(parser_initialize_table): Likewise.
+ 	(parser_sleep): Likewise.
+ 	(parser_allocate): Likewise.
+ 	(parser_free): Likewise.
+ 	(parser_division): Likewise.
+ 	(parser_relop_long): Likewise.
+ 	(parser_see_stop_run): Likewise.
+ 	(parser_classify): Likewise.
+ 	(parser_file_add): Include symbol_table_index in __gg__file_init().
+ 	(parser_file_open): Use refer_offset().
+ 	(parser_file_write): Move forward declaration of store_location_stuff().
+ 	(parser_file_start): Use refer_offset().
+ 	(parser_inspect_conv): Likewise:
+ 	(parser_intrinsic_numval_c): Likewise:
+ 	(parser_intrinsic_subst): Likewise:
+ 	(parser_intrinsic_call_1): Likewise:
+ 	(parser_intrinsic_call_2): Likewise:
+ 	(parser_intrinsic_call_3): Likewise:
+ 	(parser_intrinsic_call_4): Likewise:
+ 	(parser_sort): Likewise:
+ 	(parser_return_start): Exceptions.
+ 	(parser_unstring): Use refer_offset().
+ 	(create_and_call): Likewise.
+ 	(parser_set_pointers): Use refer_offset().
+ 	(parser_program_hierarchy): Comment.
+ 	(parser_set_handled): Exceptions; removed.
+ 	(parser_set_file_number): Exceptions; removed.
+ 	(stash_exceptions): Exceptions; removed.
+ 	(parser_exception_prepare): Exceptions; removed.
+ 	(parser_match_exception): Exceptions; eliminate blob.
+ 	(parser_check_fatal_exception): Exceptions.
+ 	(parser_push_exception): Create.
+ 	(parser_pop_exception): Create.
+ 	(mh_identical): Use refer_offset().
+ 	(mh_source_is_literalN): Likewise.
+ 	(mh_dest_is_float): Likewise.
+ 	(mh_numeric_display): Likewise.
+ 	(mh_little_endian): Likewise.
+ 	(mh_source_is_group): Likewise.
+ 	(move_helper): Likewise.
+ 	(binary_initial_from_float128): Formatting; change error message.
+ 	(initial_from_float128): Change name to "initial_from_initial"
+ 	(initial_from_initial): Add one byte to allocation for figconsts.
+ 	(parser_symbol_add): Use initial_from_initial().
+ 	(parser_symbol_add): Eliminate unneeded logic around actually_create...
+ 	* genapi.h: Exceptions.
+ 	* genmath.cc (fast_add): Use refer_offset().
+ 	(fast_subtract): Likewise.
+ 	(fast_multiply): Likewise.
+ 	(fast_divide): Likewise.
+ 	* genutil.cc: Exceptions; various global definitions.
+ 	(get_integer_value): Comment.
+ 	(get_data_offset_dest): Eliminate.
+ 	(get_data_offset_source): Rename to get_data_offset().
+ 	(get_data_offset): Use refer_offset().
+ 	(get_binary_value): Likewise; eliminate use of literal_decl_node.
+ 	(build_array_of_treeplets): Likewise.
+ 	(build_array_of_fourplets): Likewise.
+ 	(REFER_CHECK): Comment:
+ 	(refer_refmod_length): Use get_any_capacity(); use refer_offset;
+ 	set reflen to integer_one_node.
+ 	(refer_offset_dest): Change name to refer_offset.
+ 	(refer_offset): Use get_data_offset().
+ 	(refer_size_dest): Change name to refer_size().
+ 	(refer_size): Use get_any_capacity().
+ 	(refer_offset_source): Use refer_offset().
+ 	(refer_size_source): Likewise.
+ 	(qualified_data_source): Likewise.
+ 	(qualified_data_dest): Likewise.
+ 	(qualified_data_location): Likewise.
+ 	* genutil.h: Exceptions; changes to global declarations.
+ 	* lexio.cc (likely_nist_file): Added to detect NIST file format.
+ 	(cdftext::free_form_reference_format): Handle NIST file format.
+ 	* parse.y: (strip_trailing_zeroes): Added.
+ 	Changes for exceptions.
+ 	* parse_ante.h (parse_error_inc): Likewise.
+ 	(YYLLOC_DEFAULT): Likewise.
+ 	(static_cast): Likewise.
+ 	(is_cobol_word): Change to is_cobol_charset.
+ 	(is_cobol_charset): Refine allowed characters.
+ 	(require_numeric): Change to require integer.
+ 	(require_integer): Likewise.
+ 	(current_enabled_ecs): Exceptions.
+ 	(is_integer_literal): Change interpretation.
+ 	(procedure_division_ready): Exceptions.
+ 	(statement_epilog): Likewise.
+ 	(statement_begin): Likewise.
+ 	* show_parse.h: Changes to GCOBOL_SHOW handling.
+ 	* structs.cc: Add symbol_index to cblc_file_t structure.
+ 	* symbols.cc (field_str): Repair .initial handling in FldLiteralN.
+ 	* symbols.h (struct cbl_field_t): Eliminate literal_decl_node.
+ 	(current_enabled_ecs): Exceptions.
+ 	* util.cc (cbl_message): Add final newline to error message.
+ 	(ftoupper): Added.
+ 	(iso_cobol_word): Add list of ISO reserved words.
+ 	* util.h (ftoupper): Added.
+ 
+ 2025-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-05-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR cobol/119364
+ 	* structs.h (cbl_enabled_exception_type_node): New variable
+ 	declaration.
+ 	* structs.cc (cbl_enabled_exception_type_node): New variable.
+ 	(create_cbl_enabled_exception_t): New function.
+ 	(create_our_type_nodes): Initialize cbl_enabled_exception_type_node
+ 	using it.
+ 	* genapi.cc (stash_exceptions): Don't compare padding bits to
+ 	determine if the exceptions are the same as last time.  Use
+ 	cbl_enabled_exception_type_node for target size and field offsets
+ 	and native_encode_expr to write each field into byte sequence.
+ 
+ 2025-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-05-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR cobol/119364
+ 	* util.cc (is_numeric_edited): Use HOST_SIZE_T_PRINT_UNSIGNED
+ 	instead of "%zu" and cast corresponding argument to fmt_size_t.
+ 	(normalize_picture): Use GCC_PRISZ instead of "z" and pass address
+ 	of fmt_size_t var to sscanf and copy afterwards.
+ 	(cbl_refer_t::str): Use HOST_SIZE_T_PRINT_UNSIGNED instead of
+ 	"%zu" or GCC_PRISZ instead of "z" and cast corresponding argument
+ 	to fmt_size_t.
+ 	(struct move_corresponding_field): Likewise.
+ 	(valid_move): Likewise.
+ 	(ambiguous_reference): Likewise.
+ 	(parent_names): Likewise.
+ 	(find_corresponding::find_corresponding): Likewise.
+ 	(corresponding_fields): Likewise.
+ 	(unique_stack::push): Likewise.
+ 	(cobol_filename): Likewise.
+ 	* lexio.cc: Include config.h first.
+ 	(recognize_replacements): Use HOST_SIZE_T_PRINT_UNSIGNED instead of
+ 	"%zu" or GCC_PRISZ instead of "z" and cast corresponding argument
+ 	to fmt_size_t.
+ 	(check_source_format_directive): Likewise.
+ 	(parse_replacing_pair): Use size_t(0) instead of 0UL in span_t
+ 	construction.
+ 	(parse_replace_pairs): Use HOST_SIZE_T_PRINT_UNSIGNED instead of
+ 	"%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead
+ 	of "%zd" and cast corresponding argument to fmt_size_t.
+ 	(parse_copy_directive): Likewise.
+ 	(parse_replace_last_off): Likewise.
+ 	(parse_replace_text): Likewise.
+ 	(bytespan_t::append): Likewise.
+ 	(cdftext::map_file): Likewise.
+ 	(cdftext::process_file): Likewise.
+ 	* symfind.cc (dump_symbol_map2): Likewise.
+ 	(dump_symbol_map_value): Likewise.
+ 	(build_symbol_map): Likewise.
+ 	(is_name::dump_key): Likewise.
+ 	(symbol_match2): Likewise.
+ 	(symbol_find): Likewise.
+ 	(symbol_find_of): Likewise.
+ 	* cdf.y: Likewise.
+ 	* symbols.cc: Include config.h first.
+ 	(cbl_field_t::set_attr): Return uint64_t rather than size_t
+ 	and replace size_t(attr) with uint64_t(attr).
+ 	(cbl_field_t::clear_attr): Likewise.
+ 	(symbol_field_capacity): Use HOST_SIZE_T_PRINT_UNSIGNED instead of
+ 	"%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead
+ 	of "%zd" and cast corresponding argument to fmt_size_t.
+ 	(symbol_find_odo_debug): Likewise.
+ 	(symbols_dump): Likewise.
+ 	(calculate_capacity): Likewise.
+ 	(field_str): Likewise.
+ 	(symbols_update): Likewise.
+ 	(symbol_field_forward): Likewise.
+ 	(numeric_group_attrs): Return uint64_t rather than size_t and
+ 	change inherit variable to from size_t to uint64_t.
+ 	(new_literal_add): Use HOST_SIZE_T_PRINT_UNSIGNED instead of
+ 	"%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead
+ 	of "%zd" and cast corresponding argument to fmt_size_t.
+ 	(temporaries_t::dump): Likewise.
+ 	(cbl_label_t::str): Likewise.
+ 	(symbol_label_add): Likewise.
+ 	(symbol_program_add): Likewise.
+ 	(symbol_forward_names): Likewise.
+ 	(symbol_forward_to): Likewise.
+ 	(cbl_file_key_t::deforward): Likewise.
+ 	(cbl_file_key_t::str): Likewise.
+ 	* gengen.cc (show_type): Use PRId64 instead of "ld".
+ 	(gg_unique_in_function): Use HOST_SIZE_T_PRINT_DEC instead of
+ 	%ld and cast corresponding argument to fmt_size_t.
+ 	* scan.l: Add %top section with #include "config.h".
+ 	* genmath.cc (parser_add): Use HOST_SIZE_T_PRINT_DEC instead of
+ 	%ld and cast corresponding argument to fmt_size_t.
+ 	(parser_subtract): Likewise.
+ 	* parse.y: Include "config.h" before <fstream>.  Use
+ 	HOST_SIZE_T_PRINT_UNSIGNED instead of "%zu" and cast corresponding
+ 	argument to fmt_size_t.  Change type of sign_attrs, group_sign and
+ 	type_implies from size_t to uint64_t.
+ 	(perform_t::ec_labels_t::new_label): Use HOST_SIZE_T_PRINT_UNSIGNED
+ 	instead of "%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC
+ 	instead of "%zd" and cast corresponding argument to fmt_size_t.
+ 	(stringify_src_t::dump): Likewise.
+ 	(lang_check_failed): Likewise.
+ 	(numstr2i): Use GCC_PRISZ instead of "z" and pass address of temporary
+ 	with fmt_size_t type to sscanf and then copy it over.
+ 	(initialize_statement): Use HOST_SIZE_T_PRINT_UNSIGNED instead of
+ 	"%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead
+ 	of "%zd" and cast corresponding argument to fmt_size_t.
+ 	(dump_inspect_oper): Likewise.
+ 	(new_literal): Likewise.
+ 	(literal_subscripts_valid): Likewise.
+ 	(eval_subject_t::label): Likewise.
+ 	* genapi.cc (level_88_helper): Likewise.
+ 	(parser_call_targets_dump): Likewise.
+ 	(combined_name): Use HOST_SIZE_T_PRINT_DEC instead of "%ld"
+ 	and cast corresponding argument to fmt_size_t.
+ 	(section_label): Likewise.
+ 	(paragraph_label): Likewise.
+ 	(leave_procedure): Likewise.
+ 	(parser_perform): Likewise.
+ 	(parser_perform_times): Likewise.
+ 	(internal_perform_through): Likewise.
+ 	(internal_perform_through_times): Likewise.
+ 	(parser_enter_program): Likewise.
+ 	(parser_init_list_size): Likewise.
+ 	(parser_init_list): Likewise.
+ 	(psa_FldLiteralN): Likewise.
+ 	(psa_FldBlob): Likewise.
+ 	(parser_assign): Likewise.
+ 	(parser_free): Pass p->field->name to dbgmsg.
+ 	(parser_division): Use HOST_SIZE_T_PRINT_DEC instead of "%ld"
+ 	and cast corresponding argument to fmt_size_t.
+ 	(perform_outofline_before_until): Likewise.
+ 	(perform_outofline_after_until): Likewise.
+ 	(perform_outofline_testafter_varying): Likewise.
+ 	(perform_outofline_before_varying): Likewise.
+ 	(perform_inline_testbefore_varying): Likewise.
+ 	(parser_inspect): Change n_operations parameter type from
+ 	unsigned long to size_t.
+ 	(parser_intrinsic_callv): Use HOST_SIZE_T_PRINT_DEC instead
+ 	of "%zd" and cast corresponding argument to fmt_size_t.
+ 	(parser_bitop): Use HOST_SIZE_T_PRINT_HEX_PURE instead of
+ 	"%lx" and cast corresponding argument to fmt_size_t.
+ 	(parser_bitwise_op): Likewise.
+ 	(parser_program_hierarchy): Use HOST_SIZE_T_PRINT_DEC instead of "%ld"
+ 	and cast corresponding argument to fmt_size_t.
+ 	(parser_set_handled): Use HOST_SIZE_T_PRINT_HEX_PURE instead of
+ 	"%lx" and cast corresponding argument to fmt_size_t.
+ 	(parser_set_numeric): Use HOST_SIZE_T_PRINT_DEC instead of "%ld"
+ 	and cast corresponding argument to fmt_size_t.
+ 	(psa_new_var_decl): Use HOST_SIZE_T_PRINT_DEC instead of "%ld"
+ 	and cast corresponding argument to fmt_size_t.
+ 	(parser_symbol_add): Use HOST_SIZE_T_PRINT_DEC instead of "%zd"
+ 	or HOST_SIZE_T_PRINT_HEX_PURE instead of "%lx" and cast corresponding
+ 	argument to fmt_size_t.
+ 	* cdf-copy.cc: Include "config.h" first.
+ 	* scan_ante.h (trim_location): Use HOST_SIZE_T_PRINT_UNSIGNED instead
+ 	of "%zu" or "%d" and cast corresponding argument to fmt_size_t.
+ 	* structs.cc (create_cblc_field_t): Use ULONGLONG instead of SIZE
+ 	for "attr".
+ 	* cbldiag.h (dbgmsg): Add ATTRIBUTE_PRINTF_1.
+ 	* gcobolspec.cc (lang_specific_driver): Use HOST_SIZE_T_PRINT_DEC
+ 	instead of "%ld" and cast corresponding argument to fmt_size_t.
+ 	* parse_ante.h (literal_of): Use HOST_SIZE_T_PRINT_UNSIGNED instead of
+ 	"%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead
+ 	of "%zd" and cast corresponding argument to fmt_size_t.
+ 	(evaluate_elem_t::dump): Likewise.
+ 	(arith_t::another_pair): Likewise.
+ 	(current_t::end_program): Likewise.
+ 	(file_add): Likewise.
+ 	(implicit_paragraph): Likewise.
+ 	(implicit_section): Likewise.
+ 	(data_division_ready): Use HOST_SIZE_T_PRINT_DEC instead of "%d"
+ 	and cast corresponding argument to fmt_size_t.
+ 	* symbols.h (struct cbl_field_t): Change attr member type from size_t
+ 	to uint64_t.
+ 	(cbl_field_t::set_attr): Change return type from size_t to uint64_t.
+ 	(cbl_field_t::clear_attr): Likewise.
+ 	(function_descr_t::init): Use HOST_SIZE_T_PRINT_UNSIGNED instead of
+ 	"%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead
+ 	of "%zd" and cast corresponding argument to fmt_size_t.
+ 	(cbl_perform_tgt_t::dump): Likewise.
+ 	(numeric_group_attrs): Change return type from size_t to uint64_t.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-04-24  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* genapi.cc: (initialize_variable_internal): Change TRACE1 formatting.
+ 	(create_and_call): Repair RETURN-CODE processing.
+ 	(mh_source_is_group): Repair run-time IF type comparison.
+ 	(psa_FldLiteralA): Change TRACE1 formatting.
+ 	(parser_symbol_add): Eliminate unnecessary code.
+ 	* genutil.cc: Eliminate SET_EXCEPTION_CODE macro.
+ 	(get_data_offset_dest): Repair set_exception_code logic.
+ 	(get_data_offset_source): Likewise.
+ 	(get_binary_value): Likewise.
+ 	(refer_refmod_length): Likewise.
+ 	(refer_fill_depends): Likewise.
+ 	(refer_offset_dest): Likewise.
+ 	(refer_size_dest): Likewise.
+ 	(refer_offset_source): Likewise.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gcc/cobol/Make-lang.in gcc-15-20250809/gcc/cobol/Make-lang.in
*** gcc-15-20250726/gcc/cobol/Make-lang.in	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/Make-lang.in	Sat Aug  9 22:32:37 2025
***************
*** 34,39 ****
--- 34,42 ----
  # - the compiler proper (eg: cc1plus)
  # - define the names for selecting the language in LANGUAGES.
  
+ # Use strict warnings for this front end.
+ cobol-warn = $(STRICT_WARN)
+ 
  GCOBOL_INSTALL_NAME := $(shell echo gcobol|sed '$(program_transform_name)')
  GCOBOLIO_INSTALL_NAME := $(shell echo gcobol-io|sed '$(program_transform_name)')
  GCOBOL_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcobol|sed '$(program_transform_name)')
*************** cobol/cdf.cc: cobol/cdf.y
*** 157,166 ****
  FLEX_WARNING = warning, dangerous trailing context
  
  cobol/scan.cc: cobol/scan.l
! 	$(FLEX) -o$@ $(LFLAGS) $< >$@~ 2>&1
  	awk  '! /$(FLEX_WARNING)/ {print > "/dev/stderr"; nerr++}	\
! 	     END {print "$(FLEX):", NR, "messages" > "/dev/stderr";	\
! 		  exit nerr}' $@~
  	@rm $@~
  
  
--- 160,168 ----
  FLEX_WARNING = warning, dangerous trailing context
  
  cobol/scan.cc: cobol/scan.l
! 	$(FLEX) -o$@ $(LFLAGS) $< 2>$@~ || { cat $@~ >&1; exit 1; }
  	awk  '! /$(FLEX_WARNING)/ {print > "/dev/stderr"; nerr++}	\
! 	     END {print "$(FLEX):", NR, "messages" > "/dev/stderr"}' $@~
  	@rm $@~
  
  
*************** cobol.install-common: installdirs
*** 285,291 ****
  	    rm -f $(DESTDIR)$(bindir)/$(GCOBOL_TARGET_INSTALL_NAME)$(exeext); \
  	    rm -f $(DESTDIR)$(bindir)/$(GCOBC_TARGET_INSTALL_NAME)$(exeext); \
  	    ( cd $(DESTDIR)$(bindir) && \
! 	      $(LN) $(GCOBOL_INSTALL_NAME)$(exeext) $(GCOBOL_TARGET_INSTALL_NAME)$(exeext) ); \
  	      $(LN) $(GCOBC_INSTALL_NAME)$(exeext) $(GCOBC_TARGET_INSTALL_NAME)$(exeext) ); \
  	  fi; \
  	fi
--- 287,293 ----
  	    rm -f $(DESTDIR)$(bindir)/$(GCOBOL_TARGET_INSTALL_NAME)$(exeext); \
  	    rm -f $(DESTDIR)$(bindir)/$(GCOBC_TARGET_INSTALL_NAME)$(exeext); \
  	    ( cd $(DESTDIR)$(bindir) && \
! 	      $(LN) $(GCOBOL_INSTALL_NAME)$(exeext) $(GCOBOL_TARGET_INSTALL_NAME)$(exeext) && \
  	      $(LN) $(GCOBC_INSTALL_NAME)$(exeext) $(GCOBC_TARGET_INSTALL_NAME)$(exeext) ); \
  	  fi; \
  	fi
*************** cobol.srcman:
*** 351,360 ****
  
  cobol.mostlyclean:
  
! cobol.clean:
  	rm -fr gcobol cobol1 cobol/*		\
  	../*/libgcobol/*
  
  cobol.distclean:
  
  cobol.maintainer-clean:
--- 353,368 ----
  
  cobol.mostlyclean:
  
! gcobol.clean:
! # This is intended for non-general use.  It is a last-ditch effort to flush
! # out all oject files and executable code for gcobol and libgcobol, causing 
! # a complete rebuild of all executable code.
  	rm -fr gcobol cobol1 cobol/*		\
  	../*/libgcobol/*
  
+ cobol.clean:
+ 	rm -fr gcobol cobol1 cobol/*
+ 
  cobol.distclean:
  
  cobol.maintainer-clean:
*************** cobol.stagefeedback: stagefeedback-start
*** 376,378 ****
--- 384,387 ----
  selftest-cobol:
  
  lang_checks += check-cobol
+ 
diff -Nrcpad gcc-15-20250726/gcc/cobol/TODO gcc-15-20250809/gcc/cobol/TODO
*** gcc-15-20250726/gcc/cobol/TODO	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/cobol/TODO	Sat Aug  9 22:32:37 2025
***************
*** 0 ****
--- 1,33 ----
+ Below is listed work to be done, hopefully all of it in 2025 for
+ GCC 16. They are vaguely in priority order, in that addressing more
+ technical issues may illuminate ways to attack more amorphous ones.
+ 
+ Portability:
+     - host/target, for cross-compilation
+     - OS portability, BSD, macOS, Solaris
+     - 64-bit portability, LE
+     - 64-bit portability, BE
+     - 2025 goal: Compile & run on primary & secondary GCC 15 platforms
+                  https://www.gnu.org/software/gcc/gcc-15/criteria.html
+ 
+ Correctness:
+     - LTO ODR, PR 119215 
+     - cppcheck
+     - valgrind
+     - -static produces dynamic
+ 
+ Efficiency:
+     - Code size for MOVE 'a' TO FOO(1,1)
+     - EC checking
+ 
+ COBOL Features:
+     - XML, JSON
+     - MF system functions
+     - National characters (and Unicode, for IBM)
+     - GLOBAL and PERFORM declaratives
+     - dialect feature names (to enable and enumerate)
+ 
+ GCC features:
+     - make check-nist
+     - -Werror, -Wno-<foo>
+     - -fEC-ALL, -fno-EC-I-O
diff -Nrcpad gcc-15-20250726/gcc/cobol/cbldiag.h gcc-15-20250809/gcc/cobol/cbldiag.h
*** gcc-15-20250726/gcc/cobol/cbldiag.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/cbldiag.h	Sat Aug  9 22:32:37 2025
***************
*** 33,39 ****
  #else
  #define _CBLDIAG_H
  
! #if 0
  #define gcobol_getenv(x) getenv(x)
  #else
  #define gcobol_getenv(x) ((char *)nullptr)
--- 33,39 ----
  #else
  #define _CBLDIAG_H
  
! #if GCOBOL_GETENV
  #define gcobol_getenv(x) getenv(x)
  #else
  #define gcobol_getenv(x) ((char *)nullptr)
*************** const char * cobol_filename();
*** 45,52 ****
   *  These are user-facing messages.  They go through the gcc
   *  diagnostic framework and use text that can be localized.
   */
! void yyerror( const char fmt[], ... );
! bool yywarn( const char fmt[], ... );
  
  /* Location type.  Borrowed from parse.h as generated by Bison. */
  #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
--- 45,52 ----
   *  These are user-facing messages.  They go through the gcc
   *  diagnostic framework and use text that can be localized.
   */
! void yyerror( const char fmt[], ... ) ATTRIBUTE_GCOBOL_DIAG(1, 2);
! bool yywarn( const char fmt[], ... ) ATTRIBUTE_GCOBOL_DIAG(1, 2);
  
  /* Location type.  Borrowed from parse.h as generated by Bison. */
  #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
*************** struct YDFLTYPE
*** 78,116 ****
  
  #endif
  
  // an error at a location, called from the parser for semantic errors
! void error_msg( const YYLTYPE& loc, const char gmsgid[], ... );
  
  void dialect_error( const YYLTYPE& loc, const char term[], const char dialect[] );
  
  
  // for CDF and other warnings that refer back to an earlier line
  // (not in diagnostic framework yet)
! void yyerrorvl( int line, const char *filename, const char fmt[], ... );
  
! void cbl_unimplementedw(const char *gmsgid, ...); // warning
! void cbl_unimplemented(const char *gmsgid, ...);  // error
! void cbl_unimplemented_at( const  YYLTYPE& loc, const char *gmsgid, ... );
  
  /*
!  * dbgmsg produce messages not intended for the user.  They cannot
!  * be localized and fwrite directly to standard out.  dbgmsg is activated by
!  * -fflex-debug or -fyacc-debug.  
   */
! void dbgmsg( const char fmt[], ... );
  
  void gcc_location_set( const YYLTYPE& loc );
  
  // tree.h defines yy_flex_debug as a macro because options.h
  #if ! defined(yy_flex_debug)
  template <typename LOC>
  static void
  location_dump( const char func[], int line, const char tag[], const LOC& loc) {
!   extern int yy_flex_debug;
!   if( yy_flex_debug && gcobol_getenv("update_location") )
!     fprintf(stderr, "%s:%d: %s location (%d,%d) to (%d,%d)\n",
!             func, line, tag,
!             loc.first_line, loc.first_column, loc.last_line, loc.last_column);
  }
  #endif // defined(yy_flex_debug)
  
--- 78,135 ----
  
  #endif
  
+ // Diagnostic format specifiers are documented in gcc/pretty-print.cc
  // an error at a location, called from the parser for semantic errors
! void error_msg( const YYLTYPE& loc, const char gmsgid[], ... )
!   ATTRIBUTE_GCOBOL_DIAG(2, 3);
! 
! bool
! warn_msg( const YYLTYPE& loc, const char gmsgid[], ... )
!   ATTRIBUTE_GCOBOL_DIAG(2, 3);
! 
! // an error that uses token_location, not yylloc
! void error_msg_direct( const char gmsgid[], ... )
!   ATTRIBUTE_GCOBOL_DIAG(1, 2);
  
  void dialect_error( const YYLTYPE& loc, const char term[], const char dialect[] );
  
  
  // for CDF and other warnings that refer back to an earlier line
  // (not in diagnostic framework yet)
! void yyerrorvl( int line, const char *filename, const char fmt[], ... )
!   ATTRIBUTE_PRINTF_3;
  
! void cbl_unimplementedw(const char *gmsgid, ...) ATTRIBUTE_GCOBOL_DIAG(1, 2); // warning
! void cbl_unimplemented(const char *gmsgid, ...) ATTRIBUTE_GCOBOL_DIAG(1, 2);  // error
! void cbl_unimplemented_at( const  YYLTYPE& loc, const char *gmsgid, ... )
!   ATTRIBUTE_GCOBOL_DIAG(2, 3);
  
  /*
!  * dbgmsg produce messages not intended for the user.  They cannot be localized
!  * and fwrite directly to standard error.  dbgmsg is activated by -fflex-debug
!  * or -fyacc-debug.
   */
! void dbgmsg( const char fmt[], ... ) ATTRIBUTE_PRINTF_1;
  
  void gcc_location_set( const YYLTYPE& loc );
  
+ void gcc_location_dump();
+ 
  // tree.h defines yy_flex_debug as a macro because options.h
  #if ! defined(yy_flex_debug)
  template <typename LOC>
  static void
  location_dump( const char func[], int line, const char tag[], const LOC& loc) {
!   extern int yy_flex_debug; // cppcheck-suppress shadowVariable
!   if( yy_flex_debug ) {
!     const char *detail = gcobol_getenv("update_location");
!     if( detail ) {
!       fprintf(stderr, "%s:%d: %s location (%d,%d) to (%d,%d)\n",
!               func, line, tag,
!               loc.first_line, loc.first_column, loc.last_line, loc.last_column);
!       if( *detail == '2' ) gcc_location_dump();
!     }
!   }
  }
  #endif // defined(yy_flex_debug)
  
diff -Nrcpad gcc-15-20250726/gcc/cobol/cdf-copy.cc gcc-15-20250809/gcc/cobol/cdf-copy.cc
*** gcc-15-20250726/gcc/cobol/cdf-copy.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/cdf-copy.cc	Sat Aug  9 22:32:37 2025
***************
*** 34,40 ****
  //
  // We regret any confusion engendered.
  
! #include <glob.h>
  
  #include "cobol-system.h"
  #include "cbldiag.h"
--- 34,40 ----
  //
  // We regret any confusion engendered.
  
! #include "config.h"
  
  #include "cobol-system.h"
  #include "cbldiag.h"
***************
*** 75,81 ****
   * space.  This function only applies them.
   */
  
- extern int yydebug;
  const char * cobol_filename();
  bool is_fixed_format();
  bool is_reference_format();
--- 75,80 ----
*************** verify_bounds( size_t pos, size_t size,
*** 125,137 ****
   */
  const char *
  esc( size_t len, const char input[] ) {
!   static char spaces[] = "([,;]?[[:space:]])+";
!   static char spaceD[] = "(\n {6}D" "|" "[,;]?[[:space:]])+";
    static char buffer[64 * 1024];
    char *p = buffer;
    const char *eoinput = input + len;
  
!   const char *spacex = is_reference_format()? spaceD : spaces;
  
    for( const char *s=input; *s && s < eoinput; s++ ) {
      *p = '\0';
--- 124,136 ----
   */
  const char *
  esc( size_t len, const char input[] ) {
!   static const char space[]  = "([,;]?[[:space:]])+";
!   static const char spaceD[] = "(\n {6}D" "|" "[,;]?[[:space:]])+";
    static char buffer[64 * 1024];
    char *p = buffer;
    const char *eoinput = input + len;
  
!   const char *spacex = is_reference_format()? spaceD : space;
  
    for( const char *s=input; *s && s < eoinput; s++ ) {
      *p = '\0';
*************** esc( size_t len, const char input[] ) {
*** 179,190 ****
    return buffer; // caller must strdup static buffer
  }
  
- static int
- glob_error(const char *epath, int eerrno) {
-   dbgmsg("%s: COPY file search: '%s': %s", __func__, epath, xstrerror(eerrno));
-   return 0;
- }
- 
  void
  copybook_directory_add( const char gcob_copybook[] ) {
    if( !gcob_copybook ) return;
--- 178,183 ----
*************** copybook_extension_add( const char ext[]
*** 231,257 ****
    copybook.extensions_add( ext, alt );
  }
  
- extern int yydebug;
  
! const char * copybook_elem_t::extensions;
  
  void
  copybook_t::extensions_add( const char ext[], const char alt[] ) {
!   char *output;
!   if( alt ) {
!     output = xasprintf("%s,%s", ext, alt);
!   } else {
!     output = xstrdup(ext);
!   }
!   gcc_assert(output);
!   if( book.extensions ) {
!     char *s = xasprintf("%s,%s", output, book.extensions);
!     free(const_cast<char*>(book.extensions));
!     free(output);
!     book.extensions = s;
!   } else {
!     book.extensions = output;
!   }
  }
  
  static inline ino_t
--- 224,238 ----
    copybook.extensions_add( ext, alt );
  }
  
  
! std::list<const char *> copybook_elem_t::suffixes {
!   "", ".cpy", ".CPY", ".cbl", ".CBL", ".cob", ".COB"
! };
  
  void
  copybook_t::extensions_add( const char ext[], const char alt[] ) {
!   book.suffixes.push_back(ext);
!   if( alt ) book.suffixes.push_back(alt);
  }
  
  static inline ino_t
*************** inode_of( int fd ) {
*** 265,273 ****
  
  int
  copybook_elem_t::open_file( const char directory[], bool literally ) {
!   int erc;
!   char  *pattern, *copier = xstrdup(cobol_filename());
!   char *dname = NULL;
  
    if ( directory ) {
      dname = xstrdup(directory);
--- 246,252 ----
  
  int
  copybook_elem_t::open_file( const char directory[], bool literally ) {
!   char *dname = NULL, *copier = xstrdup(cobol_filename());
  
    if ( directory ) {
      dname = xstrdup(directory);
*************** copybook_elem_t::open_file( const char d
*** 300,306 ****
      dbgmsg("copybook_elem_t::open_file: trying %s", path);
  
      if( (this->fd = open(path, O_RDONLY)) == -1 ) {
!       dbgmsg("could not open %s: %m", path);
        return fd;
      }
      this->source.name = path;
--- 279,285 ----
      dbgmsg("copybook_elem_t::open_file: trying %s", path);
  
      if( (this->fd = open(path, O_RDONLY)) == -1 ) {
!       dbgmsg("could not open %s: %s", path, xstrerror(errno));
        return fd;
      }
      this->source.name = path;
*************** copybook_elem_t::open_file( const char d
*** 313,364 ****
    }
    gcc_assert( ! literally );
  
-   if( extensions ) {
-     pattern = xasprintf("%s{,.cpy,.CPY,.cbl,.CBL,.cob,.COB,%s}",
-                         path, this->extensions);
-   } else {
-     pattern = xasprintf("%s{,.cpy,.CPY,.cbl,.CBL,.cob,.COB}", path);
-   }
- 
    free(copier);
  
!   static int flags = GLOB_MARK | GLOB_BRACE | GLOB_TILDE;
!   glob_t globber;
! 
!   if( (erc = glob(pattern, flags, glob_error, &globber)) != 0 ) {
!     switch(erc) {
!     case GLOB_NOSPACE:
!       yywarn("COPY file search: out of memory");
!       break;
!     case GLOB_ABORTED:
!       yywarn("COPY file search: read error");
!       break;
!     case GLOB_NOMATCH:
!       dbgmsg("COPY '%s': no files match %s", this->source.name, pattern);
!     default:
!       break; // caller says no file found
!     }
!     return -1;
!   }
! 
!   free(pattern);
  
!   for( size_t i=0; i < globber.gl_pathc; i++ ) {
!     auto filename = globber.gl_pathv[i];
      if( (this->fd = open(filename, O_RDONLY)) != -1 ) {
        dbgmsg("found copybook file %s", filename);
        this->source.name = xstrdup(filename);
        if( ! cobol_filename(this->source.name, inode_of(fd)) ) {
!         error_msg(source.loc, "recursive copybook: '%s' includes itself", this->source);
          (void)! close(fd);
          fd = -1;
        }
!       globfree(&globber);
        return fd;
      }
    }
-   yywarn("could not open copy source for '%s'", source);
  
-   globfree(&globber);
    return -1;
  }
--- 292,318 ----
    }
    gcc_assert( ! literally );
  
    free(copier);
  
!   for( auto suffix : suffixes ) {
!     std::string pattern(path);
!     pattern += suffix;
!     dbgmsg("%s: trying %s", __func__, pattern.c_str());
  
!     auto filename = pattern.c_str();
      if( (this->fd = open(filename, O_RDONLY)) != -1 ) {
        dbgmsg("found copybook file %s", filename);
        this->source.name = xstrdup(filename);
        if( ! cobol_filename(this->source.name, inode_of(fd)) ) {
!         error_msg(source.loc, "recursive copybook: '%s' includes itself",
!                   this->source.name);
          (void)! close(fd);
          fd = -1;
        }
!       dbgmsg("%s: opened %s as fd %d", __func__, source.name, fd);
        return fd;
      }
    }
  
    return -1;
  }
diff -Nrcpad gcc-15-20250726/gcc/cobol/cdf.y gcc-15-20250809/gcc/cobol/cdf.y
*** gcc-15-20250726/gcc/cobol/cdf.y	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/cdf.y	Sat Aug  9 22:32:37 2025
*************** void input_file_status_notify();
*** 95,101 ****
          }                                                               \
        location_dump("cdf.c", __LINE__, "current", (Current));		\
        input_file_status_notify();					\
!       gcc_location_set( location_set(Current) );			\
    } while (0)
  
  %}
--- 95,101 ----
          }                                                               \
        location_dump("cdf.c", __LINE__, "current", (Current));		\
        input_file_status_notify();					\
!       location_set(Current);                                            \
    } while (0)
  
  %}
*************** void input_file_status_notify();
*** 105,118 ****
  
    using std::map;
  
-   static map<std::string, cdfval_t> dictionary;
- 
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wunused-function"
    static bool
    cdfval_add( const char name[],
  	       const cdfval_t& value, bool override = false )
    {
      if( scanner_parsing() ) {
        if( ! override ) {
  	if( dictionary.find(name) != dictionary.end() ) return false;
--- 105,118 ----
  
    using std::map;
  
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wunused-function"
    static bool
    cdfval_add( const char name[],
  	       const cdfval_t& value, bool override = false )
    {
+     cdf_values_t& dictionary( cdf_dictionary() );
+     
      if( scanner_parsing() ) {
        if( ! override ) {
  	if( dictionary.find(name) != dictionary.end() ) return false;
*************** void input_file_status_notify();
*** 123,128 ****
--- 123,130 ----
    }
    static void
    cdfval_off( const char name[] ) {
+     cdf_values_t& dictionary( cdf_dictionary() );
+     
      if( scanner_parsing() ) {
        auto p = dictionary.find(name);
        if( p == dictionary.end() ) {
*************** void input_file_status_notify();
*** 155,229 ****
  static char *display_msg;
  const char * keyword_str( int token );
  
! static class exception_turns_t {
!   typedef std::list<size_t> filelist_t;
!   typedef std::map<ec_type_t, filelist_t> ec_filemap_t;
!   ec_filemap_t exceptions;
!  public:
!   bool enabled, location;
! 
!   exception_turns_t() : enabled(false), location(false) {};
! 
!   const ec_filemap_t& exception_files() const { return exceptions; }
! 
!   struct args_t {
!     size_t nexception;
!     cbl_exception_files_t *exceptions;
!   };
! 
!   bool add_exception( ec_type_t type, const filelist_t files = filelist_t() ) {
!     ec_disposition_t disposition = ec_type_disposition(type);
!     if( disposition != ec_implemented(disposition) ) {
! 	cbl_unimplementedw("CDF: exception '%s'", ec_type_str(type));
!     }
!     auto elem = exceptions.find(type);
!     if( elem != exceptions.end() ) return false; // cannot add twice
! 
!     exceptions[type] = files;
!     return true;
!   }
! 
!   args_t args() const {
!     args_t args;
!     args.nexception = exceptions.size();
!     args.exceptions = NULL;
!     if( args.nexception ) {
!       args.exceptions = new cbl_exception_files_t[args.nexception];
!     }
!     std::transform( exceptions.begin(), exceptions.end(), args.exceptions,
!                     []( auto& input ) {
!                       cbl_exception_files_t output;
!                       output.type = input.first;
!                       output.nfile = input.second.size();
!                       output.files = NULL;
!                       if( output.nfile ) {
!                         output.files = new size_t[output.nfile];
!                         std::copy(input.second.begin(),
!                                        input.second.end(),
!                                        output.files );
!                       }
!                       return output;
!                     } );
!     return args;
!   }
! 
!   void clear() {
!     for( auto& ex : exceptions ) {
!       ex.second.clear();
!     }
!     exceptions.clear();
!     enabled = location = false;
!   }
! 
! } exception_turns;
! 
! 
! static bool
! apply_cdf_turn( exception_turns_t& turns ) {
!   for( auto elem : turns.exception_files() ) {
      std::set<size_t> files(elem.second.begin(), elem.second.end());
!     enabled_exceptions.turn_on_off(turns.enabled,
!                                    turns.location,
                                     elem.first, files);
    }
    if( getenv("GCOBOL_SHOW") ) enabled_exceptions.dump();
--- 157,172 ----
  static char *display_msg;
  const char * keyword_str( int token );
  
! exception_turn_t exception_turn;
! 			
! bool
! apply_cdf_turn( const exception_turn_t& turn ) {
!   cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() );
!   
!   for( auto elem : turn.exception_files() ) {
      std::set<size_t> files(elem.second.begin(), elem.second.end());
!     enabled_exceptions.turn_on_off(turn.enabled,
!                                    turn.location,
                                     elem.first, files);
    }
    if( getenv("GCOBOL_SHOW") ) enabled_exceptions.dump();
*************** apply_cdf_turn( exception_turns_t& turns
*** 241,310 ****
      std::set<size_t> *files;
  }
  
  %printer { fprintf(yyo, "'%s'", $$ ); } <string>
  %printer { fprintf(yyo, "%s '%s'",
  		   keyword_str($$.token),
  		   $$.string? $$.string : "<nil>" ); } <cdfarg>
! %printer { fprintf(yyo, "%ld '%s'",
! 		   $$.number, $$.string? $$.string : "" ); } <cdfval>
  
  %type	<string>	NAME NUMSTR LITERAL PSEUDOTEXT
  %type	<string>	LSUB RSUB SUBSCRIPT
  %type	<cdfarg>	namelit name_any name_one
  %type	<string>	name subscript subscripts inof
  %token <boolean>  BOOL
! %token <number>  FEATURE 363  NUMBER 302  EXCEPTION_NAME 280    "EXCEPTION NAME"
  
  %type	<cdfval>	cdf_expr
  %type	<cdfval>	cdf_relexpr cdf_reloper cdf_and cdf_bool_expr
  %type	<cdfval>	cdf_factor
! %type	<boolean>	cdf_cond_expr override
  
  %type   <file>		filename
  %type   <files>         filenames
  
! %token BY 476
! %token COPY 360
! %token CDF_DISPLAY 382    ">>DISPLAY"
! %token IN 595
  %token NAME 286
! %token NUMSTR 304    "numeric literal"
! %token OF 676
! %token PSEUDOTEXT 711
! %token REPLACING 733
! %token LITERAL 297
! %token SUPPRESS 374
  
! %token LSUB 365    "("
! %token SUBSCRIPT 373  RSUB 370    ")"
  
! %token CDF_DEFINE 381    ">>DEFINE"
! %token CDF_IF 383    ">>IF"
! %token CDF_ELSE 384    ">>ELSE"
! %token CDF_END_IF 385    ">>END-IF"
! %token CDF_EVALUATE 386    ">>EVALUATE"
! %token CDF_WHEN 387    ">>WHEN"
! %token CDF_END_EVALUATE 388    ">>END-EVALUATE"
  
! %token AS 458  CONSTANT 359  DEFINED 361
  %type	<boolean>	     DEFINED
! %token OTHER 688  PARAMETER_kw 366    "PARAMETER"
! %token OFF 677  OVERRIDE 367
! %token THRU 929
! %token TRUE_kw 803    "True"
  
! %token CALL_COBOL 389    "CALL"
! %token CALL_VERBATIM 390    "CALL (as C)"
  
! %token TURN 805  CHECKING 486  LOCATION 639  ON 679  WITH 831
  
! %left OR 930
! %left AND 931
! %right NOT 932
! %left '<'  '>'  '='  NE 933  LE 934  GE 935
  %left '-'  '+'
  %left '*'  '/'
! %right NEG 937
  
  %define api.prefix {ydf}
  %define api.token.prefix{YDF_}
--- 184,264 ----
      std::set<size_t> *files;
  }
  
+ %printer { fprintf(yyo, "'%s'", $$? "true" : "false" ); } <boolean>
  %printer { fprintf(yyo, "'%s'", $$ ); } <string>
  %printer { fprintf(yyo, "%s '%s'",
  		   keyword_str($$.token),
  		   $$.string? $$.string : "<nil>" ); } <cdfarg>
! /* cppcheck-suppress invalidPrintfArgType_sint */
! %printer { fprintf(yyo, HOST_SIZE_T_PRINT_DEC " '%s'",
! 		   (fmt_size_t)$$.number, $$.string? $$.string : "" ); } <cdfval>
  
  %type	<string>	NAME NUMSTR LITERAL PSEUDOTEXT
  %type	<string>	LSUB RSUB SUBSCRIPT
  %type	<cdfarg>	namelit name_any name_one
  %type	<string>	name subscript subscripts inof
  %token <boolean>  BOOL
! %token <number>  FEATURE 365  NUMBER 303  EXCEPTION_NAME 280    "EXCEPTION NAME"
  
  %type	<cdfval>	cdf_expr
  %type	<cdfval>	cdf_relexpr cdf_reloper cdf_and cdf_bool_expr
  %type	<cdfval>	cdf_factor
! %type	<boolean>	cdf_cond_expr override except_check
  
  %type   <file>		filename
  %type   <files>         filenames
  
! %type   <number>        cdf_stackable
! 
! %token BY 486
! %token COPY 362
! %token CDF_DISPLAY 384    ">>DISPLAY"
! %token IN 605
  %token NAME 286
! %token NUMSTR 305    "numeric literal"
! %token OF 686
! %token PSEUDOTEXT 721
! %token REPLACING 743
! %token LITERAL 298
! %token SUPPRESS 376
  
! %token LSUB 367    "("
! %token SUBSCRIPT 375  RSUB 372    ")"
  
! %token CDF_DEFINE 383    ">>DEFINE"
! %token CDF_IF 385    ">>IF"
! %token CDF_ELSE 386    ">>ELSE"
! %token CDF_END_IF 387    ">>END-IF"
! %token CDF_EVALUATE 388    ">>EVALUATE"
! %token CDF_WHEN 389    ">>WHEN"
! %token CDF_END_EVALUATE 390    ">>END-EVALUATE"
  
! %token ALL 450
! %token CALL_CONVENTION 391    ">>CALL-CONVENTION"
! %token COBOL_WORDS 380    ">>COBOL-WORDS"
! %token CDF_PUSH 394    ">>PUSH"
! %token CDF_POP 395    ">>POP"
! %token SOURCE_FORMAT 396    ">>SOURCE FORMAT"
! 
! %token AS 468  CONSTANT 361  DEFINED 363
  %type	<boolean>	     DEFINED
! %token OTHER 698  PARAMETER_kw 368    "PARAMETER"
! %token OFF 687  OVERRIDE 369
! %token THRU 939
! %token TRUE_kw 813    "True"
  
! %token CALL_COBOL 392    "CALL"
! %token CALL_VERBATIM 393    "CALL (as C)"
  
! %token TURN 815  CHECKING 496  LOCATION 649  ON 689  WITH 841
  
! %left OR 940
! %left AND 941
! %right NOT 942
! %left '<'  '>'  '='  NE 943  LE 944  GE 945
  %left '-'  '+'
  %left '*'  '/'
! %right NEG 947
  
  %define api.prefix {ydf}
  %define api.token.prefix{YDF_}
*************** top:		partials { YYACCEPT; }
*** 322,329 ****
  		  YYACCEPT;
  		}
  	|	copy error {
! 		  error_msg(@error, "COPY directive must end in a '.'");
! 		  YYACCEPT;
  		}
  	|	completes { YYACCEPT; }
  		;
--- 276,283 ----
  		  YYACCEPT;
  		}
  	|	copy error {
! 		  error_msg(@error, "COPY directive must end in a %<.%>");
! 		  YYABORT;
  		}
  	|	completes { YYACCEPT; }
  		;
*************** complete:	cdf_define
*** 336,341 ****
--- 290,297 ----
  	|	cdf_display
  	|	cdf_turn
          |       cdf_call_convention
+         |       cdf_push
+         |       cdf_pop
  		;
  
  		/*
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 387,392 ****
--- 343,349 ----
  		  }
  		  if( !cdfval_add( $NAME, cdfval_t($value), $override) ) {
  		    error_msg(@NAME, "name already in dictionary: %s", $NAME);
+                     cdf_values_t& dictionary( cdf_dictionary() );
  		    const cdfval_t& entry = dictionary[$NAME];
  		    if( entry.filename ) {
  		      error_msg(@NAME, "%s previously defined in %s:%d",
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 416,422 ****
  		 * available regardless.
  		 */
  		{
! 		  if( 0 == dictionary.count($NAME) ) {
  		    yywarn("CDF: '%s' is defined AS PARAMETER "
  			    "but was not defined", $NAME);
  		  }
--- 373,379 ----
  		 * available regardless.
  		 */
  		{
! 		  if( 0 == cdf_dictionary().count($NAME) ) {
  		    yywarn("CDF: '%s' is defined AS PARAMETER "
  			    "but was not defined", $NAME);
  		  }
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 424,436 ****
  	|	CDF_DEFINE FEATURE as ON {
  		  auto feature = cbl_gcobol_feature_t($2);
  		  if( ! cobol_gcobol_feature_set(feature, true) ) {
! 		    error_msg(@FEATURE, ">>DEFINE %EBCDIC-MODE is invalid within program body");
  		  }
  		}
  	|	CDF_DEFINE FEATURE as OFF {
  		  auto feature = cbl_gcobol_feature_t($2);
  		  if( ! cobol_gcobol_feature_set(feature, false) ) {
! 		    error_msg(@FEATURE, ">>DEFINE %EBCDIC-MODE is invalid within program body");
  		  }
  		}
  		;
--- 381,395 ----
  	|	CDF_DEFINE FEATURE as ON {
  		  auto feature = cbl_gcobol_feature_t($2);
  		  if( ! cobol_gcobol_feature_set(feature, true) ) {
! 		    error_msg(@FEATURE,
!                               "%<>>DEFINE %%EBCDIC-MODE%> is invalid within program body");
  		  }
  		}
  	|	CDF_DEFINE FEATURE as OFF {
  		  auto feature = cbl_gcobol_feature_t($2);
  		  if( ! cobol_gcobol_feature_set(feature, false) ) {
! 		    error_msg(@FEATURE,
!                               "%<>>DEFINE %%EBCDIC-MODE%> is invalid within program body");
  		  }
  		}
  		;
*************** override:	%empty   { $$ = false; }
*** 443,450 ****
  
  cdf_turn:	TURN except_names except_check
  		{
! 		  apply_cdf_turn(exception_turns);
! 		  exception_turns.clear();
  		}
  		;
  
--- 402,409 ----
  
  cdf_turn:	TURN except_names except_check
  		{
! 		  apply_cdf_turn(exception_turn);
! 		  exception_turn.clear();
  		}
  		;
  
*************** cdf_call_convention:
*** 457,484 ****
                  }
                  ;
  
  
  except_names: 	except_name
  	|	except_names except_name
  		;
  except_name:	EXCEPTION_NAME[ec] {
  		  assert($ec != ec_none_e);
! 		  exception_turns.add_exception(ec_type_t($ec));
  		}
  	|	EXCEPTION_NAME[ec] filenames {
  		  assert($ec != ec_none_e);
! 		  std::list<size_t> files;
! 		  std::copy( $filenames->begin(), $filenames->end(),
! 		                  std::back_inserter(files) );
! 		  exception_turns.add_exception(ec_type_t($ec), files);
  		}
  		;
  
! except_check:	CHECKING on  { exception_turns.enabled = true; }
! 	|	CHECKING OFF { exception_turns.enabled = false; }
  	|	CHECKING on with LOCATION
  		{
! 		  exception_turns.enabled = exception_turns.location = true;
  		}
  		;
  
--- 416,470 ----
                  }
                  ;
  
+ cdf_push:       CDF_PUSH cdf_stackable {
+ 		  switch( $cdf_stackable ) {
+                   case YDF_ALL: 		cdf_push(); break;
+                   case YDF_CALL_CONVENTION: cdf_push_call_convention(); break;
+                   case YDF_CDF_DEFINE: 	cdf_push_dictionary(); break;
+                   case YDF_COBOL_WORDS: 	cdf_push_current_tokens(); break;
+                   case YDF_SOURCE_FORMAT:	cdf_push_source_format(); break;
+                   default: gcc_unreachable(); 
+                   }
+                 }
+                 ;
+ cdf_pop:        CDF_POP cdf_stackable {
+ 		  switch( $cdf_stackable ) {
+                   case YDF_ALL: 		cdf_pop(); break;
+                   case YDF_CALL_CONVENTION: cdf_pop_call_convention(); break;
+                   case YDF_CDF_DEFINE: 	cdf_pop_dictionary(); break;
+                   case YDF_COBOL_WORDS: 	cdf_pop_current_tokens(); break;
+                   case YDF_SOURCE_FORMAT:	cdf_pop_source_format(); break; 
+                   default: gcc_unreachable(); 
+                   }
+                 }
+                 ;
+ 
+ cdf_stackable:  ALL		{ $$ = YDF_ALL; }
+         |       CALL_CONVENTION	{ $$ = YDF_CALL_CONVENTION; }
+         |       COBOL_WORDS	{ $$ = YDF_COBOL_WORDS; }
+         |       CDF_DEFINE	{ $$ = YDF_CDF_DEFINE; }
+         |       SOURCE_FORMAT	{ $$ = YDF_SOURCE_FORMAT; }
+                 ;
  
  except_names: 	except_name
  	|	except_names except_name
  		;
  except_name:	EXCEPTION_NAME[ec] {
  		  assert($ec != ec_none_e);
! 		  exception_turn.add_exception(ec_type_t($ec));
  		}
  	|	EXCEPTION_NAME[ec] filenames {
  		  assert($ec != ec_none_e);
! 		  std::list<size_t> files($filenames->begin(), $filenames->end());
! 		  exception_turn.add_exception(ec_type_t($ec), files);
  		}
  		;
  
! except_check:	CHECKING on  { $$ = exception_turn.enable(true); }
! 	|	CHECKING OFF { $$ = exception_turn.enable(false); }
  	|	CHECKING on with LOCATION
  		{
! 		  $$ = exception_turn.enable(true, true);
  		}
  		;
  
*************** filenames:      filename {
*** 491,497 ****
  		  auto inserted = $$->insert(symbol_index(symbol_elem_of($2)));
  		  if( ! inserted.second ) {
  		    error_msg(@2, "%s: No file-name shall be specified more than "
! 			      " once for one exception condition", $filename->name);
  		  }
  		}
                  ;
--- 477,483 ----
  		  auto inserted = $$->insert(symbol_index(symbol_elem_of($2)));
  		  if( ! inserted.second ) {
  		    error_msg(@2, "%s: No file-name shall be specified more than "
! 			      "once for one exception condition", $filename->name);
  		  }
  		}
                  ;
*************** cdf_if:		CDF_IF cdf_cond_expr {
*** 510,516 ****
  		  scanner_parsing(YDF_CDF_IF, $2);
  		}
  	|	CDF_IF error {
- 		  ////if( scanner_parsing() ) yyerrok;
  		} CDF_END_IF { // not pushed, don't pop
  		  if( ! scanner_parsing() ) YYACCEPT;
  		}
--- 496,501 ----
*************** cdf_eval_obj:	cdf_cond_expr
*** 529,546 ****
          ;
  
  cdf_cond_expr:	BOOL
! 	|	NAME DEFINED[maybe]
  		{
  		  auto p = dictionary.find($1);
  		  bool found = p != dictionary.end();
! 		  if( !$maybe ) found = ! found;
! 		  if( ! found ) {
! 		    $$ = !$2;
! 		    dbgmsg("CDF: %s not found in dictionary (result %s)",
  			   $1, $$? "true" : "false");
  		  } else {
! 		    $$ = $2;
! 		    dbgmsg("CDF: %s found in dictionary (result %s)",
  			   $1, $$? "true" : "false");
  		  }
  		}
--- 514,531 ----
          ;
  
  cdf_cond_expr:	BOOL
! 	|	NAME DEFINED
  		{
+                   cdf_values_t& dictionary( cdf_dictionary() );
  		  auto p = dictionary.find($1);
  		  bool found = p != dictionary.end();
! 		  if( !$DEFINED ) found = ! found;
! 		  $$ = found;
! 		  if( found ) {
! 		    dbgmsg("CDF: %s found in dictionary (result %s)",
  			   $1, $$? "true" : "false");
  		  } else {
! 		    dbgmsg("CDF: %s not found in dictionary (result %s)",
  			   $1, $$? "true" : "false");
  		  }
  		}
*************** cdf_relexpr:	cdf_relexpr '<' cdf_expr {
*** 580,586 ****
  		    const char *msg = $1.string?
  		      "incommensurate comparison is FALSE: '%s' = %ld" :
  		      "incommensurate comparison is FALSE: %ld = '%s'" ;
! 		    error_msg(@1, msg);
  		  }
  		}
  	|	cdf_relexpr NE cdf_expr
--- 565,571 ----
  		    const char *msg = $1.string?
  		      "incommensurate comparison is FALSE: '%s' = %ld" :
  		      "incommensurate comparison is FALSE: %ld = '%s'" ;
! 		    error_msg(@1, "%s", msg);
  		  }
  		}
  	|	cdf_relexpr NE cdf_expr
*************** cdf_relexpr:	cdf_relexpr '<' cdf_expr {
*** 594,600 ****
  		    const char *msg = $1.string?
  		      "incommensurate comparison is FALSE: '%s' = %ld" :
  		      "incommensurate comparison is FALSE: %ld = '%s'" ;
! 		    error_msg(@1, msg);
  		  }
  		}
  	|	cdf_relexpr GE  cdf_expr { $$ = $1(@1) >= $3(@3); }
--- 579,585 ----
  		    const char *msg = $1.string?
  		      "incommensurate comparison is FALSE: '%s' = %ld" :
  		      "incommensurate comparison is FALSE: %ld = '%s'" ;
! 		    error_msg(@1, "%s", msg);
  		  }
  		}
  	|	cdf_relexpr GE  cdf_expr { $$ = $1(@1) >= $3(@3); }
*************** cdf_expr:	cdf_expr '+' cdf_expr { $$ = $
*** 613,618 ****
--- 598,604 ----
          ;
  
  cdf_factor:     NAME {
+                   cdf_values_t& dictionary( cdf_dictionary() );
  		  auto that = dictionary.find($1);
  		  if( that != dictionary.end() ) {
  		    $$ = that->second;
*************** cdf_factor:     NAME {
*** 630,636 ****
  	| 	NUMSTR {
  		  auto value = integer_literal($NUMSTR);
  		  if( !value.second ) {
! 		    error_msg(@1, "CDF error: parsed %s as %ld",
  		             $NUMSTR, value.first);
  		    YYERROR;
  		  }
--- 616,622 ----
  	| 	NUMSTR {
  		  auto value = integer_literal($NUMSTR);
  		  if( !value.second ) {
! 		    error_msg(@1, "CDF error: parsed %qs as %lld",
  		             $NUMSTR, value.first);
  		    YYERROR;
  		  }
*************** copybook_name: 	COPY name_one[src]
*** 648,654 ****
  		  if( -1 == copybook.open(@src, $src.string) ) {
  		    error_msg(@src, "could not open copybook file "
  		             "for '%s'", $src.string);
! 		    YYERROR;
  		  }
  		}
  	|	COPY name_one[src] IN name_one[lib]
--- 634,640 ----
  		  if( -1 == copybook.open(@src, $src.string) ) {
  		    error_msg(@src, "could not open copybook file "
  		             "for '%s'", $src.string);
! 		    YYABORT;
  		  }
  		}
  	|	COPY name_one[src] IN name_one[lib]
*************** copybook_name: 	COPY name_one[src]
*** 656,663 ****
  		  copybook.library(@lib, $lib.string);
  		  if( -1 == copybook.open(@src, $src.string) ) {
  		    error_msg(@src, "could not open copybook file "
! 		             "for '%s' in '%'s'", $src.string, $lib.string);
! 		    YYERROR;
  		  }
  		}
  		;
--- 642,649 ----
  		  copybook.library(@lib, $lib.string);
  		  if( -1 == copybook.open(@src, $src.string) ) {
  		    error_msg(@src, "could not open copybook file "
! 		             "for %<%s%> in %<%s%>", $src.string, $lib.string);
! 		    YYABORT;
  		  }
  		}
  		;
*************** name_any:	namelit
*** 712,717 ****
--- 698,704 ----
  
  name_one:	NAME
  		{
+                   cdf_values_t& dictionary( cdf_dictionary() );
  		  cdf_arg_t arg = { YDF_NAME, $1 };
  		  auto p = dictionary.find($1);
  
*************** name_one:	NAME
*** 726,731 ****
--- 713,719 ----
  
  namelit:	name
  		{
+                   cdf_values_t& dictionary( cdf_dictionary() );
  		  cdf_arg_t arg = { YDF_NAME, $1 };
  		  auto p = dictionary.find($1);
  
*************** location_set( const YYLTYPE& loc ) {
*** 806,811 ****
--- 794,800 ----
  bool // used by cobol1.cc
  defined_cmd( const char arg[] )
  {
+   cdf_values_t& dictionary( cdf_dictionary() );
    cdfval_t value(1);
  
    char *name = xstrdup(arg);
*************** defined_cmd( const char arg[] )
*** 828,834 ****
  
    if( yydebug ) {
      if( cdf_name->second.is_numeric() ) {
!       dbgmsg("%s: added -D %s = %ld", __func__, name, cdf_name->second.as_number());
      } else {
        dbgmsg("%s: added -D %s = \"%s\"", __func__, name, cdf_name->second.string);
      }
--- 817,824 ----
  
    if( yydebug ) {
      if( cdf_name->second.is_numeric() ) {
!       dbgmsg("%s: added -D %s = " HOST_SIZE_T_PRINT_DEC,
!              __func__, name, (fmt_size_t)cdf_name->second.as_number());
      } else {
        dbgmsg("%s: added -D %s = \"%s\"", __func__, name, cdf_name->second.string);
      }
*************** static int ydflex(void) {
*** 927,933 ****
  }
  
  bool
! cdf_value( const char name[], cdfval_t value ) {
    auto p = dictionary.find(name);
  
    if( p != dictionary.end() ) return false;
--- 917,924 ----
  }
  
  bool
! cdf_value( const char name[], const cdfval_t& value ) {
!   cdf_values_t& dictionary( cdf_dictionary() );
    auto p = dictionary.find(name);
  
    if( p != dictionary.end() ) return false;
*************** cdf_value( const char name[], cdfval_t v
*** 938,943 ****
--- 929,935 ----
  
  const cdfval_t *
  cdf_value( const char name[] ) {
+   cdf_values_t& dictionary( cdf_dictionary() );
    auto p = dictionary.find(name);
  
    if( p == dictionary.end() ) return NULL;
*************** verify_integer( const YDFLTYPE& loc, con
*** 957,961 ****
--- 949,954 ----
  const cdfval_base_t&
  cdfval_base_t::operator()( const YDFLTYPE& loc ) {
    static cdfval_t zero(0);
+   // cppcheck-suppress returnTempReference
    return verify_integer(loc, *this) ? *this : zero;
  }
diff -Nrcpad gcc-15-20250726/gcc/cobol/cdfval.h gcc-15-20250809/gcc/cobol/cdfval.h
*** gcc-15-20250726/gcc/cobol/cdfval.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/cdfval.h	Sat Aug  9 22:32:37 2025
***************
*** 32,43 ****
  #ifndef _CDF_VAL_H_
  #define _CDF_VAL_H_
  
! #include <assert.h>
! #include <stdint.h>
! #include <stdlib.h>
  
  bool scanner_parsing();
  
  struct YDFLTYPE;
  struct cdfval_base_t {
    bool off;
--- 32,51 ----
  #ifndef _CDF_VAL_H_
  #define _CDF_VAL_H_
  
! #include <cassert>
! #include <cstdint>
! #include <cstdlib>
  
  bool scanner_parsing();
  
+ /* cdfval_base_t has no constructor because otherwise: 
+  * cobol/cdf.h:172:7: note: ‘YDFSTYPE::YDFSTYPE()’ is implicitly deleted 
+  *  because the default definition would be ill-formed:
+  * 172 | union YDFSTYPE
+  * 
+  * We use the derived type cdfval_t, which can be properly constructed and
+  * operated on, but tell Bison only about its POD base class.
+  */
  struct YDFLTYPE;
  struct cdfval_base_t {
    bool off;
*************** struct cdfval_t : public cdfval_base_t {
*** 65,92 ****
      cdfval_base_t::string = NULL;
      cdfval_base_t::number = 0;
    }
!   cdfval_t( const char value[] )
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t::off  = false;
      cdfval_base_t::string = value;
      cdfval_base_t::number = 0;
    }
!   cdfval_t( long long value )
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t::off  = false;
      cdfval_base_t::string = NULL;
      cdfval_base_t::number = value;
    }
!   cdfval_t( long value )
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t::off  = false;
      cdfval_base_t::string = NULL;
      cdfval_base_t::number = value;
    }
!   cdfval_t( int value )
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t::off  = false;
--- 73,100 ----
      cdfval_base_t::string = NULL;
      cdfval_base_t::number = 0;
    }
!   cdfval_t( const char value[] ) // cppcheck-suppress noExplicitConstructor
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t::off  = false;
      cdfval_base_t::string = value;
      cdfval_base_t::number = 0;
    }
!   cdfval_t( long long value ) // cppcheck-suppress noExplicitConstructor
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t::off  = false;
      cdfval_base_t::string = NULL;
      cdfval_base_t::number = value;
    }
!   cdfval_t( long value ) // cppcheck-suppress noExplicitConstructor
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t::off  = false;
      cdfval_base_t::string = NULL;
      cdfval_base_t::number = value;
    }
!   cdfval_t( int value ) // cppcheck-suppress noExplicitConstructor
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t::off  = false;
*************** struct cdfval_t : public cdfval_base_t {
*** 101,107 ****
      HOST_WIDE_INT value = real_to_integer(&r);
      cdfval_base_t::number = value;
    }
!   cdfval_t( const cdfval_base_t& value )
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t *self(this);
--- 109,115 ----
      HOST_WIDE_INT value = real_to_integer(&r);
      cdfval_base_t::number = value;
    }
!   cdfval_t( const cdfval_base_t& value ) // cppcheck-suppress noExplicitConstructor
      : lineno(yylineno), filename(cobol_filename())
    {
      cdfval_base_t *self(this);
*************** const cdfval_t *
*** 116,121 ****
  cdf_value( const char name[] );
  
  bool
! cdf_value( const char name[], cdfval_t value );
  
  #endif
--- 124,133 ----
  cdf_value( const char name[] );
  
  bool
! cdf_value( const char name[], const cdfval_t& value );
! 
! typedef std::map<std::string, cdfval_t> cdf_values_t;
! 
! cdf_values_t& cdf_dictionary();
  
  #endif
diff -Nrcpad gcc-15-20250726/gcc/cobol/cobol-system.h gcc-15-20250809/gcc/cobol/cobol-system.h
*** gcc-15-20250726/gcc/cobol/cobol-system.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/cobol-system.h	Sat Aug  9 22:32:37 2025
***************
*** 60,63 ****
--- 60,69 ----
  // The following "local" #include is part of the GCC core code
  #include "system.h"
  
+ #if (CHECKING_P && GCC_VERSION >= 4001) || GCC_VERSION == BUILDING_GCC_VERSION
+ #define ATTRIBUTE_GCOBOL_DIAG(m, n) __attribute__ ((__format__ (__gcc_tdiag__, m, n))) ATTRIBUTE_NONNULL(m)
+ #else
+ #define ATTRIBUTE_GCOBOL_DIAG(m, n) ATTRIBUTE_NONNULL(m)
+ #endif
+ 
  #endif
diff -Nrcpad gcc-15-20250726/gcc/cobol/cobol1.cc gcc-15-20250809/gcc/cobol/cobol1.cc
*** gcc-15-20250726/gcc/cobol/cobol1.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/cobol1.cc	Sat Aug  9 22:32:37 2025
*************** along with GCC; see the file COPYING3.
*** 20,34 ****
  
  
  #include "cobol-system.h"
! #include "coretypes.h"
! #include "tree.h"
! #include "diagnostic.h"
! #include "opts.h"
! #include "debug.h"
! #include "langhooks.h"
! #include "langhooks-def.h"
! #include "target.h"
! #include "stringpool.h"
  #include "../../libgcobol/ec.h"
  #include "../../libgcobol/common-defs.h"
  #include "util.h"
--- 20,34 ----
  
  
  #include "cobol-system.h"
! #include <coretypes.h>
! #include <tree.h>
! #include <diagnostic.h>
! #include <opts.h>
! #include <debug.h>
! #include <langhooks.h>
! #include <langhooks-def.h>
! #include <target.h>
! #include <stringpool.h>
  #include "../../libgcobol/ec.h"
  #include "../../libgcobol/common-defs.h"
  #include "util.h"
*************** along with GCC; see the file COPYING3.
*** 39,45 ****
  #include "genapi.h"
  #include "../../libgcobol/exceptl.h"
  #include "exceptg.h"
- #include "util.h"
  #include "gengen.h"   // This has some GTY(()) markers
  #include "structs.h"  // This has some GTY(()) markers
  
--- 39,44 ----
*************** cobol_langhook_handle_option (size_t sco
*** 357,362 ****
--- 356,365 ----
              copybook_extension_add(cobol_copyext);
              return true;
  
+         case OPT_M:
+             cobol_set_pp_option('M');
+             return true;
+ 
          case OPT_fstatic_call:
              use_static_call( arg? true : false );
              return true;
*************** cobol_langhook_handle_option (size_t sco
*** 365,380 ****
              wsclear(cobol_default_byte);
              return true;
  
!         case OPT_fflex_debug:
              yy_flex_debug = 1;
              cobol_set_debugging( true, yy_debug == 1, cobol_trace_debug == 1 );
              return true;
          case OPT_fyacc_debug:
              yy_debug = 1;
              cobol_set_debugging(yy_flex_debug == 1,
                                  true,
                                  cobol_trace_debug == 1 );
              return true;
          case OPT_ftrace_debug:
              cobol_set_debugging( yy_flex_debug == 1, yy_debug == 1, true );
              return true;
--- 368,385 ----
              wsclear(cobol_default_byte);
              return true;
  
!         case OPT_fflex_debug: // cppcheck-suppress syntaxError // The need for this is a mystery
              yy_flex_debug = 1;
              cobol_set_debugging( true, yy_debug == 1, cobol_trace_debug == 1 );
              return true;
+ 
          case OPT_fyacc_debug:
              yy_debug = 1;
              cobol_set_debugging(yy_flex_debug == 1,
                                  true,
                                  cobol_trace_debug == 1 );
              return true;
+ 
          case OPT_ftrace_debug:
              cobol_set_debugging( yy_flex_debug == 1, yy_debug == 1, true );
              return true;
*************** cobol_langhook_handle_option (size_t sco
*** 403,413 ****
--- 408,420 ----
          case OPT_fsyntax_only:
            mode_syntax_only(identification_div_e);
            break;
+ 
          case OPT_preprocess:
            if( ! preprocess_filter_add(arg) ) {
              cbl_errx( "could not execute preprocessor %s", arg);
            }
            return true;
+ 
          case OPT_include:
            if( ! include_file_add(arg) ) {
              cbl_errx( "could not include %s", arg);
*************** cobol_name_mangler(const char *cobol_nam
*** 568,574 ****
        }
  
      // Allocate enough space for a prepended underscore and a final '\0'
!     char *cobol_name = (char *)xmalloc(strlen(cobol_name_)+2);
      size_t n = 0;
      if( cobol_name_[0] >= '0' && cobol_name_[0] <= '9' )
        {
--- 575,581 ----
        }
  
      // Allocate enough space for a prepended underscore and a final '\0'
!     char *cobol_name = static_cast<char *>(xmalloc(strlen(cobol_name_)+2));
      size_t n = 0;
      if( cobol_name_[0] >= '0' && cobol_name_[0] <= '9' )
        {
diff -Nrcpad gcc-15-20250726/gcc/cobol/copybook.h gcc-15-20250809/gcc/cobol/copybook.h
*** gcc-15-20250726/gcc/cobol/copybook.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/copybook.h	Sat Aug  9 22:32:37 2025
*************** class copybook_elem_t {
*** 62,71 ****
    struct copybook_loc_t {
      YYLTYPE loc;
      const char *name;
!     copybook_loc_t() : name(NULL) {}
    } source, library;
    bool suppress;
!   static const char *extensions;
   public:
    struct { bool source, library; } literally;
    int  fd;
--- 62,71 ----
    struct copybook_loc_t {
      YYLTYPE loc;
      const char *name;
!     copybook_loc_t() : loc(), name(NULL) {}
    } source, library;
    bool suppress;
!   static std::list<const char *> suffixes;
   public:
    struct { bool source, library; } literally;
    int  fd;
*************** class copybook_elem_t {
*** 74,85 ****
  
    copybook_elem_t()
      : suppress(false)
      , fd(-1)
      , nsubexpr(0)
      , regex_text(NULL)
!   {
!     literally = {};
!   }
  
    void clear() {
      suppress = false;
--- 74,84 ----
  
    copybook_elem_t()
      : suppress(false)
+     , literally()
      , fd(-1)
      , nsubexpr(0)
      , regex_text(NULL)
!   {}
  
    void clear() {
      suppress = false;
*************** class copybook_elem_t {
*** 91,97 ****
    }
  
    int open_file( const char dir[], bool literally = false );
-   void extensions_add( const char ext[], const char alt[] );
  
    static inline bool is_quote( const char ch ) {
      return ch == '\'' || ch == '"';
--- 90,95 ----
*************** class copybook_elem_t {
*** 102,108 ****
    }
    static char * dequote( const char orig[] ) {
      gcc_assert(quoted(orig));
!     auto name = (char*)xcalloc(1, strlen(orig));
      gcc_assert(name);
      char *tgt = name;
  
--- 100,106 ----
    }
    static char * dequote( const char orig[] ) {
      gcc_assert(quoted(orig));
!     auto name = static_cast<char*>(xcalloc(1, strlen(orig)));
      gcc_assert(name);
      char *tgt = name;
  
*************** private:
*** 131,137 ****
  class uppername_t {
    std::string upper;
   public:
!   uppername_t( const std::string input ) : upper(input) {
      std::transform(input.begin(), input.end(), upper.begin(), 
  		   []( char ch ) { return TOUPPER(ch); } );
    }
--- 129,135 ----
  class uppername_t {
    std::string upper;
   public:
!   explicit uppername_t( const std::string& input ) : upper(input) {
      std::transform(input.begin(), input.end(), upper.begin(), 
  		   []( char ch ) { return TOUPPER(ch); } );
    }
*************** class copybook_t {
*** 185,196 ****
      this->source(loc, name);
  
      for( auto dir : directories ) {
!       if( true ) {
!         dbgmsg("copybook_t::open '%s' OF '%s' %s",
!                book.source.name,
!                dir? dir: ".",
!                book.literally.source? ", literally" : "" );
!       }
        if( (fd = book.open_file(dir, book.literally.source)) != -1 ) break;
      }
      return fd;
--- 183,192 ----
      this->source(loc, name);
  
      for( auto dir : directories ) {
!       dbgmsg("copybook_t::open '%s' OF '%s' %s",
! 	     book.source.name,
! 	     dir? dir: ".",
! 	     book.literally.source? ", literally" : "" );
        if( (fd = book.open_file(dir, book.literally.source)) != -1 ) break;
      }
      return fd;
diff -Nrcpad gcc-15-20250726/gcc/cobol/dts.h gcc-15-20250809/gcc/cobol/dts.h
*** gcc-15-20250726/gcc/cobol/dts.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/dts.h	Sat Aug  9 22:32:37 2025
*************** namespace dts {
*** 33,46 ****
        : input(input)
        , first(NULL), second(NULL), matched(false)
      {
!       static regmatch_t empty = { -1, -1 };
!       regmatch_t& self(*this);
        self = empty;
      }
      csub_match( const char input[], const regmatch_t& m )
        : input(input)
      {
!       regmatch_t& self(*this);
        self = m;
        matched = rm_so != -1;
        first =   rm_so == -1? NULL : input + rm_so;
--- 33,47 ----
        : input(input)
        , first(NULL), second(NULL), matched(false)
      {
!       static regmatch_t empty;
!       empty.rm_so = empty.rm_eo = -1;
!       regmatch_t& self(*this); // cppcheck-suppress constVariableReference
        self = empty;
      }
      csub_match( const char input[], const regmatch_t& m )
        : input(input)
      {
!       regmatch_t& self(*this); // cppcheck-suppress constVariableReference
        self = m;
        matched = rm_so != -1;
        first =   rm_so == -1? NULL : input + rm_so;
*************** namespace dts {
*** 67,73 ****
  #if __cpp_exceptions
          throw std::logic_error(msg);
  #else
-         pattern = NULL;
          cbl_errx("%s", msg);
  #endif
        }
--- 68,73 ----
*************** namespace dts {
*** 77,83 ****
      size_t size() const { return nsubexpr; }
      bool ready() const { return pattern != NULL; }
    private:
!     regex( const regex& ) {}
    };
  
    inline bool regex_search( const char input[], const char *eoinput,
--- 77,83 ----
      size_t size() const { return nsubexpr; }
      bool ready() const { return pattern != NULL; }
    private:
!     regex( const regex& ) = default;
    };
  
    inline bool regex_search( const char input[], const char *eoinput,
*************** namespace dts {
*** 86,109 ****
  #if __cpp_exceptions
        static const char msg[] = "input not NUL-terminated";
        throw std::domain_error( msg );
- #else
-       eoinput = strchr(input, '\0');
  #endif
      }
-     if( eoinput == NULL ) eoinput = strchr(input, '\0');
      auto ncm = re.size();
      cm.resize(ncm);
      std::vector <regmatch_t> cms(ncm);
  
- 
      int erc = regexec( &re, input, ncm, cms.data(), 0 );
      if( erc != 0 ) return false;
      std::transform( cms.begin(), cms.end(), cm.begin(),
                      [input]( const regmatch_t& m ) {
                        return csub_match( input, m );
                      } );
      return true;
    }
! };
  
  
--- 86,115 ----
  #if __cpp_exceptions
        static const char msg[] = "input not NUL-terminated";
        throw std::domain_error( msg );
  #endif
      }
      auto ncm = re.size();
      cm.resize(ncm);
      std::vector <regmatch_t> cms(ncm);
  
      int erc = regexec( &re, input, ncm, cms.data(), 0 );
      if( erc != 0 ) return false;
+ #if  __cpp_exceptions
+     // This is not correct at all, but current use depends on current behavior.
+     // The following line is excluded from the GCC build, which is compiled
+     // without __cpp_exceptions.  parse_copy_directive (for one) depends on
+     // regex_search returning true even if the match is beyond eoinput.
+     if( eoinput < cm[0].second ) return false;
+     // Correct behavior would return match only between input and eoinput.
+     // Because regex(3) uses a NUL terminator, it may match text between
+     // eoinput and the NUL.
+ #endif
      std::transform( cms.begin(), cms.end(), cm.begin(),
                      [input]( const regmatch_t& m ) {
                        return csub_match( input, m );
                      } );
      return true;
    }
! }
  
  
diff -Nrcpad gcc-15-20250726/gcc/cobol/except.cc gcc-15-20250809/gcc/cobol/except.cc
*** gcc-15-20250726/gcc/cobol/except.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/except.cc	Sat Aug  9 22:32:37 2025
***************
*** 43,48 ****
--- 43,49 ----
  #include "gengen.h"
  #include "../../libgcobol/exceptl.h"
  #include "util.h"
+ #include "genutil.h"
  
  #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
  
*************** static const ec_descr_t *
*** 50,56 ****
  ec_type_descr( ec_type_t type ) {
    auto p = std::find( __gg__exception_table, __gg__exception_table_end, type );
    if( p == __gg__exception_table_end ) {
!     cbl_internal_error("no such exception: 0x%04x", type);
    }
    return p;
  }
--- 51,57 ----
  ec_type_descr( ec_type_t type ) {
    auto p = std::find( __gg__exception_table, __gg__exception_table_end, type );
    if( p == __gg__exception_table_end ) {
!     cbl_internal_error("no such exception: 0x%x", type);
    }
    return p;
  }
*************** ec_level( ec_type_t ec ) {
*** 74,176 ****
    return 3;
  }
  
! cbl_enabled_exceptions_t enabled_exceptions;
  
  void
  cbl_enabled_exceptions_t::dump() const {
    if( empty() ) {
!     cbl_message(2,  "cbl_enabled_exceptions_t:  no exceptions" );
      return;
    }
    int i = 1;
!   for( auto& elem : *this ) {
!     cbl_message(2, "cbl_enabled_exceptions_t: %2d  {%s, %s, %s, %zu}",
             i++,
!            elem.enabled?  " enabled" : "disabled",
!            elem.location? "location" : "    none",
             ec_type_str(elem.ec),
!            elem.file );
    }
  }
  
  
! bool
  cbl_enabled_exceptions_t::turn_on_off( bool enabled,
                                         bool location,
                                         ec_type_t type,
!                                        std::set<size_t> files )
  {
!   // A Level 3 EC is added unilaterally; it can't knock out a lower level.
    if( ec_level(type) == 3 ) {
      if( files.empty() ) {
!       auto elem = cbl_enabled_exception_t(enabled, location, type);
!       apply(elem);
!       return true;
      }
  
      for( size_t file : files ) {
!       auto elem = cbl_enabled_exception_t(enabled, location, type, file);
!       apply(elem);
      }
!     return true;
    }
  
!   // std::set::erase_if became available only in C++20.
!   if( enabled ) { // remove any disabled
      if( files.empty() ) {
!       auto p = begin();
!       while( p != end() ) {
! 	if( !p->enabled && ec_cmp(type, p->ec) ) {
! 	  p = erase(p);
! 	} else {
! 	  ++p;
! 	}
!       }
!     } else {
!       for( size_t file: files ) {
!         auto p = begin();
!         while( p != end() ) {
! 	  if( !p->enabled && file == p->file && ec_cmp(type, p->ec) ) {
! 	    p = erase(p);
! 	  } else {
! 	    ++p;
! 	  }
! 	}
!       }
      }
!     auto elem = cbl_enabled_exception_t(enabled, location, type);
!     apply(elem);
!     return true;
    }
    assert(!enabled);
    assert(ec_level(type) < 3);
  
    if( files.empty() ) {
      if( type == ec_all_e ) {
        clear();
!       return true;
      }
!     // Remove any matching Level-2 or Level-3 ECs, regardless of their files.
      auto p = begin();
      while( end() != (p = std::find_if( begin(), end(),
                                         [ec = type]( const auto& elem ) {
                                           return
-                                            elem.enabled &&
                                             elem.ec != ec_all_e &&
                                             ec_cmp(ec, elem.ec); } )) ) {
        erase(p);
      }
!     // Keep the EC as an exception if a higher-level would othewise apply.
      p = std::find_if( begin(), end(),
                        [ec = type]( const auto& elem ) {
                          return
-                           elem.enabled &&
                            (elem.ec == ec_all_e || elem.ec < ec) &&
                            elem.file == 0 &&
                            ec_cmp(ec, elem.ec); } );
      if( p != end() ) {
!       auto elem = cbl_enabled_exception_t(enabled, location, type);
!       apply(elem);
      }
    } else {
      // Remove any matching or lower-level EC for the same file.
--- 75,213 ----
    return 3;
  }
  
! void
! cbl_enabled_exception_t::dump( int i ) const {
!   cbl_message(2, "cbl_enabled_exception_t: %2d  {%s, %s, %zu}",
!               i,
!               location? "location" : "    none",
!               ec_type_str(ec),
!               file );
! }
  
  void
  cbl_enabled_exceptions_t::dump() const {
+   extern int yydebug;
+   int debug = 1;
+   std::swap(debug, yydebug); // dbgmsg needs yydebug
+ 
    if( empty() ) {
!     dbgmsg("cbl_enabled_exceptions_t:  no exceptions" );
!     std::swap(debug, yydebug);
      return;
    }
    int i = 1;
!   for( auto& elem : *this ) { // cppcheck-suppress constVariableReference
!     dbgmsg("cbl_enabled_exceptions_t: %2d  {%s, %s, %lu}",
             i++,
!            elem.location? "with location" : "  no location", 
             ec_type_str(elem.ec),
!            gb4(elem.file) );
    }
+   std::swap(debug, yydebug);
  }
  
+ // cppcheck-suppress-begin [useStlAlgorithm] because why?
+ uint32_t 
+ cbl_enabled_exceptions_t::status() const {
+   uint32_t status_word = 0;
+   for( const auto& ena : *this ) {
+     status_word |= (EC_ALL_E & ena.ec );
+   } 
+   return status_word;
+ }
+ // cppcheck-suppress-end useStlAlgorithm
  
! std::vector<uint64_t>
! cbl_enabled_exceptions_t::encode() const {
!   std::vector<uint64_t> encoded;
!   auto p = std::back_inserter(encoded);
!   for( const auto& ec : *this ) {
!     *p++ = ec.location;
!     *p++ = ec.ec;
!     *p++ = ec.file;
!   }
!   return encoded;
! }
! 
! void
  cbl_enabled_exceptions_t::turn_on_off( bool enabled,
                                         bool location,
                                         ec_type_t type,
!                                        const std::set<size_t>& files )
  {
!   // Update current enabled ECs tree on leaving this function. 
!   class update_parser_t {
!     const cbl_enabled_exceptions_t& ecs;
!   public:
!     explicit update_parser_t(const cbl_enabled_exceptions_t& ecs) : ecs(ecs) {}
!     ~update_parser_t() {
!       tree ena = parser_compile_ecs(ecs.encode());
!       current_enabled_ecs(ena);
!     }
!   } update_parser(*this);
!   
!   // A Level 3 EC is added unilaterally; it can't affect a higher level.
    if( ec_level(type) == 3 ) {
      if( files.empty() ) {
!       auto elem = cbl_enabled_exception_t(location, type);
!       apply(enabled, elem);
!       return;
      }
  
      for( size_t file : files ) {
!       auto elem = cbl_enabled_exception_t(location, type, file);
!       apply(enabled, elem);
      }
!     return;
    }
  
!   // A new Level 1 or Level 2 EC is likewise simply added. 
!   if( enabled ) {
      if( files.empty() ) {
!       auto elem = cbl_enabled_exception_t(location, type);
!       apply(enabled, elem);
!       return;
      }
!     for( size_t file: files ) {
!       auto elem = cbl_enabled_exception_t(location, type, file);
!       apply(enabled, elem);
!     }
!     return;
    }
+ 
    assert(!enabled);
    assert(ec_level(type) < 3);
  
+   /*
+    * >> TURN EC [files] CHECKING OFF
+    */
+   
    if( files.empty() ) {
+     // A Level 1 EC with no files disables all ECs
      if( type == ec_all_e ) {
        clear();
!       return;
      }
!     // Because TURN CHECKING OFF mentioned no files, Remove any matching
!     // Level-2 or Level-3 ECs, regardless of their files.
      auto p = begin();
      while( end() != (p = std::find_if( begin(), end(),
                                         [ec = type]( const auto& elem ) {
                                           return
                                             elem.ec != ec_all_e &&
                                             ec_cmp(ec, elem.ec); } )) ) {
        erase(p);
      }
!     // Keep the EC as an override if a higher-level would othewise apply.
      p = std::find_if( begin(), end(),
                        [ec = type]( const auto& elem ) {
                          return
                            (elem.ec == ec_all_e || elem.ec < ec) &&
                            elem.file == 0 &&
                            ec_cmp(ec, elem.ec); } );
      if( p != end() ) {
!       auto elem = cbl_enabled_exception_t(location, type);
!       apply(enabled, elem);
      }
    } else {
      // Remove any matching or lower-level EC for the same file.
*************** cbl_enabled_exceptions_t::turn_on_off( b
*** 179,225 ****
        while( end() != (p = std::find_if( begin(), end(),
                                           [ec = type, file]( const auto& elem ) {
                                             return
-                                              elem.enabled &&
                                               // ec is higher level and matches
                                               (ec == ec_all_e || ec <= elem.ec) &&
                                               file == elem.file &&
                                               ec_cmp(ec, elem.ec); } )) ) {
          erase(p);
        }
!       // Keep the EC as an exception if a higher-level would othewise apply.
        p = std::find_if( begin(), end(),
                          [ec = type, file]( const auto& elem ) {
                            return
-                             elem.enabled &&
                              (elem.ec == ec_all_e || elem.ec < ec) &&
                              file == elem.file &&
                              ec_cmp(ec, elem.ec); } );
        if( p != end() ) {
!         auto elem = cbl_enabled_exception_t(enabled, location, type, file);
!         apply(elem);
        }
      }
    }
! 
!   return true;
  }
  
  const cbl_enabled_exception_t *
! cbl_enabled_exceptions_t::match( ec_type_t type, size_t file ) {
    auto output = enabled_exception_match( begin(), end(), type, file );
    return output != end()? &*output : NULL;
  }
  
- class choose_declarative {
-   size_t program;
-  public:
-   choose_declarative( size_t program ) : program(program) {}
- 
-   bool operator()( const cbl_declarative_t& dcl ) {
-     return dcl.global || program == symbol_at(dcl.section)->program;
-   }
- };
- 
  bool
  sort_supers_last( const cbl_declarative_t& a, const cbl_declarative_t& b ) {
    if( symbol_at(a.section)->program == symbol_at(b.section)->program ) {
--- 216,249 ----
        while( end() != (p = std::find_if( begin(), end(),
                                           [ec = type, file]( const auto& elem ) {
                                             return
                                               // ec is higher level and matches
                                               (ec == ec_all_e || ec <= elem.ec) &&
                                               file == elem.file &&
                                               ec_cmp(ec, elem.ec); } )) ) {
          erase(p);
        }
!       // Keep the EC as an override if a higher-level would othewise apply.
        p = std::find_if( begin(), end(),
                          [ec = type, file]( const auto& elem ) {
                            return
                              (elem.ec == ec_all_e || elem.ec < ec) &&
                              file == elem.file &&
                              ec_cmp(ec, elem.ec); } );
        if( p != end() ) {
!         auto elem = cbl_enabled_exception_t(location, type, file);
!         apply(enabled, elem);
        }
      }
    }
!   return;
  }
  
  const cbl_enabled_exception_t *
! cbl_enabled_exceptions_t::match( ec_type_t type, size_t file ) const {
    auto output = enabled_exception_match( begin(), end(), type, file );
    return output != end()? &*output : NULL;
  }
  
  bool
  sort_supers_last( const cbl_declarative_t& a, const cbl_declarative_t& b ) {
    if( symbol_at(a.section)->program == symbol_at(b.section)->program ) {
*************** sort_supers_last( const cbl_declarative_
*** 229,294 ****
  }
  
  cbl_field_t * new_temporary_decl();
- 
- /*
-  * For a program, create a "DECLARATIVES" entry in the symbol table,
-  * representing eligible declarative sections in priorty order:
-  * in-program first, followed by any global declaratives in parent
-  * programs.  These decribe the USE criteria declared for each
-  * declarative section.
-  *
-  * The field's initial value is actually an array of
-  * cbl_declarartive_t, in which the first element is unused, except
-  * that array[0].section represents the number of elements, starting
-  * at array[1].
-  *
-  * The returned value is the declarative's symbol index.  It is passed
-  * to match_exception, which scans it for a declarative whose criteria
-  * match the raised exception.  That function returns the
-  * cbl_declarative_t::section, which the program then uses to PERFORM
-  * that section.
-  */
- size_t
- symbol_declaratives_add( size_t program,
-                          const std::list<cbl_declarative_t>& dcls )
- {
-   auto n = dcls.size();
-   if( n == 0 ) return 0;
- 
-   auto blob = new cbl_declarative_t[ 1 + n ];
- 
-   auto pend = std::copy_if( dcls.begin(), dcls.end(), blob + 1,
-                             choose_declarative(program) );
- 
-   std::sort( blob + 1, pend, sort_supers_last );
- 
-   // Overload blob[0].section to be the count.
-   blob[0].section = (pend - blob) - 1;
- 
-   size_t len = reinterpret_cast<char*>(pend)
-              - reinterpret_cast<char*>(blob);
-   assert(len == (blob[0].section + 1) * sizeof(blob[0]));
- 
-   // Construct a "blob" in the symbol table.
-   static int blob_count = 1;
-   char achBlob[32];
-   sprintf(achBlob, "_DECLARATIVE_BLOB%d_", blob_count++);
- 
-   cbl_field_data_t data = {};
-   data.memsize = capacity_cast(len);
-   data.capacity = capacity_cast(len);
-   data.initial = reinterpret_cast<char*>(blob);
-   data.picture = reinterpret_cast<char*>(blob);
-   cbl_field_t field = { 0, FldBlob, FldInvalid, constant_e,
-                         0, 0, 0, cbl_occurs_t(), 0, "",
-                         0, {}, data, NULL };
-   strcpy(field.name, achBlob);
- 
-   auto e = symbol_field_add(program, &field);
-   parser_symbol_add(cbl_field_of(e));
-   return symbol_index(e);
- }
- 
  /*
   * Generate the code to evaluate declaratives.  This is the "secret
   * section" right after END DECLARATIVES.  Its name is
--- 253,258 ----
*************** size_t current_file_index();
*** 311,358 ****
  file_status_t current_file_handled_status();
  
  void
! declarative_runtime_match( cbl_field_t *declaratives, cbl_label_t *lave ) {
    if( getenv("GCOBOL_SHOW") )
      {
      fprintf(stderr, "( %d ) %s: \n", cobol_location().first_line, __func__);
      }
    if( getenv("GCOBOL_TRACE") )
      {
!     gg_printf(">>>>>>( %d )(%s) declaratives:%s lave:%s\n",
                build_int_cst_type(INT, cobol_location().first_line),
                gg_string_literal(__func__),
-               gg_string_literal(declaratives->name),
                gg_string_literal(lave->name),
                NULL_TREE);
      }
    static auto yes = new_temporary(FldConditional);
!   static auto psection = new_temporary(FldNumericBin5);
! 
!   // Send blob, get declarative section index.
!   auto index = new_temporary(FldNumericBin5);
!   parser_match_exception(index, declaratives);
  
!   auto p = declaratives->data.initial;
!   const auto dcls = reinterpret_cast<const cbl_declarative_t *>(p);
!   size_t ndcl = dcls[0].section; // overloaded
  
!   // Compare returned index to each section index.
!   for( auto p = dcls + 1; p < dcls + 1 + ndcl; p++ ) {
!     parser_set_numeric( psection, p->section );
!     parser_relop( yes, index, eq_op, psection );
!     parser_if( yes );
!     auto section = cbl_label_of(symbol_at(p->section));
!     parser_perform(section);
!     parser_label_goto(lave);
!     parser_else();
!     parser_fi();
    }
! 
!   parser_label_label(lave);
! 
!   // A performed declarative may clear the raised exception with RESUME.
!   // If not cleared and fatal, the default handler will exit.
!   parser_check_fatal_exception();
  }
  
  ec_type_t
--- 275,334 ----
  file_status_t current_file_handled_status();
  
  void
! declarative_runtime_match( const std::list<cbl_declarative_t>& declaratives,
! 			   cbl_label_t *lave )
! {
    if( getenv("GCOBOL_SHOW") )
      {
      fprintf(stderr, "( %d ) %s: \n", cobol_location().first_line, __func__);
      }
    if( getenv("GCOBOL_TRACE") )
      {
!     gg_printf(">>>>>>( %d )(%s) declaratives: lave:%s\n",
                build_int_cst_type(INT, cobol_location().first_line),
                gg_string_literal(__func__),
                gg_string_literal(lave->name),
                NULL_TREE);
      }
    static auto yes = new_temporary(FldConditional);
!   static auto isection = new_temporary(FldNumericBin5);
!   static auto index = new_temporary(FldNumericBin5);
  
!   /*
!    * Generate a sequence of COBOL IF statements to match the Declarative's
!    * symbol table index to its performable section.  The entire sequence is
!    * guarded by a runtime IF that evaluates to TRUE only if the "current EC" is
!    * nonzero.  This way, when _DECLARATIVES_EVAL is performed, it does nothing
!    * if no EC was raised.
!    */
!   IF( var_decl_exception_code, ne_op, integer_zero_node ) {
!     // Get declarative section index matching any raised EC.
!     parser_match_exception(index);
  
!     // Compare returned index to each section index.
!     for( const auto& dcl : declaratives ) {
!       parser_set_numeric( isection, dcl.section );
!       parser_relop( yes, index, eq_op, isection );
!       parser_if( yes );
!       auto section = cbl_label_of(symbol_at(dcl.section));
!       parser_push_exception();
!       parser_perform(section);
!       parser_pop_exception();
!       parser_label_goto(lave);
!       parser_else();
!       parser_fi();
!     }
    }
!   ELSE {
!     if( getenv("GCOBOL_TRACE") )
!       {
!         gg_printf(">>>>>>( %d )(%s) __gg__exception_code is zero\n",
!                   build_int_cst_type(INT, cobol_location().first_line),
!                   gg_string_literal(__func__),
!                   NULL_TREE);
!       }
!   }
!   ENDIF
  }
  
  ec_type_t
diff -Nrcpad gcc-15-20250726/gcc/cobol/exceptg.h gcc-15-20250809/gcc/cobol/exceptg.h
*** gcc-15-20250726/gcc/cobol/exceptg.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/exceptg.h	Sat Aug  9 22:32:37 2025
***************
*** 36,61 ****
  extern const char * ec_type_str( ec_type_t type );
  extern ec_disposition_t ec_type_disposition( ec_type_t type );
  
! extern void declarative_runtime_match(cbl_field_t *declaratives,
!                                       cbl_label_t *lave );
  
  static inline ec_disposition_t
  ec_implemented( ec_disposition_t disposition ) {
    return ec_disposition_t( size_t(disposition) & ~0x80 );
  }
  
- 
  // >>TURN arguments
! struct cbl_exception_files_t {
!   ec_type_t type;
!   size_t nfile;
!   size_t *files;
!   bool operator<( const cbl_exception_files_t& that ) {
!     return type < that.type;
    }
- };
  
! size_t symbol_declaratives_add( size_t program,
!                                 const std::list<cbl_declarative_t>& dcls );
  
  #endif
--- 36,102 ----
  extern const char * ec_type_str( ec_type_t type );
  extern ec_disposition_t ec_type_disposition( ec_type_t type );
  
! extern void declarative_runtime_match( const std::list<cbl_declarative_t>& declaratives,
! 				       cbl_label_t *lave );
  
  static inline ec_disposition_t
  ec_implemented( ec_disposition_t disposition ) {
    return ec_disposition_t( size_t(disposition) & ~0x80 );
  }
  
  // >>TURN arguments
! class exception_turn_t;
! bool apply_cdf_turn( const exception_turn_t& turn );
! 
! class exception_turn_t {
!   friend bool apply_cdf_turn( const exception_turn_t& turn );
!   typedef std::list<size_t> filelist_t;
!   typedef std::map<ec_type_t, filelist_t> ec_filemap_t;
!   ec_filemap_t exceptions;
!   bool enabled, location;
!  public:
! 
!   exception_turn_t() : enabled(false), location(false) {};
! 
!   explicit exception_turn_t( ec_type_t ec, bool enabled = true )
!     : enabled(enabled), location(false)
!   {
!     add_exception(ec);
!   } 
! 
!   bool enable( bool enabled ) {
!     return this->enabled = enabled;
!   } 
!   bool enable( bool enabled, bool location ) {
!     this->location = location;
!     return this->enabled = enabled;
!   } 
! 
!   const ec_filemap_t& exception_files() const { return exceptions; }
! 
!   bool add_exception( ec_type_t type, const filelist_t& files = filelist_t() ) {
!     ec_disposition_t disposition = ec_type_disposition(type);
!     if( disposition != ec_implemented(disposition) ) {
! 	cbl_unimplementedw("CDF: exception '%s'", ec_type_str(type));
!     }
!     auto elem = exceptions.find(type);
!     if( elem != exceptions.end() ) return false; // cannot add twice
! 
!     exceptions[type] = files;
!     return true;
    }
  
!   void clear() {
!     for( auto& ex : exceptions ) {
!       ex.second.clear();
!     }
!     exceptions.clear();
!     enabled = location = false;
!   }
! 
! };
  
  #endif
+ 
+ 
+ 
diff -Nrcpad gcc-15-20250726/gcc/cobol/gcobc gcc-15-20250809/gcc/cobol/gcobc
*** gcc-15-20250726/gcc/cobol/gcobc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/gcobc	Sat Aug  9 22:32:37 2025
***************
*** 35,40 ****
--- 35,44 ----
  ##    output set the mode variable.  Everything else is appended to the
  ##    opts variable.
  ##
+ ##  - -fPIC is added to the command line if $mode is "-shared".  That
+ ##    option applies only to "certain machines", per the gcc info
+ ##    manual. For this script to be portable across machines, -fPIC
+ ##    would have to be set more judiciously.
  
  if [ "$COBCPY" ]
  then
*************** fi
*** 73,79 ****
  
  exit_status=0
  skip_arg=
! opts="$copydir ${dialect:--dialect mf} $includes"
  mode=-shared
  
  incomparable="has no comparable gcobol option"
--- 77,83 ----
  
  exit_status=0
  skip_arg=
! opts="$copydir $includes"
  mode=-shared
  
  incomparable="has no comparable gcobol option"
*************** $0 recognizes the following GnuCOBOL cob
*** 103,108 ****
--- 107,115 ----
  $0 recognizes the following GnuCOBOL cobc compilation options:
          -C
          -d, --debug
+         -D
+         -A
+         -Q
          -E
          -g
          --coverage
*************** $0 recognizes the following GnuCOBOL cob
*** 112,122 ****
          --fixed
          -F, --free
          -fimplicit-init
!         -h, --help
!         -save-temps=
!         -save-temps
!         -std=mvs
!         -std=mf
  Options that are the same in gcobol and cobc are passed through verbatim.
  Options that have no analog in gcobol produce a warning message.
  To produce this message, use -HELP.
--- 119,130 ----
          --fixed
          -F, --free
          -fimplicit-init
!          -h, --help
!          -save-temps=
!          -save-temps
!         -std=mvs -std=mvs-strict
!         -std=mf  -std=mf-strict
!         -std=cobol85 -std=cobol2002 -std=cobol2014
  Options that are the same in gcobol and cobc are passed through verbatim.
  Options that have no analog in gcobol produce a warning message.
  To produce this message, use -HELP.
*************** To override, set the gcobol environment
*** 127,137 ****
  EOF
  }
  
  #
! # Simply iterate over the command-line tokens.  We can't use getopts
! # here because it's not designed for single-dash words (e.g. -shared).
  #
- 
  for opt in "$@"
  do
      if [ "$skip_arg" ]
--- 135,148 ----
  EOF
  }
  
+ dialect="mf gnu"
+ out_set=""
+ first=""
+ 
  #
! # Iterate over the command-line tokens.  We can't use getopts here
! # because it's not designed for single-dash words (e.g. -shared).
  #
  for opt in "$@"
  do
      if [ "$skip_arg" ]
*************** do
*** 142,182 ****
  
      if [ "$pending_arg" ]
      then
!         opts="$opts $pending_arg $opt"
          pending_arg=
          continue
      fi
  
      case $opt in
!         -A | -Q) warn "$opt"
!                  ;;
          -b) mode="-shared"
              ;;
          -c) mode="-c"
              ;;
          --conf=*) warn "$opt"
!                   ;;
!         -C) error "$opt $incomparable"
!             ;;
!         -d | --debug) opts="$opts -fcobol-exceptions=EC-ALL"
!                       warn "$opt implies -fstack-check:"
!                       ;;
!         # -D
!         -E) opts="$opts $opt -fsyntax-only"
              ;;
!         -echo) echo="echo"
                 ;;
  
          -fec=* | -fno-ec=*)
              opt="$(echo "$opt" | sed -E 's/-f(no-)?ec=/-f\1cobol-exceptions=EC-/g')"
!             opts="$opts $opt"
!             ;;
!         -ext)
!             pending_arg=$opt
!             ;;
!         -ext=*) opts="$opts $(echo "$opt" | sed 's/-ext=/-copyext ./')"
!                 ;;
! 
          # A.3 Compiler options
          -fsign=*) warn "$opt" ;;
          -ffold-copy=*) warn "$opt" ;;
--- 153,209 ----
  
      if [ "$pending_arg" ]
      then
!         case $pending_arg in
!             -o) output_name="$opt"  # capture named output file
!                 ;;
!         esac
! 
!         opts="$opts $pending_arg$opt"
          pending_arg=
          continue
      fi
  
      case $opt in
! 
!         # pass next parameter to GCC
!         -A)
!             pending_arg=" "
!             ;;
! 
!         # pass next parameter to linker
!         -Q)
!             pending_arg=-Wl,
!             ;;
! 
          -b) mode="-shared"
              ;;
          -c) mode="-c"
              ;;
          --conf=*) warn "$opt"
!                    ;;
!          -C) error "$opt $incomparable"
!              ;;
!         -d | -debug | --debug) opts="$opts -fcobol-exceptions=EC-ALL"
!                        warn "$opt implies -fstack-check:"
!                        ;;
!         # define for preprocessor, note: -D* is directly passed
!         -D)
!             pending_arg=$opt
              ;;
!          -E) opts="$opts $opt -fsyntax-only"
!              ;;
!          -echo) echo="echo"
                 ;;
  
          -fec=* | -fno-ec=*)
              opt="$(echo "$opt" | sed -E 's/-f(no-)?ec=/-f\1cobol-exceptions=EC-/g')"
!              opts="$opts $opt"
!              ;;
!          -ext)
!             pending_arg="$opt "
!              ;;
!          -ext=*) opts="$opts $(echo "$opt" | sed 's/-ext=/-copyext ./')"
!                  ;;
          # A.3 Compiler options
          -fsign=*) warn "$opt" ;;
          -ffold-copy=*) warn "$opt" ;;
*************** do
*** 354,372 ****
          -fnot-register=*) warn "$opt" ;;
          -fregister=*) warn "$opt" ;;
  
!         -fformat=auto ) ;; # gcobol and gnucobol default
  
          -fixed | --fixed | -fformat=fixed | -fformat=variable | -fformat=xcard)
                      # note: variable + xcard are only _more similar_ to fixed than free,
                      # (with changing right-column to 250/255, which isn't supported in gcobol, yet)
!                     opts="$opts -ffixed-form"
!                     ;;
! 
!         -F | -free | --free | -fformat=free | -fformat=* )
!                     # note: "all other formats" are only _more similar_ to free than fixed
!                     opts="$opts -ffree-form"
!                     ;;
  
          -h | --help) opts="$opts --help"
                       ;;
  
--- 381,398 ----
          -fnot-register=*) warn "$opt" ;;
          -fregister=*) warn "$opt" ;;
  
!         -fformat=auto) ;; # gcobol and gnucobol default
  
          -fixed | --fixed | -fformat=fixed | -fformat=variable | -fformat=xcard)
                      # note: variable + xcard are only _more similar_ to fixed than free,
                      # (with changing right-column to 250/255, which isn't supported in gcobol, yet)
!                      opts="$opts -ffixed-form"
!                      ;;
  
+         -F | -free | --free | -fformat=free | -fformat=*)
+                      # note: "all other formats" are only _more similar_ to free than fixed
+                      opts="$opts -ffree-form"
+                      ;;
          -h | --help) opts="$opts --help"
                       ;;
  
*************** do
*** 392,398 ****
              ;;
          # -main
          # -nomain
!         # -o
          # -O0, -Ox
          -O | -O2 | -Os) warn "$opt"
                          ;;
--- 418,430 ----
              ;;
          # -main
          # -nomain
! 
!         -o) pending_arg=$opt
!             ;;
!         -o*) output_name=$opt ## non-empty means do not infer
!              opts="$opts $opt"
!             ;;
! 
          # -O0, -Ox
          -O | -O2 | -Os) warn "$opt"
                          ;;
*************** do
*** 402,425 ****
                         export GCOBOL_TEMPDIR="$opt"
                         ;;
          -save-temps)  export GCOBOL_TEMPDIR="${PWD:-$(pwd)}"
!                       ;;
!         # -shared is identical
  
!         -std=mvs) opts="$opts -dialect ibm"
                    ;;
!         -std=mf)  opts="$opts -dialect mf"
                    ;;
!         -t | -T | -tlines=* | -P | -P=* | -X | --Xref)
!             warn "$opt (no listing)"
              ;;
-         -q | --brief) warn "$opt"
-                       ;;
-         -v | --verbose) opts="$opts -V"
-                         ;;
-         # note: we want -dumpversion to be passed to gcc
-         -V | --version | -version) opts="$opts --version"
-                                         ;;
- 
          # pass through, strangely -Wall is not supported
          -w | -W | -Wextra) opts="$opts $opt"
               ;;
--- 434,470 ----
                         export GCOBOL_TEMPDIR="$opt"
                         ;;
          -save-temps)  export GCOBOL_TEMPDIR="${PWD:-$(pwd)}"
!                        ;;
!          # -shared is identical
  
!         -std=mvs | -std=mvs-strict | -std=ibm | -std=ibm-strict) dialect=ibm
                    ;;
!         -std=mf | -std=mf-strict)  dialect=mf
!                                    ;;
!                       # GnuCOBOL's default and GCC's dialect for GnuCOBOL
!         -std=default) dialect=gnu  
!                       ;;
!                       # GCC COBOL targets COBOL2024 "mostly backward to COBOL85"
!         -std=cobol*)  dialect="" 
!                       ;;
!         -std=*)
!             dialect=""
!             warn "$opt (unkown dialect)"
                    ;;
!         -P | -P=* | -X | --Xref)
!              warn "$opt (no listing)"
!              ;;
!         -t | -T)
!             # note: -P has an _optional_ arg, so we leave it above
!             ignore_arg "$opt (no listing)"
!             ;;
!          -q | --brief) warn "$opt"
!                        ;;
!          -v | --verbose) opts="$opts -V"
!                          ;;
!          # note: we want -dumpversion to be passed to gcc
!          -V | --version | -version) opts="$opts --version"
              ;;
          # pass through, strangely -Wall is not supported
          -w | -W | -Wextra) opts="$opts $opt"
               ;;
*************** do
*** 432,438 ****
          -x) mode=
              ;;
  
!         *) opts="$opts $opt" # pass through
             ;;
      esac
  done
--- 477,501 ----
          -x) mode=
              ;;
  
!         -) output_name=a.out # nonnull to prevent overriding gcc default
!            opts="$opts /dev/stdin"
!            ;;
! 
!            # First file name argument is default output filename.
!         *) if [ -z "$output_name" -a -e "$opt" ]  
!            then
!                output_name=$(basename "${opt%.*}")
!                case $mode in
!                    -c) output_name="$output_name".o
!                        ;;
!                    -shared)
!                        output_name="$output_name".so
!                        opts="$opts -fPIC"
!                        ;;
!                esac
!                opts="$opts -o $output_name"
!            fi    
!            opts="$opts $opt" # pass through
             ;;
      esac
  done
*************** fi
*** 451,456 ****
--- 514,524 ----
  # To override the default gcobol, set the "gcobol" environment variable.
  gcobol="${gcobol:-${0%/*}/gcobol}"
  
+ if [ "$dialect" ]
+ then
+     dialect=$(echo $dialect | sed -E 's/[[:alnum:]]+/-dialect &/g')
+ fi
+ 
  if [ "$echo" ]
  then
      echo $gcobol $mode $opts
*************** then
*** 462,465 ****
      set -x
  fi
  
! exec $gcobol $mode $opts
--- 530,533 ----
      set -x
  fi
  
! exec $gcobol $mode $dialect $opts
diff -Nrcpad gcc-15-20250726/gcc/cobol/gcobol.1 gcc-15-20250809/gcc/cobol/gcobol.1
*** gcc-15-20250726/gcc/cobol/gcobol.1	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/gcobol.1	Sat Aug  9 22:32:37 2025
*************** compiles \*[lang] source code to object
*** 39,45 ****
  executable binary or shared object.  As a GCC component, it accepts
  all options that affect code-generation and linking.  Options specific
  to \*[lang] are listed below.
! .Bl -tag -width \0\0debug
  .It Fl main Ar filename
  .Nm
  will generate a
--- 39,45 ----
  executable binary or shared object.  As a GCC component, it accepts
  all options that affect code-generation and linking.  Options specific
  to \*[lang] are listed below.
! .Bl -tag -width "\0\0debug"
  .It Fl main Ar filename
  .Nm
  will generate a
*************** Define a CDF name (for use with
*** 97,104 ****
  to have the value of
  .Ar expr .
  .It Fl E
! Write the CDF-processed \*[lang] input to standard output in free-form
! reference format.  Certain non-\*[lang]  markers are included in the
  output to indicate where copybook files were included.  For
  line-number consistency with the input, blank lines are retained.
  .Pp
--- 97,105 ----
  to have the value of
  .Ar expr .
  .It Fl E
! Write the CDF-processed \*[lang] input to standard output in
! .Em "free-form reference format".
! Certain non-\*[lang] markers are included in the
  output to indicate where copybook files were included.  For
  line-number consistency with the input, blank lines are retained.
  .Pp
*************** and
*** 147,159 ****
  in that order.
  .It Fl ffixed-form
  Use strict
! .Em "Reference Format"
  in reading the \*[lang] input:
  72-character lines, with a 6-character sequence area, and an indicator
  column.  Data past column 72 are ignored.
  .It Fl ffree-form
  Force the \*[lang] input to be interpreted as
! .Em "free format" .
  Line breaks are insignificant, except that
  .Ql *
  at the start of a line acts as a comment marker.
--- 148,160 ----
  in that order.
  .It Fl ffixed-form
  Use strict
! .Em "fixed-form reference format"
  in reading the \*[lang] input:
  72-character lines, with a 6-character sequence area, and an indicator
  column.  Data past column 72 are ignored.
  .It Fl ffree-form
  Force the \*[lang] input to be interpreted as
! .Em "free-form reference format".
  Line breaks are insignificant, except that
  .Ql *
  at the start of a line acts as a comment marker.
*************** the entire program could appear on one l
*** 187,198 ****
  .Pp
  By default,
  .Nm
! auto-detects the source code format by examining the
! .Em "sequence number area"
! of the first line of the first file: if those characters are all
! digits or blanks, the file is assumed to be in
! .Em "reference format" ,
  with the indicator area in column 7.
  .Pp
  .
  .It Fl fcobol-exceptions Ar exception Op Ns , Ns Ar exception Ns ...
--- 188,208 ----
  .Pp
  By default,
  .Nm
! auto-detects the source code format by examining the line that
! contains the text "program-id".  When there are characters on past column 72 
! on that line, the file is assumed to be in 
! .Em "extended source format",
  with the indicator area in column 7.
+ Otherwise, columns 1-6 are examined. If those characters are all digits
+ or blanks, the file is assumed to be in
+ .Em "fixed-form reference format",
+ also with the indicator in column 7.
+ If not auto-detected as 
+ .Em "fixed-form reference format" 
+ or 
+ .Em "extended source format",
+ the file is assumed to be in 
+ .Em "free-form reference format".
  .Pp
  .
  .It Fl fcobol-exceptions Ar exception Op Ns , Ns Ar exception Ns ...
*************** statement, regardless of compile-time co
*** 577,582 ****
--- 587,607 ----
  ..
  .
  .Ss Implemented Exception Conditions
+ By default, per ISO, no EC is enabled.  Implemented ECs may be enabled
+ on the command line or via the
+ .Sy TURN
+ directive. Any attempt to enable an EC that is not implemented is
+ treated as an error.
+ .Pp
+ An enabled EC not handled by a
+ .Sy DECLARATIVE
+ is written to the system log and to standard error.  (The authors
+ intend to make that an option.)  A fatal EC not handled with
+ .Sy RESUME
+ ends with a call to
+ .Xr abort 3
+ and process termination. 
+ .Pp
  Not all Exception Conditions are implemented.  Any attempt to enable
  an EC that that is not implemented produces a warning message.
  The following are implemented:
*************** or
*** 903,913 ****
  has no effect; the two are interchangeable.
  ..
  .
! .Ss Compiler-Directing Facility (CDF)
  The CDF should be used with caution because no comprehensive test
! suite has been identified.
  .
! .Ss Conditional Compilation
  .Bl -tag -width >>DEFINE
  .It >> Ns Sy DEFINE Ar name Sy AS Bro Ar expression Li | Sy PARAMETER Brc Op Sy OVERRIDE
  Define
--- 928,1017 ----
  has no effect; the two are interchangeable.
  ..
  .
! .Sh COMPILER-DIRECTING FACILITY
  The CDF should be used with caution because no comprehensive test
! suite has been identified.  
  .
! .Ss CDF Text Manipulation
! .Bl -tag -width >>DEFINE
! .It Sy COPY Ar copybook Li Oo OF|BY Ar library Oc Oo Sy REPLACING ... Oc
! If
! .Ar copybook
! is a literal, it treated a literal filename, which either does or does not exist.  If
! .Ar copybook
! is a \*[lang] word,
! .Nm
! looks first for an environment variable named
! .Va copybook
! and, if found, uses the contents of that variable as the name of the
! copybook file.  If that file does not exist, it continues looking for
! a file named one of:
! .sp
! .Bl -bullet -compact -offset 5n
! .It
! .Pa copybook
! (literally)
! .It
! .Pa copybook.cpy
! .It
! .Pa copybook.CPY
! .It
! .Pa copybook.cbl
! .It
! .Pa copybook.CBL
! .It
! .Pa copybook.cob
! .It
! .Pa copybook.COB
! .El
! .sp
! in that order.  It looks first in the same directory as the source
! code file, and then in any
! .Ar copybook-path
! named with the
! .Fl I
! option.
! .
! .\" FIXME: need escape mechanism for directories with ':' in the name.
! .Ar copybook-path
! may (like the shell's
! .Ev PATH
! variable) be a colon-separated list.
! The
! .Fl I
! option may occur multiple times on the command line.  Each successive
! .Ar copybook-path
! is concatenated to previous ones.
! Relative paths (having no leading
! .Ql / Ns
! \&)
! are searched relative to the compiler's current working directory.
! .Pp
! For example,
! .D1 \&
! .D1 Fl I Li /usr/local/include:include
! .D1 \&
! searches first the directory where the \*[lang] program is found, next in
! .Pa /usr/local/include ,
! and finally in an
! .Pa include
! subdirectory of the directory from which
! .Nm
! was invoked.
! .Pp
! For the
! .Sy REPLACING
! phrase, both the modern pseudo-text and the \*[lang]/85 forms are
! recognized. (The older forms are used in the NIST CCVS/85 test suite.) 
! .It Sy REPLACE ...
! .Nm
! supports the full ISO
! .Sy REPLACE
! syntax.  
! .El
! .
! .Ss CDF Directives
! .\"Bl -tag -width >>PROPAGATE
  .Bl -tag -width >>DEFINE
  .It >> Ns Sy DEFINE Ar name Sy AS Bro Ar expression Li | Sy PARAMETER Brc Op Sy OVERRIDE
  Define
*************** is supported. Boolean literals are not s
*** 949,958 ****
  .
  .It >> Ns Sy EVALUATE
  Not implemented.
- .El
- .
- .Ss Other CDF Directives
- .Bl -tag -width >>PROPAGATE
  .It >> Ns Sy CALL-CONVENTION Ar convention
  .Ar convention
  may be one of:
--- 1053,1058 ----
*************** to standard error as a warning message.
*** 1000,1008 ****
  may be one of:
  .Bl -tag -compact
  .It Sy FIXED
! Source conforms to \*[lang] Reference Format with unlimited line length.
  .It Sy FREE
! Line endings and indentation are ignored by the compiler, except that a
  .Ql "*"
  at the beginning of a line is recognized as a comment.
  .El
--- 1100,1111 ----
  may be one of:
  .Bl -tag -compact
  .It Sy FIXED
! Source conforms to \*[lang] 
! .Em "fixed-form reference format"
! with unlimited line length.
  .It Sy FREE
! Source conforms to \*[lang] 
! .Em "free-form reference format".
  .Ql "*"
  at the beginning of a line is recognized as a comment.
  .El
*************** Not implemented.
*** 1023,1028 ****
--- 1126,1149 ----
  Not implemented.
  .It >> Ns Sy PROPAGATE
  Not implemented.
+ .It >> Ns Sy PUSH Ar directive
+ .It >> Ns Sy POP  Ar directive
+ With
+ .Sy PUSH ,
+ push CDF state onto a stack.
+ With
+ .Sy POP ,
+ return to the prior pushed state.
+ .Ar directive
+ may be one of
+ .Bl -tag -compact
+ .It Sy CALL-CONVENTION
+ .It Sy COBOL-WORDS
+ .It Sy DEFINE
+ .It Sy SOURCE FORMAT
+ .It Sy TURN
+ .El
+ .
  .It >> Ns Sy TURN Oo
  .Ar ec Oo Ar file Li ... Oc ...
  .Oc Sy CHECKING Bro Oo Sy ON Oc Oo Oo Sy WITH Oc Sy LOCATION Oc | Sy OFF Brc
*************** the directive must appear before
*** 1073,1148 ****
  .Pp
  To test a feature-set variable, use
  .Dl >>IF Ar feature Li DEFINED
- ..
- .Ss Copybooks
- .Nm
- supports the CDF
- .Sy COPY
- statement, with or without its
- .Sy REPLACING
- component.  For any statement
- .sp
- .D1 COPY Ar copybook
- .sp
- .Nm
- looks first for an environment variable named
- .Va copybook
- and, if found, uses the contents of that variable as the name of the
- copybook file.  If that file does not exist, it continues looking for
- a file named one of:
- .sp
- .Bl -bullet -compact -offset 5n
- .It
- .Pa copybook
- (literally)
- .It
- .Pa copybook.cpy
- .It
- .Pa copybook.CPY
- .It
- .Pa copybook.cbl
- .It
- .Pa copybook.CBL
- .It
- .Pa copybook.cob
- .It
- .Pa copybook.COB
- .El
- .sp
- in that order.  It looks first in the same directory as the source
- code file, and then in any
- .Ar copybook-path
- named with the
- .Fl I
- option.
- .
- .\" FIXME: need escape mechanism for directories with ':' in the name.
- .Ar copybook-path
- may (like the shell's
- .Ev PATH
- variable) be a colon-separated list.
- .
- The
- .Fl I
- option may occur multiple times on the command line.  Each successive
- .Ar copybook-path
- is concatenated to previous ones.
- Relative paths (having no leading
- .Ql / Ns
- \&)
- are searched relative to the compiler's current working directory.
- .Pp
- For example,
- .D1 \&
- .D1 Fl I Li /usr/local/include:include
- .D1 \&
- searches first the directory where the \*[lang] program is found, next in
- .Pa /usr/local/include ,
- and finally in an
- .Pa include
- subdirectory of the directory from which
- .Nm
- was invoked.
  .
  .Ss Intrinsic functions
  .Nm
--- 1194,1199 ----
*************** others. They are listed alphabetically b
*** 1152,1205 ****
  .It
  ABS ACOS ANNUITY ASIN ATAN
  .It
! BASECONVERT BIT_OF BIT_TO_CHAR BOOLEAN_OF_INTEGER BYTE_LENGTH
  .It
! CHAR CHAR_NATIONAL COMBINED_DATETIME CONCAT CONVERT COS CURRENT_DATE
  .It
! DATE_OF_INTEGER DATE_TO_YYYYMMDD DAY_OF_INTEGER DAY_TO_YYYYDDD DISPLAY_OF
  .It
! E EXCEPTION_FILE
! EXCEPTION_FILE_N EXCEPTION_LOCATION EXCEPTION_LOCATION_N
! EXCEPTION_STATEMENT EXCEPTION_STATUS EXP EXP10
  .It
! FACTORIAL FIND_STRING
! FORMATTED_CURRENT_DATE FORMATTED_DATE FORMATTED_DATETIME
! FORMATTED_TIME FRACTION_PART
  .It
! HEX_OF HEX_TO_CHAR HIGHEST_ALGEBRAIC
  .It
! INTEGER INTEGER_OF_BOOLEAN INTEGER_OF_DATE INTEGER_OF_DAY
! INTEGER_OF_FORMATTED_DATE INTEGER_PART
  .It
! LENGTH LOCALE_COMPARE
! LOCALE_DATE LOCALE_TIME LOCALE_TIME_FROM_SECONDS LOG LOG10 LOWER_CASE
! LOWEST_ALGEBRAIC
  .It
! MAX MEAN MEDIAN MIDRANGE MIN MOD MODULE_NAME
  .It
! NATIONAL_OF NUMVAL NUMVAL_C NUMVAL_F ORD
  .It
! ORD_MAX ORD_MIN
  .It
! PI PRESENT_VALUE
  .It
  RANDOM RANGE REM REVERSE
  .It
! SECONDS_FROM_FORMATTED_TIME
! SECONDS_PAST_MIDNIGHT SIGN SIN SMALLEST_ALGEBRAIC SQRT
! STANDARD_COMPARE STANDARD_DEVIATION SUBSTITUTE SUM
  .It
! TAN TEST_DATE_YYYYMMDD TEST_DAY_YYYYDDD TEST_FORMATTED_DATETIME
! TEST_NUMVAL TEST_NUMVAL_C TEST_NUMVAL_F TRIM
  .It
! ULENGTH UPOS UPPER_CASE
  USUBSTR USUPPLEMENTARY UUID4 UVALID UWIDTH
  .It
  VARIANCE
  .It
! WHEN_COMPILED
  .It
! YEAR_TO_YYYY
  .El
  .
  .Ss Binary floating point DISPLAY
--- 1203,1256 ----
  .It
  ABS ACOS ANNUITY ASIN ATAN
  .It
! BASECONVERT BIT-OF BIT-TO-CHAR BOOLEAN-OF-INTEGER BYTE-LENGTH
  .It
! CHAR CHAR-NATIONAL COMBINED-DATETIME CONCAT CONVERT COS CURRENT-DATE
  .It
! DATE-OF-INTEGER DATE-TO-YYYYMMDD DAY-OF-INTEGER DAY-TO-YYYYDDD DISPLAY-OF
  .It
! E EXCEPTION-FILE
! EXCEPTION-FILE-N EXCEPTION-LOCATION EXCEPTION-LOCATION-N
! EXCEPTION-STATEMENT EXCEPTION-STATUS EXP EXP10
  .It
! FACTORIAL FIND-STRING
! FORMATTED-CURRENT-DATE FORMATTED-DATE FORMATTED-DATETIME
! FORMATTED-TIME FRACTION-PART
  .It
! HEX-OF HEX-TO-CHAR HIGHEST-ALGEBRAIC
  .It
! INTEGER INTEGER-OF-BOOLEAN INTEGER-OF-DATE INTEGER-OF-DAY
! INTEGER-OF-FORMATTED-DATE INTEGER-PART
  .It
! LENGTH LOCALE-COMPARE
! LOCALE-DATE LOCALE-TIME LOCALE-TIME-FROM-SECONDS LOG LOG10 LOWER-CASE
! LOWEST-ALGEBRAIC
  .It
! MAX MEAN MEDIAN MIDRANGE MIN MOD MODULE-NAME
  .It
! NATIONAL-OF NUMVAL NUMVAL-C NUMVAL-F ORD
  .It
! ORD-MAX ORD-MIN
  .It
! PI PRESENT-VALUE
  .It
  RANDOM RANGE REM REVERSE
  .It
! SECONDS-FROM-FORMATTED-TIME
! SECONDS-PAST-MIDNIGHT SIGN SIN SMALLEST-ALGEBRAIC SQRT
! STANDARD-COMPARE STANDARD-DEVIATION SUBSTITUTE SUM
  .It
! TAN TEST-DATE-YYYYMMDD TEST-DAY-YYYYDDD TEST-FORMATTED-DATETIME
! TEST-NUMVAL TEST-NUMVAL-C TEST-NUMVAL-F TRIM
  .It
! ULENGTH UPOS UPPER-CASE
  USUBSTR USUPPLEMENTARY UUID4 UVALID UWIDTH
  .It
  VARIANCE
  .It
! WHEN-COMPILED
  .It
! YEAR-TO-YYYY
  .El
  .
  .Ss Binary floating point DISPLAY
*************** stores and converts
*** 1279,1285 ****
  numbers.  Converting the floating-point value to the numeric display
  value 0055110 is done by multiplying 55.109999...\& by 1,000 and then
  truncating the result to an integer.  And it turns out that even
! though 55.11 can’t be represented in floating-point as an exact value,
  the product of the multiplication, 55110, is an exact value.
  .Pp
  In cases where it is important for conversions to have predictable
--- 1330,1336 ----
  numbers.  Converting the floating-point value to the numeric display
  value 0055110 is done by multiplying 55.109999...\& by 1,000 and then
  truncating the result to an integer.  And it turns out that even
! though 55.11 can't be represented in floating-point as an exact value,
  the product of the multiplication, 55110, is an exact value.
  .Pp
  In cases where it is important for conversions to have predictable
*************** specified for a calculation, then the in
*** 1310,1316 ****
  .
  .Ss A warning about binary floating point comparison
  The cardinal rule when doing comparisons involving floating-point
! values: Never, ever, test for equality.  It’s just not worth the hassle.
  .Pp
  For example:
  .Bd -literal
--- 1361,1367 ----
  .
  .Ss A warning about binary floating point comparison
  The cardinal rule when doing comparisons involving floating-point
! values: Never, ever, test for equality.  It's just not worth the hassle.
  .Pp
  For example:
  .Bd -literal
*************** and you really test the code.  And then
*** 1346,1352 ****
  .Pp
  Finally, it is observably the case that the
  .Nm
! implementations of floating-point conversions and comparisons don’t
  precisely match the behavior of other \*[lang] compilers.
  .Pp
  You have been warned.
--- 1397,1403 ----
  .Pp
  Finally, it is observably the case that the
  .Nm
! implementations of floating-point conversions and comparisons don't
  precisely match the behavior of other \*[lang] compilers.
  .Pp
  You have been warned.
diff -Nrcpad gcc-15-20250726/gcc/cobol/gcobolspec.cc gcc-15-20250809/gcc/cobol/gcobolspec.cc
*** gcc-15-20250726/gcc/cobol/gcobolspec.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/gcobolspec.cc	Sat Aug  9 22:32:37 2025
*************** static bool need_libgcobol = true;
*** 82,88 ****
  // #define NOISY 1
  
  static void
! append_arg(const struct cl_decoded_option arg)
    {
  #ifdef NOISY
    static int counter = 1;
--- 82,88 ----
  // #define NOISY 1
  
  static void
! append_arg(const cl_decoded_option& arg)
    {
  #ifdef NOISY
    static int counter = 1;
*************** lang_specific_driver (struct cl_decoded_
*** 478,484 ****
--- 478,487 ----
  ////        break;
  ////#endif
        case OPT_static:
+ #if defined (HAVE_LD_STATIC_DYNAMIC)
+         append_arg(decoded_options[i]);
          static_in_general = true;
+ #endif        
          break;
  
        default:
*************** lang_specific_driver (struct cl_decoded_
*** 506,522 ****
      need_libgcobol = false;
      }
  
    if( need_libgcobol )
      {
      add_arg_lib(COBOL_LIBRARY, static_libgcobol);
      }
    if( need_libdl )
      {
!     add_arg_lib(DL_LIBRARY, static_in_general);
      }
    if( need_libstdc )
      {
!     add_arg_lib(STDCPP_LIBRARY, static_in_general);
      }
  
    if( prior_main )
--- 509,531 ----
      need_libgcobol = false;
      }
  
+   if( static_in_general )
+     {
+     // These two options interfere with each other.
+     static_libgcobol = false;
+     }
+ 
    if( need_libgcobol )
      {
      add_arg_lib(COBOL_LIBRARY, static_libgcobol);
      }
    if( need_libdl )
      {
!     add_arg_lib(DL_LIBRARY, false);
      }
    if( need_libstdc )
      {
!     add_arg_lib(STDCPP_LIBRARY, false);
      }
  
    if( prior_main )
*************** lang_specific_driver (struct cl_decoded_
*** 529,535 ****
    // cl_decoded_option
  
    size_t new_option_count = new_opt.size();
!   struct cl_decoded_option *new_options = XNEWVEC (struct cl_decoded_option, new_option_count);
  
    for(size_t i=0; i<new_option_count; i++)
      {
--- 538,545 ----
    // cl_decoded_option
  
    size_t new_option_count = new_opt.size();
!   struct cl_decoded_option *new_options = XNEWVEC (struct cl_decoded_option,
!                                                     new_option_count);
  
    for(size_t i=0; i<new_option_count; i++)
      {
*************** lang_specific_driver (struct cl_decoded_
*** 539,553 ****
  #ifdef NOISY
    verbose = true;
  #endif
!   if( verbose && new_options != original_options )
      {
!     fprintf(stderr, _("Driving: (%ld)\n"), new_option_count);
      for(size_t i=0; i<new_option_count; i++)
        {
        fprintf(stderr,
!               "   [%2ld] %4ld %s\n",
!               i,
!               new_options[i].opt_index,
                new_options[i].orig_option_with_args_text);
        }
      fprintf (stderr, "\n");
--- 549,564 ----
  #ifdef NOISY
    verbose = true;
  #endif
!   if( verbose && new_options != original_options ) // cppcheck-suppress knownConditionTrueFalse
      {
!     fprintf(stderr, _("Driving: (" HOST_SIZE_T_PRINT_DEC ")\n"),
!             (fmt_size_t)new_option_count);
      for(size_t i=0; i<new_option_count; i++)
        {
        fprintf(stderr,
!               "   [%2" GCC_PRISZ "d] %4" GCC_PRISZ "d %s\n",
!               (fmt_size_t)i,
!               (fmt_size_t)new_options[i].opt_index,
                new_options[i].orig_option_with_args_text);
        }
      fprintf (stderr, "\n");
diff -Nrcpad gcc-15-20250726/gcc/cobol/genapi.cc gcc-15-20250809/gcc/cobol/genapi.cc
*** gcc-15-20250726/gcc/cobol/genapi.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/genapi.cc	Sat Aug  9 22:32:37 2025
***************
*** 27,32 ****
--- 27,33 ----
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
+ 
  #include "cobol-system.h"
  
  #include "coretypes.h"
*************** extern int yylineno;
*** 60,66 ****
  #define TSI_BACK (tsi_last(current_function->statement_list_stack.back()))
  
  extern char *cobol_name_mangler(const char *cobol_name);
! static tree gg_attribute_bit_get(struct cbl_field_t *var, cbl_field_attr_t bits);
  
  static tree label_list_out_goto;
  static tree label_list_out_label;
--- 61,68 ----
  #define TSI_BACK (tsi_last(current_function->statement_list_stack.back()))
  
  extern char *cobol_name_mangler(const char *cobol_name);
! static tree gg_attribute_bit_get( struct cbl_field_t *var,
!                                   cbl_field_attr_t bits);
  
  static tree label_list_out_goto;
  static tree label_list_out_label;
*************** bool bSHOW_PARSE = getenv("GCOBOL_SHOW")
*** 80,85 ****
--- 82,89 ----
  bool show_parse_sol = true;
  int  show_parse_indent = 0;
  
+ static bool sv_is_i_o = false;
+ 
  #define DEFAULT_LINE_NUMBER 2
  
  #ifdef LINE_TICK
*************** typedef struct TREEPLET
*** 114,130 ****
  
  static
  void
! treeplet_fill_source(TREEPLET &treeplet, cbl_refer_t &refer)
    {
    treeplet.pfield = gg_get_address_of(refer.field->var_decl_node);
!   treeplet.offset = refer_offset_source(refer);
    treeplet.length = refer_size_source(refer);
    }
  
  tree file_static_variable(tree type, const char *v)
    {
!   // This routine returns a reference to an already-defined file_static variable
!   // You need to know the type that was used for the definition.
    return gg_declare_variable(type, v, NULL, vs_file_static);
    }
  
--- 118,134 ----
  
  static
  void
! treeplet_fill_source(TREEPLET &treeplet, const cbl_refer_t &refer)
    {
    treeplet.pfield = gg_get_address_of(refer.field->var_decl_node);
!   treeplet.offset = refer_offset(refer);
    treeplet.length = refer_size_source(refer);
    }
  
  tree file_static_variable(tree type, const char *v)
    {
!   // This routine returns a reference to an already-defined file_static
!   // variable. You need to know the type that was used for the definition.
    return gg_declare_variable(type, v, NULL, vs_file_static);
    }
  
*************** static void move_helper(tree        size
*** 140,148 ****
  // set using -f-trace-debug, defined in lang.opt
  int f_trace_debug;
  
! // When doing WRITE statements, the IBM Language Reference and the ISO/IEC_2014
! // standard specify that when the ADVANCING clause is omitted, the default is
! // AFTER ADVANCING 1 LINE.
  //
  // MicroFocus and GnuCOBOL state that the default is BEFORE ADVANCING 1 LINE
  //
--- 144,152 ----
  // set using -f-trace-debug, defined in lang.opt
  int f_trace_debug;
  
! // When doing WRITE statements, the IBM Language Reference and the
! // ISO/IEC_2014 standard specify that when the ADVANCING clause is omitted, the
! // default isAFTER ADVANCING 1 LINE.
  //
  // MicroFocus and GnuCOBOL state that the default is BEFORE ADVANCING 1 LINE
  //
*************** const char *gv_trace_switch = NULL;
*** 187,192 ****
--- 191,199 ----
  char const *bTRACE1 = NULL;
  tree trace_handle;
  tree trace_indent;
+ 
+ // This variable is set to true when the output cursor is known to be at the
+ // start-of-line.
  bool cursor_at_sol = true;
  
  static void
*************** trace1_init()
*** 199,205 ****
      trace_handle = gg_define_variable(INT, "trace_handle", vs_static);
      trace_indent = gg_define_variable(INT, "trace_indent", vs_static);
  
!     bTRACE1 = getenv("GCOBOL_TRACE") ? getenv("GCOBOL_TRACE") : gv_trace_switch;
  
      if( bTRACE1 && strcmp(bTRACE1, "0") != 0 )
        {
--- 206,212 ----
      trace_handle = gg_define_variable(INT, "trace_handle", vs_static);
      trace_indent = gg_define_variable(INT, "trace_indent", vs_static);
  
!     bTRACE1 = getenv("GCOBOL_TRACE") ? getenv("GCOBOL_TRACE") :gv_trace_switch;
  
      if( bTRACE1 && strcmp(bTRACE1, "0") != 0 )
        {
*************** trace1_init()
*** 226,231 ****
--- 233,245 ----
      }
    }
  
+ static
+ void
+ insert_nop(int n)
+   {
+   gg_assign(var_decl_nop, build_int_cst_type(INT, n));
+   }
+ 
  static void
  create_cblc_string_variable(const char *var_name, const char *var_contents)
    {
*************** build_main_that_calls_something(const ch
*** 263,275 ****
      SHOW_PARSE_END
      }
  
!   gg_set_current_line_number(DEFAULT_LINE_NUMBER);
  
!   gg_define_function( INT,
!                       "main",
!                       INT, "argc",
!                       build_pointer_type(CHAR_P), "argv",
!                       NULL_TREE);
  
    // Pick up pointers to the input parameters:
    // First is the INT which is the number of argv[] entries
--- 277,298 ----
      SHOW_PARSE_END
      }
  
!   tree function_decl = gg_define_function( INT,
!                                            "main",
!                                            "main",
!                                            INT, "argc",
!                                            build_pointer_type(CHAR_P), "argv",
!                                            NULL_TREE);
  
!   // Modify the default settings for main(), as empirically determined from
!   // examining C/C+_+ compilations.  (See the comment for gg_build_fn_decl()).
!     TREE_ADDRESSABLE(function_decl) = 0;
!     TREE_USED(function_decl) = 0;
!     TREE_NOTHROW(function_decl) = 0;
!     TREE_STATIC(function_decl) = 1;
!     DECL_EXTERNAL (function_decl) = 0;
!     TREE_PUBLIC (function_decl) = 1;
!     DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(function_decl) = 1;
  
    // Pick up pointers to the input parameters:
    // First is the INT which is the number of argv[] entries
*************** build_main_that_calls_something(const ch
*** 307,313 ****
                                         argc,
                                         argv,
                                         NULL_TREE)));
-   strncpy(ach_cobol_entry_point, psz, sizeof(ach_cobol_entry_point)-1);
    free(psz);
    gg_finalize_function();
    }
--- 330,335 ----
*************** level_88_helper(size_t parent_capacity,
*** 347,354 ****
                  size_t &returned_size)
    {
    // We return a MALLOCed return value, which the caller must free.
!   char *retval  = (char *)xmalloc(parent_capacity + 64);
!   char *builder = (char *)xmalloc(parent_capacity + 64);
    size_t nbuild = 0;
  
    cbl_figconst_t figconst = cbl_figconst_of( elem.name());
--- 369,379 ----
                  size_t &returned_size)
    {
    // We return a MALLOCed return value, which the caller must free.
!   char *retval  = static_cast<char *>(xmalloc(parent_capacity + 64));
!   gcc_assert(retval);
!   char *builder = static_cast<char *>(xmalloc(parent_capacity + 64));
!   gcc_assert(builder);
! 
    size_t nbuild = 0;
  
    cbl_figconst_t figconst = cbl_figconst_of( elem.name());
*************** level_88_helper(size_t parent_capacity,
*** 389,395 ****
  
      // Pick up the string
      size_t first_name_length  = elem.size();
!     char *first_name = (char *)xmalloc(first_name_length + 1);
      memcpy(first_name, elem.name(), first_name_length);
      first_name[first_name_length] = '\0';
  
--- 414,421 ----
  
      // Pick up the string
      size_t first_name_length  = elem.size();
!     char *first_name = static_cast<char *>(xmalloc(first_name_length + 1));
!     gcc_assert(first_name);
      memcpy(first_name, elem.name(), first_name_length);
      first_name[first_name_length] = '\0';
  
*************** level_88_helper(size_t parent_capacity,
*** 427,433 ****
          nbuild += first_name_length;
          }
        }
!     returned_size = sprintf(retval, "%zdA", nbuild);
      memcpy(retval + returned_size, builder, nbuild);
      returned_size += nbuild;
      free(first_name);
--- 453,460 ----
          nbuild += first_name_length;
          }
        }
!     returned_size = sprintf(retval, HOST_SIZE_T_PRINT_DEC "A",
!                             (fmt_size_t)nbuild);
      memcpy(retval + returned_size, builder, nbuild);
      returned_size += nbuild;
      free(first_name);
*************** get_level_88_domain(size_t parent_capaci
*** 465,471 ****
    // Numerics are converted to strings, and handled as above
  
    size_t retval_capacity = 64;
!   char *retval = (char *)xmalloc(retval_capacity);
    size_t output_index = 0;
  
    // Loop through the provided domains:
--- 492,498 ----
    // Numerics are converted to strings, and handled as above
  
    size_t retval_capacity = 64;
!   char *retval = static_cast<char *>(xmalloc(retval_capacity));
    size_t output_index = 0;
  
    // Loop through the provided domains:
*************** get_level_88_domain(size_t parent_capaci
*** 482,489 ****
      if( output_index + stream_len > retval_capacity )
        {
        retval_capacity *= 2;
!       retval = (char *)xrealloc(retval, retval_capacity);
        }
      memcpy(retval + output_index, stream, stream_len);
      output_index += stream_len;
      returned_size += stream_len;
--- 509,517 ----
      if( output_index + stream_len > retval_capacity )
        {
        retval_capacity *= 2;
!       retval = static_cast<char *>(xrealloc(retval, retval_capacity));
        }
+     gcc_assert(retval);
      memcpy(retval + output_index, stream, stream_len);
      output_index += stream_len;
      returned_size += stream_len;
*************** get_level_88_domain(size_t parent_capaci
*** 494,501 ****
      if( output_index + stream_len > retval_capacity )
        {
        retval_capacity *= 2;
!       retval = (char *)xrealloc(retval, retval_capacity);
        }
      memcpy(retval + output_index, stream, stream_len);
      output_index += stream_len;
      returned_size += stream_len;
--- 522,530 ----
      if( output_index + stream_len > retval_capacity )
        {
        retval_capacity *= 2;
!       retval = static_cast<char *>(xrealloc(retval, retval_capacity));
        }
+     gcc_assert(retval);
      memcpy(retval + output_index, stream, stream_len);
      output_index += stream_len;
      returned_size += stream_len;
*************** get_class_condition_string(cbl_field_t *
*** 568,574 ****
        {
        if( strlen(ach) > sizeof(ach) - 1000  )
          {
!         cbl_internal_error("Nice try, but you can't fire me. I quit!");
          }
  
        // We are working with unquoted strings that contain the values 1 through
--- 597,603 ----
        {
        if( strlen(ach) > sizeof(ach) - 1000  )
          {
!         cbl_internal_error("Nice try, but you cannot fire me.");
          }
  
        // We are working with unquoted strings that contain the values 1 through
*************** get_class_condition_string(cbl_field_t *
*** 593,605 ****
        // Since the first.name is a single character, we can do this as
        // a single-character pair.
  
!       // Keep in mind that the single character might be a two-byte UTF-8
!       // codepoint
!         uint8_t ch1 = domain->first.name()[0];
!         uint8_t ch2 = domain->last.name()[0];
! 
!         gcc_assert(first_name_length <= 2);
!         gcc_assert(last_name_length <= 2);
  
        char *p2;
        size_t one;
--- 622,629 ----
        // Since the first.name is a single character, we can do this as
        // a single-character pair.
  
!       uint8_t ch1;
!       uint8_t ch2;
  
        char *p2;
        size_t one;
*************** struct called_tree_t {
*** 691,720 ****
      tree node;
  
     public:
!     match_tree( tree node ) : node(node) {}
      bool operator()( const called_tree_t& that ) const {
        return this->node == that.node;
      }
    };
  };
  
! static std::map<program_reference_t, std::list<called_tree_t> > call_targets;
  static std::map<tree, cbl_call_convention_t> called_targets;
  
! static void
! parser_call_target( tree func )
    {
!     cbl_call_convention_t convention = current_call_convention();
!     const char *name = IDENTIFIER_POINTER( DECL_NAME(func) );
!     program_reference_t key(current_program_index(), name);
  
!     // Each func is unique and inserted only once.
!     assert( called_targets.find(func) == called_targets.end() );
!     called_targets[func] = convention;
  
!     called_tree_t value(func, convention);
!     auto& p = call_targets[key];
!     p.push_back(value);
    }
  
  /*
--- 715,756 ----
      tree node;
  
     public:
!     explicit match_tree( tree node ) : node(node) {}
      bool operator()( const called_tree_t& that ) const {
        return this->node == that.node;
      }
    };
  };
  
! static std::map<program_reference_t, std::list<tree> > call_targets;
  static std::map<tree, cbl_call_convention_t> called_targets;
  
! static
! void
! set_call_convention(tree function_decl, cbl_call_convention_t convention)
    {
!   called_targets[function_decl] = convention;
!   }
  
! static
! void
! parser_call_target( const char *name, tree call_expr )
!   {
!   /*  This routine gets called when parser_call() has been invoked with a
!       literal target.  That target is a COBOL name like "prog_2".  However,
!       there is the case when "prog_2" is a forward reference to a contained
!       program nested inside "prog_1".  In that case, the actual definition
!       of "prog_2" will end up with a name like "prog_2.62", and eventually
!       the target of the call will have to be modified from "prog_2" to
!       "prog_2.62".
  
!       We save the call expression for this call, and then we update it later,
!       after we know whether or not it was a forward reference to a local
!       function. */
! 
!   program_reference_t key(current_program_index(), name);
!   auto& p = call_targets[key];
!   p.push_back(call_expr);
    }
  
  /*
*************** parser_call_target( tree func )
*** 726,753 ****
  cbl_call_convention_t
  parser_call_target_convention( tree func )
    {
!     auto p = called_targets.find(func);
!     if( p != called_targets.end() ) return p->second;
  
!     return cbl_call_cobol_e;
    }
  
  void
  parser_call_targets_dump()
    {
!     dbgmsg( "call targets for #%zu", current_program_index() );
      for( const auto& elem : call_targets ) {
        const auto& k = elem.first;
        const auto& v = elem.second;
!       fprintf(stderr, "\t#%-3zu %s calls %s ",
!               k.caller, cbl_label_of(symbol_at(k.caller))->name, k.called);
        char ch = '[';
        for( auto func : v ) {
!         fprintf( stderr, "%c %s", ch, IDENTIFIER_POINTER(DECL_NAME(func.node)) );
          ch = ',';
        }
        fprintf(stderr, " ]\n");
      }
    }
  
  size_t
--- 762,798 ----
  cbl_call_convention_t
  parser_call_target_convention( tree func )
    {
!   auto p = called_targets.find(func);
!   if( p != called_targets.end() )
!     {
!     // This was found in our list of call targets
!     return p->second;
!     }
  
!   return cbl_call_cobol_e;
    }
  
  void
  parser_call_targets_dump()
    {
!     dbgmsg( "call targets for #" HOST_SIZE_T_PRINT_UNSIGNED " NOT dumping",
!             (fmt_size_t)current_program_index() );
! #if 0 // A change to call_targets rendered this routine useless.  Until we get
!       // around to repairing it, this code is left for reference.
      for( const auto& elem : call_targets ) {
        const auto& k = elem.first;
        const auto& v = elem.second;
!       fprintf(stderr, "\t#%-3" GCC_PRISZ "u %s calls %s ",
!               (fmt_size_t)k.caller, cbl_label_of(symbol_at(k.caller))->name,
!               k.called);
        char ch = '[';
        for( auto func : v ) {
!         fprintf( stderr, "%c %s", ch, IDENTIFIER_POINTER(DECL_NAME(func)) );
          ch = ',';
        }
        fprintf(stderr, " ]\n");
      }
+ #endif
    }
  
  size_t
*************** parser_call_target_update( size_t caller
*** 755,775 ****
                             const char plain_name[],
                             const char mangled_name[] )
    {
!     auto key = program_reference_t(caller, plain_name);
!     auto p = call_targets.find(key);
!     if( p == call_targets.end() ) return 0;
  
!     for( auto func : p->second )
!       {
!       func.convention = cbl_call_verbatim_e;
!       DECL_NAME(func.node) = get_identifier(mangled_name);
!       }
!     return p->second.size();
    }
  
  static tree
! function_handle_from_name(cbl_refer_t &name,
!                           tree function_return_type)
    {
    Analyze();
  
--- 800,827 ----
                             const char plain_name[],
                             const char mangled_name[] )
    {
!   auto key = program_reference_t(caller, plain_name);
!   auto p = call_targets.find(key);
!   if( p == call_targets.end() ) return 0;
  
!   for( auto call_expr : p->second )
!     {
!     tree fndecl_type = build_varargs_function_type_array( COBOL_FUNCTION_RETURN_TYPE,
!                        0,     // No parameters yet
!                        NULL); // And, hence, no types
! 
!     // Fetch the FUNCTION_DECL for that FUNCTION_TYPE
!     tree function_decl = gg_build_fn_decl(mangled_name, fndecl_type);
!     tree function_address = gg_get_address_of(function_decl);
! 
!     TREE_OPERAND(call_expr, 1) = function_address;
!     }
!   return p->second.size();
    }
  
  static tree
! function_pointer_from_name(const cbl_refer_t &name,
!                            tree function_return_type)
    {
    Analyze();
  
*************** function_handle_from_name(cbl_refer_t &n
*** 777,850 ****
                          function_return_type,
                          0,
                          NULL);
!   tree function_pointer = build_pointer_type(function_type);
!   tree function_handle  = gg_define_variable(function_pointer, "..function_handle.1", vs_stack);
! 
    if( name.field->type == FldPointer )
      {
      // If the parameter is a pointer, just pick up the value and head for the
      // exit
      if( refer_is_clean(name) )
        {
!       gg_memcpy(gg_get_address_of(function_handle),
                  member(name.field->var_decl_node, "data"),
                  sizeof_pointer);
        }
      else
        {
!       gg_memcpy(gg_get_address_of(function_handle),
!                 qualified_data_source(name),
                  sizeof_pointer);
        }
!     return function_handle;
      }
    else if( use_static_call() && is_literal(name.field) )
      {
!     // It's a literal, and we are using static calls. Generate the CALL, and
!     // pass the address expression to parser_call_target().  That will cause
!     // parser_call_target_update() to replace any nested CALL "foo" with the
!     // local "foo.60" name.
! 
!     // We create a reference to it, which is later resolved by the linker.
!     tree addr_expr = gg_get_function_address( function_return_type,
!                                               name.field->data.initial);
!     gg_assign(function_handle, addr_expr);
  
!     tree func = TREE_OPERAND(addr_expr, 0);
!     parser_call_target(func); // add function to list of call targets
      }
    else
      {
!     // This is not a literal or static
      if( name.field->type == FldLiteralA )
        {
!       gg_assign(function_handle,
                  gg_cast(build_pointer_type(function_type),
!                         gg_call_expr(VOID_P,
!                                     "__gg__function_handle_from_literal",
!                                     build_int_cst_type(INT, current_function->our_symbol_table_index),
!                                     gg_string_literal(name.field->data.initial),
!                                     NULL_TREE)));
        }
      else
        {
!       gg_assign(function_handle,
                  gg_cast(build_pointer_type(function_type),
                          gg_call_expr( VOID_P,
!                                       "__gg__function_handle_from_name",
!                                       build_int_cst_type(INT, current_function->our_symbol_table_index),
!                                       gg_get_address_of(name.field->var_decl_node),
!                                       refer_offset_source(name),
!                                       refer_size_source(  name),
!                                       NULL_TREE)));
        }
      }
  
!   return function_handle;
    }
  
  void
! parser_initialize_programs(size_t nprogs, struct cbl_refer_t *progs)
    {
    Analyze();
    SHOW_PARSE
--- 829,904 ----
                          function_return_type,
                          0,
                          NULL);
!   tree function_pointer_type = build_pointer_type(function_type);
!   tree function_pointer       = gg_define_variable(function_pointer_type,
!                                                   "..function_pointer.1",
!                                                   vs_stack);
    if( name.field->type == FldPointer )
      {
      // If the parameter is a pointer, just pick up the value and head for the
      // exit
      if( refer_is_clean(name) )
        {
!       gg_memcpy(gg_get_address_of(function_pointer),
                  member(name.field->var_decl_node, "data"),
                  sizeof_pointer);
        }
      else
        {
!       gg_memcpy(gg_get_address_of(function_pointer),
!                 qualified_data_location(name),
                  sizeof_pointer);
        }
!     return function_pointer;
      }
    else if( use_static_call() && is_literal(name.field) )
      {
!     tree fndecl_type = build_varargs_function_type_array( function_return_type,
!                        0,     // No parameters yet
!                        NULL); // And, hence, no types
  
!     // Fetch the FUNCTION_DECL for that FUNCTION_TYPE
!     tree function_decl = gg_build_fn_decl(name.field->data.initial,
!                                           fndecl_type);
!     // Take the address of the function decl:
!     tree address_of_function = gg_get_address_of(function_decl);
!     gg_assign(function_pointer, address_of_function);
      }
    else
      {
!     // We are not using static calls.
      if( name.field->type == FldLiteralA )
        {
!       gg_assign(function_pointer,
                  gg_cast(build_pointer_type(function_type),
!                         gg_call_expr( VOID_P,
!                                   "__gg__function_handle_from_literal",
!                                   build_int_cst_type(INT,
!                                     current_function->our_symbol_table_index),
!                                   gg_string_literal(name.field->data.initial),
!                                   NULL_TREE)));
        }
      else
        {
!       gg_assign(function_pointer,
                  gg_cast(build_pointer_type(function_type),
                          gg_call_expr( VOID_P,
!                                 "__gg__function_handle_from_name",
!                                 build_int_cst_type(INT,
!                                 current_function->our_symbol_table_index),
!                                 gg_get_address_of(name.field->var_decl_node),
!                                 refer_offset(name),
!                                 refer_size_source(  name),
!                                 NULL_TREE)));
        }
      }
  
!   return function_pointer;
    }
  
  void
! parser_initialize_programs( size_t nprogs,
!                             const struct cbl_refer_t *progs)
    {
    Analyze();
    SHOW_PARSE
*************** parser_initialize_programs(size_t nprogs
*** 874,913 ****
  
    for( size_t i=0; i<nprogs; i++ )
      {
!     tree function_handle = function_handle_from_name( progs[i],
!                                                       COBOL_FUNCTION_RETURN_TYPE);
      gg_call(VOID,
              "__gg__to_be_canceled",
!             gg_cast(SIZE_T, function_handle),
              NULL_TREE);
      }
    }
  
! void parser_statement_begin()
    {
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
      char ach[64];
!     snprintf  (ach, sizeof(ach),
                " yylineno %d first/last %d/%d",
                yylineno,
                cobol_location().first_line,
                cobol_location().last_line );
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_END
      }
  
  
!   if( gg_get_current_line_number() == DEFAULT_LINE_NUMBER )
      {
!     // This code is prevents anomolies when the first line of a program is
!     // a PERFORM <proc> ... TEST AFTER ... UNTIL ...
!     gg_set_current_line_number(CURRENT_LINE_NUMBER-1);
!     gg_assign(var_decl_nop, build_int_cst_type(INT, 106));
      }
  
!   gg_set_current_line_number(CURRENT_LINE_NUMBER);
    }
  
  static void
--- 928,1202 ----
  
    for( size_t i=0; i<nprogs; i++ )
      {
!     tree function_pointer = function_pointer_from_name( progs[i],
!                                                         COBOL_FUNCTION_RETURN_TYPE);
      gg_call(VOID,
              "__gg__to_be_canceled",
!             gg_cast(SIZE_T, function_pointer),
              NULL_TREE);
      }
    }
  
! static
! tree
! array_of_long_long(const char *name, const std::vector<uint64_t>& vals)
!   {
!   // We need to create a file-static static array of 64-bit integers:
!   tree array_of_ulonglong_type = build_array_type_nelts(ULONGLONG, vals.size()+1);
!   tree array_of_ulonglong = gg_define_variable( array_of_ulonglong_type,
!                                                 name,
!                                                 vs_file_static);
!   // We have the array.  Now we need to build the constructor for it
!   tree constr = make_node(CONSTRUCTOR);
!   TREE_TYPE(constr) = array_of_ulonglong_type;
!   TREE_STATIC(constr)    = 1;
!   TREE_CONSTANT(constr)  = 1;
! 
!   // The first element of the array contains the number of elements to follow
!   CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr),
!                           build_int_cst_type(SIZE_T, 0),
!                           build_int_cst_type(ULONGLONG, vals.size()) );
!   for(size_t i=0; i<vals.size(); i++)
!     {
!     CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr),
!                             build_int_cst_type(SIZE_T, i+1),
!                             build_int_cst_type(ULONGLONG, vals[i]) );
!     }
!   DECL_INITIAL(array_of_ulonglong) = constr;
!   return array_of_ulonglong;
!   }
! 
! /*
!  * As ECs are enabled and disabled with >>TURN, the compiler updates its list
!  * of enabled ECs (and any files they apply to). It encodes this list as an
!  * array of integers.  parser_compile_ecs converts that array as a static
!  * compile-time vector, which it returns to the compiler.
!  *
!  * Before each statement, the compiler determines what possible EC handling the
!  * program can do.  If there's an overlap between potential ECs and
!  * Declaratives, it passes the current pair of static arrays to
!  * parser_statement_begin(), which installs them, for that statement, in the
!  * library.
!  *
!  * After each statement, to effect EC handling, the statement epilog calls uses
!  * parser_match_exception to invoke __gg_match_exception(), which returns the
!  * symbol table index of the matched Declarative, if any.  That "ladder"
!  * Performs the matched declarative, and execution continues with the next
!  * statement.
!  */
! tree
! parser_compile_ecs( const std::vector<uint64_t>& ecs )
!   {
!   if( ecs.empty() )
!     {
!     SHOW_IF_PARSE(nullptr)
!       {
!       SHOW_PARSE_HEADER
!       SHOW_PARSE_TEXT("ecs is empty");
!       SHOW_PARSE_END
!       }
!     return NULL_TREE;
!     }
! 
!   char ach[64];
!   static int counter = 1;
!   sprintf(ach, "_ecs_table_%d", counter++);
!   tree retval =  array_of_long_long(ach, ecs);
!   SHOW_IF_PARSE(nullptr)
!     {
!     SHOW_PARSE_HEADER
!     snprintf(ach, sizeof(ach), " Size is %lu; retval is %p",
!              gb4(ecs.size()), as_voidp(retval));
!     SHOW_PARSE_TEXT(ach)
!     SHOW_PARSE_END
!     }
!   TRACE1
!     {
!     TRACE1_HEADER
!     snprintf(ach, sizeof(ach), " Size is %lu; retval is %p",
!              gb4(ecs.size()), as_voidp(retval));
!     TRACE1_TEXT_ABC("", ach, "");
!     TRACE1_END
!     }
!   return retval;
!   }
! 
! /*
!  * At the beginning of Procedure Division, we may encounter DECLARATIVES
!  * SECTION.  If so, the compiler composes a list of zero or more Declaratives
!  * as cbl_declarative_t, representing the USE statement of each
!  * Declarative. These are encoded as an array of integers, which are returned
!  * to the compiler for use by parser_statement_begin(). Although the list of
!  * declaratives never changes for a program, CALL may change which program is
!  * invoked, and thus the set of active Declaratives.  By passing them for each
!  * statement, code generation is relieved of referring to global variable.
!  */
! tree
! parser_compile_dcls( const std::vector<uint64_t>& dcls )
!   {
!   if( dcls.empty() )
!     {
!     SHOW_IF_PARSE(nullptr)
!       {
!       SHOW_PARSE_HEADER
!       SHOW_PARSE_TEXT("dcls is empty");
!       SHOW_PARSE_END
!       }
!     return NULL_TREE;
!     }
! 
!   char ach[64];
!   static int counter = 1;
!   sprintf(ach, "_dcls_table_%d", counter++);
!   tree retval =  array_of_long_long(ach, dcls);
!   SHOW_IF_PARSE(nullptr)
!     {
!     SHOW_PARSE_HEADER
!     snprintf(ach, sizeof(ach), " Size is %lu; retval is %p",
!              gb4(dcls.size()), as_voidp(retval));
!     SHOW_PARSE_TEXT(ach);
!     SHOW_PARSE_END
!     }
!   TRACE1
!     {
!     TRACE1_HEADER
!     snprintf(ach, sizeof(ach), " Size is %lu; retval is %p",
!              gb4(dcls.size()), as_voidp(retval));
!     TRACE1_TEXT_ABC("", ach, "");
!     TRACE1_END
!     }
!   return retval;
!   }
! 
! static void
! store_location_stuff(const cbl_name_t statement_name)
!   {
!   if( exception_location_active && !current_declarative_section_name() )
!     {
!     // We need to establish some stuff for EXCEPTION- function processing
! 
!     gg_assign(var_decl_exception_program_id,
!               gg_string_literal(current_function->our_unmangled_name));
! 
!     if( strstr(current_function->current_section->label->name, "_implicit")
!         != current_function->current_section->label->name )
!       {
!       gg_assign(var_decl_exception_section,
!            gg_string_literal(current_function->current_section->label->name));
!       }
!     else
!       {
!       gg_assign(var_decl_exception_section,
!                 gg_cast(build_pointer_type(CHAR_P),null_pointer_node));
!       }
! 
!     if( strstr(current_function->current_paragraph->label->name, "_implicit")
!         != current_function->current_paragraph->label->name )
!       {
!       gg_assign(var_decl_exception_paragraph,
!            gg_string_literal(current_function->current_paragraph->label->name));
!       }
!     else
!       {
!       gg_assign(var_decl_exception_paragraph,
!                 gg_cast(build_pointer_type(CHAR_P), null_pointer_node));
!       }
! 
!     gg_assign(var_decl_exception_source_file,
!               gg_string_literal(current_filename.back().c_str()));
!     gg_assign(var_decl_exception_line_number, build_int_cst_type(INT,
!                                                           CURRENT_LINE_NUMBER));
!     gg_assign(var_decl_exception_statement, gg_string_literal(statement_name));
!     }
!   }
! 
! static
! void
! set_exception_environment( tree ecs, tree dcls )
!   {
!   gg_call(VOID,
!           "__gg__set_exception_environment",
!           ecs  ? gg_get_address_of(ecs) : null_pointer_node,
!           dcls ? gg_get_address_of(dcls) : null_pointer_node,
!           NULL_TREE);
!   }
! 
! void
! parser_statement_begin( const cbl_name_t statement_name,
!                         tree ecs,
!                         tree dcls )
    {
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
      char ach[64];
!     snprintf( ach, sizeof(ach),
                " yylineno %d first/last %d/%d",
                yylineno,
                cobol_location().first_line,
                cobol_location().last_line );
      SHOW_PARSE_TEXT(ach);
+     if( true || ecs || dcls )
+       {
+       SHOW_PARSE_INDENT
+       snprintf( ach, sizeof(ach),
+                 "Sending ecs/dcls %p / %p", as_voidp(ecs), as_voidp(dcls));
+       SHOW_PARSE_TEXT(ach);
+       }
      SHOW_PARSE_END
      }
+   TRACE1
+     {
+     TRACE1_HEADER
+     char ach[64];
+     snprintf(ach, sizeof(ach), " ecs/dcls %p / %p", as_voidp(ecs), as_voidp(dcls));
+     TRACE1_TEXT_ABC("", ach, "");
+     TRACE1_END
+     }
  
+   gcc_assert( gg_trans_unit.function_stack.size() );
  
!   // In the cases where enabled_exceptions.size() is non-zero, or when
!   // there is a possibility of an EC-I-O exception because this is a file
!   // operation, we need to store the location information and do the exception
!   // overhead:
! 
!   static const std::set<std::string> file_ops =
      {
!     "OPEN",
!     "CLOSE",
!     "READ",
!     "WRITE",
!     "DELETE",
!     "REWRITE",
!     "START",
!     };
! 
!   //  Performance note:  By doing exception processing only when necessary
!   //  the execution time of a program doing two-billion simple adds in an inner
!   //  loop dropped from 3.8 seconds to 0.175 seconds.
! 
!   bool exception_processing = cdf_enabled_exceptions().size() ;
! 
!   if( !exception_processing )
!     {
!     exception_processing = file_ops.find(statement_name) != file_ops.end();
      }
  
!   // At this point, if any exception is enabled, we store the location stuff.
!   // Each file I-O routine calls store_location_stuff explicitly, because
!   // those exceptions can't be defeated.
! 
!   if( exception_processing )
!     {
!     store_location_stuff(statement_name);
!     }
! 
!   if( exception_processing )
!     {
!     set_exception_environment(ecs, dcls);
!     }
!   sv_is_i_o = false;
    }
  
  static void
*************** initialize_variable_internal( cbl_refer_
*** 920,929 ****
              // gg_string_literal(refer.field->name),
              // NULL_TREE);
    cbl_field_t *parsed_var = refer.field;
! 
!   if( parsed_var->type == FldLiteralA )
      {
!     return;
      }
  
    if( parsed_var->is_key_name() )
--- 1209,1217 ----
              // gg_string_literal(refer.field->name),
              // NULL_TREE);
    cbl_field_t *parsed_var = refer.field;
!   if( !parsed_var )
      {
!     cbl_internal_error("%s should not be null", "parsed_var");
      }
  
    if( parsed_var->is_key_name() )
*************** initialize_variable_internal( cbl_refer_
*** 939,945 ****
      return;
      }
  
!   if( parsed_var && parsed_var->type == FldBlob )
      {
      return;
      }
--- 1227,1233 ----
      return;
      }
  
!   if( parsed_var->type == FldBlob )
      {
      return;
      }
*************** initialize_variable_internal( cbl_refer_
*** 1057,1071 ****
      SHOW_PARSE_END
      }
  
-   CHECK_FIELD(parsed_var);
- 
    // When initializing a variable, we have to ignore any DEPENDING ON clause
    // that might otherwise apply
    suppress_dest_depends = true;
  
    bool is_redefined = false;
  
!   cbl_field_t *family_tree = parsed_var;
    while(family_tree)
      {
      if( symbol_redefines(family_tree) )
--- 1345,1357 ----
      SHOW_PARSE_END
      }
  
    // When initializing a variable, we have to ignore any DEPENDING ON clause
    // that might otherwise apply
    suppress_dest_depends = true;
  
    bool is_redefined = false;
  
!   const cbl_field_t *family_tree = parsed_var;
    while(family_tree)
      {
      if( symbol_redefines(family_tree) )
*************** initialize_variable_internal( cbl_refer_
*** 1086,1092 ****
    if( parsed_var->data.initial )
      {
      bool a_parent_initialized = false;
!     cbl_field_t *parent = parent_of(parsed_var);
      while( parent )
        {
        if( parent->attr & has_value_e )
--- 1372,1378 ----
    if( parsed_var->data.initial )
      {
      bool a_parent_initialized = false;
!     const cbl_field_t *parent = parent_of(parsed_var);
      while( parent )
        {
        if( parent->attr & has_value_e )
*************** initialize_variable_internal( cbl_refer_
*** 1116,1122 ****
    flag_bits     |=  wsclear()
                      ? DEFAULTBYTE_BIT + (*wsclear() & DEFAULT_BYTE_MASK)
                      : 0;
!   flag_bits     |= (refer.nsubscript << NSUBSCRIPT_SHIFT) & NSUBSCRIPT_MASK;
    flag_bits     |= just_once ? JUST_ONCE_BIT : 0 ;
  
    suppress_dest_depends = false;  // Set this to false so that refer_is_clean is valid
--- 1402,1408 ----
    flag_bits     |=  wsclear()
                      ? DEFAULTBYTE_BIT + (*wsclear() & DEFAULT_BYTE_MASK)
                      : 0;
!   flag_bits     |= (refer.nsubscript() << NSUBSCRIPT_SHIFT) & NSUBSCRIPT_MASK;
    flag_bits     |= just_once ? JUST_ONCE_BIT : 0 ;
  
    suppress_dest_depends = false;  // Set this to false so that refer_is_clean is valid
*************** initialize_variable_internal( cbl_refer_
*** 1127,1133 ****
      gg_call(VOID,
              "__gg__initialize_variable",
              gg_get_address_of(refer.field->var_decl_node),
!             refer_offset_dest(refer),
              build_int_cst_type(INT, flag_bits),
              NULL_TREE);
      }
--- 1413,1419 ----
      gg_call(VOID,
              "__gg__initialize_variable",
              gg_get_address_of(refer.field->var_decl_node),
!             refer_offset(refer),
              build_int_cst_type(INT, flag_bits),
              NULL_TREE);
      }
*************** initialize_variable_internal( cbl_refer_
*** 1229,1235 ****
        }
      else
        {
!       TRACE1_FIELD_VALUE("", parsed_var, "")
        }
      TRACE1_END
      }
--- 1515,1554 ----
        }
      else
        {
!       // Convert strings of spaces to "<SPACES>"
!       tree spaces = gg_define_int(0);
!       if(   parsed_var->type == FldGroup
!          || parsed_var->type == FldAlphanumeric
!          || parsed_var->type == FldAlphaEdited
!          || parsed_var->type == FldLiteralA )
!         {
!         gg_assign(spaces, integer_one_node);
!         tree counter = gg_define_int(parsed_var->data.capacity);
!         WHILE(counter, gt_op, integer_zero_node)
!           {
!           gg_decrement(counter);
!           IF( gg_indirect(member(parsed_var->var_decl_node, "data"), counter),
!               ne_op,
!               build_int_cst_type(UCHAR, ' ') )
!               {
!               gg_assign(spaces, integer_zero_node);
!               }
!           ELSE
!             {
!             }
!           ENDIF
!           }
!           WEND
!         }
!       IF(spaces, eq_op, integer_one_node)
!         {
!         TRACE1_TEXT(" <SPACES>")
!         }
!       ELSE
!         {
!         TRACE1_FIELD_VALUE("", parsed_var, "")
!         }
!       ENDIF
        }
      TRACE1_END
      }
*************** initialize_variable_internal( cbl_refer_
*** 1248,1254 ****
  //  }
  
  void
! parser_initialize(cbl_refer_t refer, bool like_parser_symbol_add)
    {
    //gg_printf("parser_initialize %s\n", gg_string_literal(refer.field->name), NULL_TREE);
    if( like_parser_symbol_add )
--- 1567,1573 ----
  //  }
  
  void
! parser_initialize(const cbl_refer_t& refer, bool like_parser_symbol_add)
    {
    //gg_printf("parser_initialize %s\n", gg_string_literal(refer.field->name), NULL_TREE);
    if( like_parser_symbol_add )
*************** parser_initialize(cbl_refer_t refer, boo
*** 1265,1271 ****
  
  static void
  get_binary_value_from_float(tree         value,
!                             cbl_refer_t &dest,
                              cbl_field_t *source,
                              tree         source_offset
                              )
--- 1584,1590 ----
  
  static void
  get_binary_value_from_float(tree         value,
!                       const cbl_refer_t &dest,
                              cbl_field_t *source,
                              tree         source_offset
                              )
*************** gg_default_qualification(struct cbl_fiel
*** 1345,1386 ****
  //  gg_attribute_bit_clear(var, refmod_e);
    }
  
! static void
! gg_get_depending_on_value(tree depending_on, cbl_field_t *current_sizer)
    {
    // We have to deal with the possibility of a DEPENDING_ON variable,
    // and we have to apply array bounds whether or not there is a DEPENDING_ON
    // variable:
  
!   tree occurs_lower = gg_define_variable(LONG, "_lower");
!   tree occurs_upper = gg_define_variable(LONG, "_upper");
! 
!   gg_assign(occurs_lower, build_int_cst_type(LONG, current_sizer->occurs.bounds.lower));
!   gg_assign(occurs_upper, build_int_cst_type(LONG, current_sizer->occurs.bounds.upper));
  
    if( current_sizer->occurs.depending_on )
      {
!     // Get the current value of the depending_on data-item:
!     tree value = gg_define_int128();
!     get_binary_value( value,
!                       NULL,
!                       cbl_field_of(symbol_at(current_sizer->occurs.depending_on)),
!                       size_t_zero_node);
!     gg_assign(depending_on, gg_cast(LONG, value));
!     IF( depending_on, lt_op, occurs_lower )
!     // depending_is can be no less than occurs_lower:
!       gg_assign(depending_on, occurs_lower );
!     ELSE
!       ENDIF
!     IF( depending_on, gt_op, occurs_upper )
!     // depending_is can be no greater than occurs_upper:
!       gg_assign(depending_on, occurs_upper );
!     ELSE
!       ENDIF
      }
    else
      {
!     gg_assign(depending_on, occurs_upper);
      }
    }
  
--- 1664,1692 ----
  //  gg_attribute_bit_clear(var, refmod_e);
    }
  
! static
! void
! depending_on_value(tree depending_on, cbl_field_t *current_sizer)
    {
    // We have to deal with the possibility of a DEPENDING_ON variable,
    // and we have to apply array bounds whether or not there is a DEPENDING_ON
    // variable:
  
! //  tree occurs_lower = gg_define_variable(LONG, "_lower");
! //  tree occurs_upper = gg_define_variable(LONG, "_upper");
! //
! //  gg_assign(occurs_lower, build_int_cst_type(LONG, current_sizer->occurs.bounds.lower));
! //  gg_assign(occurs_upper, build_int_cst_type(LONG, current_sizer->occurs.bounds.upper));
  
+   gcc_assert(current_sizer);
    if( current_sizer->occurs.depending_on )
      {
!     get_depending_on_value_from_odo(depending_on, current_sizer);
      }
    else
      {
!     gg_assign(depending_on,
!               build_int_cst_type(LONG, current_sizer->occurs.bounds.upper));
      }
    }
  
*************** get_bytes_needed(cbl_field_t *field)
*** 1483,1489 ****
        }
  
      default:
!       cbl_internal_error("%s(): Knows not the variable type %s for %s",
                __func__,
                cbl_field_type_str(field->type),
                field->name );
--- 1789,1795 ----
        }
  
      default:
!       cbl_internal_error("%s: Knows not the variable type %s for %s",
                __func__,
                cbl_field_type_str(field->type),
                field->name );
*************** normal_normal_compare(bool debugging,
*** 1516,1531 ****
                NULL_TREE);
      }
  
-   bool needs_adjusting;
    if( !left_intermediate && !right_intermediate )
      {
      // Yay!  Both sides have fixed rdigit values.
  
-     // Flag needs_adjusting as false, because we are going to do it here:
-     needs_adjusting = false;
      int adjust =   get_scaled_rdigits(left_side_ref->field)
                   - get_scaled_rdigits(right_side_ref->field);
- 
      if( adjust > 0 )
        {
        // We need to make right_side bigger to match the scale of left_side
--- 1822,1833 ----
*************** normal_normal_compare(bool debugging,
*** 1540,1545 ****
--- 1842,1848 ----
    else
      {
      // At least one side is right_intermediate
+     bool needs_adjusting;
  
      tree adjust;
      if( !left_intermediate && right_intermediate )
*************** compare_binary_binary(tree return_int,
*** 1776,1783 ****
        {
        gg_printf("compare_binary_binary(): using int64\n", NULL_TREE);
        }
!     left_side  = gg_define_variable( left_side_ref->field->attr & signable_e ? LONG : ULONG );
!     right_side = gg_define_variable(right_side_ref->field->attr & signable_e ? LONG : ULONG );
      }
  
    //tree dummy = gg_define_int();
--- 2079,2086 ----
        {
        gg_printf("compare_binary_binary(): using int64\n", NULL_TREE);
        }
!     left_side  = gg_define_variable( left_side_ref->field->has_attr(signable_e) ? LONG : ULONG );
!     right_side = gg_define_variable(right_side_ref->field->has_attr(signable_e) ? LONG : ULONG );
      }
  
    //tree dummy = gg_define_int();
*************** compare_binary_binary(tree return_int,
*** 1787,1798 ****
    get_binary_value(left_side,
                     NULL,
                     left_side_ref->field,
!                    refer_offset_source(*left_side_ref),
                     hilo_left);
    get_binary_value(right_side,
                     NULL,
                     right_side_ref->field,
!                    refer_offset_source(*right_side_ref),
                     hilo_right);
    IF( hilo_left, eq_op, integer_one_node )
      {
--- 2090,2101 ----
    get_binary_value(left_side,
                     NULL,
                     left_side_ref->field,
!                    refer_offset(*left_side_ref),
                     hilo_left);
    get_binary_value(right_side,
                     NULL,
                     right_side_ref->field,
!                    refer_offset(*right_side_ref),
                     hilo_right);
    IF( hilo_left, eq_op, integer_one_node )
      {
*************** cobol_compare(  tree return_int,
*** 1966,1972 ****
                            "__gg__literaln_alpha_compare",
                            gg_string_literal(buffer),
                            gg_get_address_of(righty->field->var_decl_node),
!                           refer_offset_source(*righty),
                            refer_size_source(  *righty),
                            build_int_cst_type(INT,
                                          (righty->all ? REFER_T_MOVE_ALL : 0)),
--- 2269,2275 ----
                            "__gg__literaln_alpha_compare",
                            gg_string_literal(buffer),
                            gg_get_address_of(righty->field->var_decl_node),
!                           refer_offset(*righty),
                            refer_size_source(  *righty),
                            build_int_cst_type(INT,
                                          (righty->all ? REFER_T_MOVE_ALL : 0)),
*************** cobol_compare(  tree return_int,
*** 2039,2054 ****
                  INT,
                  "__gg__compare",
                  gg_get_address_of(left_side_ref.field->var_decl_node),
!                 refer_offset_source(left_side_ref),
                  refer_size_source(  left_side_ref),
                  build_int_cst_type(INT, leftflags),
                  gg_get_address_of(right_side_ref.field->var_decl_node),
!                 refer_offset_source(right_side_ref),
                  refer_size_source(  right_side_ref),
                  build_int_cst_type(INT, rightflags),
                  integer_zero_node,
                  NULL_TREE));
!     compared = true;
      }
  
  //  gg_printf("   result is %d\n", return_int, NULL_TREE);
--- 2342,2357 ----
                  INT,
                  "__gg__compare",
                  gg_get_address_of(left_side_ref.field->var_decl_node),
!                 refer_offset(left_side_ref),
                  refer_size_source(  left_side_ref),
                  build_int_cst_type(INT, leftflags),
                  gg_get_address_of(right_side_ref.field->var_decl_node),
!                 refer_offset(right_side_ref),
                  refer_size_source(  right_side_ref),
                  build_int_cst_type(INT, rightflags),
                  integer_zero_node,
                  NULL_TREE));
!     // compared = true;  // Commented out to quiet cppcheck
      }
  
  //  gg_printf("   result is %d\n", return_int, NULL_TREE);
*************** move_tree(  cbl_field_t  *dest,
*** 2068,2073 ****
--- 2371,2378 ----
      SHOW_PARSE_END
      }
  
+   CHECK_FIELD(dest);
+ 
    bool moved = true;
  
    tree source_length = gg_define_size_t();
*************** move_tree(  cbl_field_t  *dest,
*** 2151,2157 ****
                psz_source,
                min_length,
                member(dest->var_decl_node, "picture"),
!               NULL);
        break;
        }
  
--- 2456,2462 ----
                psz_source,
                min_length,
                member(dest->var_decl_node, "picture"),
!               NULL_TREE);
        break;
        }
  
*************** move_tree(  cbl_field_t  *dest,
*** 2172,2181 ****
  
    if( !moved )
      {
!     dbgmsg("###### %10s in %s:%d\n", __func__, __FILE__, __LINE__ );
!     cbl_internal_error( "I don't know how to MOVE an alphabetical string to %s(%s) \n",
!            cbl_field_type_str(dest->type),
!            dest->name
           );
      return;
      }
--- 2477,2486 ----
  
    if( !moved )
      {
!     dbgmsg("%10s in %s:%d", __func__, __FILE__, __LINE__ );
!     cbl_internal_error( "I don%'t know how to MOVE an alphabetical string to %s(%s)",
!                         cbl_field_type_str(dest->type),
!                         dest->name
           );
      return;
      }
*************** get_string_from(cbl_field_t *field)
*** 2206,2212 ****
                    gg_cast(CHAR_P,
                            gg_malloc(build_int_cst_type(SIZE_T,
                                                       field->data.capacity+1))));
!         char *litstring = get_literal_string(field);
          gg_memcpy(psz,
                    gg_string_literal(litstring),
                    build_int_cst_type(SIZE_T, field->data.capacity+1));
--- 2511,2517 ----
                    gg_cast(CHAR_P,
                            gg_malloc(build_int_cst_type(SIZE_T,
                                                       field->data.capacity+1))));
!         const char *litstring = get_literal_string(field);
          gg_memcpy(psz,
                    gg_string_literal(litstring),
                    build_int_cst_type(SIZE_T, field->data.capacity+1));
*************** get_string_from(cbl_field_t *field)
*** 2241,2247 ****
  
        default:
          cbl_internal_error(
!                 "%s(): field->type %s must be literal or alphanumeric",
                  __func__, cbl_field_type_str(field->type));
        break;
        }
--- 2546,2552 ----
  
        default:
          cbl_internal_error(
!                 "%s: %<field->type%> %s must be literal or alphanumeric",
                  __func__, cbl_field_type_str(field->type));
        break;
        }
*************** get_string_from(cbl_field_t *field)
*** 2254,2265 ****
    }
  
  static char *
! combined_name(cbl_label_t *label)
    {
    // This routine returns a pointer to a static, so make sure you use the result
    // before calling the routine again
!   char *para_name     = nullptr;
!   char *sect_name     = nullptr;
    const char *program_name  = current_function->our_unmangled_name;
  
    if( label->type == LblParagraph )
--- 2559,2570 ----
    }
  
  static char *
! combined_name(const cbl_label_t *label)
    {
    // This routine returns a pointer to a static, so make sure you use the result
    // before calling the routine again
!   const char *para_name     = nullptr;
!   const char *sect_name     = nullptr;
    const char *program_name  = current_function->our_unmangled_name;
  
    if( label->type == LblParagraph )
*************** combined_name(cbl_label_t *label)
*** 2269,2275 ****
      if( label->parent )
        {
        // It's possible for implicit
!       cbl_label_t *section_label = cbl_label_of(symbol_at(label->parent));
        sect_name = section_label->name;
        }
      }
--- 2574,2580 ----
      if( label->parent )
        {
        // It's possible for implicit
!       const cbl_label_t *section_label = cbl_label_of(symbol_at(label->parent));
        sect_name = section_label->name;
        }
      }
*************** combined_name(cbl_label_t *label)
*** 2279,2288 ****
      }
  
    static size_t retval_size = 256;
!   static char *retval= (char *)xmalloc(retval_size);
  
    char *paragraph             = cobol_name_mangler(para_name);
!   char *section               = cobol_name_mangler(sect_name);
    char *mangled_program_name  = cobol_name_mangler(program_name);
  
    while( retval_size < (paragraph ? strlen(paragraph) : 0 )
--- 2584,2593 ----
      }
  
    static size_t retval_size = 256;
!   static char *retval= static_cast<char *>(xmalloc(retval_size));
  
    char *paragraph             = cobol_name_mangler(para_name);
!   char *section         = cobol_name_mangler(sect_name);
    char *mangled_program_name  = cobol_name_mangler(program_name);
  
    while( retval_size < (paragraph ? strlen(paragraph) : 0 )
*************** combined_name(cbl_label_t *label)
*** 2291,2298 ****
                    + 24 )
      {
      retval_size *= 2;
!     retval = (char *)xrealloc(retval, retval_size);
      }
  
    *retval = '\0';
    char ach[24];
--- 2596,2604 ----
                    + 24 )
      {
      retval_size *= 2;
!     retval = static_cast<char *>(xrealloc(retval, retval_size));
      }
+   gcc_assert(retval);
  
    *retval = '\0';
    char ach[24];
*************** combined_name(cbl_label_t *label)
*** 2310,2318 ****
      {
      strcat(retval, mangled_program_name);
      }
!   sprintf(ach, ".%ld", current_function->program_id_number);
    strcat(retval, ach);
!   sprintf(ach, ".%ld", symbol_label_id(label));
    strcat(retval, ach);
    free(mangled_program_name);
    free(section);
--- 2616,2626 ----
      {
      strcat(retval, mangled_program_name);
      }
!   sprintf(ach, "." HOST_SIZE_T_PRINT_DEC,
!           (fmt_size_t)current_function->program_id_number);
    strcat(retval, ach);
!   sprintf(ach, "." HOST_SIZE_T_PRINT_DEC,
!           (fmt_size_t)symbol_label_id(label));
    strcat(retval, ach);
    free(mangled_program_name);
    free(section);
*************** assembler_label(const char *label)
*** 2337,2344 ****
      {
      length = strlen(label) + strlen(local_text) + 1;
      free(build);
!     build = (char *)xmalloc(length);
      }
  
    strcpy(build, label);
    strcat(build, local_text);
--- 2645,2653 ----
      {
      length = strlen(label) + strlen(local_text) + 1;
      free(build);
!     build = static_cast<char *>(xmalloc(length));
      }
+   gcc_assert(build);
  
    strcpy(build, label);
    strcat(build, local_text);
*************** section_label(struct cbl_proc_t *procedu
*** 2352,2368 ****
    // With nested programs, you can have multiple program/section pairs with the
    // the same names; we use a deconflictor to avoid collisions
  
-   gg_set_current_line_number(CURRENT_LINE_NUMBER);
- 
    size_t deconflictor = symbol_label_id(procedure->label);
  
    cbl_label_t *label = procedure->label;
    // The _initialize_program section isn't relevant.
!   char *psz = xasprintf("%s SECTION %s in %s (%ld)",
                          ASM_COMMENT_START,
                          label->name,
                          current_function->our_unmangled_name,
!                         deconflictor);
    gg_insert_into_assembler(psz);
    free(psz);
  
--- 2661,2675 ----
    // With nested programs, you can have multiple program/section pairs with the
    // the same names; we use a deconflictor to avoid collisions
  
    size_t deconflictor = symbol_label_id(procedure->label);
  
    cbl_label_t *label = procedure->label;
    // The _initialize_program section isn't relevant.
!   char *psz = xasprintf("%s SECTION %s in %s (" HOST_SIZE_T_PRINT_DEC ")",
                          ASM_COMMENT_START,
                          label->name,
                          current_function->our_unmangled_name,
!                         (fmt_size_t)deconflictor);
    gg_insert_into_assembler(psz);
    free(psz);
  
*************** section_label(struct cbl_proc_t *procedu
*** 2378,2384 ****
      }
    assembler_label(psz2);
    free(psz2);
!   gg_assign(var_decl_nop, build_int_cst_type(INT, 108));
    }
  
  static void
--- 2685,2691 ----
      }
    assembler_label(psz2);
    free(psz2);
!   insert_nop(108);
    }
  
  static void
*************** paragraph_label(struct cbl_proc_t *proce
*** 2393,2400 ****
    //      are not referenced by the program.  We provide a deconflictor to
    //      separate such labels.
  
-   gg_set_current_line_number(CURRENT_LINE_NUMBER);
- 
    cbl_label_t *paragraph  = procedure->label;
    cbl_label_t *section    = nullptr;
  
--- 2700,2705 ----
*************** paragraph_label(struct cbl_proc_t *proce
*** 2407,2422 ****
    char *section_name = section ? section->name : nullptr;
  
    size_t deconflictor = symbol_label_id(procedure->label);
!   
!   char *psz1 = 
    xasprintf(
!           "%s PARAGRAPH %s of %s in %s (%ld)",
            ASM_COMMENT_START,
            para_name ? para_name: "" ,
            section_name ? section_name: "(null)" ,
            current_function->our_unmangled_name ? current_function->our_unmangled_name: "" ,
!           deconflictor );
!   
    gg_insert_into_assembler(psz1);
  
    SHOW_PARSE
--- 2712,2729 ----
    char *section_name = section ? section->name : nullptr;
  
    size_t deconflictor = symbol_label_id(procedure->label);
! 
!   char *psz1 =
    xasprintf(
!           "%s PARAGRAPH %s of %s in %s (" HOST_SIZE_T_PRINT_DEC ")",
            ASM_COMMENT_START,
            para_name ? para_name: "" ,
            section_name ? section_name: "(null)" ,
            current_function->our_unmangled_name ? current_function->our_unmangled_name: "" ,
!           (fmt_size_t)deconflictor );
! 
!   // (0) is wrong, so back up one
! 
    gg_insert_into_assembler(psz1);
  
    SHOW_PARSE
*************** paragraph_label(struct cbl_proc_t *proce
*** 2433,2439 ****
                            combined_name(procedure->label));
    assembler_label(psz2);
    free(psz2);
!   gg_assign(var_decl_nop, build_int_cst_type(INT, 109));
    }
  
  static void
--- 2740,2764 ----
                            combined_name(procedure->label));
    assembler_label(psz2);
    free(psz2);
! 
!   // We are inserting a NOP after having created a label for the procedure.
!   // This means that when using GDC_COBOL to step into a procedure, the
!   // execution will stop there and show "123 para-name." at the stopped point.
!   //
!   // Note that because there is no user-specified executable code at that point
!   // the user can't set a working breakpoint with "break 123".  But because
!   // GDB will pick up the psz2 text and set a breakpoint there (which is the
!   // location of the NOP) "break para-name" will actually stop and show line
!   // 123.
!   //
!   // This really only makes sense when you look at the assembly language. Keep
!   // in mind as you read it that issuing a "break 123" causes GDB to set a
!   // breakpoint at the first executable machine language code following the
!   // first ".loc 123" directive.
!   //
!   // Yes, trying to understand this causes headaches for many people who read
!   // this.  Take an aspirin.
!   insert_nop(109);
    }
  
  static void
*************** pseudo_return_pop(cbl_proc_t *procedure)
*** 2477,2482 ****
--- 2802,2808 ----
                NULL_TREE);
      }
  
+   token_location_override(current_location_minus_one());
    IF( var_decl_exit_address, eq_op, procedure->exit.addr )
      {
      TRACE1
*************** pseudo_return_pop(cbl_proc_t *procedure)
*** 2486,2496 ****
--- 2812,2824 ----
      // The top of the stack is us!
  
      // Pick up the return address from the pseudo_return stack:
+     token_location_override(current_location_minus_one());
      gg_assign(current_function->void_star_temp,
                gg_call_expr( VOID_P,
                              "__gg__pseudo_return_pop",
                              NULL_TREE));
      // And do the return:
+     token_location_override(current_location_minus_one());
      gg_goto(current_function->void_star_temp);
      }
    ELSE
*************** leave_procedure(struct cbl_proc_t *proce
*** 2524,2534 ****
      // procedure->bottom.label);
      // Procedure can be null, for example at the beginning of a
      // new program, or after somebody else has cleared it out.
      gg_append_statement(procedure->exit.label);
  
      char *psz;
!     psz = xasprintf("_procret.%ld:",
!                     symbol_label_id(procedure->label));
      gg_insert_into_assembler(psz);
      free(psz);
      pseudo_return_pop(procedure);
--- 2852,2864 ----
      // procedure->bottom.label);
      // Procedure can be null, for example at the beginning of a
      // new program, or after somebody else has cleared it out.
+ 
      gg_append_statement(procedure->exit.label);
  
      char *psz;
!     psz = xasprintf("_procret." HOST_SIZE_T_PRINT_DEC ":",
!                     (fmt_size_t)symbol_label_id(procedure->label));
!     token_location_override(current_location_minus_one());
      gg_insert_into_assembler(psz);
      free(psz);
      pseudo_return_pop(procedure);
*************** find_procedure(cbl_label_t *label)
*** 2641,2647 ****
      static int counter=1;
  
      // This is a new section or paragraph; we need to create its values:
!     retval = (struct cbl_proc_t *)xmalloc(sizeof(struct cbl_proc_t));
      retval->label = label;
  
      gg_create_goto_pair(&retval->top.go_to,
--- 2971,2979 ----
      static int counter=1;
  
      // This is a new section or paragraph; we need to create its values:
!     retval = static_cast<struct cbl_proc_t *>
!                                           (xmalloc(sizeof(struct cbl_proc_t)));
!     gcc_assert(retval);
      retval->label = label;
  
      gg_create_goto_pair(&retval->top.go_to,
*************** parser_enter_section(cbl_label_t *label)
*** 2697,2702 ****
--- 3029,3036 ----
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", label)
+     SHOW_PARSE_INDENT
+     linemap_dump_location( line_table, current_token_location(), stderr );
      SHOW_PARSE_END
      }
  
*************** parser_enter_section(cbl_label_t *label)
*** 2704,2711 ****
  
    // This NOP is needed to give GDB a line number for the entry point of
    // paragraphs
!   gg_set_current_line_number(CURRENT_LINE_NUMBER);
!   gg_assign(var_decl_nop, build_int_cst_type(INT, 101));
  
    struct cbl_proc_t *procedure = find_procedure(label);
    gg_append_statement(procedure->top.label);
--- 3038,3044 ----
  
    // This NOP is needed to give GDB a line number for the entry point of
    // paragraphs
!   insert_nop(101);
  
    struct cbl_proc_t *procedure = find_procedure(label);
    gg_append_statement(procedure->top.label);
*************** parser_enter_paragraph(cbl_label_t *labe
*** 2732,2737 ****
--- 3065,3072 ----
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", label)
+     SHOW_PARSE_INDENT
+     linemap_dump_location( line_table, current_token_location(), stderr );
      SHOW_PARSE_END
      }
  
*************** parser_goto( cbl_refer_t value_ref, size
*** 2902,2908 ****
      get_binary_value( value,
                        NULL,
                        value_ref.field,
!                       refer_offset_source(value_ref));
      // Convert it from one-based to zero-based:
      gg_decrement(value);
      // Check to see if the value is in the range 0...narg-1:
--- 3237,3243 ----
      get_binary_value( value,
                        NULL,
                        value_ref.field,
!                       refer_offset(value_ref));
      // Convert it from one-based to zero-based:
      gg_decrement(value);
      // Check to see if the value is in the range 0...narg-1:
*************** parser_goto( cbl_refer_t value_ref, size
*** 2947,2962 ****
  void
  parser_perform(cbl_label_t *label, bool suppress_nexting)
    {
-   label->used = yylineno;
    Analyze();
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", label)
      char ach[32];
!     sprintf(ach, " label is at %p", (void*)label);
      SHOW_PARSE_TEXT(ach)
!     sprintf(ach, " label->proc is %p", (void*)label->structs.proc);
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
--- 3282,3301 ----
  void
  parser_perform(cbl_label_t *label, bool suppress_nexting)
    {
    Analyze();
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", label)
      char ach[32];
!     sprintf(ach, " label is at %p", static_cast<void*>(label));
      SHOW_PARSE_TEXT(ach)
!     if( label )
!       {
!       sprintf(ach,
!               " label->proc is %p",
!               static_cast<void*>(label->structs.proc));
!       }
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
*************** parser_perform(cbl_label_t *label, bool
*** 2969,2974 ****
--- 3308,3314 ----
      }
  
    CHECK_LABEL(label);
+   label->used = yylineno;
  
    struct cbl_proc_t *procedure = find_procedure(label);
  
*************** parser_perform(cbl_label_t *label, bool
*** 2997,3020 ****
    // pairs were created, the locations of the goto instruction and the label
    // were not known.
  
!   char *para_name     = nullptr;
!   char *sect_name     = nullptr;
    const char *program_name  = current_function->our_unmangled_name;
    size_t deconflictor = symbol_label_id(label);
  
    char ach[256];
    if( label->type == LblParagraph )
      {
!     cbl_label_t *section_label = cbl_label_of(symbol_at(label->parent));
      para_name = label->name;
!     sect_name = section_label->name;
      sprintf(ach,
!             "%s PERFORM %s of %s of %s (%ld)",
              ASM_COMMENT_START,
              para_name,
              sect_name,
              program_name,
!             deconflictor);
  
      gg_insert_into_assembler(ach);
      }
--- 3337,3360 ----
    // pairs were created, the locations of the goto instruction and the label
    // were not known.
  
!   const char *para_name     = nullptr;
!   const char *sect_name     = nullptr;
    const char *program_name  = current_function->our_unmangled_name;
    size_t deconflictor = symbol_label_id(label);
  
    char ach[256];
    if( label->type == LblParagraph )
      {
!     const cbl_label_t *sec_label = cbl_label_of(symbol_at(label->parent));
      para_name = label->name;
!     sect_name = sec_label->name;
      sprintf(ach,
!             "%s PERFORM %s of %s of %s (" HOST_SIZE_T_PRINT_DEC ")",
              ASM_COMMENT_START,
              para_name,
              sect_name,
              program_name,
!             (fmt_size_t)deconflictor);
  
      gg_insert_into_assembler(ach);
      }
*************** parser_perform(cbl_label_t *label, bool
*** 3022,3040 ****
      {
      sect_name = label->name;
      sprintf(ach,
!             "%s PERFORM %s of %s (%ld)",
              ASM_COMMENT_START,
              sect_name,
              program_name,
!             deconflictor);
      gg_insert_into_assembler(ach);
      }
  
    if( !suppress_nexting )
      {
      sprintf(ach,
!             "_proccall.%ld.%d:",
!             symbol_label_id(label),
              call_counter++);
      gg_insert_into_assembler( ach );
      }
--- 3362,3380 ----
      {
      sect_name = label->name;
      sprintf(ach,
!             "%s PERFORM %s of %s (" HOST_SIZE_T_PRINT_DEC ")",
              ASM_COMMENT_START,
              sect_name,
              program_name,
!             (fmt_size_t)deconflictor);
      gg_insert_into_assembler(ach);
      }
  
    if( !suppress_nexting )
      {
      sprintf(ach,
!             "_proccall." HOST_SIZE_T_PRINT_DEC ".%d:",
!             (fmt_size_t)symbol_label_id(label),
              call_counter++);
      gg_insert_into_assembler( ach );
      }
*************** parser_perform_times( cbl_label_t *proc_
*** 3067,3075 ****
      SHOW_PARSE_REF(" ", count)
      SHOW_PARSE_TEXT(" TIMES")
      char ach[32];
!     sprintf(ach, " proc_1 is at %p", (void*)proc_1);
      SHOW_PARSE_TEXT(ach)
!     sprintf(ach, " proc_1->proc is %p", (void*)proc_1->structs.proc);
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
--- 3407,3415 ----
      SHOW_PARSE_REF(" ", count)
      SHOW_PARSE_TEXT(" TIMES")
      char ach[32];
!     sprintf(ach, " proc_1 is at %p", static_cast<void*>(proc_1));
      SHOW_PARSE_TEXT(ach)
!     sprintf(ach, " proc_1->proc is %p", static_cast<void*>(proc_1->structs.proc));
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
*************** parser_perform_times( cbl_label_t *proc_
*** 3082,3089 ****
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    tree counter       = gg_define_variable(LONG);
--- 3422,3429 ----
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    tree counter       = gg_define_variable(LONG);
*************** parser_perform_times( cbl_label_t *proc_
*** 3092,3098 ****
    get_binary_value( counter,
                      NULL,
                      count.field,
!                     refer_offset_source(count));
  
    // Make sure the initial count is valid:
    WHILE( counter, gt_op, gg_cast(LONG, integer_zero_node) )
--- 3432,3438 ----
    get_binary_value( counter,
                      NULL,
                      count.field,
!                     refer_offset(count));
  
    // Make sure the initial count is valid:
    WHILE( counter, gt_op, gg_cast(LONG, integer_zero_node) )
*************** parser_perform_times( cbl_label_t *proc_
*** 3104,3111 ****
      WEND
  
    sprintf(ach,
!           "_procretb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler(ach);
    }
  
--- 3444,3452 ----
      WEND
  
    sprintf(ach,
!           "_procretb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
!   token_location_override(current_location_minus_one());
    gg_insert_into_assembler(ach);
    }
  
*************** internal_perform_through( cbl_label_t *p
*** 3120,3136 ****
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", proc_1);
      char ach[32];
!     sprintf(ach, " proc_1 is at %p", (void*)proc_1);
      SHOW_PARSE_TEXT(ach)
!     sprintf(ach, " proc_1->proc is %p", (void*)proc_1->structs.proc);
      SHOW_PARSE_TEXT(ach)
      if( proc_2 )
        {
        SHOW_PARSE_INDENT
!       SHOW_PARSE_LABEL("", proc_2);
!       sprintf(ach, " proc_2 is at %p", (void*)proc_2);
        SHOW_PARSE_TEXT(ach)
!       sprintf(ach, " proc_2->proc is %p", (void*)proc_2->structs.proc);
        SHOW_PARSE_TEXT(ach)
        }
      SHOW_PARSE_END
--- 3461,3482 ----
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", proc_1);
      char ach[32];
!     sprintf(ach, " proc_1 is at %p", static_cast<void*>(proc_1));
      SHOW_PARSE_TEXT(ach)
!     if( proc_1 )
!       {
!       sprintf(ach,
!               " proc_1->proc is %p",
!               static_cast<void*>(proc_1->structs.proc));
!       }
      SHOW_PARSE_TEXT(ach)
      if( proc_2 )
        {
        SHOW_PARSE_INDENT
!       SHOW_PARSE_LABEL_OK("", proc_2);
!       sprintf(ach, " proc_2 is at %p", static_cast<void*>(proc_2));
        SHOW_PARSE_TEXT(ach)
!       sprintf(ach, " proc_2->proc is %p", static_cast<void*>(proc_2->structs.proc));
        SHOW_PARSE_TEXT(ach)
        }
      SHOW_PARSE_END
*************** internal_perform_through( cbl_label_t *p
*** 3143,3156 ****
  
    CHECK_LABEL(proc_1);
  
!   if(!proc_2)
      {
      parser_perform(proc_1, suppress_nexting);
      return;
      }
  
-   CHECK_LABEL(proc_2);
- 
    struct cbl_proc_t *proc1 = find_procedure(proc_1);
    struct cbl_proc_t *proc2 = find_procedure(proc_2);
  
--- 3489,3500 ----
  
    CHECK_LABEL(proc_1);
  
!   if( !proc_2 )
      {
      parser_perform(proc_1, suppress_nexting);
      return;
      }
  
    struct cbl_proc_t *proc1 = find_procedure(proc_1);
    struct cbl_proc_t *proc2 = find_procedure(proc_2);
  
*************** internal_perform_through( cbl_label_t *p
*** 3175,3189 ****
    pseudo_return_push(proc2, return_addr);
  
    // Create the code that will launch the first procedure
!   gg_insert_into_assembler("%s PERFORM %s THROUGH %s",
                          ASM_COMMENT_START, proc_1->name, proc_2->name);
  
    if( !suppress_nexting )
      {
      char ach[256];
      sprintf(ach,
!             "_proccall.%ld.%d:",
!             symbol_label_id(proc_2),
              call_counter++);
      gg_insert_into_assembler(ach);
      }
--- 3519,3533 ----
    pseudo_return_push(proc2, return_addr);
  
    // Create the code that will launch the first procedure
!   gg_insert_into_assemblerf("%s PERFORM %s THROUGH %s",
                          ASM_COMMENT_START, proc_1->name, proc_2->name);
  
    if( !suppress_nexting )
      {
      char ach[256];
      sprintf(ach,
!             "_proccall." HOST_SIZE_T_PRINT_DEC ".%d:",
!             (fmt_size_t)symbol_label_id(proc_2),
              call_counter++);
      gg_insert_into_assembler(ach);
      }
*************** internal_perform_through_times(   cbl_la
*** 3205,3221 ****
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", proc_1);
      char ach[32];
!     sprintf(ach, " proc_1 is at %p", (void*)proc_1);
      SHOW_PARSE_TEXT(ach)
!     sprintf(ach, " proc_1->proc is %p", (void*)proc_1->structs.proc);
      SHOW_PARSE_TEXT(ach)
      if( proc_2 )
        {
        SHOW_PARSE_INDENT
!       SHOW_PARSE_LABEL("", proc_2);
!       sprintf(ach, " proc_2 is at %p", (void*)proc_2);
        SHOW_PARSE_TEXT(ach)
!       sprintf(ach, " proc_2->proc is %p", (void*)proc_2->structs.proc);
        SHOW_PARSE_TEXT(ach)
        }
      SHOW_PARSE_REF(" ", count);
--- 3549,3570 ----
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", proc_1);
      char ach[32];
!     sprintf(ach, " proc_1 is at %p", static_cast<void*>(proc_1));
      SHOW_PARSE_TEXT(ach)
!     if( proc_1 )
!       {
!       sprintf(ach,
!               " proc_1->proc is %p",
!               static_cast<void*>(proc_1->structs.proc));
!       }
      SHOW_PARSE_TEXT(ach)
      if( proc_2 )
        {
        SHOW_PARSE_INDENT
!       SHOW_PARSE_LABEL_OK("", proc_2);
!       sprintf(ach, " proc_2 is at %p", static_cast<void*>(proc_2));
        SHOW_PARSE_TEXT(ach)
!       sprintf(ach, " proc_2->proc is %p", static_cast<void*>(proc_2->structs.proc));
        SHOW_PARSE_TEXT(ach)
        }
      SHOW_PARSE_REF(" ", count);
*************** internal_perform_through_times(   cbl_la
*** 3232,3246 ****
  
    char ach[256];
    sprintf(ach,
!           "_proccallb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    tree counter       = gg_define_variable(LONG);
    get_binary_value( counter,
                      NULL,
                      count.field,
!                     refer_offset_source(count));
    WHILE( counter, gt_op, gg_cast(LONG, integer_zero_node) )
      {
      internal_perform_through(proc_1, proc_2, true); // true means suppress_nexting
--- 3581,3595 ----
  
    char ach[256];
    sprintf(ach,
!           "_proccallb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    tree counter       = gg_define_variable(LONG);
    get_binary_value( counter,
                      NULL,
                      count.field,
!                     refer_offset(count));
    WHILE( counter, gt_op, gg_cast(LONG, integer_zero_node) )
      {
      internal_perform_through(proc_1, proc_2, true); // true means suppress_nexting
*************** internal_perform_through_times(   cbl_la
*** 3249,3256 ****
      WEND
  
    sprintf(ach,
!           "_procretb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
    }
  
--- 3598,3606 ----
      WEND
  
    sprintf(ach,
!           "_procretb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
!   token_location_override(current_location_minus_one());
    gg_insert_into_assembler( ach );
    }
  
*************** parser_first_statement( int lineno )
*** 3325,3332 ****
      }
    }
  
- #define linemap_add(...)
- 
  void
  parser_enter_file(const char *filename)
    {
--- 3675,3680 ----
*************** parser_enter_file(const char *filename)
*** 3358,3366 ****
        }
      }
  
-   // Let the linemap routine know we are working on a new file:
-   linemap_add(line_table, LC_ENTER, 0, filename, 1);
- 
    if( file_level == 0 )
      {
      // Build a translation_unit_decl:
--- 3706,3711 ----
*************** parser_enter_file(const char *filename)
*** 3381,3388 ****
    A = gg_declare_variable(B, C, NULL_TREE, vs_external_reference)
  
      SET_VAR_DECL(var_decl_exception_code         , INT    , "__gg__exception_code");
-     SET_VAR_DECL(var_decl_exception_handled      , INT    , "__gg__exception_handled");
-     SET_VAR_DECL(var_decl_exception_file_number  , INT    , "__gg__exception_file_number");
      SET_VAR_DECL(var_decl_exception_file_status  , INT    , "__gg__exception_file_status");
      SET_VAR_DECL(var_decl_exception_file_name    , CHAR_P , "__gg__exception_file_name");
      SET_VAR_DECL(var_decl_exception_statement    , CHAR_P , "__gg__exception_statement");
--- 3726,3731 ----
*************** parser_enter_file(const char *filename)
*** 3394,3400 ****
  
      SET_VAR_DECL(var_decl_default_compute_error  , INT    , "__gg__default_compute_error");
      SET_VAR_DECL(var_decl_rdigits                , INT    , "__gg__rdigits");
-     SET_VAR_DECL(var_decl_odo_violation          , INT    , "__gg__odo_violation");
      SET_VAR_DECL(var_decl_unique_prog_id         , SIZE_T , "__gg__unique_prog_id");
  
      SET_VAR_DECL(var_decl_entry_location         , VOID_P , "__gg__entry_pointer");
--- 3737,3742 ----
*************** parser_leave_file()
*** 3436,3451 ****
      {
      SHOW_PARSE_HEADER
      char ach[256];
!     sprintf(ach, "leaving level:%d %s", file_level, current_filename.back().c_str());
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
-   if( file_level > 0)
-     {
-     linemap_add(line_table, LC_LEAVE, false, NULL, 0);
-     }
    file_level -= 1;
    current_filename.pop_back();
    }
  
  void
--- 3778,3815 ----
      {
      SHOW_PARSE_HEADER
      char ach[256];
!     sprintf(ach,
!             "leaving level:%d %s",
!             file_level,
!             current_filename.back().c_str());
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
    file_level -= 1;
    current_filename.pop_back();
+ 
+   if( file_level == 0 )
+     {
+     // We are leaving the top-level file, which means this compilation is
+     // done, done, done.
+ 
+     // There is, however, one thing left to do.  If the command line says
+     // that this module needs a main entry point, then this is where
+     // we create a main() function.  We build it at the end, so that all of
+     // the .loc directives associated with it appear at the end of the
+     // source code.  We used to create the main() entry point at the beginning,
+     // but that created confusion for GDB when trying to debug the generated
+     // executable.
+     if( main_entry_point )
+       {
+       next_program_is_main = false;
+       build_main_that_calls_something(main_entry_point);
+       free(main_entry_point);
+       main_entry_point = NULL;
+       }
+ 
+     gg_leaving_the_source_code_file();
+     }
    }
  
  void
*************** enter_program_common(const char *funcnam
*** 3460,3474 ****
    // have no parameters.  We'll chain the parameters on in parser_division(),
    // when we process PROCEDURE DIVISION USING...
  
!   gg_define_function_with_no_parameters( COBOL_FUNCTION_RETURN_TYPE,
!                                          funcname,
!                                          funcname_);
  
    current_function->first_time_through =
!     gg_define_variable(INT,
!                         "_first_time_through",
!                         vs_static,
!                         integer_one_node);
  
    gg_create_goto_pair(&current_function->skip_init_goto,
                        &current_function->skip_init_label);
--- 3824,3839 ----
    // have no parameters.  We'll chain the parameters on in parser_division(),
    // when we process PROCEDURE DIVISION USING...
  
!   gg_define_function(COBOL_FUNCTION_RETURN_TYPE,
!                      funcname,
!                      funcname_,
!                      NULL_TREE);
  
    current_function->first_time_through =
!                                   gg_define_variable(INT,
!                                                       "_first_time_through",
!                                                       vs_static,
!                                                       integer_one_node);
  
    gg_create_goto_pair(&current_function->skip_init_goto,
                        &current_function->skip_init_label);
*************** enter_program_common(const char *funcnam
*** 3493,3500 ****
    current_function->current_section = NULL;
    current_function->current_paragraph = NULL;
  
-   current_function->is_truly_nested = false;
- 
    // Text conversion must be initialized before the code generated by
    // parser_symbol_add runs.
  
--- 3858,3863 ----
*************** parser_enter_program( const char *funcna
*** 3554,3572 ****
    // The first thing we have to do is mangle this name.  This is safe even
    // though the end result will be mangled again, because the mangler doesn't
    // change a mangled name.
    char *mangled_name = cobol_name_mangler(funcname_);
  
    size_t parent_index = current_program_index();
!   char funcname[128];
    if( parent_index )
      {
      // This is a nested function.  Tack on the parent_index to the end of it.
!     sprintf(funcname, "%s.%ld", mangled_name, parent_index);
      }
    else
      {
      // This is a top-level function; just use the straight mangled name
!     strcpy(funcname, mangled_name);
      }
    free(mangled_name);
  
--- 3917,3938 ----
    // The first thing we have to do is mangle this name.  This is safe even
    // though the end result will be mangled again, because the mangler doesn't
    // change a mangled name.
+ 
    char *mangled_name = cobol_name_mangler(funcname_);
  
    size_t parent_index = current_program_index();
!   char *funcname;
    if( parent_index )
      {
      // This is a nested function.  Tack on the parent_index to the end of it.
!     funcname = xasprintf( "%s." HOST_SIZE_T_PRINT_DEC,
!                           mangled_name,
!                           (fmt_size_t)parent_index);
      }
    else
      {
      // This is a top-level function; just use the straight mangled name
!     funcname = xstrdup(mangled_name);
      }
    free(mangled_name);
  
*************** parser_enter_program( const char *funcna
*** 3580,3607 ****
  
    if( !is_function && !parent_index )
      {
!     // This is a top_level program, and not a function
      if( next_program_is_main )
        {
        next_program_is_main = false;
!       if(main_entry_point)
!         {
!         build_main_that_calls_something(main_entry_point);
!         free(main_entry_point);
!         main_entry_point = NULL;
!         }
!       else
          {
!         build_main_that_calls_something(funcname);
          }
        }
      }
  
-   // Call this after build_main_that_calls_something, because it manipulates
-   // the current line number to DEFAULT_LINE_NUMBER.  We have to manipulate it
-   // back afterward.
-   gg_set_current_line_number(CURRENT_LINE_NUMBER);
- 
    if( strcmp(funcname_, "main") == 0 && this_module_has_main )
      {
      // setting 'retval' to 1 let's the caller know that we are being told
--- 3946,3970 ----
  
    if( !is_function && !parent_index )
      {
!     // This is a top_level program-id, and not a function
      if( next_program_is_main )
        {
+       // This is the first top-level program-id.
        next_program_is_main = false;
!       if( !main_entry_point )
          {
!         // Because no explicit main_entry_point was specified, this program-id,
!         // the first in the file, becomes the target of the main() function
!         // that will be created at parser_leave_file time.
!         main_entry_point = xstrdup(funcname);
! 
!         char *psz = cobol_name_mangler(main_entry_point);
!         strncpy(ach_cobol_entry_point, psz, sizeof(ach_cobol_entry_point)-1);
!         free(psz);
          }
        }
      }
  
    if( strcmp(funcname_, "main") == 0 && this_module_has_main )
      {
      // setting 'retval' to 1 let's the caller know that we are being told
*************** parser_enter_program( const char *funcna
*** 3632,3637 ****
--- 3995,4002 ----
      TRACE1_TEXT("\"")
      TRACE1_END
      }
+ 
+   free(funcname);
    }
  
  void
*************** parser_init_list_size(int count_of_varia
*** 3727,3734 ****
    vti_list_size = count_of_variables;
    char ach[48];
    sprintf(ach,
!           "..variables_to_init_%ld",
!           current_function->our_symbol_table_index);
    tree array_of_variables_type = build_array_type_nelts(VOID_P,
                                                          count_of_variables+1);
    vti_array = gg_define_variable( array_of_variables_type,
--- 4092,4099 ----
    vti_list_size = count_of_variables;
    char ach[48];
    sprintf(ach,
!           "..variables_to_init_" HOST_SIZE_T_PRINT_DEC,
!           (fmt_size_t)current_function->our_symbol_table_index);
    tree array_of_variables_type = build_array_type_nelts(VOID_P,
                                                          count_of_variables+1);
    vti_array = gg_define_variable( array_of_variables_type,
*************** parser_init_list()
*** 3766,3773 ****
  
    char ach[48];
    sprintf(ach,
!           "..variables_to_init_%ld",
!           current_function->our_symbol_table_index);
    tree array = gg_trans_unit_var_decl(ach);
    gg_call(VOID,
            "__gg__variables_to_init",
--- 4131,4138 ----
  
    char ach[48];
    sprintf(ach,
!           "..variables_to_init_" HOST_SIZE_T_PRINT_DEC,
!           (fmt_size_t)current_function->our_symbol_table_index);
    tree array = gg_trans_unit_var_decl(ach);
    gg_call(VOID,
            "__gg__variables_to_init",
*************** psa_FldLiteralN(struct cbl_field_t *fiel
*** 3789,3794 ****
--- 4154,4161 ----
    // We are constructing a completely static constant structure, based on the
    // text string in .initial
  
+   CHECK_FIELD(field);
+ 
    FIXED_WIDE_INT(128) value = 0;
  
    do
*************** psa_FldLiteralN(struct cbl_field_t *fiel
*** 3827,3833 ****
      int rdigit_delta = 0;
      int exponent = 0;
  
!     char *exp = strchr(p, 'E');
      if( !exp )
        {
        exp = strchr(p, 'e');
--- 4194,4200 ----
      int rdigit_delta = 0;
      int exponent = 0;
  
!     const char *exp = strchr(p, 'E');
      if( !exp )
        {
        exp = strchr(p, 'e');
*************** psa_FldLiteralN(struct cbl_field_t *fiel
*** 3948,3954 ****
  
    static size_t our_index = 0;
  
!   sprintf(id_string, ".%ld", ++our_index);
    strcpy(base_name, field->name);
    strcat(base_name, id_string);
  
--- 4315,4321 ----
  
    static size_t our_index = 0;
  
!   sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, (fmt_size_t)++our_index);
    strcpy(base_name, field->name);
    strcat(base_name, id_string);
  
*************** psa_FldLiteralN(struct cbl_field_t *fiel
*** 3963,3968 ****
--- 4330,4340 ----
                                            vs_static);
    DECL_INITIAL(new_var_decl) = wide_int_to_tree(var_type, value);
    field->data_decl_node = new_var_decl;
+ 
+   // Note that during compilation, the integer value, assuming it can be
+   // contained in 128-bit integers, can be accessed with
+   //
+   //  wi::to_wide( DECL_INITIAL(new_var_decl) )
    }
  
  static void
*************** psa_FldBlob(struct cbl_field_t *var )
*** 3976,3981 ****
--- 4348,4355 ----
      SHOW_PARSE_END
      }
  
+   CHECK_FIELD(var);
+ 
    // We are constructing a completely static constant structure.  We know the
    // capacity.  We'll create it from the data.initial.  The var_decl_node will
    // be a pointer to the data
*************** psa_FldBlob(struct cbl_field_t *var )
*** 3985,3991 ****
  
    static size_t our_index = 0;
  
!   sprintf(id_string, ".%ld", ++our_index);
    strcpy(base_name, var->name);
    strcat(base_name, id_string);
  
--- 4359,4365 ----
  
    static size_t our_index = 0;
  
!   sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, (fmt_size_t)++our_index);
    strcpy(base_name, var->name);
    strcat(base_name, id_string);
  
*************** psa_FldBlob(struct cbl_field_t *var )
*** 4013,4079 ****
    }
  
  void
! parser_accept(  struct cbl_refer_t refer,
!                 enum special_name_t special_e )
    {
-   Analyze();
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
!     SHOW_PARSE_REF(" ", refer);
      SHOW_PARSE_END
      }
-   TRACE1
-     {
-     TRACE1_HEADER
-     TRACE1_END
-     }
- 
-   /*
-   enum special_name_t
-       {
-         SYSIN_e,
-         SYSIPT_e,
-         SYSOUT_e,
-         SYSLIST_e,
-         SYSLST_e,
-         SYSPUNCH_e,
-         SYSPCH_e,
-         CONSOLE_e,
-         C01_e, C02_e, C03_e, C04_e, C05_e, C06_e,
-         C07_e, C08_e, C09_e, C10_e, C11_e, C12_e,
-         CSP_e,
-         S01_e, S02_e, S03_e, S04_e, S05_e,
-         AFP_5A_e,
-   };
-   */
  
    // The ISO spec describes the valid special names for ACCEPT as implementation
    // dependent.  We are following IBM's lead.
  
    tree environment = build_int_cst_type(INT, special_e);
  
!   switch( special_e )
      {
      case CONSOLE_e:
      case SYSIPT_e:
      case SYSIN_e:
!       break;
!     default:
!       dbgmsg("%s(): We don't know what to do with special_name_t %d,", __func__, special_e);
!       dbgmsg("%s(): so we are ignoring it.", __func__);
!       yywarn("unrecognized SPECIAL NAME ignored");
        return;
        break;
-     }
  
!   gg_call(VOID,
!           "__gg__accept",
!           environment,
!           gg_get_address_of(refer.field->var_decl_node),
!           refer_offset_dest(refer),
!           refer_size_dest(refer),
!           NULL_TREE);
    }
  
  // TODO: update documentation.
--- 4387,4568 ----
    }
  
  void
! parser_accept(const struct cbl_refer_t &tgt,
!               special_name_t special_e,
!               cbl_label_t *error,
!               cbl_label_t *not_error )
    {
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
!     if( error )
!       {
!       SHOW_PARSE_LABEL(" error ", error)
!       }
!     if( not_error )
!       {
!       SHOW_PARSE_LABEL(" not_error ", not_error)
!       }
      SHOW_PARSE_END
      }
  
    // The ISO spec describes the valid special names for ACCEPT as implementation
    // dependent.  We are following IBM's lead.
  
    tree environment = build_int_cst_type(INT, special_e);
  
!   const char *function_to_call = NULL;
! 
!   switch(special_e)
      {
+     case STDIN_e:
      case CONSOLE_e:
      case SYSIPT_e:
      case SYSIN_e:
!       // This is ordinary input from from the stdin:
!       gg_call(VOID,
!               "__gg__accept",
!               environment,
!               gg_get_address_of(tgt.field->var_decl_node),
!               refer_offset(tgt),
!               refer_size_dest(tgt),
!               NULL_TREE);
        return;
        break;
  
!     case C01_e:
!     case C02_e:
!     case C03_e:
!     case C04_e:
!     case C05_e:
!     case C06_e:
!     case C07_e:
!     case C08_e:
!     case C09_e:
!     case C10_e:
!     case C11_e:
!     case C12_e:
!     case CSP_e:
!     case S01_e:
!     case S02_e:
!     case S03_e:
!     case S04_e:
!     case S05_e:
!     case AFP_5A_e:
!     case STDOUT_e:
!     case SYSOUT_e:
!     case SYSLIST_e:
!     case SYSLST_e:
!     case STDERR_e:
!     case SYSPUNCH_e:
!     case SYSPCH_e:
!     case SYSERR_e:
!       cbl_internal_error("Not valid for ACCEPT statement.");
!       break;
! 
!     case ARG_NUM_e:
!       // This ACCEPT statement wants the number of argv values:
!       gg_call(VOID,
!               "__gg__get_argc",
!               gg_get_address_of(tgt.field->var_decl_node),
!               refer_offset(tgt),
!               refer_size_source(tgt),
!               NULL_TREE);
!        return;
!        break;
! 
!     case ENV_NAME_e:
!       // This fetches the environment name set by DISPLAY... UPON ENV_NAME_e
!       gg_call(VOID,
!               "__gg__get_env_name",
!               gg_get_address_of(tgt.field->var_decl_node),
!               refer_offset(tgt),
!               refer_size_source(tgt),
!               NULL_TREE);
!        return;
!        break;
! 
!     case ENV_VALUE_e:
!       // This fetches the environment value associated with the previously
!       // esablished name
!       function_to_call = "__gg__get_env_value";
!       break;
! 
!     case ARG_VALUE_e:
!       // We are fetching the variable whose index was established by a prior
!       // DISPLAY UPON ARGUMENT-NUMBER.  After the fetch, the value will be
!       // incremented by one.
!       function_to_call = "__gg__accept_arg_value";
!       break;
!     }
!   if( function_to_call )
!     {
!     tree erf = gg_define_int();
!     gg_assign(erf,
!               gg_call_expr(  INT,
!                             function_to_call,
!                             gg_get_address_of(tgt.field->var_decl_node),
!                             refer_offset(tgt),
!                             refer_size_dest(tgt),
!                             NULL_TREE));
!     if( error )
!       {
!       // There is an ON EXCEPTION phrase:
!       IF( erf, ne_op, integer_zero_node )
!         {
!         SHOW_PARSE
!           {
!           SHOW_PARSE_INDENT
!           SHOW_PARSE_TEXT("Laying down GOTO     error->INTO for_argv")
!           SHOW_PARSE_LABEL_OK(" ", error)
!           }
!         gg_append_statement( error->structs.arith_error->into.go_to );
!         }
!       ELSE
!         {
!         }
!         ENDIF
!       }
!     if( not_error )
!       {
!       // There is an NOT ON EXCEPTION phrase:
!       IF( erf, eq_op, integer_zero_node )
!         {
!         SHOW_PARSE
!           {
!           SHOW_PARSE_INDENT
!           SHOW_PARSE_TEXT("Laying down GOTO not_error->INTO for_argv")
!           SHOW_PARSE_LABEL_OK(" ", not_error)
!           }
!         gg_append_statement( not_error->structs.arith_error->into.go_to );
!         }
!       ELSE
!         {
!         }
!         ENDIF
!       }
!     if( error )
!       {
!       SHOW_PARSE
!         {
!         SHOW_PARSE_INDENT
!         SHOW_PARSE_TEXT("Laying down LABEL     error->bottom")
!         SHOW_PARSE_LABEL_OK(" ", error)
!         }
!       gg_append_statement( error->structs.arith_error->bottom.label );
!       }
!     if( not_error )
!       {
!       SHOW_PARSE
!         {
!         SHOW_PARSE_INDENT
!         SHOW_PARSE_TEXT("Laying down LABEL not_error->bottom")
!         SHOW_PARSE_LABEL_OK(" ", not_error)
!         SHOW_PARSE_END
!         }
!       gg_append_statement( not_error->structs.arith_error->bottom.label );
!       }
!     }
    }
  
  // TODO: update documentation.
*************** parser_accept_exception( cbl_label_t *ac
*** 4085,4091 ****
  
    // We are entering either SIZE ERROR or NOT SIZE ERROR code
    RETURN_IF_PARSE_ONLY;
-   set_up_on_exception_label(accept_label);
  
    SHOW_PARSE
      {
--- 4574,4579 ----
*************** parser_accept_exception( cbl_label_t *ac
*** 4098,4103 ****
--- 4586,4594 ----
      SHOW_PARSE_END
      }
  
+   CHECK_LABEL(accept_label);
+   set_up_on_exception_label(accept_label);
+ 
    // Jump over the [NOT] ON EXCEPTION code that is about to be laid down
    gg_append_statement( accept_label->structs.arith_error->over.go_to );
    // Create the label that allows the following code to be executed at
*************** parser_accept_exception_end( cbl_label_t
*** 4124,4129 ****
--- 4615,4622 ----
      SHOW_PARSE_END
      }
  
+   CHECK_LABEL(accept_label);
+ 
    // Jump to the end of the arithmetic code:
    gg_append_statement( accept_label->structs.arith_error->bottom.go_to );
    // Lay down the label that allows the ERROR/NOT ERROR instructions
*************** parser_accept_exception_end( cbl_label_t
*** 4133,4140 ****
    }
  
  void
! parser_accept_command_line( cbl_refer_t tgt,
!                             cbl_refer_t source,
                              cbl_label_t *error,
                              cbl_label_t *not_error )
    {
--- 4626,4633 ----
    }
  
  void
! parser_accept_command_line( const cbl_refer_t &tgt,
!                             const cbl_refer_t &source,
                              cbl_label_t *error,
                              cbl_label_t *not_error )
    {
*************** parser_accept_command_line( cbl_refer_t
*** 4162,4168 ****
                gg_call_expr( INT,
                              "__gg__get_command_line",
                              gg_get_address_of(tgt.field->var_decl_node),
!                             refer_offset_dest(tgt),
                              refer_size_dest(tgt),
                              NULL_TREE));
      if( error )
--- 4655,4661 ----
                gg_call_expr( INT,
                              "__gg__get_command_line",
                              gg_get_address_of(tgt.field->var_decl_node),
!                             refer_offset(tgt),
                              refer_size_dest(tgt),
                              NULL_TREE));
      if( error )
*************** parser_accept_command_line( cbl_refer_t
*** 4174,4180 ****
            {
            SHOW_PARSE_INDENT
            SHOW_PARSE_TEXT("Laying down GOTO     error->INTO for_command_line")
!           SHOW_PARSE_LABEL(" ", error)
            }
          gg_append_statement( error->structs.arith_error->into.go_to );
          }
--- 4667,4673 ----
            {
            SHOW_PARSE_INDENT
            SHOW_PARSE_TEXT("Laying down GOTO     error->INTO for_command_line")
!           SHOW_PARSE_LABEL_OK(" ", error)
            }
          gg_append_statement( error->structs.arith_error->into.go_to );
          }
*************** parser_accept_command_line( cbl_refer_t
*** 4192,4198 ****
            {
            SHOW_PARSE_INDENT
            SHOW_PARSE_TEXT("Laying down GOTO not_error->INTO for command_line")
!           SHOW_PARSE_LABEL(" ", not_error)
            }
          gg_append_statement( not_error->structs.arith_error->into.go_to );
          }
--- 4685,4691 ----
            {
            SHOW_PARSE_INDENT
            SHOW_PARSE_TEXT("Laying down GOTO not_error->INTO for command_line")
!           SHOW_PARSE_LABEL_OK(" ", not_error)
            }
          gg_append_statement( not_error->structs.arith_error->into.go_to );
          }
*************** parser_accept_command_line( cbl_refer_t
*** 4209,4218 ****
                gg_call_expr(  INT,
                              "__gg__get_argv",
                              gg_get_address_of(tgt.field->var_decl_node),
!                             refer_offset_dest(tgt),
                              refer_size_dest(tgt),
                              gg_get_address_of(source.field->var_decl_node),
!                             refer_offset_dest(source),
                              refer_size_dest(source),
                              NULL_TREE));
      if( error )
--- 4702,4711 ----
                gg_call_expr(  INT,
                              "__gg__get_argv",
                              gg_get_address_of(tgt.field->var_decl_node),
!                             refer_offset(tgt),
                              refer_size_dest(tgt),
                              gg_get_address_of(source.field->var_decl_node),
!                             refer_offset(source),
                              refer_size_dest(source),
                              NULL_TREE));
      if( error )
*************** parser_accept_command_line( cbl_refer_t
*** 4224,4230 ****
            {
            SHOW_PARSE_INDENT
            SHOW_PARSE_TEXT("Laying down GOTO     error->INTO for_argv")
!           SHOW_PARSE_LABEL(" ", error)
            }
          gg_append_statement( error->structs.arith_error->into.go_to );
          }
--- 4717,4723 ----
            {
            SHOW_PARSE_INDENT
            SHOW_PARSE_TEXT("Laying down GOTO     error->INTO for_argv")
!           SHOW_PARSE_LABEL_OK(" ", error)
            }
          gg_append_statement( error->structs.arith_error->into.go_to );
          }
*************** parser_accept_command_line( cbl_refer_t
*** 4242,4248 ****
            {
            SHOW_PARSE_INDENT
            SHOW_PARSE_TEXT("Laying down GOTO not_error->INTO for_argv")
!           SHOW_PARSE_LABEL(" ", not_error)
            }
          gg_append_statement( not_error->structs.arith_error->into.go_to );
          }
--- 4735,4741 ----
            {
            SHOW_PARSE_INDENT
            SHOW_PARSE_TEXT("Laying down GOTO not_error->INTO for_argv")
!           SHOW_PARSE_LABEL_OK(" ", not_error)
            }
          gg_append_statement( not_error->structs.arith_error->into.go_to );
          }
*************** parser_accept_command_line( cbl_refer_t
*** 4258,4264 ****
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT("Laying down LABEL     error->bottom")
!       SHOW_PARSE_LABEL(" ", error)
        }
      gg_append_statement( error->structs.arith_error->bottom.label );
      }
--- 4751,4757 ----
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT("Laying down LABEL     error->bottom")
!       SHOW_PARSE_LABEL_OK(" ", error)
        }
      gg_append_statement( error->structs.arith_error->bottom.label );
      }
*************** parser_accept_command_line( cbl_refer_t
*** 4268,4274 ****
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT("Laying down LABEL not_error->bottom")
!       SHOW_PARSE_LABEL(" ", not_error)
        SHOW_PARSE_END
        }
      gg_append_statement( not_error->structs.arith_error->bottom.label );
--- 4761,4767 ----
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT("Laying down LABEL not_error->bottom")
!       SHOW_PARSE_LABEL_OK(" ", not_error)
        SHOW_PARSE_END
        }
      gg_append_statement( not_error->structs.arith_error->bottom.label );
*************** parser_accept_command_line( cbl_refer_t
*** 4276,4282 ****
    }
  
  void
! parser_accept_command_line_count( cbl_refer_t tgt )
    {
    Analyze();
    SHOW_PARSE
--- 4769,4775 ----
    }
  
  void
! parser_accept_command_line_count( const cbl_refer_t &tgt )
    {
    Analyze();
    SHOW_PARSE
*************** parser_accept_command_line_count( cbl_re
*** 4292,4307 ****
    gg_call(  VOID,
              "__gg__get_argc",
              gg_get_address_of(tgt.field->var_decl_node),
!             refer_offset_dest(tgt),
              refer_size_dest(tgt),
              NULL_TREE);
    }
  
  void
! parser_accept_envar(struct cbl_refer_t tgt,
!                     struct cbl_refer_t envar,
!                     cbl_label_t *error,
!                     cbl_label_t *not_error )
    {
    Analyze();
  
--- 4785,4800 ----
    gg_call(  VOID,
              "__gg__get_argc",
              gg_get_address_of(tgt.field->var_decl_node),
!             refer_offset(tgt),
              refer_size_dest(tgt),
              NULL_TREE);
    }
  
  void
! parser_accept_envar(const struct cbl_refer_t &tgt,
!                     const struct cbl_refer_t &envar,
!                           cbl_label_t *error,
!                           cbl_label_t *not_error )
    {
    Analyze();
  
*************** parser_accept_envar(struct cbl_refer_t t
*** 4330,4339 ****
              gg_call_expr( INT,
                            "__gg__accept_envar",
                            gg_get_address_of(tgt.field->var_decl_node),
!                           refer_offset_dest(tgt),
                            refer_size_dest(tgt),
                            gg_get_address_of(envar.field->var_decl_node),
!                           refer_offset_source(envar),
                            refer_size_source(envar),
                            NULL_TREE));
    if( error )
--- 4823,4832 ----
              gg_call_expr( INT,
                            "__gg__accept_envar",
                            gg_get_address_of(tgt.field->var_decl_node),
!                           refer_offset(tgt),
                            refer_size_dest(tgt),
                            gg_get_address_of(envar.field->var_decl_node),
!                           refer_offset(envar),
                            refer_size_source(envar),
                            NULL_TREE));
    if( error )
*************** parser_accept_envar(struct cbl_refer_t t
*** 4366,4372 ****
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT("Laying down LABEL     error->bottom")
!       SHOW_PARSE_LABEL(" ", error)
        }
      gg_append_statement( error->structs.arith_error->bottom.label );
      }
--- 4859,4865 ----
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT("Laying down LABEL     error->bottom")
!       SHOW_PARSE_LABEL_OK(" ", error)
        }
      gg_append_statement( error->structs.arith_error->bottom.label );
      }
*************** parser_accept_envar(struct cbl_refer_t t
*** 4376,4382 ****
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT("Laying down LABEL not_error->bottom")
!       SHOW_PARSE_LABEL(" ", not_error)
        SHOW_PARSE_END
        }
      gg_append_statement( not_error->structs.arith_error->bottom.label );
--- 4869,4875 ----
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT("Laying down LABEL not_error->bottom")
!       SHOW_PARSE_LABEL_OK(" ", not_error)
        SHOW_PARSE_END
        }
      gg_append_statement( not_error->structs.arith_error->bottom.label );
*************** parser_accept_envar(struct cbl_refer_t t
*** 4384,4390 ****
    }
  
  void
! parser_set_envar( struct cbl_refer_t name, struct cbl_refer_t value )
    {
    Analyze();
    SHOW_PARSE
--- 4877,4884 ----
    }
  
  void
! parser_set_envar( const struct cbl_refer_t &name,
!                   const struct cbl_refer_t &value )
    {
    Analyze();
    SHOW_PARSE
*************** parser_set_envar( struct cbl_refer_t nam
*** 4402,4411 ****
    gg_call(BOOL,
            "__gg__set_envar",
            gg_get_address_of(name.field->var_decl_node),
!           refer_offset_source(name),
            refer_size_source(name),
            gg_get_address_of(value.field->var_decl_node),
!           refer_offset_source(value),
            refer_size_source(value),
            NULL_TREE);
    }
--- 4896,4905 ----
    gg_call(BOOL,
            "__gg__set_envar",
            gg_get_address_of(name.field->var_decl_node),
!           refer_offset(name),
            refer_size_source(name),
            gg_get_address_of(value.field->var_decl_node),
!           refer_offset(value),
            refer_size_source(value),
            NULL_TREE);
    }
*************** parser_display_internal(tree file_descri
*** 4786,4792 ****
              build_int_cst_type(SIZE_T, refer.field->data.capacity),
              advance ? integer_one_node : integer_zero_node,
              NULL_TREE );
-     cursor_at_sol = advance;
      }
    else if( refer.field->type == FldLiteralN )
      {
--- 5280,5285 ----
*************** parser_display_internal(tree file_descri
*** 4824,4873 ****
          *p = 'E';
          if( exp < 0 && exp >= -9 )
            {
!             p[1] = '-';
!             p[2] = '0';
!             p[3] = '0' - exp;
!             p[4] = '\0';
            }
          else if( exp >= 0 && exp <= 9 )
            {
!             p[1] = '+';
!             p[2] = '0';
!             p[3] = '0' + exp;
!             p[4] = '\0';
            }
          }
        else if (exp == 0)
          {
!           p[-1] = '\0';
          }
        else if (exp < 0)
          {
!           p[-1] = '\0';
!           char *q = strchr (ach, '.');
!           char dig = q[-1];
!           q[-1] = '\0';
!           char tem[132];
!           snprintf (tem, 132, "%s0.%0*u%c%s", ach, -exp - 1, 0, dig, q + 1);
!           strcpy (ach, tem);
          }
!       else if (exp > 0)
          {
!           p[-1] = '\0';
!           char *q = strchr (ach, '.');
!           for (int i = 0; i != exp; ++i)
!             q[i] = q[i + 1];
!           q[exp] = '.';
          }
        __gg__remove_trailing_zeroes(ach);
        }
  
      if( symbol_decimal_point() == ',' )
        {
!       char *p = strchr(ach, '.' );
!       if( p )
          {
!         *p = symbol_decimal_point();
          }
        }
  
--- 5317,5366 ----
          *p = 'E';
          if( exp < 0 && exp >= -9 )
            {
!           p[1] = '-';
!           p[2] = '0';
!           p[3] = '0' - exp;
!           p[4] = '\0';
            }
          else if( exp >= 0 && exp <= 9 )
            {
!           p[1] = '+';
!           p[2] = '0';
!           p[3] = '0' + exp;
!           p[4] = '\0';
            }
          }
        else if (exp == 0)
          {
!         p[-1] = '\0';
          }
        else if (exp < 0)
          {
!         p[-1] = '\0';
!         char *q = strchr (ach, '.');
!         char dig = q[-1];
!         q[-1] = '\0';
!         char tem[132];
!         snprintf (tem, 132, "%s0.%0*d%c%s", ach, -exp - 1, 0, dig, q + 1);
!         strcpy (ach, tem);
          }
!       else // if (exp > 0)
          {
!         p[-1] = '\0';
!         char *q = strchr (ach, '.');
!         for (int i = 0; i != exp; ++i)
!           q[i] = q[i + 1];
!         q[exp] = '.';
          }
        __gg__remove_trailing_zeroes(ach);
        }
  
      if( symbol_decimal_point() == ',' )
        {
!       char *pdot = strchr(ach, '.' );
!       if( pdot )
          {
!         *pdot = symbol_decimal_point();
          }
        }
  
*************** parser_display_internal(tree file_descri
*** 4902,4908 ****
        gg_call(VOID,
                "__gg__display",
                gg_get_address_of(refer.field->var_decl_node),
!               refer_offset_source(refer),
                refer_size_source(  refer),
                file_descriptor,
                advance ? integer_one_node : integer_zero_node,
--- 5395,5401 ----
        gg_call(VOID,
                "__gg__display",
                gg_get_address_of(refer.field->var_decl_node),
!               refer_offset(refer),
                refer_size_source(  refer),
                file_descriptor,
                advance ? integer_one_node : integer_zero_node,
*************** parser_display_field(cbl_field_t *field)
*** 4926,4935 ****
  
  void
  parser_display( const struct cbl_special_name_t *upon,
!                 struct cbl_refer_t refs[],
!                 size_t n,
!                 bool advance )
    {
    Analyze();
    SHOW_PARSE
      {
--- 5419,5445 ----
  
  void
  parser_display( const struct cbl_special_name_t *upon,
!           const std::vector<cbl_refer_t> &refs,
!                 bool advance,
!           const cbl_label_t *not_error,
!           const cbl_label_t *error )
    {
+   const size_t n = refs.size();
+   /*
+    * The first parameter to parser_display is the "device" upon which to display
+    * the data. Besides normal devices, these may include elements that define the
+    * Unix command line and environment:
+    *  1.  ARG_NUM_e, the ARGUMENT-NUMBER
+    *  2.  ARG_VALUE_e, the ARGUMENT-VALUE
+    *  3.  ENV_NAME_e, the ENVIRONMENT-NAME
+    *  4.  ENV_VALUE_e, the ENVIRONMENT-VALUE
+    * that need special care and feeding.
+    */
+ 
+   // At the present time, I am not sure what not_error and error are for
+   gcc_assert(!not_error);
+   gcc_assert(!error);
+ 
    Analyze();
    SHOW_PARSE
      {
*************** parser_display( const struct cbl_special
*** 4938,4944 ****
      for(size_t i=0; i<n; i++)
        {
        SHOW_PARSE_INDENT
!       SHOW_PARSE_REF("", refs[i]);
        }
      if( advance )
        {
--- 5448,5454 ----
      for(size_t i=0; i<n; i++)
        {
        SHOW_PARSE_INDENT
!       SHOW_PARSE_REF("", refs.at(i));
        }
      if( advance )
        {
*************** parser_display( const struct cbl_special
*** 4970,5002 ****
      {
      switch(upon->id)
        {
        case STDOUT_e:
-       case SYSOUT_e:
-       case SYSLIST_e:
-       case SYSLST_e:
        case CONSOLE_e:
          gg_assign(file_descriptor, integer_one_node);
          break;
  
        case STDERR_e:
        case SYSPUNCH_e:
        case SYSPCH_e:
!         gg_assign(file_descriptor, integer_two_node);
          break;
  
!       default:
!         if( upon->os_filename[0] )
!           {
!           tree topen = gg_open( gg_string_literal(upon->os_filename),
!                                 build_int_cst_type(INT, O_APPEND|O_WRONLY));
!           gg_assign(file_descriptor, topen);
!           needs_closing = true;
!           }
!         else
!           {
!           fprintf(stderr, "We don't know what to do in parser_display\n");
!           gcc_unreachable();
!           }
        }
      }
    else
--- 5480,5579 ----
      {
      switch(upon->id)
        {
+       // See table 5 in the IBM Cobol For Linux x86 1.2 document.
+ 
+       case STDIN_e:
+       case SYSIN_e:
+       case SYSIPT_e:
+         cbl_internal_error("Attempting to send to an input device.");
+         break;
+ 
+       case C01_e:
+       case C02_e:
+       case C03_e:
+       case C04_e:
+       case C05_e:
+       case C06_e:
+       case C07_e:
+       case C08_e:
+       case C09_e:
+       case C10_e:
+       case C11_e:
+       case C12_e:
+       case CSP_e:
+       case S01_e:
+       case S02_e:
+       case S03_e:
+       case S04_e:
+       case S05_e:
+       case AFP_5A_e:
+       case ARG_VALUE_e:
+         cbl_internal_error("Not valid for DISPLAY statement.");
+         break;
+ 
        case STDOUT_e:
        case CONSOLE_e:
+         // These are inarguably stdout
          gg_assign(file_descriptor, integer_one_node);
          break;
  
        case STDERR_e:
+       case SYSERR_e:
+         // These are inarguably stderr
+         gg_assign(file_descriptor, integer_two_node);
+         break;
+ 
+       case SYSOUT_e:
+       case SYSLIST_e:
+       case SYSLST_e:
        case SYSPUNCH_e:
        case SYSPCH_e:
!         // In the 21st century, when there are no longer valid assumptions to
!         // be made about the existence of line printers, and where things
!         // formerly-ubiquitous card punches no longer exist, there is a need
!         // for the possibility of assigning these "devices" to externally-
!         // determined Unix gadgetry in /dev:
!         gg_assign(file_descriptor,
!                   gg_call_expr( INT,
!                                 "__gg__get_file_descriptor",
!                                 gg_string_literal(upon->os_filename),
!                                 NULL_TREE));
!         needs_closing = true;
          break;
  
!       case ARG_NUM_e:
!         // Set the index number for a subsequent ACCEPT FROM ARG_VALUE_e
!         gg_call(VOID,
!                 "__gg__set_arg_num",
!                 gg_get_address_of(refs[0].field->var_decl_node),
!                 refer_offset(refs[0]),
!                 refer_size_source(refs[0]),
!                 NULL_TREE);
!          return;
!          break;
! 
!       case ENV_NAME_e:
!         // Establish the name of an environment variable for later use with
!         // in either DISPLAY UPON or ACCEPT FROM
!         gg_call(VOID,
!                 "__gg__set_env_name",
!                 gg_get_address_of(refs[0].field->var_decl_node),
!                 refer_offset(refs[0]),
!                 refer_size_source(refs[0]),
!                 NULL_TREE);
!          return;
!          break;
! 
!       case ENV_VALUE_e:
!         // Set the contents of the environment variable named with ENV_NAME_e
!         gg_call(VOID,
!                 "__gg__set_env_value",
!                 gg_get_address_of(refs[0].field->var_decl_node),
!                 refer_offset(refs[0]),
!                 refer_size_source(refs[0]),
!                 NULL_TREE);
!          return;
!          break;
        }
      }
    else
*************** parser_display( const struct cbl_special
*** 5011,5027 ****
      }
    CHECK_FIELD(refs[n-1].field);
    parser_display_internal(file_descriptor, refs[n-1], advance ? DISPLAY_ADVANCE : DISPLAY_NO_ADVANCE);
- 
    if( needs_closing )
      {
!     tree tclose = gg_close(file_descriptor);
!     // We are ignoring the close() return value
!     gg_append_statement(tclose);
      }
  
    cursor_at_sol = advance;
    }
  
  static tree
  get_literalN_value(cbl_field_t *var)
    {
--- 5588,5701 ----
      }
    CHECK_FIELD(refs[n-1].field);
    parser_display_internal(file_descriptor, refs[n-1], advance ? DISPLAY_ADVANCE : DISPLAY_NO_ADVANCE);
    if( needs_closing )
      {
!     gg_close(file_descriptor);
      }
  
    cursor_at_sol = advance;
    }
  
+ static
+ bool  // Returns false for literals; true for named variables
+ get_exhibit_name(tree file_descriptor, const cbl_refer_t &arg)
+   {
+   bool retval;
+   if( is_literal(arg.field) )
+     {
+     // If something is a literal, we just display the literal value
+     parser_display_internal(file_descriptor,
+                             arg,
+                             DISPLAY_NO_ADVANCE);
+     retval = false;
+     }
+   else
+     {
+     // It's not a literal, so we show its name, and the names or literal
+     // values) of any qualifier subscripts or refmods
+     gg_write( file_descriptor,
+               gg_string_literal(arg.field->name),
+               build_int_cst_type(SIZE_T, strlen(arg.field->name)) );
+ 
+     if( arg.subscripts.size() )
+       {
+       // This refer has subscripts:
+       gg_write( file_descriptor,
+                 gg_string_literal("("),
+                 integer_one_node );
+       for(size_t i=0; i<arg.subscripts.size(); i++)
+         {
+         if( i > 0 )
+           {
+           gg_write( file_descriptor,
+                     gg_string_literal(","),
+                     integer_one_node );
+           }
+         get_exhibit_name(file_descriptor, arg.subscripts[i]);
+         }
+       gg_write( file_descriptor,
+                 gg_string_literal(")"),
+                 integer_one_node );
+       }
+     if( arg.refmod.from || arg.refmod.len )
+       {
+       gg_write( file_descriptor,
+                 gg_string_literal("("),
+                 integer_one_node );
+       if( arg.refmod.from )
+         {
+         get_exhibit_name(file_descriptor, *(arg.refmod.from));
+         }
+       gg_write( file_descriptor,
+                 gg_string_literal(":"),
+                 integer_one_node );
+       if( arg.refmod.len )
+         {
+         get_exhibit_name(file_descriptor, *(arg.refmod.len));
+         }
+       gg_write( file_descriptor,
+                 gg_string_literal(")"),
+                 integer_one_node );
+       }
+     retval = true;
+     }
+   return retval;
+   }
+ 
+ void
+ parser_exhibit( bool /*changed*/, bool /*named*/,
+                 const std::vector<cbl_refer_t> &args )
+   {
+   tree file_descriptor = gg_define_int();
+   gg_assign(file_descriptor, integer_one_node);   // stdout is file descriptor 1.
+ 
+   for(size_t i=0; i<args.size(); i++)
+     {
+     CHECK_FIELD(args[i].field);
+     if(i > 0)
+       {
+       // When there more than one argument, the second through Nth get a space
+       // in front of them.
+       gg_write( file_descriptor,
+                 gg_string_literal(" "),
+                 integer_one_node);
+       }
+     if( get_exhibit_name(file_descriptor, args[i]) )
+       {
+       gg_write( file_descriptor,
+                 gg_string_literal("="),
+                 integer_one_node);
+       parser_display_internal(file_descriptor,
+                               args[i],
+                               DISPLAY_NO_ADVANCE);
+       }
+     }
+   gg_write( file_descriptor,
+             gg_string_literal("\n"),
+             integer_one_node);
+   cursor_at_sol = true;
+   }
+ 
  static tree
  get_literalN_value(cbl_field_t *var)
    {
*************** parser_assign( size_t nC, cbl_num_result
*** 5056,5062 ****
      {
      TRACE1_HEADER
      char ach[32];
!     sprintf(ach, "%ld target%s", nC, nC==1 ? "" : "s");
      TRACE1_TEXT(ach);
      if( on_error )
        {
--- 5730,5737 ----
      {
      TRACE1_HEADER
      char ach[32];
!     sprintf(ach, HOST_SIZE_T_PRINT_DEC " target%s",
!             (fmt_size_t)nC, nC==1 ? "" : "s");
      TRACE1_TEXT(ach);
      if( on_error )
        {
*************** parser_assign( size_t nC, cbl_num_result
*** 5075,5081 ****
      TRACE1
        {
        char ach[48];
!       sprintf(ach, "Processing target number %ld", i);
        TRACE1_INDENT
        TRACE1_TEXT(ach);
        }
--- 5750,5757 ----
      TRACE1
        {
        char ach[48];
!       sprintf(ach, "Processing target number " HOST_SIZE_T_PRINT_DEC,
!               (fmt_size_t)i);
        TRACE1_INDENT
        TRACE1_TEXT(ach);
        }
*************** parser_assign( size_t nC, cbl_num_result
*** 5292,5303 ****
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT(" Laying down on_error GOTO into")
!       SHOW_PARSE_LABEL(" ", on_error)
        }
      IF( gg_bitwise_or(error_flag,
                        compute_error->structs.compute_error->compute_error_code),
!         ne_op,
!         integer_zero_node )
        {
        gg_append_statement( on_error->structs.arith_error->into.go_to );
        }
--- 5968,5979 ----
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT(" Laying down on_error GOTO into")
!       SHOW_PARSE_LABEL_OK(" ", on_error)
        }
      IF( gg_bitwise_or(error_flag,
                        compute_error->structs.compute_error->compute_error_code),
!                       ne_op,
!                       integer_zero_node )
        {
        gg_append_statement( on_error->structs.arith_error->into.go_to );
        }
*************** parser_assign( size_t nC, cbl_num_result
*** 5323,5329 ****
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT(" Laying down not_error GOTO into")
!       SHOW_PARSE_LABEL(" ", not_error)
        }
      IF( compute_error->structs.compute_error->compute_error_code, eq_op, integer_zero_node )
        {
--- 5999,6005 ----
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT(" Laying down not_error GOTO into")
!       SHOW_PARSE_LABEL_OK(" ", not_error)
        }
      IF( compute_error->structs.compute_error->compute_error_code, eq_op, integer_zero_node )
        {
*************** parser_assign( size_t nC, cbl_num_result
*** 5339,5345 ****
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT(" Laying down on_error LABEL BOTTOM:")
!       SHOW_PARSE_LABEL(" ", on_error)
        }
      gg_append_statement( on_error->structs.arith_error->bottom.label );
      }
--- 6015,6021 ----
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT(" Laying down on_error LABEL BOTTOM:")
!       SHOW_PARSE_LABEL_OK(" ", on_error)
        }
      gg_append_statement( on_error->structs.arith_error->bottom.label );
      }
*************** parser_assign( size_t nC, cbl_num_result
*** 5350,5356 ****
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT(" Laying down not_error LABEL BOTTOM:")
!       SHOW_PARSE_LABEL(" ", not_error)
        }
      gg_append_statement( not_error->structs.arith_error->bottom.label );
      }
--- 6026,6032 ----
        {
        SHOW_PARSE_INDENT
        SHOW_PARSE_TEXT(" Laying down not_error LABEL BOTTOM:")
!       SHOW_PARSE_LABEL_OK(" ", not_error)
        }
      gg_append_statement( not_error->structs.arith_error->bottom.label );
      }
*************** parser_assign( size_t nC, cbl_num_result
*** 5362,5377 ****
    }
  
  static cbl_figconst_t
! is_figconst(cbl_field_t *field)
    {
    cbl_figconst_t figconst = (cbl_figconst_t)(field->attr & FIGCONST_MASK);
    return figconst;
    }
  
  static cbl_figconst_t
! is_figconst(cbl_refer_t &sourceref)
    {
!   return is_figconst(sourceref.field);
    }
  
  void
--- 6038,6053 ----
    }
  
  static cbl_figconst_t
! is_figconst_t(const cbl_field_t *field)
    {
    cbl_figconst_t figconst = (cbl_figconst_t)(field->attr & FIGCONST_MASK);
    return figconst;
    }
  
  static cbl_figconst_t
! is_figconst(const cbl_refer_t &sourceref)
    {
!   return is_figconst_t(sourceref.field);
    }
  
  void
*************** parser_initialize_table(size_t nelem,
*** 5625,5640 ****
      }
    typedef size_t span_t[2];
    static_assert(sizeof(spans[0]) == sizeof(span_t), "pair size wrong");
!   static tree tspans = gg_define_variable(SIZE_T_P, "..pit_v1", vs_file_static);
!   static tree ttbls  = gg_define_variable(SIZE_T_P, "..pit_v2", vs_file_static);
!   gg_assign(tspans, build_array_of_size_t(2*nspan, (const size_t *)spans));
!   gg_assign(ttbls,  build_array_of_size_t(2*ntbl,  (const size_t *)tbls));
  
    gg_call(VOID,
            "__gg__mirror_range",
            build_int_cst_type(SIZE_T, nelem),
            gg_get_address_of(src.field->var_decl_node),
!           refer_offset_source(src),
            build_int_cst_type(SIZE_T, nspan),
            tspans,
            build_int_cst_type(SIZE_T, table),
--- 6301,6324 ----
      }
    typedef size_t span_t[2];
    static_assert(sizeof(spans[0]) == sizeof(span_t), "pair size wrong");
!   static tree tspans = gg_define_variable(SIZE_T_P,
!                                           "..pit_v1",
!                                           vs_file_static);
!   static tree ttbls  = gg_define_variable(SIZE_T_P,
!                                           "..pit_v2",
! vs_file_static);
!   gg_assign(tspans,
!             build_array_of_size_t(2*nspan,
!                                   reinterpret_cast<const size_t *>(spans)));
!   gg_assign(ttbls,
!             build_array_of_size_t(2*ntbl,
!                                   reinterpret_cast<const size_t *>(tbls)));
  
    gg_call(VOID,
            "__gg__mirror_range",
            build_int_cst_type(SIZE_T, nelem),
            gg_get_address_of(src.field->var_decl_node),
!           refer_offset(src),
            build_int_cst_type(SIZE_T, nspan),
            tspans,
            build_int_cst_type(SIZE_T, table),
*************** tree_type_from_field_type(cbl_field_t *f
*** 5672,5678 ****
        case FldNumericDisplay:
        case FldNumericBinary:
        case FldPacked:
!         if( field->data.digits > 18 )
            {
            retval = UINT128;
            nbytes = 16;
--- 6356,6362 ----
        case FldNumericDisplay:
        case FldNumericBinary:
        case FldPacked:
!       if( field->data.digits > 18 )
            {
            retval = UINT128;
            nbytes = 16;
*************** tree_type_from_field_type(cbl_field_t *f
*** 5725,5743 ****
          break;
  
        default:
!         cbl_internal_error(  "%s(): Invalid field type %s:",
                  __func__,
                  cbl_field_type_str(field->type));
          break;
        }
!     }
!   if( retval == SIZE_T && field->attr & signable_e )
!     {
!     retval = SSIZE_T;
!     }
!   if( retval == UINT128 && field->attr & signable_e )
!     {
!     retval = INT128;
      }
    return retval;
    }
--- 6409,6427 ----
          break;
  
        default:
!         cbl_internal_error(  "%s: Invalid field type %s:",
                  __func__,
                  cbl_field_type_str(field->type));
          break;
        }
!     if( retval == SIZE_T && field->attr & signable_e )
!       {
!       retval = SSIZE_T;
!       }
!     if( retval == UINT128 && field->attr & signable_e )
!       {
!       retval = INT128;
!       }
      }
    return retval;
    }
*************** restore_local_variables()
*** 5753,5764 ****
  
  static inline bool
  is_valuable( cbl_field_type_t type ) {
    switch ( type ) {
    case FldInvalid:
    case FldGroup:
    case FldAlphanumeric:
    case FldNumericEdited:
-   case FldAlphaEdited:
    case FldLiteralA:
    case FldClass:
    case FldConditional:
--- 6437,6449 ----
  
  static inline bool
  is_valuable( cbl_field_type_t type ) {
+   /*  The name of this routine is a play on words, in English.  It doesn't
+       mean "Is worth a lot".  It means "Can be converted to a value." */
    switch ( type ) {
    case FldInvalid:
    case FldGroup:
    case FldAlphanumeric:
    case FldNumericEdited:
    case FldLiteralA:
    case FldClass:
    case FldConditional:
*************** is_valuable( cbl_field_type_t type ) {
*** 5771,5776 ****
--- 6456,6462 ----
    // COBOL form to a little-endian binary representation so that they
    // can be conveyed BY CONTENT/BY VALUE in a CALL or user-defined
    // function activation.
+   case FldAlphaEdited:
    case FldNumericDisplay:
    case FldNumericBinary:
    case FldFloat:
*************** is_valuable( cbl_field_type_t type ) {
*** 5781,5802 ****
    case FldPointer:
      return true;
    }
!   cbl_internal_error( "%s:%d: invalid symbol_type_t %d", __func__, __LINE__, type );
    return false;
  }
  
! void parser_sleep(cbl_refer_t seconds)
    {
    if( seconds.field )
      {
      gg_get_address_of(seconds.field->var_decl_node);
!     //refer_offset_source(seconds);
      //refer_size_source(seconds);
  
      gg_call(VOID,
              "__gg__sleep",
              gg_get_address_of(seconds.field->var_decl_node),
!             refer_offset_source(seconds),
              refer_size_source(seconds),
              NULL_TREE);
      }
--- 6467,6488 ----
    case FldPointer:
      return true;
    }
!   cbl_internal_error( "%s:%d: invalid %<symbol_type_t%> %d", __func__, __LINE__, type );
    return false;
  }
  
! void parser_sleep(const cbl_refer_t &seconds)
    {
    if( seconds.field )
      {
      gg_get_address_of(seconds.field->var_decl_node);
!     //refer_offset(seconds);
      //refer_size_source(seconds);
  
      gg_call(VOID,
              "__gg__sleep",
              gg_get_address_of(seconds.field->var_decl_node),
!             refer_offset(seconds),
              refer_size_source(seconds),
              NULL_TREE);
      }
*************** void parser_sleep(cbl_refer_t seconds)
*** 5805,5811 ****
      // This is a naked place-holding CONTINUE.  Generate some do-nothing
      // code that will stick some .LOC information into the assembly language,
      // so that GDB-COBOL can display the CONTINUE statement.
!     gg_assign(var_decl_nop, build_int_cst_type(INT, 103));
      }
    }
  
--- 6491,6497 ----
      // This is a naked place-holding CONTINUE.  Generate some do-nothing
      // code that will stick some .LOC information into the assembly language,
      // so that GDB-COBOL can display the CONTINUE statement.
!     insert_nop(103);
      }
    }
  
*************** parser_exit_program(void)  // exits back
*** 5825,5831 ****
  
  static
  void
! pe_stuff(cbl_refer_t refer, ec_type_t ec)
    {
    // This is the moral equivalent of a C "return xyz;".
  
--- 6511,6517 ----
  
  static
  void
! program_end_stuff(cbl_refer_t refer, ec_type_t ec)
    {
    // This is the moral equivalent of a C "return xyz;".
  
*************** pe_stuff(cbl_refer_t refer, ec_type_t ec
*** 5848,5856 ****
  
      gg_assign(retval, gg_cast(return_type, integer_zero_node));
  
-     gg_modify_function_type(current_function->function_decl,
-                             return_type);
- 
      if( is_valuable( field_type ) )
        {
        // The field being returned is numeric.
--- 6534,6539 ----
*************** pe_stuff(cbl_refer_t refer, ec_type_t ec
*** 5891,5902 ****
  
        tree array_type = build_array_type_nelts(UCHAR,
                                      returner->data.capacity);
!       tree retval     =  gg_define_variable(array_type, vs_static);
!       gg_memcpy(gg_get_address_of(retval),
                  member(returner->var_decl_node, "data"),
                  member(returner->var_decl_node, "capacity"));
  
!       tree actual = gg_cast(COBOL_FUNCTION_RETURN_TYPE, gg_get_address_of(retval));
  
        restore_local_variables();
        gg_return(actual);
--- 6574,6585 ----
  
        tree array_type = build_array_type_nelts(UCHAR,
                                      returner->data.capacity);
!       tree array     =  gg_define_variable(array_type, vs_static);
!       gg_memcpy(gg_get_address_of(array),
                  member(returner->var_decl_node, "data"),
                  member(returner->var_decl_node, "capacity"));
  
!       tree actual = gg_cast(COBOL_FUNCTION_RETURN_TYPE, gg_get_address_of(array));
  
        restore_local_variables();
        gg_return(actual);
*************** pe_stuff(cbl_refer_t refer, ec_type_t ec
*** 5916,5922 ****
    }
  
  void
! parser_exit( cbl_refer_t refer, ec_type_t ec )
    {
    Analyze();
    SHOW_PARSE
--- 6599,6605 ----
    }
  
  void
! parser_exit( const cbl_refer_t& refer, ec_type_t ec )
    {
    Analyze();
    SHOW_PARSE
*************** parser_exit( cbl_refer_t refer, ec_type_
*** 5953,5959 ****
      IF( current_function->called_by_main_counter, eq_op, integer_zero_node )
        {
        // This function wasn't called by main, so we treat it like a GOBACK
!       pe_stuff(refer, ec);
        }
      ELSE
        {
--- 6636,6642 ----
      IF( current_function->called_by_main_counter, eq_op, integer_zero_node )
        {
        // This function wasn't called by main, so we treat it like a GOBACK
!       program_end_stuff(refer, ec);
        }
      ELSE
        {
*************** parser_exit( cbl_refer_t refer, ec_type_
*** 5964,5970 ****
          // This was a recursive call into the function originally called by
          // main.  Because we are under the control of a calling program, we
          // treat this like a GOBACK
!         pe_stuff(refer, ec);
          }
        ELSE
          {
--- 6647,6653 ----
          // This was a recursive call into the function originally called by
          // main.  Because we are under the control of a calling program, we
          // treat this like a GOBACK
!         program_end_stuff(refer, ec);
          }
        ELSE
          {
*************** parser_exit( cbl_refer_t refer, ec_type_
*** 5989,5995 ****
        {
        }
        ENDIF
!     pe_stuff(refer, ec);
      }
    }
  
--- 6672,6678 ----
        {
        }
        ENDIF
!     program_end_stuff(refer, ec);
      }
    }
  
*************** parser_allocate(cbl_refer_t size_or_base
*** 6104,6117 ****
    gg_call(VOID,
            "__gg__allocate",
            gg_get_address_of(size_or_based.field->var_decl_node),
!           refer_offset_source(size_or_based) ,
            initialized ? integer_one_node : integer_zero_node,
            build_int_cst_type(INT, default_byte),
            f_working ? gg_get_address_of(f_working->var_decl_node) : null_pointer_node,
            f_local   ? gg_get_address_of(f_local->  var_decl_node) : null_pointer_node,
            returning.field ? gg_get_address_of(returning.field->var_decl_node)
                            : null_pointer_node,
!           returning.field ? refer_offset_source(returning)
                            : size_t_zero_node,
            NULL_TREE);
    walk_initialization(size_or_based.field, initialized, false);
--- 6787,6800 ----
    gg_call(VOID,
            "__gg__allocate",
            gg_get_address_of(size_or_based.field->var_decl_node),
!           refer_offset(size_or_based) ,
            initialized ? integer_one_node : integer_zero_node,
            build_int_cst_type(INT, default_byte),
            f_working ? gg_get_address_of(f_working->var_decl_node) : null_pointer_node,
            f_local   ? gg_get_address_of(f_local->  var_decl_node) : null_pointer_node,
            returning.field ? gg_get_address_of(returning.field->var_decl_node)
                            : null_pointer_node,
!           returning.field ? refer_offset(returning)
                            : size_t_zero_node,
            NULL_TREE);
    walk_initialization(size_or_based.field, initialized, false);
*************** parser_free( size_t n, cbl_refer_t refer
*** 6129,6142 ****
      gcc_assert( ! p->is_refmod_reference() );
      if( !(p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e)) )
        {
!       dbgmsg("Deallocating %s means it has to be FldPointer or addr_of or based_e");
        }
      gcc_assert( p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e) );
  
      gg_call(VOID,
              "__gg__deallocate",
              gg_get_address_of(p->field->var_decl_node),
!             refer_offset_source(*p),
              p->addr_of ? integer_one_node : integer_zero_node,
              NULL_TREE);
      walk_initialization(p->field, false, true);
--- 6812,6826 ----
      gcc_assert( ! p->is_refmod_reference() );
      if( !(p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e)) )
        {
!       dbgmsg("Deallocating %s means it has to be FldPointer or addr_of or based_e",
!              p->field->name);
        }
      gcc_assert( p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e) );
  
      gg_call(VOID,
              "__gg__deallocate",
              gg_get_address_of(p->field->var_decl_node),
!             refer_offset(*p),
              p->addr_of ? integer_one_node : integer_zero_node,
              NULL_TREE);
      walk_initialization(p->field, false, true);
*************** parser_arith_error(cbl_label_t *arithmet
*** 6151,6157 ****
  
    // We are entering either SIZE ERROR or NOT SIZE ERROR code
    RETURN_IF_PARSE_ONLY;
-   set_up_on_exception_label(arithmetic_label);
  
    SHOW_PARSE
      {
--- 6835,6840 ----
*************** parser_arith_error(cbl_label_t *arithmet
*** 6164,6169 ****
--- 6847,6856 ----
      SHOW_PARSE_END
      }
  
+   CHECK_LABEL(arithmetic_label);
+ 
+   set_up_on_exception_label(arithmetic_label);
+ 
    // Jump over the [NOT] ON EXCEPTION code that is about to be laid down
    gg_append_statement( arithmetic_label->structs.arith_error->over.go_to );
    // Create the label that allows the following code to be executed at
*************** parser_arith_error_end(cbl_label_t *arit
*** 6190,6195 ****
--- 6877,6884 ----
      SHOW_PARSE_END
      }
  
+   CHECK_LABEL(arithmetic_label);
+ 
    // Jump to the end of the arithmetic code:
    gg_append_statement( arithmetic_label->structs.arith_error->bottom.go_to );
    // Lay down the label that allows the ERROR/NOT ERROR instructions
*************** parser_division(cbl_division_t division,
*** 6373,6380 ****
      SHOW_PARSE_END
      }
  
-   gg_set_current_line_number(CURRENT_LINE_NUMBER);
- 
    if( division == data_div_e )
      {
      Analyze();
--- 7062,7067 ----
*************** parser_division(cbl_division_t division,
*** 6403,6410 ****
      // We need a pointer to the array of program names
      char ach[2*sizeof(cbl_name_t)];
      sprintf(ach,
!             "..accessible_program_list_%ld",
!             current_function->our_symbol_table_index);
      tree prog_list = gg_define_variable(build_pointer_type(CHAR_P),
                                          ach, vs_file_static);
  
--- 7090,7097 ----
      // We need a pointer to the array of program names
      char ach[2*sizeof(cbl_name_t)];
      sprintf(ach,
!             "..accessible_program_list_" HOST_SIZE_T_PRINT_DEC,
!             (fmt_size_t)current_function->our_symbol_table_index);
      tree prog_list = gg_define_variable(build_pointer_type(CHAR_P),
                                          ach, vs_file_static);
  
*************** parser_division(cbl_division_t division,
*** 6416,6423 ****
      tree pointer_type = build_pointer_type(function_type);
      tree constructed_array_type = build_array_type_nelts(pointer_type, 1);
      sprintf(ach,
!             "..accessible_program_pointers_%ld",
!             current_function->our_symbol_table_index);
      tree prog_pointers = gg_define_variable(
                                      build_pointer_type(constructed_array_type),
                                      ach,
--- 7103,7110 ----
      tree pointer_type = build_pointer_type(function_type);
      tree constructed_array_type = build_array_type_nelts(pointer_type, 1);
      sprintf(ach,
!             "..accessible_program_pointers_" HOST_SIZE_T_PRINT_DEC,
!             (fmt_size_t)current_function->our_symbol_table_index);
      tree prog_pointers = gg_define_variable(
                                      build_pointer_type(constructed_array_type),
                                      ach,
*************** parser_division(cbl_division_t division,
*** 6479,6485 ****
        // gg_printf("Somebody wants to cancel %s\n",
                  // gg_string_literal(current_function->our_unmangled_name),
                  // NULL_TREE);
!       cbl_label_t *prog = cbl_label_of(symbol_at(current_program_index()));
        size_t initializer_index = prog->initial_section;
        cbl_label_t *initializer = cbl_label_of(symbol_at(initializer_index));
        parser_perform(initializer, true);  // true means suppress nexting
--- 7166,7172 ----
        // gg_printf("Somebody wants to cancel %s\n",
                  // gg_string_literal(current_function->our_unmangled_name),
                  // NULL_TREE);
!       const cbl_label_t *prog = cbl_label_of(symbol_at(current_program_index()));
        size_t initializer_index = prog->initial_section;
        cbl_label_t *initializer = cbl_label_of(symbol_at(initializer_index));
        parser_perform(initializer, true);  // true means suppress nexting
*************** parser_division(cbl_division_t division,
*** 6500,6505 ****
--- 7187,7196 ----
        {
        parser_local_add(returning);
        current_function->returning = returning;
+ 
+       size_t nbytes = 0;
+       tree returning_type = tree_type_from_field_type(returning, nbytes);
+       gg_modify_function_type(current_function->function_decl, returning_type);
        }
  
      // Stash the returning variables for use during parser_return()
*************** parser_division(cbl_division_t division,
*** 6522,6528 ****
        // expected formal parameter and tacks it onto the end of the
        // function's arguments chain.
  
-       char ach[2*sizeof(cbl_name_t)];
        sprintf(ach, "_p_%s", args[i].refer.field->name);
  
        size_t nbytes = 0;
--- 7213,7218 ----
*************** parser_division(cbl_division_t division,
*** 6542,6555 ****
        chain_parameter_to_function(current_function->function_decl, par_type, ach);
        }
  
-     bool check_for_parameter_count = false;
- 
      if( nusing )
        {
        // During the call, we saved the parameter_count and an array of variable
        // lengths.  We need to look at those values if, and only if, one or more
        // of our USING arguments has an OPTIONAL flag or if one of our targets is
        // marked as VARYING.
        for(size_t i=0; i<nusing; i++)
          {
          if( args[i].optional )
--- 7232,7244 ----
        chain_parameter_to_function(current_function->function_decl, par_type, ach);
        }
  
      if( nusing )
        {
        // During the call, we saved the parameter_count and an array of variable
        // lengths.  We need to look at those values if, and only if, one or more
        // of our USING arguments has an OPTIONAL flag or if one of our targets is
        // marked as VARYING.
+       bool check_for_parameter_count = false;
        for(size_t i=0; i<nusing; i++)
          {
          if( args[i].optional )
*************** parser_division(cbl_division_t division,
*** 6596,6602 ****
  
        // There are 'nusing' elements in the PROCEDURE DIVISION USING list.
  
!       tree parameter;
        tree rt_i = gg_define_int();
        for(size_t i=0; i<nusing; i++)
          {
--- 7285,7291 ----
  
        // There are 'nusing' elements in the PROCEDURE DIVISION USING list.
  
!       tree parameter = NULL_TREE;
        tree rt_i = gg_define_int();
        for(size_t i=0; i<nusing; i++)
          {
*************** parser_division(cbl_division_t division,
*** 6639,6647 ****
  
            if( args[i].refer.field->attr & any_length_e )
              {
!             // gg_printf("side channel: Length of \"%s\" is %ld\n", 
                        // member(args[i].refer.field->var_decl_node, "name"),
!                       // gg_array_value(var_decl_call_parameter_lengths, rt_i), 
                        // NULL_TREE);
  
              // Get the length from the global lengths[] side channel.  Don't
--- 7328,7336 ----
  
            if( args[i].refer.field->attr & any_length_e )
              {
!             // gg_printf("side channel: Length of \"%s\" is %ld\n",
                        // member(args[i].refer.field->var_decl_node, "name"),
!                       // gg_array_value(var_decl_call_parameter_lengths, rt_i),
                        // NULL_TREE);
  
              // Get the length from the global lengths[] side channel.  Don't
*************** parser_division(cbl_division_t division,
*** 6745,6751 ****
            // If so, we have to give var2::data_pointer the same value as
            // var1::data_pointer
            //
-           cbl_field_t *next_var;
            size_t our_index = symbol_index(symbol_elem_of(new_var));
            size_t next_index  = our_index + 1;
            // Look ahead in the symbol table for the next LEVEL01/77
--- 7434,7439 ----
*************** parser_division(cbl_division_t division,
*** 6756,6762 ****
                {
                break;
                }
!             next_var = cbl_field_of(e);
              if( !next_var )
                {
                break;
--- 7444,7450 ----
                {
                break;
                }
!             cbl_field_t *next_var = cbl_field_of(e);
              if( !next_var )
                {
                break;
*************** parser_division(cbl_division_t division,
*** 6831,6836 ****
--- 7519,7529 ----
          ENDIF
        }
        ENDIF
+     // The first token_location that the parser establishes is caused by the
+     // parser scanning all of the lines in the source code.  This messes up the
+     // logic for backing up one line, which is needed to correctly step through
+     // COBOL code with GDB-COBOL.  So, we clear it here.
+     current_location_minus_one_clear();
      }
    }
  
*************** parser_logop( struct cbl_field_t *tgt,
*** 6926,6945 ****
  
    if( tgt->type != FldConditional )
      {
!     cbl_internal_error("parser_logop() was called with variable %s on line %d"
!           ", which is not a FldConditional\n",
            tgt->name, cobol_location().first_line);
      }
    if( a && a->type != FldConditional )
      {
!     cbl_internal_error("parser_logop() was called with variable %s on line %d"
!           ", which is not a FldConditional\n",
            a->name, cobol_location().first_line);
      }
    if( b && b->type != FldConditional )
      {
!     cbl_internal_error("parser_logop() was called with variable %s on line %d"
!           ", which is not a FldConditional\n",
            b->name, cobol_location().first_line);
      }
  
--- 7619,7638 ----
  
    if( tgt->type != FldConditional )
      {
!     cbl_internal_error("%<parser_logop()%> was called with variable %s on line %d"
!           ", which is not a FldConditional",
            tgt->name, cobol_location().first_line);
      }
    if( a && a->type != FldConditional )
      {
!     cbl_internal_error("%<parser_logop()%> was called with variable %s on line %d"
!           ", which is not a FldConditional",
            a->name, cobol_location().first_line);
      }
    if( b && b->type != FldConditional )
      {
!     cbl_internal_error("%<parser_logop()%> was called with variable %s on line %d"
!           ", which is not a FldConditional",
            b->name, cobol_location().first_line);
      }
  
*************** parser_relop(   cbl_field_t *tgt,
*** 7045,7053 ****
  
    if( tgt->type != FldConditional )
      {
!     cbl_internal_error("parser_relop() was called with variable %s, "
!           "which is not a FldConditional\n",
!           tgt->name);
      }
  
    static tree comp_res = gg_define_variable(INT, "..pr_comp_res", vs_file_static);
--- 7738,7746 ----
  
    if( tgt->type != FldConditional )
      {
!     cbl_internal_error("%<parser_relop%> was called with variable %qs, "
!                        "which is not a FldConditional",
!                        tgt->name);
      }
  
    static tree comp_res = gg_define_variable(INT, "..pr_comp_res", vs_file_static);
*************** parser_relop_long(cbl_field_t *tgt,
*** 7109,7116 ****
  
    if( tgt->type != FldConditional )
      {
!     cbl_internal_error("parser_relop() was called with variable %s, "
!           "which is not a FldConditional\n",
            tgt->name);
      }
  
--- 7802,7809 ----
  
    if( tgt->type != FldConditional )
      {
!     cbl_internal_error("%<parser_relop()%> was called with variable %s, "
!           "which is not a FldConditional",
            tgt->name);
      }
  
*************** parser_relop_long(cbl_field_t *tgt,
*** 7119,7125 ****
    get_binary_value( tree_b,
                      NULL,
                      bref.field,
!                     refer_offset_source(bref) );
  
    static tree comp_res = gg_define_variable(LONG, "..prl_comp_res", vs_file_static);
    gg_assign(comp_res, gg_subtract(tree_a, tree_b));
--- 7812,7818 ----
    get_binary_value( tree_b,
                      NULL,
                      bref.field,
!                     refer_offset(bref) );
  
    static tree comp_res = gg_define_variable(LONG, "..prl_comp_res", vs_file_static);
    gg_assign(comp_res, gg_subtract(tree_a, tree_b));
*************** parser_if( struct cbl_field_t *condition
*** 7155,7162 ****
  
    if( conditional->type != FldConditional )
      {
!     cbl_internal_error("parser_if() was called with variable %s, "
!           "which is not a FldConditional\n",
            conditional->name);
      }
  
--- 7848,7855 ----
  
    if( conditional->type != FldConditional )
      {
!     cbl_internal_error("%<parser_if()%> was called with variable %s, "
!           "which is not a FldConditional",
            conditional->name);
      }
  
*************** parser_see_stop_run(struct cbl_refer_t e
*** 7241,7247 ****
      get_binary_value( returned_value,
                        NULL,
                        exit_status.field,
!                       refer_offset_source(exit_status));
      TRACE1
        {
        TRACE1_REFER(" exit_status ", exit_status, "")
--- 7934,7940 ----
      get_binary_value( returned_value,
                        NULL,
                        exit_status.field,
!                       refer_offset(exit_status));
      TRACE1
        {
        TRACE1_REFER(" exit_status ", exit_status, "")
*************** label_fetch(struct cbl_label_t *label)
*** 7275,7281 ****
    if( !label->structs.goto_trees )
      {
      label->structs.goto_trees
!       = (cbl_label_addresses_t *)xmalloc(sizeof(struct cbl_label_addresses_t) );
  
      gg_create_goto_pair(&label->structs.goto_trees->go_to,
                          &label->structs.goto_trees->label);
--- 7968,7976 ----
    if( !label->structs.goto_trees )
      {
      label->structs.goto_trees
!       = static_cast<cbl_label_addresses_t *>
!         (xmalloc(sizeof(struct cbl_label_addresses_t)));
!     gcc_assert(label->structs.goto_trees);
  
      gg_create_goto_pair(&label->structs.goto_trees->go_to,
                          &label->structs.goto_trees->label);
*************** parser_label_label(struct cbl_label_t *l
*** 7293,7307 ****
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL("", label)
      char ach[32];
!     sprintf(ach, " label is at %p", (void*)label);
      SHOW_PARSE_TEXT(ach)
!     sprintf(ach, " label->proc is %p", (void*)label->structs.proc);
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
  
-   CHECK_LABEL(label);
- 
    TRACE1
      {
      TRACE1_HEADER
--- 7988,8005 ----
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL("", label)
      char ach[32];
!     sprintf(ach, " label is at %p", static_cast<void*>(label));
      SHOW_PARSE_TEXT(ach)
!     if( label )
!       {
!       sprintf(ach,
!               " label->proc is %p",
!               static_cast<void*>(label->structs.proc));
!       }
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
  
    TRACE1
      {
      TRACE1_HEADER
*************** parser_label_label(struct cbl_label_t *l
*** 7309,7314 ****
--- 8007,8014 ----
      TRACE1_END
      }
  
+   CHECK_LABEL(label);
+ 
    if(strcmp(label->name, "_end_declaratives") == 0 )
      {
      suppress_cobol_entry_point = false;
*************** void
*** 7320,7340 ****
  parser_label_goto(struct cbl_label_t *label)
    {
    label->used = yylineno;
    Analyze();
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", label)
      char ach[32];
!     sprintf(ach, " label is at %p", (void*)label);
      SHOW_PARSE_TEXT(ach)
!     sprintf(ach, " label->proc is %p", (void*)label->structs.proc);
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
  
-   CHECK_LABEL(label);
- 
    TRACE1
      {
      TRACE1_HEADER
--- 8020,8044 ----
  parser_label_goto(struct cbl_label_t *label)
    {
    label->used = yylineno;
+ 
    Analyze();
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_LABEL(" ", label)
      char ach[32];
!     sprintf(ach, " label is at %p", static_cast<void*>(label));
      SHOW_PARSE_TEXT(ach)
!     if( label )
!       {
!       sprintf(ach,
!               " label->proc is %p",
!               static_cast<void*>(label->structs.proc));
!       }
      SHOW_PARSE_TEXT(ach)
      SHOW_PARSE_END
      }
  
    TRACE1
      {
      TRACE1_HEADER
*************** parser_label_goto(struct cbl_label_t *la
*** 7342,7348 ****
      TRACE1_END
      }
  
!   if(strcmp(label->name, "_end_declaratives") == 0 )
      {
      suppress_cobol_entry_point = true;
      }
--- 8046,8054 ----
      TRACE1_END
      }
  
!   CHECK_LABEL(label);
! 
!   if( strcmp(label->name, "_end_declaratives") == 0 )
      {
      suppress_cobol_entry_point = true;
      }
*************** parser_setop( struct cbl_field_t *tgt,
*** 7406,7425 ****
                        integer_zero_node));
            break;
          default:
!           dbgmsg("###### %10s in %s:%d\n", __func__, __FILE__, __LINE__ );
!           cbl_internal_error(
!                 "###### candidate %s has unimplemented CVT_type %d(%s)\n",
!                 candidate->name,
!                 candidate->type,
!                 cbl_field_type_str(candidate->type));
            gcc_unreachable();
            break;
          }
        break;
  
      default:
!       dbgmsg("###### %10s in %s:%d\n", __func__, __FILE__, __LINE__ );
!       cbl_internal_error("###### unknown setop_t code %d\n", op);
        gcc_unreachable();
        break;
      }
--- 8112,8130 ----
                        integer_zero_node));
            break;
          default:
!           dbgmsg("%10s in %s:%d", __func__, __FILE__, __LINE__ );
!           cbl_internal_error("candidate %s has unimplemented %<CVT_type%> %d(%s)",
!                              candidate->name,
!                              candidate->type,
!                              cbl_field_type_str(candidate->type));
            gcc_unreachable();
            break;
          }
        break;
  
      default:
!       dbgmsg("%10s in %s:%d", __func__, __FILE__, __LINE__ );
!       cbl_internal_error("unknown %<setop_t%> code %d", op);
        gcc_unreachable();
        break;
      }
*************** parser_setop( struct cbl_field_t *tgt,
*** 7427,7433 ****
  
  void
  parser_classify(    cbl_field_t *tgt,
!                     cbl_refer_t  candidate,
                      enum classify_t type )
    {
    Analyze();
--- 8132,8138 ----
  
  void
  parser_classify(    cbl_field_t *tgt,
!                const cbl_refer_t  &candidate,
                      enum classify_t type )
    {
    Analyze();
*************** parser_classify(    cbl_field_t *tgt,
*** 7456,7462 ****
                             "__gg__classify",
                             build_int_cst_type(INT, type),
                             gg_get_address_of(candidate.field->var_decl_node),
!                            refer_offset_dest(candidate),
                             refer_size_dest(candidate),
                             NULL_TREE),
                ne_op,
--- 8161,8167 ----
                             "__gg__classify",
                             build_int_cst_type(INT, type),
                             gg_get_address_of(candidate.field->var_decl_node),
!                            refer_offset(candidate),
                             refer_size_dest(candidate),
                             NULL_TREE),
                ne_op,
*************** parser_classify(    cbl_field_t *tgt,
*** 7472,7480 ****
    }
  
  void
! parser_perform(struct cbl_perform_tgt_t *tgt, struct cbl_refer_t how_many)
    {
!   cbl_field_t *N = how_many.field;
    // No SHOW_PARSE here; we want to fall through:
    if( !tgt->to() )
      {
--- 8177,8185 ----
    }
  
  void
! parser_perform(const cbl_perform_tgt_t *tgt, cbl_refer_t how_many)
    {
!   const cbl_field_t *N = how_many.field;
    // No SHOW_PARSE here; we want to fall through:
    if( !tgt->to() )
      {
*************** create_iline_address_pairs(struct cbl_pe
*** 7524,7537 ****
  
    gg_create_goto_pair(&tgt->addresses.setup.go_to,
                        &tgt->addresses.setup.label);
- 
-   // Even in -O0 compilations, the compiler does some elementary optimizations
-   // around JMP instructions.  We have the SETUP code for in-line performats
-   // in an island at the end of the loop code.  With this intervention, NEXTing
-   // through the code shows you the final statement of the loop before the
-   // loop actually starts.
- 
-   tgt->addresses.line_number_of_setup_code = gg_get_current_line_number();
    }
  
  void
--- 8229,8234 ----
*************** parser_perform_start( struct cbl_perform
*** 7545,7551 ****
        {
        SHOW_PARSE_TEXT(" cbl_perform_tgt_t is at")
        char ach[32];
!       sprintf(ach, " %p", (void*)tgt);
        SHOW_PARSE_TEXT(ach);
        SHOW_PARSE_LABEL(" ", tgt->from())
        if( tgt->to() )
--- 8242,8248 ----
        {
        SHOW_PARSE_TEXT(" cbl_perform_tgt_t is at")
        char ach[32];
!       sprintf(ach, " %p", static_cast<void*>(tgt));
        SHOW_PARSE_TEXT(ach);
        SHOW_PARSE_LABEL(" ", tgt->from())
        if( tgt->to() )
*************** parser_perform_start( struct cbl_perform
*** 7594,7600 ****
    // Give GDB-COBOL something to chew on when NEXTing.  This instruction will
    // get the line number of the PERFORM N TIMES code.
    gg_append_statement(tgt->addresses.top.label);
!   gg_assign(var_decl_nop, build_int_cst_type(INT, 104));
    }
  
  void
--- 8291,8297 ----
    // Give GDB-COBOL something to chew on when NEXTing.  This instruction will
    // get the line number of the PERFORM N TIMES code.
    gg_append_statement(tgt->addresses.top.label);
!   insert_nop(104);
    }
  
  void
*************** parser_perform_conditional( struct cbl_p
*** 7606,7622 ****
      SHOW_PARSE_HEADER
      SHOW_PARSE_TEXT(" cbl_perform_tgt_t is at")
      char ach[32];
!     sprintf(ach, " %p", (void*)tgt);
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_END
      }
  
!   size_t i = tgt->addresses.number_of_conditionals;
  
    if( !(i < MAXIMUM_UNTILS) )
      {
!     cbl_internal_error("%s:%d: %zu exceeds MAXIMUM_UNTILS of %d, line %d",
!           __func__, __LINE__, i, MAXIMUM_UNTILS, CURRENT_LINE_NUMBER);
      }
    gcc_assert(i < MAXIMUM_UNTILS);
  
--- 8303,8320 ----
      SHOW_PARSE_HEADER
      SHOW_PARSE_TEXT(" cbl_perform_tgt_t is at")
      char ach[32];
!     sprintf(ach, " %p", static_cast<void*>(tgt));
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_END
      }
  
!   unsigned int i = tgt->addresses.number_of_conditionals;
  
    if( !(i < MAXIMUM_UNTILS) )
      {
!     cbl_internal_error("%s:%d: %u exceeds %<MAXIMUM_UNTILS%> of %d, line %d",
!                        __func__, __LINE__,
!                        i, MAXIMUM_UNTILS, CURRENT_LINE_NUMBER);
      }
    gcc_assert(i < MAXIMUM_UNTILS);
  
*************** parser_perform_conditional_end( struct c
*** 7655,7666 ****
      SHOW_PARSE_HEADER
      SHOW_PARSE_TEXT(" cbl_perform_tgt_t is at")
      char ach[32];
!     sprintf(ach, " %p", (void*)tgt);
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_END
      }
  
!   size_t i = tgt->addresses.number_of_conditionals;
    gcc_assert(i);
  
    // We need to cap off the prior conditional in this chain of conditionals
--- 8353,8364 ----
      SHOW_PARSE_HEADER
      SHOW_PARSE_TEXT(" cbl_perform_tgt_t is at")
      char ach[32];
!     sprintf(ach, " %p", static_cast<void*>(tgt));
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_END
      }
  
!   unsigned int i = tgt->addresses.number_of_conditionals;
    gcc_assert(i);
  
    // We need to cap off the prior conditional in this chain of conditionals
*************** perform_outofline_before_until(struct cb
*** 7720,7727 ****
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    parser_if(varys[0].until);
--- 8418,8425 ----
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    parser_if(varys[0].until);
*************** perform_outofline_before_until(struct cb
*** 7743,7750 ****
    // Label the bottom of the PERFORM
    gg_append_statement(  tgt->addresses.exit.label );
    sprintf(ach,
!           "_procretb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
    }
  
--- 8441,8449 ----
    // Label the bottom of the PERFORM
    gg_append_statement(  tgt->addresses.exit.label );
    sprintf(ach,
!           "_procretb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
!   token_location_override(current_location_minus_one());
    gg_insert_into_assembler( ach );
    }
  
*************** perform_outofline_after_until(struct cbl
*** 7775,7782 ****
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    create_iline_address_pairs(tgt);
--- 8474,8481 ----
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    create_iline_address_pairs(tgt);
*************** perform_outofline_after_until(struct cbl
*** 7806,7813 ****
    // Label the bottom of the PERFORM
    gg_append_statement(  tgt->addresses.exit.label );
    sprintf(ach,
!           "_procretb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
    }
  
--- 8505,8513 ----
    // Label the bottom of the PERFORM
    gg_append_statement(  tgt->addresses.exit.label );
    sprintf(ach,
!           "_procretb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
!   token_location_override(current_location_minus_one());
    gg_insert_into_assembler( ach );
    }
  
*************** perform_outofline_testafter_varying(stru
*** 7871,7878 ****
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    create_iline_address_pairs(tgt);
--- 8571,8578 ----
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    create_iline_address_pairs(tgt);
*************** perform_outofline_testafter_varying(stru
*** 7926,7933 ****
    // Arriving here means that we all of the conditions were
    // true.  So, we're done.
    sprintf(ach,
!           "_procretb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
    }
  
--- 8626,8634 ----
    // Arriving here means that we all of the conditions were
    // true.  So, we're done.
    sprintf(ach,
!           "_procretb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
!   token_location_override(current_location_minus_one());
    gg_insert_into_assembler( ach );
    }
  
*************** perform_outofline_before_varying(   stru
*** 7988,7995 ****
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    // Initialize all varying:
--- 8689,8696 ----
    char ach[256];
    size_t our_pseudo_label = pseudo_label++;
    sprintf(ach,
!           "_proccallb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
    gg_insert_into_assembler( ach );
  
    // Initialize all varying:
*************** perform_outofline_before_varying(   stru
*** 8069,8076 ****
    // We have, you see, reached the egress:
    gg_append_statement(  tgt->addresses.exit.label );
    sprintf(ach,
!           "_procretb.%ld:",
!           our_pseudo_label);
    gg_insert_into_assembler( ach );
    }
  
--- 8770,8778 ----
    // We have, you see, reached the egress:
    gg_append_statement(  tgt->addresses.exit.label );
    sprintf(ach,
!           "_procretb." HOST_SIZE_T_PRINT_DEC ":",
!           (fmt_size_t)our_pseudo_label);
!   token_location_override(current_location_minus_one());
    gg_insert_into_assembler( ach );
    }
  
*************** perform_inline_until(   struct cbl_perfo
*** 8150,8157 ****
                    GOTO TOP
        EXIT:
    */
-   gg_set_current_line_number(cobol_location().last_line);
- 
    gg_append_statement(tgt->addresses.test.label);
  
    // Go to where the conditional is recalculated....
--- 8852,8857 ----
*************** perform_inline_testbefore_varying(  stru
*** 8266,8273 ****
      parser_move(varys[i].varying, varys[i].from);
      }
  
-   gg_set_current_line_number(cobol_location().last_line);
- 
    // Lay down the testing cycle:
    for(size_t i=0; i<N; i++)
      {
--- 8966,8971 ----
*************** perform_inline_testbefore_varying(  stru
*** 8277,8283 ****
        {
        SHOW_PARSE_INDENT
        char ach[32];
!       sprintf(ach, "LABEL [%ld]:", i);
        SHOW_PARSE_TEXT(ach)
        SHOW_PARSE_END
        }
--- 8975,8981 ----
        {
        SHOW_PARSE_INDENT
        char ach[32];
!       sprintf(ach, "LABEL [" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)i);
        SHOW_PARSE_TEXT(ach)
        SHOW_PARSE_END
        }
*************** perform_inline_testbefore_varying(  stru
*** 8288,8294 ****
        {
        SHOW_PARSE_INDENT
        char ach[32];
!       sprintf(ach, "LABEL CONDINTO[%ld]:", i);
        SHOW_PARSE_TEXT(ach)
        SHOW_PARSE_END
        }
--- 8986,8993 ----
        {
        SHOW_PARSE_INDENT
        char ach[32];
!       sprintf(ach, "LABEL CONDINTO[" HOST_SIZE_T_PRINT_DEC "]:",
!               (fmt_size_t)i);
        SHOW_PARSE_TEXT(ach)
        SHOW_PARSE_END
        }
*************** perform_inline_testbefore_varying(  stru
*** 8299,8305 ****
        {
        SHOW_PARSE_INDENT
        char ach[32];
!       sprintf(ach, "LABEL CONDBACK[%ld]:", i);
        SHOW_PARSE_TEXT(ach)
        SHOW_PARSE_END
        }
--- 8998,9005 ----
        {
        SHOW_PARSE_INDENT
        char ach[32];
!       sprintf(ach, "LABEL CONDBACK[" HOST_SIZE_T_PRINT_DEC "]:",
!               (fmt_size_t)i);
        SHOW_PARSE_TEXT(ach)
        SHOW_PARSE_END
        }
*************** perform_inline_testbefore_varying(  stru
*** 8334,8340 ****
          {
          SHOW_PARSE_INDENT
          char ach[32];
!         sprintf(ach, "GOTO [%ld]:", i-1);
          SHOW_PARSE_TEXT(ach)
          SHOW_PARSE_END
          }
--- 9034,9041 ----
          {
          SHOW_PARSE_INDENT
          char ach[32];
!         sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:",
!                 (fmt_size_t)(i-1));
          SHOW_PARSE_TEXT(ach)
          SHOW_PARSE_END
          }
*************** perform_inline_testbefore_varying(  stru
*** 8368,8374 ****
          {
          SHOW_PARSE_INDENT
          char ach[32];
!         sprintf(ach, "GOTO [%ld]:", N-1);
          SHOW_PARSE_TEXT(ach)
          SHOW_PARSE_END
          }
--- 9069,9076 ----
          {
          SHOW_PARSE_INDENT
          char ach[32];
!         sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:",
!                 (fmt_size_t)(N-1));
          SHOW_PARSE_TEXT(ach)
          SHOW_PARSE_END
          }
*************** perform_inline_testbefore_varying(  stru
*** 8385,8391 ****
          {
          SHOW_PARSE_INDENT
          char ach[32];
!         sprintf(ach, "GOTO [%ld]:", i-1);
          SHOW_PARSE_TEXT(ach)
          SHOW_PARSE_END
          }
--- 9087,9094 ----
          {
          SHOW_PARSE_INDENT
          char ach[32];
!         sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:",
!                 (fmt_size_t)(i-1));
          SHOW_PARSE_TEXT(ach)
          SHOW_PARSE_END
          }
*************** parser_perform_until(   struct cbl_perfo
*** 8574,8580 ****
      SHOW_PARSE_HEADER
      SHOW_PARSE_TEXT(" cbl_perform_tgt_t is at")
      char ach[32];
!     sprintf(ach, " %p", (void*)tgt);
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_LABEL(" ", tgt->from())
      if( tgt->to() )
--- 9277,9283 ----
      SHOW_PARSE_HEADER
      SHOW_PARSE_TEXT(" cbl_perform_tgt_t is at")
      char ach[32];
!     sprintf(ach, " %p", static_cast<void*>(tgt));
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_LABEL(" ", tgt->from())
      if( tgt->to() )
*************** parser_perform_until(   struct cbl_perfo
*** 8584,8592 ****
      SHOW_PARSE_END
      }
  
-   gg_set_current_line_number(cobol_location().last_line);
-   gg_assign(var_decl_nop, build_int_cst_type(INT, 105));
- 
    if( tgt->from()->type != LblLoop )
      {
      perform_outofline( tgt, test_before, N, varys);
--- 9287,9292 ----
*************** parser_perform_inline_times(struct cbl_p
*** 8653,8662 ****
    gg_append_statement( tgt->addresses.testA.label );
    gg_append_statement( tgt->addresses.test.label );
  
-   // AT this point, we want to set the line_number to the location of the
-   // END-PERFORM statement.
-   gg_set_current_line_number(cobol_location().last_line);
- 
    gg_decrement(counter);
    // Do the test:
    IF( counter, gt_op, gg_cast(LONG, integer_zero_node) )
--- 9353,9358 ----
*************** parser_perform_inline_times(struct cbl_p
*** 8687,8694 ****
      SHOW_PARSE_END
      }
  
-   int stash = gg_get_current_line_number();
-   gg_set_current_line_number(tgt->addresses.line_number_of_setup_code);
    gg_append_statement( tgt->addresses.setup.label );
  
    // Get the count:
--- 9383,9388 ----
*************** parser_perform_inline_times(struct cbl_p
*** 8719,8726 ****
      gg_append_statement( tgt->addresses.exit.go_to );
      ENDIF
  
-   gg_set_current_line_number(stash);
- 
    SHOW_PARSE
      {
      SHOW_PARSE_INDENT
--- 9413,9418 ----
*************** parser_perform_inline_times(struct cbl_p
*** 8731,8737 ****
    }
  
  void
! parser_set_conditional88( struct cbl_refer_t refer, bool which_way )
    {
    Analyze();
    struct cbl_field_t *tgt = refer.field;
--- 9423,9429 ----
    }
  
  void
! parser_set_conditional88( const cbl_refer_t& refer, bool which_way )
    {
    Analyze();
    struct cbl_field_t *tgt = refer.field;
*************** parser_file_add(struct cbl_file_t *file)
*** 8843,8849 ****
  
    if( !file )
      {
!     cbl_internal_error("%s(): called with NULL *file", __func__);
      gcc_assert(file);
      }
  
--- 9535,9541 ----
  
    if( !file )
      {
!     cbl_internal_error("%s: called with NULL *file", __func__);
      gcc_assert(file);
      }
  
*************** parser_file_add(struct cbl_file_t *file)
*** 8968,8984 ****
    if(file->access == file_inaccessible_e)
      {
      cbl_internal_error(
!           "%s:%d file %s access mode is 'file_inaccessible_e' in %s",
            current_filename.back().c_str(),
            CURRENT_LINE_NUMBER,
            file->name,
            __func__);
      }
  
    gg_call(VOID,
            "__gg__file_init",
            gg_get_address_of(new_var_decl),
            gg_string_literal(file->name),
            array_of_keys,
            key_numbers,
            unique_flags,
--- 9660,9679 ----
    if(file->access == file_inaccessible_e)
      {
      cbl_internal_error(
!           "%s:%d file %s access mode is %<file_inaccessible_e%> in %s",
            current_filename.back().c_str(),
            CURRENT_LINE_NUMBER,
            file->name,
            __func__);
      }
  
+   size_t symbol_table_index = symbol_index(symbol_elem_of(file));
+ 
    gg_call(VOID,
            "__gg__file_init",
            gg_get_address_of(new_var_decl),
            gg_string_literal(file->name),
+           build_int_cst_type(SIZE_T, symbol_table_index),
            array_of_keys,
            key_numbers,
            unique_flags,
*************** parser_file_add(struct cbl_file_t *file)
*** 8999,9006 ****
    file->var_decl_node = new_var_decl;
    }
  
- static void store_location_stuff(const cbl_name_t statement_name);
- 
  void
  parser_file_open( size_t nfiles, struct cbl_file_t *files[], int mode_char )
    {
--- 9694,9699 ----
*************** parser_file_open( struct cbl_file_t *fil
*** 9041,9052 ****
  
    if( !file )
      {
!     cbl_internal_error("parser_file_open called with NULL *file");
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("parser_file_open for %s called with NULL var_decl_node", file->name);
      }
  
    if( mode_char == 'a' && (file->access != file_access_seq_e) )
--- 9734,9746 ----
  
    if( !file )
      {
!     cbl_internal_error("%<parser_file_open%> called with NULL *file");
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("%<parser_file_open%> for %s called with NULL "
!                        "%<var_decl_node%>", file->name);
      }
  
    if( mode_char == 'a' && (file->access != file_access_seq_e) )
*************** parser_file_open( struct cbl_file_t *fil
*** 9087,9092 ****
--- 9781,9787 ----
      quoted_name = true;
      }
  
+   sv_is_i_o = true;
    store_location_stuff("OPEN");
    gg_call(VOID,
            "__gg__file_open",
*************** parser_file_close( struct cbl_file_t *fi
*** 9119,9130 ****
  
    if( !file )
      {
!     cbl_internal_error("parser_file_close called with NULL *file");
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("parser_file_close for %s called with NULL file->var_decl_node", file->name);
      }
  
    TRACE1
--- 9814,9826 ----
  
    if( !file )
      {
!     cbl_internal_error("%<parser_file_close%> called with NULL *file");
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("%<parser_file_close%> for %s called with "
!                        "NULL %<file->var_decl_node%>", file->name);
      }
  
    TRACE1
*************** parser_file_close( struct cbl_file_t *fi
*** 9138,9143 ****
--- 9834,9840 ----
    // We are done with the filename.  The library routine will free "filename"
    // memory and set it back to null
  
+   sv_is_i_o = true;
    store_location_stuff("CLOSE");
    gg_call(VOID,
            "__gg__file_close",
*************** parser_file_read( struct cbl_file_t *fil
*** 9187,9213 ****
  
    if( !file )
      {
!     cbl_internal_error("parser_file_read called with NULL *file");
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("parser_file_read for %s called with NULL file->var_decl_node", file->name);
      }
  
    if( !file )
      {
!     cbl_internal_error("parser_file_read called with NULL *field");
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("parser_file_read for %s called with NULL field->var_decl_node", file->name);
      }
  
    if( file->access == file_access_seq_e && where >= 0)
      {
!     cbl_internal_error("%s:%d file %s is RELATIVE/SEQUENTIAL, but 'where' >= 0",
            current_filename.back().c_str(),
            CURRENT_LINE_NUMBER,
            file->name);
--- 9884,9912 ----
  
    if( !file )
      {
!     cbl_internal_error("%<parser_file_read%> called with NULL *file");
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("%<parser_file_read%> for %s called with "
!                        "NULL %<file->var_decl_node%>", file->name);
      }
  
    if( !file )
      {
!     cbl_internal_error("%<parser_file_read%> called with NULL *field");
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("%<parser_file_read%> for %s called with "
!                        "NULL %<field->var_decl_node%>", file->name);
      }
  
    if( file->access == file_access_seq_e && where >= 0)
      {
!     cbl_internal_error("%s:%d file %s is RELATIVE/SEQUENTIAL, but %<where >= 0%>",
            current_filename.back().c_str(),
            CURRENT_LINE_NUMBER,
            file->name);
*************** parser_file_read( struct cbl_file_t *fil
*** 9216,9228 ****
  
    if( file->access == file_access_rnd_e && where < 0)
      {
!     cbl_internal_error("%s:%d file %s is RELATIVE/RANDOM, but 'where' < 0",
            current_filename.back().c_str(),
            CURRENT_LINE_NUMBER,
            file->name);
      where = 1;
      }
  
    store_location_stuff("READ");
    gg_call(VOID,
            "__gg__file_read",
--- 9915,9928 ----
  
    if( file->access == file_access_rnd_e && where < 0)
      {
!     cbl_internal_error("%s:%d file %s is RELATIVE/RANDOM, but %<where < 0%>",
            current_filename.back().c_str(),
            CURRENT_LINE_NUMBER,
            file->name);
      where = 1;
      }
  
+   sv_is_i_o = true;
    store_location_stuff("READ");
    gg_call(VOID,
            "__gg__file_read",
*************** parser_file_write( cbl_file_t *file,
*** 9303,9325 ****
  
    if( !file )
      {
!     cbl_internal_error("%s(): called with NULL *file", __func__);
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("%s(): for %s called with NULL file->var_decl_node",
                          __func__, file->name);
      }
  
    if( !file )
      {
!     cbl_internal_error("%s(): called with NULL *field", __func__);
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error( "%s(): for %s called with NULL field->var_decl_node",
                          __func__,
                          file->name);
      }
--- 10003,10025 ----
  
    if( !file )
      {
!     cbl_internal_error("%s: called with NULL *file", __func__);
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error("%s: for %s called with NULL %<file->var_decl_node%>",
                          __func__, file->name);
      }
  
    if( !file )
      {
!     cbl_internal_error("%s: called with NULL *field", __func__);
      }
  
    if( !file->var_decl_node )
      {
!     cbl_internal_error( "%s: for %s called with NULL %<field->var_decl_node%>",
                          __func__,
                          file->name);
      }
*************** parser_file_write( cbl_file_t *file,
*** 9331,9337 ****
      get_binary_value( value,
                        NULL,
                        advance.field,
!                       refer_offset_source(advance));
      gg_assign(t_advance, gg_cast(INT, value));
      }
    else
--- 10031,10037 ----
      get_binary_value( value,
                        NULL,
                        advance.field,
!                       refer_offset(advance));
      gg_assign(t_advance, gg_cast(INT, value));
      }
    else
*************** parser_file_write( cbl_file_t *file,
*** 9357,9362 ****
--- 10057,10063 ----
      record_area = cbl_field_of(symbol_at(file->default_record));
      }
  
+   sv_is_i_o = true;
    store_location_stuff("WRITE");
    gg_call(VOID,
            "__gg__file_write",
*************** void
*** 9400,9412 ****
  parser_file_delete( struct cbl_file_t *file, bool /*sequentially*/ )
    {
    Analyze();
    bool sequentially =    file->access == file_access_seq_e
                        || file->org    == file_sequential_e
                        || file->org    == file_line_sequential_e;
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
-     if(file)
        {
        SHOW_PARSE_TEXT(" ");
        SHOW_PARSE_TEXT(file->name);
--- 10101,10119 ----
  parser_file_delete( struct cbl_file_t *file, bool /*sequentially*/ )
    {
    Analyze();
+ 
+   if( !file )
+     {
+     cbl_internal_error("The file pointer should not be null");
+     abort();  // Because cppcheck doesn't recognize [[noerror]]
+     }
+ 
    bool sequentially =    file->access == file_access_seq_e
                        || file->org    == file_sequential_e
                        || file->org    == file_line_sequential_e;
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
        {
        SHOW_PARSE_TEXT(" ");
        SHOW_PARSE_TEXT(file->name);
*************** parser_file_delete( struct cbl_file_t *f
*** 9419,9431 ****
          SHOW_PARSE_TEXT(" sequentially")
          }
        }
-     else
-       {
-       SHOW_PARSE_TEXT(" *file is NULL")
-       }
      SHOW_PARSE_END
      }
  
    store_location_stuff("DELETE");
    gg_call(VOID,
            "__gg__file_delete",
--- 10126,10135 ----
          SHOW_PARSE_TEXT(" sequentially")
          }
        }
      SHOW_PARSE_END
      }
  
+   sv_is_i_o = true;
    store_location_stuff("DELETE");
    gg_call(VOID,
            "__gg__file_delete",
*************** parser_file_rewrite(cbl_file_t *file,
*** 9482,9487 ****
--- 10186,10192 ----
      record_area = cbl_field_of(symbol_at(file->default_record));
      }
  
+   sv_is_i_o = true;
    store_location_stuff("REWRITE");
    gg_call(VOID,
            "__gg__file_rewrite",
*************** parser_file_start(struct cbl_file_t *fil
*** 9577,9584 ****
      // A key has a number of fields
      for(size_t ifield=0; ifield<file->keys[key_number].nfield; ifield++)
        {
!       size_t field_index = file->keys[key_number].fields[ifield];
!       cbl_field_t *field = cbl_field_of(symbol_at(field_index));
        combined_length += field->data.capacity;
        }
      gg_assign(length, build_int_cst_type(SIZE_T, combined_length));
--- 10282,10289 ----
      // A key has a number of fields
      for(size_t ifield=0; ifield<file->keys[key_number].nfield; ifield++)
        {
!       size_t nfield = file->keys[key_number].fields[ifield];
!       cbl_field_t *field = cbl_field_of(symbol_at(nfield));
        combined_length += field->data.capacity;
        }
      gg_assign(length, build_int_cst_type(SIZE_T, combined_length));
*************** parser_file_start(struct cbl_file_t *fil
*** 9588,9596 ****
      get_binary_value( length,
                        NULL,
                        length_ref.field,
!                       refer_offset_dest(length_ref));
      }
  
    store_location_stuff("START");
    gg_call(VOID,
            "__gg__file_start",
--- 10293,10302 ----
      get_binary_value( length,
                        NULL,
                        length_ref.field,
!                       refer_offset(length_ref));
      }
  
+   sv_is_i_o = true;
    store_location_stuff("START");
    gg_call(VOID,
            "__gg__file_start",
*************** parser_file_start(struct cbl_file_t *fil
*** 9604,9618 ****
  
  static void
  inspect_tally(bool backward,
!               cbl_refer_t identifier_1,
!               unsigned long n_identifier_2,
!               cbx_inspect_t<cbl_refer_t>* identifier_2)
    {
    Analyze();
    // This is an INSPECT FORMAT 1
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_END
      }
  
--- 10310,10362 ----
  
  static void
  inspect_tally(bool backward,
!         const cbl_refer_t &identifier_1,
!               cbl_inspect_opers_t& identifier_2)
    {
    Analyze();
    // This is an INSPECT FORMAT 1
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
+     char ach[128];
+     sprintf(ach, "There are %lu identifier_2", gb4(identifier_2.size()));
+     SHOW_PARSE_TEXT(ach);
+     for(size_t i=0; i<identifier_2.size(); i++)
+       {
+       SHOW_PARSE_INDENT
+         sprintf(ach, "%lu: bounds: %lu", gb4(i), gb4(identifier_2[i].nbound()));
+       SHOW_PARSE_TEXT(ach);
+       for(size_t j=0; j<identifier_2[i].nbound(); j++)
+         {
+         SHOW_PARSE_INDENT
+           sprintf(ach, "    %lu: matches: %lu",
+                   gb4(j), gb4(identifier_2[i][j].matches.size()));
+         SHOW_PARSE_TEXT(ach);
+ 
+         SHOW_PARSE_INDENT
+         if(  identifier_2[i][j].bound == bound_characters_e )
+           {
+           SHOW_PARSE_TEXT("       bound_characters");
+           }
+         else
+           {
+           SHOW_PARSE_TEXT("       bound_leading/all");
+           }
+ 
+         if( identifier_2[i][j].matches.size() )
+           {
+           SHOW_PARSE_INDENT
+           sprintf(ach, "       before %p",
+                   as_voidp(identifier_2.at(i).at(j).matches.at(0).before.identifier_4.field));
+           SHOW_PARSE_TEXT(ach);
+           SHOW_PARSE_INDENT
+           sprintf(ach, "       after  %p",
+                   as_voidp(identifier_2.at(i).at(j).matches.at(0).after.identifier_4.field));
+           SHOW_PARSE_TEXT(ach);
+           }
+         }
+       }
+ 
      SHOW_PARSE_END
      }
  
*************** inspect_tally(bool backward,
*** 9622,9627 ****
--- 10366,10372 ----
  
    size_t int_index  = 0;
    size_t pcbl_index = 0;
+   unsigned long n_identifier_2 = identifier_2.size();
  
    // The first integer is the all-important controlling count:
    int_index++;
*************** inspect_tally(bool backward,
*** 9635,9646 ****
      pcbl_index++;
      // For each FOR there is a count of the loops after the FOR
      int_index++;
!     for(size_t j=0; j<identifier_2[i].nbound; j++)
        {
- 
        // After each identifier-2, there is a cbl_inspect_bound_t value:
        int_index++;
!       if( identifier_2[i].opers[j].bound == bound_characters_e)
          {
          // This is a FOR CHARACTERS PHRASE1, so we will need before/after
          // for each:
--- 10380,10390 ----
      pcbl_index++;
      // For each FOR there is a count of the loops after the FOR
      int_index++;
!     for(size_t j=0; j<identifier_2[i].nbound(); j++)
        {
        // After each identifier-2, there is a cbl_inspect_bound_t value:
        int_index++;
!       if( identifier_2[i][j].bound == bound_characters_e)
          {
          // This is a FOR CHARACTERS PHRASE1, so we will need before/after
          // for each:
*************** inspect_tally(bool backward,
*** 9651,9657 ****
          {
          // This is ALL or LEADING.  Each has some number of identifier-3
          int_index++;
!         for(size_t k=0; k<identifier_2[i].opers[j].n_identifier_3; k++)
            {
            // Put identifier-3 into the array:
            pcbl_index++;
--- 10395,10401 ----
          {
          // This is ALL or LEADING.  Each has some number of identifier-3
          int_index++;
!         for(size_t k=0; k<identifier_2[i][j].n_identifier_3(); k++)
            {
            // Put identifier-3 into the array:
            pcbl_index++;
*************** inspect_tally(bool backward,
*** 9687,9694 ****
      }
    ENDIF
  
!   size_t n_resolveds = pcbl_index;
!   cbl_refer_t *pcbl_refers = (cbl_refer_t *)xmalloc(n_resolveds * sizeof(cbl_refer_t));
  
    // Now we make a second pass, populating those arrays:
    int_index  = 0;
--- 10431,10438 ----
      }
    ENDIF
  
!   const size_t n_resolveds = pcbl_index;
!   std::vector<cbl_refer_t> pcbl_refers(n_resolveds);
  
    // Now we make a second pass, populating those arrays:
    int_index  = 0;
*************** inspect_tally(bool backward,
*** 9707,9740 ****
      pcbl_refers[pcbl_index++] = identifier_2[i].tally;
      // For each FOR there is a count of the loops after the FOR
      gg_assign(  gg_array_value(integers, int_index++),
!                 build_int_cst_type(SIZE_T, identifier_2[i].nbound) );
!     for(size_t j=0; j<identifier_2[i].nbound; j++)
        {
  
        // After each identifier-2, there is a cbl_inspect_bound_t value:
        gg_assign(  gg_array_value(integers, int_index++),
!                   build_int_cst_type(SIZE_T, identifier_2[i].opers[j].bound));
!       if( identifier_2[i].opers[j].bound == bound_characters_e)
          {
          // This is a FOR CHARACTERS PHRASE1, so we will need before/after
          // for each:
!         pcbl_refers[pcbl_index++] = identifier_2[i].opers[j].matches[0].before.identifier_4;
!         pcbl_refers[pcbl_index++] = identifier_2[i].opers[j].matches[0].after.identifier_4;
          }
        else
          {
          // This is ALL or LEADING.  Each has some number of identifier-3
          gg_assign(  gg_array_value(integers, int_index++),
!                     build_int_cst_type(SIZE_T, identifier_2[i].opers[j].n_identifier_3));
!         for(size_t k=0; k<identifier_2[i].opers[j].n_identifier_3; k++)
            {
            // Put identifier-3 into the array:
!           pcbl_refers[pcbl_index++] = identifier_2[i].opers[j].matches[k].matching;
  
            // We need the PHRASE1 for that identifier-3
!           pcbl_refers[pcbl_index++] = identifier_2[i].opers[j].matches[k].before.identifier_4;
  
!           pcbl_refers[pcbl_index++] = identifier_2[i].opers[j].matches[k].after.identifier_4;
            }
          }
        }
--- 10451,10492 ----
      pcbl_refers[pcbl_index++] = identifier_2[i].tally;
      // For each FOR there is a count of the loops after the FOR
      gg_assign(  gg_array_value(integers, int_index++),
!                 build_int_cst_type(SIZE_T, identifier_2[i].nbound()) );
!     for(size_t j=0; j<identifier_2[i].nbound(); j++)
        {
  
        // After each identifier-2, there is a cbl_inspect_bound_t value:
        gg_assign(  gg_array_value(integers, int_index++),
!                   build_int_cst_type(SIZE_T, identifier_2[i][j].bound));
!       if( identifier_2[i][j].bound == bound_characters_e)
          {
          // This is a FOR CHARACTERS PHRASE1, so we will need before/after
          // for each:
!         const auto& m( identifier_2[i][j].matches );
!         if( m.empty() )
!           {
!             pcbl_index += 2;
!           }
!         else
!           {
!           pcbl_refers[pcbl_index++] = m[0].before.identifier_4;
!           pcbl_refers[pcbl_index++] = m[0].after.identifier_4;
!           }
          }
        else
          {
          // This is ALL or LEADING.  Each has some number of identifier-3
          gg_assign(  gg_array_value(integers, int_index++),
!                     build_int_cst_type(SIZE_T, identifier_2[i][j].n_identifier_3()));
!         for(size_t k=0; k<identifier_2[i][j].n_identifier_3(); k++)
            {
            // Put identifier-3 into the array:
!           pcbl_refers[pcbl_index++] = identifier_2[i][j].matches[k].matching();
  
            // We need the PHRASE1 for that identifier-3
!           pcbl_refers[pcbl_index++] = identifier_2[i][j].matches[k].before.identifier_4;
  
!           pcbl_refers[pcbl_index++] = identifier_2[i][j].matches[k].after.identifier_4;
            }
          }
        }
*************** inspect_tally(bool backward,
*** 9746,9752 ****
    gcc_assert(pcbl_index == n_resolveds);
  
    // We have built up an array of integers, and an array of cbl_refer_t.
!   build_array_of_treeplets(1, pcbl_index, pcbl_refers);
  
    // Do the actual call:
    gg_call(VOID,
--- 10498,10504 ----
    gcc_assert(pcbl_index == n_resolveds);
  
    // We have built up an array of integers, and an array of cbl_refer_t.
!   build_array_of_treeplets(1, pcbl_index, pcbl_refers.data());
  
    // Do the actual call:
    gg_call(VOID,
*************** inspect_tally(bool backward,
*** 9754,9769 ****
            backward ? integer_one_node : integer_zero_node,
            integers,
            NULL_TREE);
- 
-   // And free up the memory we allocated
-   free(pcbl_refers);
    }
  
  static void
  inspect_replacing(int backward,
!                   cbl_refer_t identifier_1,
!                   unsigned long n_ops,
!                   cbx_inspect_t<cbl_refer_t>* operations)
    {
    Analyze();
    // This is an INSPECT FORMAT 2
--- 10506,10517 ----
            backward ? integer_one_node : integer_zero_node,
            integers,
            NULL_TREE);
    }
  
  static void
  inspect_replacing(int backward,
!             const cbl_refer_t &identifier_1,
!                   cbl_inspect_opers_t &operations)
    {
    Analyze();
    // This is an INSPECT FORMAT 2
*************** inspect_replacing(int backward,
*** 9774,9779 ****
--- 10522,10528 ----
      }
  
    // For REPLACING, unlike TALLY, there can be but one operation
+   unsigned long n_ops = operations.size();
    gcc_assert(n_ops == 1);
  
    size_t n_id_3 = 0;
*************** inspect_replacing(int backward,
*** 9784,9792 ****
    // Make one pass through the inputs to count up the sizes of the arrays
    // we will be passing to the library routines:
  
!   for( size_t j=0; j<operations[0].nbound; j++)
      {
!     if( operations[0].opers[j].bound == bound_characters_e)
        {
        // This is a FOR CHARACTERS phrase
  
--- 10533,10541 ----
    // Make one pass through the inputs to count up the sizes of the arrays
    // we will be passing to the library routines:
  
!   for( size_t j=0; j<operations[0].nbound(); j++)
      {
!     if( operations[0][j].bound == bound_characters_e)
        {
        // This is a FOR CHARACTERS phrase
  
*************** inspect_replacing(int backward,
*** 9805,9817 ****
  
        // The n_identifier-3 values will go into the resolved values; we have to
        // leave room for them
!       n_id_3 += operations[0].opers[j].n_identifier_3;
  
        // Likewise identifier-5 values:
!       n_id_5 += operations[0].opers[j].n_identifier_3;
  
        // And each identifier-3 / identifier-5 pair has BEFORE and AFTER phrases:
!       n_id_4 += 2 * operations[0].opers[j].n_identifier_3;
        }
      }
  
--- 10554,10566 ----
  
        // The n_identifier-3 values will go into the resolved values; we have to
        // leave room for them
!       n_id_3 += operations[0][j].n_identifier_3();
  
        // Likewise identifier-5 values:
!       n_id_5 += operations[0][j].n_identifier_3();
  
        // And each identifier-3 / identifier-5 pair has BEFORE and AFTER phrases:
!       n_id_4 += 2 * operations[0][j].n_identifier_3();
        }
      }
  
*************** inspect_replacing(int backward,
*** 9819,9826 ****
    // all the integers and cbl_inspect_bound_t values, in a strict sequence so
    // that the library routine can peel them off.
  
!   size_t n_integers =   1                     // Room for operations[0].nbound
!                         + operations[0].nbound  // Room for all the cbl_inspect_bound_t values
                          + n_all_leading_first;  // Room for all of the n_identifier_3 counts
  
    static tree int_size = gg_define_variable(INT,      "..pir_size", vs_file_static, 0);
--- 10568,10575 ----
    // all the integers and cbl_inspect_bound_t values, in a strict sequence so
    // that the library routine can peel them off.
  
!   size_t n_integers =   1                     // Room for operations[0].nbound()
!                         + operations[0].nbound()  // Room for all the cbl_inspect_bound_t values
                          + n_all_leading_first;  // Room for all of the n_identifier_3 counts
  
    static tree int_size = gg_define_variable(INT,      "..pir_size", vs_file_static, 0);
*************** inspect_replacing(int backward,
*** 9840,9851 ****
      }
    ENDIF
  
!   size_t n_resolveds =      1                 // Room for identifier-1
                              + n_id_3            // Room for the identifier-3 variables
                              + n_id_4            // Room for the identifier-4 variables
                              + n_id_5;           // Room for the identifier-5 variables
  
!   cbl_refer_t *pcbl_refers = (cbl_refer_t *)xmalloc(n_resolveds * sizeof(cbl_refer_t));
  
    // Now we make a second pass, populating those arrays:
    size_t int_index  = 0;
--- 10589,10600 ----
      }
    ENDIF
  
!   const size_t n_resolveds =  1                 // Room for identifier-1
                              + n_id_3            // Room for the identifier-3 variables
                              + n_id_4            // Room for the identifier-4 variables
                              + n_id_5;           // Room for the identifier-5 variables
  
!   std::vector<cbl_refer_t> pcbl_refers(n_resolveds);
  
    // Now we make a second pass, populating those arrays:
    size_t int_index  = 0;
*************** inspect_replacing(int backward,
*** 9853,9880 ****
  
    // The first integer is the all-important controlling count:
    gg_assign(  gg_array_value(integers, int_index++),
!               build_int_cst_type(SIZE_T, operations[0].nbound) );
  
    // The first refer is for identifier-1
    pcbl_refers[pcbl_index++] = identifier_1;
  
!   for( size_t j=0; j<operations[0].nbound; j++)
      {
      // For each FOR there is a count of the loops after the FOR
  
      // For each operation, there is a cbl_inspect_bound_t value:
      gg_assign(  gg_array_value(integers, int_index++),
!                 build_int_cst_type(SIZE_T, operations[0].opers[j].bound));
!     if( operations[0].opers[j].bound == bound_characters_e)
        {
        // This is a FOR CHARACTERS PHRASE1
  
        // Put in the identifier-5 replacement value:
!       pcbl_refers[pcbl_index++] = operations[0].opers[j].replaces[0].replacement;
  
        // Each identifier-5 gets a PHRASE1:
!       pcbl_refers[pcbl_index++] = operations[0].opers[j].replaces[0].before.identifier_4;
!       pcbl_refers[pcbl_index++] = operations[0].opers[j].replaces[0].after.identifier_4;
  
        SHOW_PARSE
          {
--- 10602,10629 ----
  
    // The first integer is the all-important controlling count:
    gg_assign(  gg_array_value(integers, int_index++),
!               build_int_cst_type(SIZE_T, operations[0].nbound()) );
  
    // The first refer is for identifier-1
    pcbl_refers[pcbl_index++] = identifier_1;
  
!   for( size_t j=0; j<operations[0].nbound(); j++)
      {
      // For each FOR there is a count of the loops after the FOR
  
      // For each operation, there is a cbl_inspect_bound_t value:
      gg_assign(  gg_array_value(integers, int_index++),
!                 build_int_cst_type(SIZE_T, operations[0][j].bound));
!     if( operations[0][j].bound == bound_characters_e)
        {
        // This is a FOR CHARACTERS PHRASE1
  
        // Put in the identifier-5 replacement value:
!       pcbl_refers[pcbl_index++] = operations[0][j].replaces[0].replacement;
  
        // Each identifier-5 gets a PHRASE1:
!       pcbl_refers[pcbl_index++] = operations[0][j].replaces[0].before.identifier_4;
!       pcbl_refers[pcbl_index++] = operations[0][j].replaces[0].after.identifier_4;
  
        SHOW_PARSE
          {
*************** inspect_replacing(int backward,
*** 9882,9895 ****
            {
            SHOW_PARSE_INDENT
            }
!         SHOW_PARSE_FIELD("ID-5 ", operations[0].opers[j].replaces[0].replacement.field)
!         if(operations[0].opers[j].replaces[0].before.identifier_4.field)
            {
!           SHOW_PARSE_FIELD(" before ", operations[0].opers[j].replaces[0].before.identifier_4.field)
            }
!         if(operations[0].opers[j].replaces[0].after.identifier_4.field)
            {
!           SHOW_PARSE_FIELD(" after ", operations[0].opers[j].replaces[0].after.identifier_4.field)
            }
          SHOW_PARSE_END
          }
--- 10631,10644 ----
            {
            SHOW_PARSE_INDENT
            }
!         SHOW_PARSE_FIELD("ID-5 ", operations[0][j].replaces[0].replacement.field)
!         if(operations[0][j].replaces[0].before.identifier_4.field)
            {
!           SHOW_PARSE_FIELD(" before ", operations[0][j].replaces[0].before.identifier_4.field)
            }
!         if(operations[0][j].replaces[0].after.identifier_4.field)
            {
!           SHOW_PARSE_FIELD(" after ", operations[0][j].replaces[0].after.identifier_4.field)
            }
          SHOW_PARSE_END
          }
*************** inspect_replacing(int backward,
*** 9898,9916 ****
        {
        // This is ALL or LEADING.  Each has some number of identifier-3/identifier-5 pairs
        gg_assign(  gg_array_value(integers, int_index++),
!                   build_int_cst_type(SIZE_T, operations[0].opers[j].n_identifier_3));
!       for(size_t k=0; k<operations[0].opers[j].n_identifier_3; k++)
          {
          // Put identifier-3 into the array:
!         pcbl_refers[pcbl_index++] = operations[0].opers[j].replaces[k].matching;
  
          // Put in the identifier-5 replacement value:
!         pcbl_refers[pcbl_index++] = operations[0].opers[j].replaces[k].replacement;
  
          // We need the PHRASE1 for that identifier-3/identifier-5 pair:
!         pcbl_refers[pcbl_index++] = operations[0].opers[j].replaces[k].before.identifier_4;
  
!         pcbl_refers[pcbl_index++] = operations[0].opers[j].replaces[k].after.identifier_4;
  
          SHOW_PARSE
            {
--- 10647,10665 ----
        {
        // This is ALL or LEADING.  Each has some number of identifier-3/identifier-5 pairs
        gg_assign(  gg_array_value(integers, int_index++),
!                   build_int_cst_type(SIZE_T, operations[0][j].n_identifier_3()));
!       for(size_t k=0; k<operations[0][j].n_identifier_3(); k++)
          {
          // Put identifier-3 into the array:
!         pcbl_refers[pcbl_index++] = operations[0][j].replaces[k].matching();
  
          // Put in the identifier-5 replacement value:
!         pcbl_refers[pcbl_index++] = operations[0][j].replaces[k].replacement;
  
          // We need the PHRASE1 for that identifier-3/identifier-5 pair:
!         pcbl_refers[pcbl_index++] = operations[0][j].replaces[k].before.identifier_4;
  
!         pcbl_refers[pcbl_index++] = operations[0][j].replaces[k].after.identifier_4;
  
          SHOW_PARSE
            {
*************** inspect_replacing(int backward,
*** 9918,9932 ****
              {
              SHOW_PARSE_INDENT
              }
!           SHOW_PARSE_FIELD("ID-3 ", operations[0].opers[j].replaces[k].matching.field)
!           SHOW_PARSE_FIELD(" ID-5 ", operations[0].opers[j].replaces[k].replacement.field)
!           if( operations[0].opers[j].replaces[k].before.identifier_4.field )
              {
!             SHOW_PARSE_FIELD("before ", operations[0].opers[j].replaces[k].before.identifier_4.field)
              }
!           if(operations[0].opers[j].replaces[k].after.identifier_4.field)
              {
!             SHOW_PARSE_FIELD("after ", operations[0].opers[j].replaces[k].after.identifier_4.field)
              }
            SHOW_PARSE_END
            }
--- 10667,10681 ----
              {
              SHOW_PARSE_INDENT
              }
!           SHOW_PARSE_FIELD("ID-3 ", operations[0][j].replaces[k].matching().field)
!           SHOW_PARSE_FIELD(" ID-5 ", operations[0][j].replaces[k].replacement.field)
!           if( operations[0][j].replaces[k].before.identifier_4.field )
              {
!             SHOW_PARSE_FIELD("before ", operations[0][j].replaces[k].before.identifier_4.field)
              }
!           if(operations[0][j].replaces[k].after.identifier_4.field)
              {
!             SHOW_PARSE_FIELD("after ", operations[0][j].replaces[k].after.identifier_4.field)
              }
            SHOW_PARSE_END
            }
*************** inspect_replacing(int backward,
*** 9934,9942 ****
        }
      }
  
!   //fprintf(stderr, "%s(): %ld %ld\n", __func__, int_index, n_integers);
    gcc_assert(int_index  == n_integers);
!   //fprintf(stderr, "%s(): %ld %ld\n", __func__, pcbl_index, n_resolveds);
    gcc_assert(pcbl_index == n_resolveds);
  
    // We have built up an array of integers, and an array of cbl_refer_t.
--- 10683,10691 ----
        }
      }
  
!   //fprintf(stderr, "%s: %ld %ld\n", __func__, int_index, n_integers);
    gcc_assert(int_index  == n_integers);
!   //fprintf(stderr, "%s: %ld %ld\n", __func__, pcbl_index, n_resolveds);
    gcc_assert(pcbl_index == n_resolveds);
  
    // We have built up an array of integers, and an array of cbl_refer_t.
*************** inspect_replacing(int backward,
*** 9951,9957 ****
        }
      }
  
!   build_array_of_treeplets(1, pcbl_index, pcbl_refers);
  
    // Do the actual call:
    gg_call(VOID,
--- 10700,10706 ----
        }
      }
  
!   build_array_of_treeplets(1, pcbl_index, pcbl_refers.data());
  
    // Do the actual call:
    gg_call(VOID,
*************** inspect_replacing(int backward,
*** 9962,9974 ****
    }
  
  void
! parser_inspect(cbl_refer_t identifier_1,
                 bool backward,
!                unsigned long n_operations,
!                cbx_inspect_t<cbl_refer_t>* operations)
    {
    Analyze();
!   gcc_assert(n_operations);
  
    /*  Operating philosophy:  We are going to minimize the amount of
        GENERIC tag creation here at compile time, mainly by eliminating
--- 10711,10722 ----
    }
  
  void
! parser_inspect(const cbl_refer_t& identifier_1,
                 bool backward,
!                cbl_inspect_opers_t& operations)
    {
    Analyze();
!   gcc_assert(! operations.empty());
  
    /*  Operating philosophy:  We are going to minimize the amount of
        GENERIC tag creation here at compile time, mainly by eliminating
*************** parser_inspect(cbl_refer_t identifier_1,
*** 9978,9989 ****
    if( operations[0].tally.field )
      {
      // This is a FORMAT 1 "TALLYING"
!     inspect_tally(backward, identifier_1, n_operations, operations);
      }
    else
      {
      // This is a FORMAT 2 "REPLACING"
!     inspect_replacing(backward, identifier_1, n_operations, operations);
      }
    }
  
--- 10726,10737 ----
    if( operations[0].tally.field )
      {
      // This is a FORMAT 1 "TALLYING"
!     inspect_tally(backward, identifier_1, operations);
      }
    else
      {
      // This is a FORMAT 2 "REPLACING"
!     inspect_replacing(backward, identifier_1, operations);
      }
    }
  
*************** parser_inspect_conv(cbl_refer_t input,
*** 10007,10033 ****
            backward ? integer_one_node : integer_zero_node,
            input.field ? gg_get_address_of(input.field->var_decl_node)
                        : null_pointer_node,
!           refer_offset_source(input),
            refer_size_source(input),
            original.field ? gg_get_address_of(original.field->var_decl_node)
                           : null_pointer_node,
!           refer_offset_dest(original),
            refer_size_dest(original),
            replacement.field ? gg_get_address_of(
                                replacement.field->var_decl_node)
                              : null_pointer_node,
!           refer_offset_source(replacement),
            replacement.all ? build_int_cst_type(SIZE_T, -1LL)
                            : refer_size_source(replacement),
            after.identifier_4.field ? gg_get_address_of(
                                          after.identifier_4.field->var_decl_node)
                                     : null_pointer_node,
!           refer_offset_source(after.identifier_4),
            refer_size_source(after.identifier_4),
            before.identifier_4.field ? gg_get_address_of(
                                         before.identifier_4.field->var_decl_node)
                                      : null_pointer_node,
!           refer_offset_source(before.identifier_4),
            refer_size_source(before.identifier_4),
            NULL_TREE
            );
--- 10755,10781 ----
            backward ? integer_one_node : integer_zero_node,
            input.field ? gg_get_address_of(input.field->var_decl_node)
                        : null_pointer_node,
!           refer_offset(input),
            refer_size_source(input),
            original.field ? gg_get_address_of(original.field->var_decl_node)
                           : null_pointer_node,
!           refer_offset(original),
            refer_size_dest(original),
            replacement.field ? gg_get_address_of(
                                replacement.field->var_decl_node)
                              : null_pointer_node,
!           refer_offset(replacement),
            replacement.all ? build_int_cst_type(SIZE_T, -1LL)
                            : refer_size_source(replacement),
            after.identifier_4.field ? gg_get_address_of(
                                          after.identifier_4.field->var_decl_node)
                                     : null_pointer_node,
!           refer_offset(after.identifier_4),
            refer_size_source(after.identifier_4),
            before.identifier_4.field ? gg_get_address_of(
                                         before.identifier_4.field->var_decl_node)
                                      : null_pointer_node,
!           refer_offset(before.identifier_4),
            refer_size_source(before.identifier_4),
            NULL_TREE
            );
*************** parser_intrinsic_numval_c( cbl_field_t *
*** 10077,10086 ****
              "__gg__test_numval_c",
              gg_get_address_of(f->var_decl_node),
              gg_get_address_of(input.field->var_decl_node),
!             refer_offset_source(input),
              refer_size_source(input),
              currency.field ? gg_get_address_of(currency.field->var_decl_node) : null_pointer_node,
!             refer_offset_source(currency),
              refer_size_source(currency),
              NULL_TREE
              );
--- 10825,10834 ----
              "__gg__test_numval_c",
              gg_get_address_of(f->var_decl_node),
              gg_get_address_of(input.field->var_decl_node),
!             refer_offset(input),
              refer_size_source(input),
              currency.field ? gg_get_address_of(currency.field->var_decl_node) : null_pointer_node,
!             refer_offset(currency),
              refer_size_source(currency),
              NULL_TREE
              );
*************** parser_intrinsic_numval_c( cbl_field_t *
*** 10091,10100 ****
              "__gg__numval_c",
              gg_get_address_of(f->var_decl_node),
              gg_get_address_of(input.field->var_decl_node),
!             refer_offset_source(input),
              refer_size_source(input),
              currency.field ? gg_get_address_of(currency.field->var_decl_node) : null_pointer_node,
!             refer_offset_source(currency),
              refer_size_source(currency),
              NULL_TREE
              );
--- 10839,10848 ----
              "__gg__numval_c",
              gg_get_address_of(f->var_decl_node),
              gg_get_address_of(input.field->var_decl_node),
!             refer_offset(input),
              refer_size_source(input),
              currency.field ? gg_get_address_of(currency.field->var_decl_node) : null_pointer_node,
!             refer_offset(currency),
              refer_size_source(currency),
              NULL_TREE
              );
*************** parser_intrinsic_numval_c( cbl_field_t *
*** 10103,10109 ****
  
  void
  parser_intrinsic_subst( cbl_field_t *f,
!                         cbl_refer_t& ref1,
                          size_t argc,
                          cbl_substitute_t * argv )
    {
--- 10851,10857 ----
  
  void
  parser_intrinsic_subst( cbl_field_t *f,
!                   const cbl_refer_t& ref1,
                          size_t argc,
                          cbl_substitute_t * argv )
    {
*************** parser_intrinsic_subst( cbl_field_t *f,
*** 10126,10135 ****
      TRACE1_END
      }
  
    store_location_stuff("SUBSTITUTE");
!   unsigned char *control_bytes = (unsigned char *)xmalloc(argc * sizeof(unsigned char));
!   cbl_refer_t *arg1 = (cbl_refer_t *)xmalloc(argc * sizeof(cbl_refer_t));
!   cbl_refer_t *arg2 = (cbl_refer_t *)xmalloc(argc * sizeof(cbl_refer_t));
  
    for(size_t i=0; i<argc; i++)
      {
--- 10874,10886 ----
      TRACE1_END
      }
  
+   sv_is_i_o = true;
    store_location_stuff("SUBSTITUTE");
!   unsigned char *control_bytes =
!            static_cast<unsigned char *>(xmalloc(argc * sizeof(unsigned char)));
!   gcc_assert(control_bytes);
!   std::vector<cbl_refer_t> arg1(argc);
!   std::vector<cbl_refer_t> arg2(argc);
  
    for(size_t i=0; i<argc; i++)
      {
*************** parser_intrinsic_subst( cbl_field_t *f,
*** 10145,10158 ****
  
    tree control = gg_array_of_bytes(argc, control_bytes);
  
!   build_array_of_treeplets(1, argc, arg1);
!   build_array_of_treeplets(2, argc, arg2);
  
    gg_call(VOID,
            "__gg__substitute",
            gg_get_address_of(f->var_decl_node),
            gg_get_address_of(ref1.field->var_decl_node),
!           refer_offset_source(ref1),
            refer_size_source(ref1),
            build_int_cst_type(SIZE_T, argc),
            control,
--- 10896,10909 ----
  
    tree control = gg_array_of_bytes(argc, control_bytes);
  
!   build_array_of_treeplets(1, argc, arg1.data());
!   build_array_of_treeplets(2, argc, arg2.data());
  
    gg_call(VOID,
            "__gg__substitute",
            gg_get_address_of(f->var_decl_node),
            gg_get_address_of(ref1.field->var_decl_node),
!           refer_offset(ref1),
            refer_size_source(ref1),
            build_int_cst_type(SIZE_T, argc),
            control,
*************** parser_intrinsic_subst( cbl_field_t *f,
*** 10160,10167 ****
  
    gg_free(control);
  
-   free(arg2);
-   free(arg1);
    free(control_bytes);
    }
  
--- 10911,10916 ----
*************** parser_intrinsic_callv( cbl_field_t *tgt
*** 10185,10191 ****
      SHOW_PARSE_HEADER
      SHOW_PARSE_TEXT(" of ")
      SHOW_PARSE_TEXT(function_name)
!     fprintf(stderr, " with %zd parameters", nrefs);
      SHOW_PARSE_END
      }
  
--- 10934,10941 ----
      SHOW_PARSE_HEADER
      SHOW_PARSE_TEXT(" of ")
      SHOW_PARSE_TEXT(function_name)
!     fprintf(stderr, " with " HOST_SIZE_T_PRINT_DEC " parameters",
!             (fmt_size_t)nrefs);
      SHOW_PARSE_END
      }
  
*************** parser_intrinsic_call_0(cbl_field_t *tgt
*** 10254,10260 ****
      {
      // Pass __gg__when_compiled() the time from right now.
      struct timespec tp;
!     clock_gettime(CLOCK_REALTIME, &tp); // time_t tv_sec; long tv_nsec
  
      store_location_stuff(function_name);
      gg_call(VOID,
--- 11004,11012 ----
      {
      // Pass __gg__when_compiled() the time from right now.
      struct timespec tp;
!     uint64_t now = get_time_nanoseconds();
!     tp.tv_sec  = now / 1000000000;
!     tp.tv_nsec = now % 1000000000;
  
      store_location_stuff(function_name);
      gg_call(VOID,
*************** parser_intrinsic_call_1( cbl_field_t *tg
*** 10309,10323 ****
        }
      size_t upper = ref1.field->occurs.bounds.upper
                                      ? ref1.field->occurs.bounds.upper : 1;
!     if( ref1.nsubscript )
        {
        upper = 1;
        }
  
!     if( is_table(ref1.field) && !ref1.nsubscript )
        {
        static tree depending_on = gg_define_variable(LONG, "..pic1_dep");
!       gg_get_depending_on_value(depending_on, ref1.field);
        gg_call(VOID,
                "__gg__int128_to_field",
                gg_get_address_of(tgt->var_decl_node),
--- 11061,11075 ----
        }
      size_t upper = ref1.field->occurs.bounds.upper
                                      ? ref1.field->occurs.bounds.upper : 1;
!     if( ref1.nsubscript() )
        {
        upper = 1;
        }
  
!     if( is_table(ref1.field) && !ref1.nsubscript() )
        {
        static tree depending_on = gg_define_variable(LONG, "..pic1_dep");
!       depending_on_value(depending_on, ref1.field);
        gg_call(VOID,
                "__gg__int128_to_field",
                gg_get_address_of(tgt->var_decl_node),
*************** parser_intrinsic_call_1( cbl_field_t *tg
*** 10373,10379 ****
              function_name,
              gg_get_address_of(tgt->var_decl_node),
              gg_get_address_of(ref1.field->var_decl_node),
!             refer_offset_source(ref1),
              refer_size_source(ref1),
              NULL_TREE);
      }
--- 11125,11131 ----
              function_name,
              gg_get_address_of(tgt->var_decl_node),
              gg_get_address_of(ref1.field->var_decl_node),
!             refer_offset(ref1),
              refer_size_source(ref1),
              NULL_TREE);
      }
*************** parser_intrinsic_call_2( cbl_field_t *tg
*** 10416,10425 ****
            function_name,
            gg_get_address_of(tgt->var_decl_node),
            gg_get_address_of(ref1.field->var_decl_node),
!           refer_offset_source(ref1),
            refer_size_source(ref1),
            ref2.field ? gg_get_address_of(ref2.field->var_decl_node) : null_pointer_node,
!           refer_offset_source(ref2),
            refer_size_source(ref2),
            NULL_TREE);
    TRACE1
--- 11168,11177 ----
            function_name,
            gg_get_address_of(tgt->var_decl_node),
            gg_get_address_of(ref1.field->var_decl_node),
!           refer_offset(ref1),
            refer_size_source(ref1),
            ref2.field ? gg_get_address_of(ref2.field->var_decl_node) : null_pointer_node,
!           refer_offset(ref2),
            refer_size_source(ref2),
            NULL_TREE);
    TRACE1
*************** parser_intrinsic_call_3( cbl_field_t *tg
*** 10466,10478 ****
            function_name,
            gg_get_address_of(tgt->var_decl_node),
            ref1.field ? gg_get_address_of(ref1.field->var_decl_node) : null_pointer_node,
!           refer_offset_source(ref1),
            refer_size_source(ref1),
            ref2.field ? gg_get_address_of(ref2.field->var_decl_node) : null_pointer_node,
!           refer_offset_source(ref2),
            refer_size_source(ref2),
            ref3.field ? gg_get_address_of(ref3.field->var_decl_node) : null_pointer_node,
!           refer_offset_source(ref3),
            refer_size_source(ref3),
            NULL_TREE);
    TRACE1
--- 11218,11230 ----
            function_name,
            gg_get_address_of(tgt->var_decl_node),
            ref1.field ? gg_get_address_of(ref1.field->var_decl_node) : null_pointer_node,
!           refer_offset(ref1),
            refer_size_source(ref1),
            ref2.field ? gg_get_address_of(ref2.field->var_decl_node) : null_pointer_node,
!           refer_offset(ref2),
            refer_size_source(ref2),
            ref3.field ? gg_get_address_of(ref3.field->var_decl_node) : null_pointer_node,
!           refer_offset(ref3),
            refer_size_source(ref3),
            NULL_TREE);
    TRACE1
*************** parser_intrinsic_call_4( cbl_field_t *tg
*** 10521,10536 ****
            function_name,
            gg_get_address_of(tgt->var_decl_node),
            ref1.field ? gg_get_address_of(ref1.field->var_decl_node) : null_pointer_node,
!           refer_offset_source(ref1),
            refer_size_source(ref1),
            ref2.field ? gg_get_address_of(ref2.field->var_decl_node) : null_pointer_node,
!           refer_offset_source(ref2),
            refer_size_source(ref2),
            ref3.field ? gg_get_address_of(ref3.field->var_decl_node) : null_pointer_node,
!           refer_offset_source(ref3),
            refer_size_source(ref3),
            ref4.field ? gg_get_address_of(ref4.field->var_decl_node) : null_pointer_node,
!           refer_offset_source(ref4),
            refer_size_source(ref4),
            NULL_TREE);
    TRACE1
--- 11273,11288 ----
            function_name,
            gg_get_address_of(tgt->var_decl_node),
            ref1.field ? gg_get_address_of(ref1.field->var_decl_node) : null_pointer_node,
!           refer_offset(ref1),
            refer_size_source(ref1),
            ref2.field ? gg_get_address_of(ref2.field->var_decl_node) : null_pointer_node,
!           refer_offset(ref2),
            refer_size_source(ref2),
            ref3.field ? gg_get_address_of(ref3.field->var_decl_node) : null_pointer_node,
!           refer_offset(ref3),
            refer_size_source(ref3),
            ref4.field ? gg_get_address_of(ref4.field->var_decl_node) : null_pointer_node,
!           refer_offset(ref4),
            refer_size_source(ref4),
            NULL_TREE);
    TRACE1
*************** static void
*** 10563,10569 ****
  create_lsearch_address_pairs(struct cbl_label_t *name)
    {
    // Create the lsearch structure
!   name->structs.lsearch = (cbl_lsearch_t *)xmalloc(sizeof(cbl_lsearch_t));
    cbl_lsearch_t *lsearch = name->structs.lsearch;
  
    gg_create_goto_pair(&lsearch->addresses.at_exit.go_to,
--- 11315,11323 ----
  create_lsearch_address_pairs(struct cbl_label_t *name)
    {
    // Create the lsearch structure
!   name->structs.lsearch =
!                   static_cast<cbl_lsearch_t *>(xmalloc(sizeof(cbl_lsearch_t)));
!   gcc_assert(name->structs.lsearch);
    cbl_lsearch_t *lsearch = name->structs.lsearch;
  
    gg_create_goto_pair(&lsearch->addresses.at_exit.go_to,
*************** parser_lsearch_start(   cbl_label_t *nam
*** 10627,10633 ****
        {
        // Extract the number of elements in that rightmost dimension.
        lsearch->limit = gg_define_variable(LONG);
!       gg_get_depending_on_value(lsearch->limit, current);
        break;
        }
      current = parent_of(current);
--- 11381,11387 ----
        {
        // Extract the number of elements in that rightmost dimension.
        lsearch->limit = gg_define_variable(LONG);
!       depending_on_value(lsearch->limit, current);
        break;
        }
      current = parent_of(current);
*************** parser_bsearch_start(   cbl_label_t* nam
*** 10813,10819 ****
      }
  
    // We need a cbl_bsearch_t structure:
!   name->structs.bsearch = (cbl_bsearch_t *)xmalloc(sizeof(cbl_bsearch_t));
    cbl_bsearch_t *bsearch = name->structs.bsearch;
  
    // Create the address/label pairs we need
--- 11567,11575 ----
      }
  
    // We need a cbl_bsearch_t structure:
!   name->structs.bsearch =
!                   static_cast<cbl_bsearch_t *>(xmalloc(sizeof(cbl_bsearch_t)));
!   gcc_assert(name->structs.bsearch);
    cbl_bsearch_t *bsearch = name->structs.bsearch;
  
    // Create the address/label pairs we need
*************** parser_bsearch_start(   cbl_label_t* nam
*** 10846,10851 ****
--- 11602,11609 ----
      current = parent_of(current);
      }
  
+   CHECK_FIELD(current);
+ 
    // There are a number of things we learn from the field "current"
  
    // We get the index:
*************** parser_bsearch_start(   cbl_label_t* nam
*** 10864,10870 ****
  
    // Assign the left and right values:
    gg_assign(bsearch->left, build_int_cst_type(LONG, 1));
!   gg_get_depending_on_value(bsearch->right, current);
  
    // Create the variable that will take the compare result.
    bsearch->compare_result = gg_define_int();
--- 11622,11628 ----
  
    // Assign the left and right values:
    gg_assign(bsearch->left, build_int_cst_type(LONG, 1));
!   depending_on_value(bsearch->right, current);
  
    // Create the variable that will take the compare result.
    bsearch->compare_result = gg_define_int();
*************** parser_bsearch_conditional( cbl_label_t*
*** 10953,10964 ****
    }
  
  bool
! is_ascending_key(cbl_refer_t key)
    {
    bool retval = true;
  
    cbl_field_t *family_tree = key.field;
-   gcc_assert(family_tree);
    while( family_tree )
      {
      if( family_tree->occurs.nkey )
--- 11711,11721 ----
    }
  
  bool
! is_ascending_key(const cbl_refer_t& key)
    {
    bool retval = true;
  
    cbl_field_t *family_tree = key.field;
    while( family_tree )
      {
      if( family_tree->occurs.nkey )
*************** is_ascending_key(cbl_refer_t key)
*** 10967,10980 ****
        }
      family_tree = parent_of(family_tree);
      }
    gcc_assert(family_tree->occurs.nkey);
    for(size_t i=0; i<family_tree->occurs.nkey; i++)
      {
      for(size_t j=0; j<family_tree->occurs.keys[i].field_list.nfield; j++)
        {
        size_t index_of_field
          = family_tree->occurs.keys[i].field_list.fields[j];
!       cbl_field_t *key_field = cbl_field_of(symbol_at(index_of_field));
  
        if( strcmp( key_field->name,
                    key.field->name ) == 0 )
--- 11724,11740 ----
        }
      family_tree = parent_of(family_tree);
      }
+ 
+   CHECK_FIELD(family_tree);
    gcc_assert(family_tree->occurs.nkey);
+ 
    for(size_t i=0; i<family_tree->occurs.nkey; i++)
      {
      for(size_t j=0; j<family_tree->occurs.keys[i].field_list.nfield; j++)
        {
        size_t index_of_field
          = family_tree->occurs.keys[i].field_list.fields[j];
!       const cbl_field_t *key_field = cbl_field_of(symbol_at(index_of_field));
  
        if( strcmp( key_field->name,
                    key.field->name ) == 0 )
*************** void
*** 11100,11107 ****
  parser_sort(cbl_refer_t tableref,
              bool duplicates,
              cbl_alphabet_t *alphabet,
!             size_t nkeys,
!             cbl_key_t *keys )
    {
    Analyze();
    SHOW_PARSE
--- 11860,11866 ----
  parser_sort(cbl_refer_t tableref,
              bool duplicates,
              cbl_alphabet_t *alphabet,
!             const std::vector<cbl_key_t>& keys )
    {
    Analyze();
    SHOW_PARSE
*************** parser_sort(cbl_refer_t tableref,
*** 11119,11140 ****
    gcc_assert(table->var_decl_node);
    if( !is_table(table) )
      {
!     cbl_internal_error(  "%s(): asked to sort %s, but it's not a table",
              __func__,
              tableref.field->name);
      }
!   size_t total_keys = 0;
!   for( size_t i=0; i<nkeys; i++ )
!     {
!     total_keys += keys[i].nfield;
!     }
!   cbl_field_t **flattened_fields = (cbl_field_t **)xmalloc(total_keys * sizeof(cbl_field_t *));
!   size_t *flattened_ascending       = (size_t *)xmalloc(total_keys * sizeof(size_t));
  
    size_t key_index = 0;
!   for( size_t i=0; i<nkeys; i++ )
      {
!     for( size_t j=0; j<keys[i].nfield; j++ )
        {
        flattened_fields[key_index]    = keys[i].fields[j];
        flattened_ascending[key_index] = keys[i].ascending ? 1 : 0;
--- 11878,11903 ----
    gcc_assert(table->var_decl_node);
    if( !is_table(table) )
      {
!     cbl_internal_error(  "%s: asked to sort %s, which is not a table",
              __func__,
              tableref.field->name);
      }
!   size_t total_keys = std::accumulate( keys.begin(), keys.end(), 0,
!                                        [](size_t n, const cbl_key_t& key ) {
!                                          return n + key.fields.size();
!                                        } );
!   typedef const cbl_field_t * const_field_t;
!   const_field_t *flattened_fields =
!      static_cast<const_field_t *>(xmalloc(total_keys * sizeof(cbl_field_t *)));
!   gcc_assert(flattened_fields);
!   size_t *flattened_ascending =
!                    static_cast<size_t *>(xmalloc(total_keys * sizeof(size_t)));
!   gcc_assert(flattened_ascending);
  
    size_t key_index = 0;
!   for( size_t i=0; i<keys.size(); i++ )
      {
!     for( size_t j=0; j<keys[i].fields.size(); j++ )
        {
        flattened_fields[key_index]    = keys[i].fields[j];
        flattened_ascending[key_index] = keys[i].ascending ? 1 : 0;
*************** parser_sort(cbl_refer_t tableref,
*** 11143,11155 ****
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_array_of_field_pointers( total_keys, flattened_fields);
  
    // Create the array of integers that are the flags for ASCENDING:
    tree ascending = gg_array_of_size_t( total_keys, flattened_ascending );
  
    tree depending_on = gg_define_variable(LONG, "_sort_size");
!   gg_get_depending_on_value(depending_on, table);
  
    if( alphabet )
      {
--- 11906,11919 ----
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_array_of_field_pointers( total_keys,
!                                               const_cast<cbl_field_t**>(flattened_fields));
  
    // Create the array of integers that are the flags for ASCENDING:
    tree ascending = gg_array_of_size_t( total_keys, flattened_ascending );
  
    tree depending_on = gg_define_variable(LONG, "_sort_size");
!   depending_on_value(depending_on, table);
  
    if( alphabet )
      {
*************** parser_sort(cbl_refer_t tableref,
*** 11159,11165 ****
    gg_call(VOID,
            "__gg__sort_table",
            gg_get_address_of(tableref.field->var_decl_node),
!           refer_offset_source(tableref),
            gg_cast(SIZE_T, depending_on),
            build_int_cst_type(SIZE_T, key_index),
            all_keys,
--- 11923,11929 ----
    gg_call(VOID,
            "__gg__sort_table",
            gg_get_address_of(tableref.field->var_decl_node),
!           refer_offset(tableref),
            gg_cast(SIZE_T, depending_on),
            build_int_cst_type(SIZE_T, key_index),
            all_keys,
*************** void
*** 11182,11189 ****
  parser_file_sort(   cbl_file_t *workfile,
                      bool duplicates,
                      cbl_alphabet_t *alphabet,
!                     size_t nkeys,
!                     cbl_key_t *keys,
                      size_t ninput,
                      cbl_file_t **inputs,
                      size_t noutput,
--- 11946,11952 ----
  parser_file_sort(   cbl_file_t *workfile,
                      bool duplicates,
                      cbl_alphabet_t *alphabet,
!                     const std::vector<cbl_key_t>& keys,
                      size_t ninput,
                      cbl_file_t **inputs,
                      size_t noutput,
*************** parser_file_sort(   cbl_file_t *workfile
*** 11247,11253 ****
    else
      {
      // Having both or neither violates SORT syntax
!     cbl_internal_error("%s(): syntax error -- both (or neither) USING "
            "and input-proc are specified",
            __func__);
      }
--- 12010,12016 ----
    else
      {
      // Having both or neither violates SORT syntax
!     cbl_internal_error("%s: syntax error: both (or neither) USING "
            "and input-proc are specified",
            __func__);
      }
*************** parser_file_sort(   cbl_file_t *workfile
*** 11260,11277 ****
    // clone of the code for handling multiple keys, each of which can have
    // multiple fields.
  
!   size_t total_keys = 0;
!   for( size_t i=0; i<nkeys; i++ )
!     {
!     total_keys += keys[i].nfield;
!     }
!   cbl_field_t **flattened_fields = (cbl_field_t **)xmalloc(total_keys * sizeof(cbl_field_t *));
!   size_t *flattened_ascending    = (size_t *)      xmalloc(total_keys * sizeof(size_t));
  
    size_t key_index = 0;
!   for( size_t i=0; i<nkeys; i++ )
      {
!     for( size_t j=0; j<keys[i].nfield; j++ )
        {
        flattened_fields[key_index]    = keys[i].fields[j];
        flattened_ascending[key_index] = keys[i].ascending ? 1 : 0;
--- 12023,12044 ----
    // clone of the code for handling multiple keys, each of which can have
    // multiple fields.
  
!   size_t total_keys = std::accumulate( keys.begin(), keys.end(), 0,
!                                        []( size_t n, const cbl_key_t& key ) {
!                                          return n + key.fields.size();
!                                        } );
!   typedef const cbl_field_t * const_field_t;
!   auto flattened_fields
!    = static_cast<const_field_t *>(xmalloc(total_keys * sizeof(cbl_field_t *)));
!   gcc_assert(flattened_fields);
!   size_t *flattened_ascending =
!                    static_cast<size_t *>(xmalloc(total_keys * sizeof(size_t)));
!   gcc_assert(flattened_ascending);
  
    size_t key_index = 0;
!   for( size_t i=0; i<keys.size(); i++ )
      {
!     for( size_t j=0; j<keys[i].fields.size(); j++ )
        {
        flattened_fields[key_index]    = keys[i].fields[j];
        flattened_ascending[key_index] = keys[i].ascending ? 1 : 0;
*************** parser_file_sort(   cbl_file_t *workfile
*** 11280,11286 ****
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_array_of_field_pointers( total_keys, flattened_fields);
  
    // Create the array of integers that are the flags for ASCENDING:
    tree ascending = gg_array_of_size_t( total_keys, flattened_ascending );
--- 12047,12054 ----
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_array_of_field_pointers( total_keys,
!                                               const_cast<cbl_field_t**>(flattened_fields));
  
    // Create the array of integers that are the flags for ASCENDING:
    tree ascending = gg_array_of_size_t( total_keys, flattened_ascending );
*************** parser_file_sort(   cbl_file_t *workfile
*** 11376,11382 ****
      }
    else
      {
!     cbl_internal_error("%s(): syntax error -- both (or neither) GIVING "
            "and output-proc are specified", __func__);
      }
    }
--- 12144,12150 ----
      }
    else
      {
!     cbl_internal_error("%s: syntax error: both (or neither) GIVING "
            "and output-proc are specified", __func__);
      }
    }
*************** parser_return_start( cbl_file_t *workfil
*** 11424,11430 ****
  
    // We assume that workfile is open.
  
!   workfile->addresses = (cbl_sortreturn_t *)xmalloc(sizeof(cbl_sortreturn_t));
    gg_create_goto_pair(&workfile->addresses->at_end.go_to,
                        &workfile->addresses->at_end.label);
    gg_create_goto_pair(&workfile->addresses->not_at_end.go_to,
--- 12192,12200 ----
  
    // We assume that workfile is open.
  
!   workfile->addresses = static_cast<cbl_sortreturn_t *>
!                                           (xmalloc(sizeof(cbl_sortreturn_t)));
!   gcc_assert(workfile->addresses);
    gg_create_goto_pair(&workfile->addresses->at_end.go_to,
                        &workfile->addresses->at_end.label);
    gg_create_goto_pair(&workfile->addresses->not_at_end.go_to,
*************** parser_return_start( cbl_file_t *workfil
*** 11455,11461 ****
  
    IF( member(workfile, "io_status"), lt_op, build_int_cst(INT, FsKeySeq) )
      {
!     // The read didn't succeed because of an end-of-file condition
      gg_append_statement(workfile->addresses->at_end.go_to);
      }
    ELSE
--- 12225,12237 ----
  
    IF( member(workfile, "io_status"), lt_op, build_int_cst(INT, FsKeySeq) )
      {
!     // The read didn't succeed because of an end-of-file condition.
! 
!     // Because there is an AT END clause, we suppress the error condition that
!     // was raised.
!     gg_assign(var_decl_exception_code, integer_zero_node);
! 
!     // And then we jump to the at_end code:
      gg_append_statement(workfile->addresses->at_end.go_to);
      }
    ELSE
*************** gg_array_of_file_pointers(  size_t N,
*** 11576,11583 ****
  void
  parser_file_merge(  cbl_file_t *workfile,
                      cbl_alphabet_t *alphabet,
!                     size_t nkeys,
!                     cbl_key_t *keys,
                      size_t ninputs,
                      cbl_file_t **inputs,
                      size_t noutputs,
--- 12352,12358 ----
  void
  parser_file_merge(  cbl_file_t *workfile,
                      cbl_alphabet_t *alphabet,
!                     const std::vector<cbl_key_t>& keys,
                      size_t ninputs,
                      cbl_file_t **inputs,
                      size_t noutputs,
*************** parser_file_merge(  cbl_file_t *workfile
*** 11600,11619 ****
                  build_int_cst_type(INT, file_sequential_e));
      }
  
!   size_t total_keys = 0;
!   for( size_t i=0; i<nkeys; i++ )
!     {
!     total_keys += keys[i].nfield;
!     }
!   cbl_field_t **flattened_fields
!             = (cbl_field_t **)xmalloc(total_keys * sizeof(cbl_field_t *));
    size_t *flattened_ascending
!             = (size_t *)xmalloc(total_keys * sizeof(size_t));
  
    size_t key_index = 0;
!   for( size_t i=0; i<nkeys; i++ )
      {
!     for( size_t j=0; j<keys[i].nfield; j++ )
        {
        flattened_fields[key_index]    = keys[i].fields[j];
        flattened_ascending[key_index] = keys[i].ascending ? 1 : 0;
--- 12375,12397 ----
                  build_int_cst_type(INT, file_sequential_e));
      }
  
!   size_t total_keys = std::accumulate( keys.begin(), keys.end(), 0,
!                                        []( size_t i, const cbl_key_t& key ) {
!                                          return i + key.fields.size();
!                                        } );
!   typedef const cbl_field_t * const_field_t;
!   const_field_t *flattened_fields
!                  = static_cast<const_field_t *>
!                    (xmalloc(total_keys * sizeof(cbl_field_t *)));
!   gcc_assert(flattened_fields);
    size_t *flattened_ascending
!             = static_cast<size_t *>(xmalloc(total_keys * sizeof(size_t)));
!   gcc_assert(flattened_ascending);
  
    size_t key_index = 0;
!   for( size_t i=0; i<keys.size(); i++ )
      {
!     for( size_t j=0; j<keys[i].fields.size(); j++ )
        {
        flattened_fields[key_index]    = keys[i].fields[j];
        flattened_ascending[key_index] = keys[i].ascending ? 1 : 0;
*************** parser_file_merge(  cbl_file_t *workfile
*** 11622,11628 ****
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_array_of_field_pointers(total_keys, flattened_fields);
  
    // Create the array of integers that are the flags for ASCENDING:
    tree ascending = gg_array_of_size_t(total_keys, flattened_ascending);
--- 12400,12408 ----
      }
  
    // Create the array of cbl_field_t pointers for the keys
!   tree all_keys = gg_array_of_field_pointers(
!                                  total_keys,
!                                  const_cast<cbl_field_t**>(flattened_fields));
  
    // Create the array of integers that are the flags for ASCENDING:
    tree ascending = gg_array_of_size_t(total_keys, flattened_ascending);
*************** parser_file_merge(  cbl_file_t *workfile
*** 11646,11651 ****
--- 12426,12434 ----
    ELSE
      ENDIF
  
+   const cbl_enabled_exceptions_t&
+                                 enabled_exceptions( cdf_enabled_exceptions() );
+ 
    for(size_t i=0; i<ninputs; i++)
      {
      if( process_this_exception(ec_sort_merge_file_open_e) )
*************** parser_file_merge(  cbl_file_t *workfile
*** 11689,11695 ****
    gg_call(VOID,
            "__gg__merge_files",
            gg_get_address_of(workfile->var_decl_node),
!           build_int_cst_type(SIZE_T, nkeys),
            all_keys,
            ascending,
            build_int_cst_type(SIZE_T, ninputs),
--- 12472,12478 ----
    gg_call(VOID,
            "__gg__merge_files",
            gg_get_address_of(workfile->var_decl_node),
!           build_int_cst_type(SIZE_T, keys.size()),
            all_keys,
            ascending,
            build_int_cst_type(SIZE_T, ninputs),
*************** parser_file_merge(  cbl_file_t *workfile
*** 11783,11789 ****
      }
    else
      {
!     cbl_internal_error("%s(): syntax error -- both (or neither) "
            "files and output-proc are specified", __func__);
      }
    }
--- 12566,12572 ----
      }
    else
      {
!     cbl_internal_error("%s: syntax error: both (or neither) "
            "files and output-proc are specified", __func__);
      }
    }
*************** parser_string_overflow( cbl_label_t *nam
*** 11803,11809 ****
     */
  
    name->structs.unstring
!     = (cbl_unstring_t *)xmalloc(sizeof(struct cbl_unstring_t) );
  
    // Set up the address pairs for this clause
    gg_create_goto_pair(&name->structs.unstring->over.go_to,
--- 12586,12593 ----
     */
  
    name->structs.unstring
!     = static_cast<cbl_unstring_t *>(xmalloc(sizeof(struct cbl_unstring_t)));
!   gcc_assert(name->structs.unstring);
  
    // Set up the address pairs for this clause
    gg_create_goto_pair(&name->structs.unstring->over.go_to,
*************** parser_unstring(cbl_refer_t src,
*** 11861,11869 ****
      gg_append_statement(not_overflow->structs.unstring->over.label);
      }
  
!   cbl_refer_t *delims = (cbl_refer_t *)xmalloc(ndelimited * sizeof(cbl_refer_t));
!   char *alls = (char *)xmalloc(ndelimited+1);
! 
    for(size_t i=0; i<ndelimited; i++)
      {
      delims[i] = delimiteds[i];
--- 12645,12653 ----
      gg_append_statement(not_overflow->structs.unstring->over.label);
      }
  
!   std::vector<cbl_refer_t> delims(ndelimited);
!   char *alls = static_cast<char *>(xmalloc(ndelimited+1));
!   gcc_assert(alls);
    for(size_t i=0; i<ndelimited; i++)
      {
      delims[i] = delimiteds[i];
*************** parser_unstring(cbl_refer_t src,
*** 11873,11879 ****
  
    tree t_alls         = build_string_literal(ndelimited+1, alls);
  
!   build_array_of_treeplets(1, ndelimited, delims);
    build_array_of_treeplets(2, noutputs,   outputs);
    build_array_of_treeplets(3, noutputs,   delimiters);
    build_array_of_treeplets(4, noutputs,   counts);
--- 12657,12663 ----
  
    tree t_alls         = build_string_literal(ndelimited+1, alls);
  
!   build_array_of_treeplets(1, ndelimited, delims.data());
    build_array_of_treeplets(2, noutputs,   outputs);
    build_array_of_treeplets(3, noutputs,   delimiters);
    build_array_of_treeplets(4, noutputs,   counts);
*************** parser_unstring(cbl_refer_t src,
*** 11883,11903 ****
              gg_call_expr( INT,
                            "__gg__unstring",
                            gg_get_address_of(src.field->var_decl_node),
!                           refer_offset_source(src),
                            refer_size_source(src),
                            build_int_cst_type(SIZE_T, ndelimited),
                            t_alls,
                            build_int_cst_type(SIZE_T, noutputs),
                            pointer.field ? gg_get_address_of(pointer.field->var_decl_node) : null_pointer_node,
!                           refer_offset_dest(pointer),
                            refer_size_dest(pointer),
                            tally.field ? gg_get_address_of(tally.field->var_decl_node) : null_pointer_node,
!                           refer_offset_dest(tally),
                            refer_size_dest(tally),
                            NULL_TREE)
                            );
    free(alls);
-   free(delims);
  
    if( overflow )
      {
--- 12667,12686 ----
              gg_call_expr( INT,
                            "__gg__unstring",
                            gg_get_address_of(src.field->var_decl_node),
!                           refer_offset(src),
                            refer_size_source(src),
                            build_int_cst_type(SIZE_T, ndelimited),
                            t_alls,
                            build_int_cst_type(SIZE_T, noutputs),
                            pointer.field ? gg_get_address_of(pointer.field->var_decl_node) : null_pointer_node,
!                           refer_offset(pointer),
                            refer_size_dest(pointer),
                            tally.field ? gg_get_address_of(tally.field->var_decl_node) : null_pointer_node,
!                           refer_offset(tally),
                            refer_size_dest(tally),
                            NULL_TREE)
                            );
    free(alls);
  
    if( overflow )
      {
*************** parser_unstring(cbl_refer_t src,
*** 11933,11944 ****
    }
  
  void
! parser_string(  cbl_refer_t tgt,
!                 cbl_refer_t pointer,
!                 size_t nsource,
!                 cbl_string_src_t *sources,
!                 cbl_label_t *overflow,
!                 cbl_label_t *not_overflow )
    {
    SHOW_PARSE
      {
--- 12716,12727 ----
    }
  
  void
! parser_string(const cbl_refer_t& tgt,
!               const cbl_refer_t& pointer,
!               size_t nsource,
!               cbl_string_src_t *sources,
!               cbl_label_t *overflow,
!               cbl_label_t *not_overflow )
    {
    SHOW_PARSE
      {
*************** parser_string(  cbl_refer_t tgt,
*** 11955,11961 ****
      }
  
    // We need an array of nsource+1 integers:
!   size_t *integers = (size_t *)xmalloc((nsource+1)*sizeof(size_t));
  
    // Count up how many treeplets we are going to need:
    size_t cblc_count = 2;  // tgt and pointer
--- 12738,12745 ----
      }
  
    // We need an array of nsource+1 integers:
!   size_t *integers = static_cast<size_t *>(xmalloc((nsource+1)*sizeof(size_t)));
!   gcc_assert(integers);
  
    // Count up how many treeplets we are going to need:
    size_t cblc_count = 2;  // tgt and pointer
*************** parser_string(  cbl_refer_t tgt,
*** 11964,11970 ****
      cblc_count += 1 + sources[i].ninput; // 1 for identifier_2 + ninput identifier_1 values;
      }
  
!   cbl_refer_t *refers = (cbl_refer_t *)xmalloc(cblc_count * sizeof(cbl_refer_t));
  
    size_t index_int = 0;
    size_t index_cblc = 0;
--- 12748,12754 ----
      cblc_count += 1 + sources[i].ninput; // 1 for identifier_2 + ninput identifier_1 values;
      }
  
!   std::vector<cbl_refer_t> refers(cblc_count);
  
    size_t index_int = 0;
    size_t index_cblc = 0;
*************** parser_string(  cbl_refer_t tgt,
*** 11989,11995 ****
  
    tree pintegers = build_array_of_size_t( index_int, integers);
  
!   build_array_of_treeplets(1, index_cblc, refers);
  
    tree t_overflow = gg_define_int();
    gg_assign(t_overflow, gg_call_expr( INT,
--- 12773,12779 ----
  
    tree pintegers = build_array_of_size_t( index_int, integers);
  
!   build_array_of_treeplets(1, index_cblc, refers.data());
  
    tree t_overflow = gg_define_int();
    gg_assign(t_overflow, gg_call_expr( INT,
*************** parser_string(  cbl_refer_t tgt,
*** 11999,12005 ****
    gg_free(pintegers);
  
    free(integers);
-   free(refers);
  
    if( overflow )
      {
--- 12783,12788 ----
*************** parser_call_exception( cbl_label_t *name
*** 12047,12054 ****
      }
  
    name->structs.call_exception
!     = (cbl_call_exception_t *)xmalloc(sizeof(struct cbl_call_exception_t) );
! 
    // Set up the address pairs for this clause
    gg_create_goto_pair(&name->structs.call_exception->over.go_to,
                        &name->structs.call_exception->over.label);
--- 12830,12838 ----
      }
  
    name->structs.call_exception
!     = static_cast<cbl_call_exception_t *>
!                                 (xmalloc(sizeof(struct cbl_call_exception_t)));
!   gcc_assert(name->structs.call_exception);
    // Set up the address pairs for this clause
    gg_create_goto_pair(&name->structs.call_exception->over.go_to,
                        &name->structs.call_exception->over.label);
*************** static
*** 12096,12106 ****
  void
  create_and_call(size_t narg,
                  cbl_ffi_arg_t args[],
!                 tree function_handle,
                  tree returned_value_type,
                  cbl_refer_t returned,
!                 cbl_label_t *not_except
!                 )
    {
    // We have a good function handle, so we are going to create a call
    tree *arguments = NULL;
--- 12880,12890 ----
  void
  create_and_call(size_t narg,
                  cbl_ffi_arg_t args[],
!                 tree function_pointer,
!                 const char *funcname,
                  tree returned_value_type,
                  cbl_refer_t returned,
!                 cbl_label_t *not_except)
    {
    // We have a good function handle, so we are going to create a call
    tree *arguments = NULL;
*************** create_and_call(size_t narg,
*** 12108,12115 ****
  
    if(narg)
      {
!     arguments = (tree *)xmalloc(2*narg * sizeof(tree));
!     allocated = (int * )xmalloc(narg * sizeof(int));
      }
  
    // Put the arguments onto the "stack" of calling parameters:
--- 12892,12901 ----
  
    if(narg)
      {
!     arguments = static_cast<tree *>(xmalloc(2*narg * sizeof(tree)));
!     gcc_assert(arguments);
!     allocated = static_cast<int *>(xmalloc(narg * sizeof(int)));
!     gcc_assert(allocated);
      }
  
    // Put the arguments onto the "stack" of calling parameters:
*************** create_and_call(size_t narg,
*** 12159,12165 ****
      else
        {
        gg_assign(location,
!                 qualified_data_source(args[i].refer)),
        gg_assign(length,
                  refer_size_source(args[i].refer));
        }
--- 12945,12951 ----
      else
        {
        gg_assign(location,
!                 qualified_data_location(args[i].refer)),
        gg_assign(length,
                  refer_size_source(args[i].refer));
        }
*************** create_and_call(size_t narg,
*** 12288,12294 ****
                                  INT128,
                                  "__gg__fetch_call_by_value_value",
                                  gg_get_address_of(args[i].refer.field->var_decl_node),
!                                 refer_offset_source(args[i].refer),
                                  refer_size_source(args[i].refer),
                                  NULL_TREE)));
                }
--- 13074,13080 ----
                                  INT128,
                                  "__gg__fetch_call_by_value_value",
                                  gg_get_address_of(args[i].refer.field->var_decl_node),
!                                 refer_offset(args[i].refer),
                                  refer_size_source(args[i].refer),
                                  NULL_TREE)));
                }
*************** create_and_call(size_t narg,
*** 12301,12307 ****
                                  INT128,
                                  "__gg__fetch_call_by_value_value",
                                  gg_get_address_of(args[i].refer.field->var_decl_node),
!                                 refer_offset_source(args[i].refer),
                                  refer_size_source(args[i].refer),
                                  NULL_TREE)));
                }
--- 13087,13093 ----
                                  INT128,
                                  "__gg__fetch_call_by_value_value",
                                  gg_get_address_of(args[i].refer.field->var_decl_node),
!                                 refer_offset(args[i].refer),
                                  refer_size_source(args[i].refer),
                                  NULL_TREE)));
                }
*************** create_and_call(size_t narg,
*** 12321,12348 ****
    gg_assign(var_decl_call_parameter_count,
              build_int_cst_type(INT, narg));
  
!   gg_assign(var_decl_call_parameter_signature,
!             gg_cast(CHAR_P, function_handle));
  
!   tree call_expr = gg_call_expr_list( returned_value_type,
!                                       function_handle,
                                        narg,
!                                       arguments );
    tree returned_value;
    if( returned.field )
      {
!     returned_value = gg_define_variable(returned_value_type);
  
!     // We are expecting a return value of type CHAR_P, SSIZE_T, SIZE_T,
!     // UINT128 or INT128
      push_program_state();
      gg_assign(returned_value, gg_cast(returned_value_type, call_expr));
      pop_program_state();
  
-     // Because the CALL had a RETURNING clause, RETURN-CODE doesn't return a
-     // value.  So, we make sure it is zero
-     gg_assign(var_decl_return_code, build_int_cst_type(SHORT, 0));
- 
      if( returned_value_type == CHAR_P )
        {
        tree returned_location = gg_define_uchar_star();
--- 13107,13173 ----
    gg_assign(var_decl_call_parameter_count,
              build_int_cst_type(INT, narg));
  
!   tree call_expr = NULL_TREE;
!   if( function_pointer )
!     {
!     gg_assign(var_decl_call_parameter_signature,
!               gg_cast(CHAR_P, function_pointer));
  
!     call_expr = gg_call_expr_list(returned_value_type,
!                                   function_pointer,
!                                   narg,
!                                   arguments );
!     }
!   else
!     {
!     tree fndecl_type = build_varargs_function_type_array( returned_value_type,
!                        0,     // No parameters yet
!                        NULL); // And, hence, no types
! 
!     // Fetch the FUNCTION_DECL for that FUNCTION_TYPE
!     tree function_decl = gg_build_fn_decl(funcname, fndecl_type);
!     set_call_convention(function_decl, current_call_convention());
! 
!     // Take the address of the function decl:
!     tree address_of_function = gg_get_address_of(function_decl);
! 
!     // Stash that address as the called program's signature:
!     tree address_as_char_p = gg_cast(CHAR_P, address_of_function);
!     tree assigment = gg_assign( var_decl_call_parameter_signature,
!                                 address_as_char_p);
!     // The source of the assigment is the second element of a MODIFY_EXPR
!     parser_call_target( funcname, assigment );
! 
!     // Create the call_expr from that address
!     call_expr = build_call_array_loc( gg_token_location(),
!                                       returned_value_type,
!                                       address_of_function,
                                        narg,
!                                       arguments);
!     // Among other possibilities, this might be a forward reference to a
!     // contained function.  The name  here is "prog2", and ultimately will need
!     // to be replaced with a call to "prog2.62".  So, this call expr goes into
!     // a list of call expressions whose function_decl targets will be replaced.
!     parser_call_target( funcname, call_expr );
!     }
! 
    tree returned_value;
+ 
    if( returned.field )
      {
!     // Because the CALL had a RETURNING clause, RETURN-CODE doesn't return a
!     // value.  So, we make sure it is zero
!     //// gg_assign(var_decl_return_code, build_int_cst_type(SHORT, 0));
  
!     // We expect the return value to be a 64-bit or 128-bit integer.  How
!     // we treat that returned value depends on the target.
! 
!     // Pick up that value:
!     returned_value = gg_define_variable(returned_value_type);
      push_program_state();
      gg_assign(returned_value, gg_cast(returned_value_type, call_expr));
      pop_program_state();
  
      if( returned_value_type == CHAR_P )
        {
        tree returned_location = gg_define_uchar_star();
*************** create_and_call(size_t narg,
*** 12350,12358 ****
        // we were given a returned::field, so find its location and length:
        gg_assign(returned_location,
                  gg_add( member(returned.field->var_decl_node, "data"),
!                         refer_offset_dest(returned)));
        gg_assign(returned_length,
!                 refer_size_dest(returned));
  
        // The returned value is a string of nbytes, which by specification
        // has to be at least as long as the returned_length of the target:
--- 13175,13183 ----
        // we were given a returned::field, so find its location and length:
        gg_assign(returned_location,
                  gg_add( member(returned.field->var_decl_node, "data"),
!                         refer_offset(returned)));
        gg_assign(returned_length,
!                 gg_cast(TREE_TYPE(returned_length), refer_size_dest(returned)));
  
        // The returned value is a string of nbytes, which by specification
        // has to be at least as long as the returned_length of the target:
*************** create_and_call(size_t narg,
*** 12370,12376 ****
          {
          // There is a valid pointer.  Do the assignment.
          move_tree(returned.field,
!                   refer_offset_dest(returned),
                    returned_value,
                    integer_one_node);
          }
--- 13195,13201 ----
          {
          // There is a valid pointer.  Do the assignment.
          move_tree(returned.field,
!                   refer_offset(returned),
                    returned_value,
                    integer_one_node);
          }
*************** create_and_call(size_t narg,
*** 12394,12400 ****
        gg_call(VOID,
                "__gg__int128_to_qualified_field",
                gg_get_address_of(returned.field->var_decl_node),
!               refer_offset_dest(returned),
                refer_size_dest(returned),
                gg_cast(INT128, returned_value),
                gg_cast(INT, member(returned.field->var_decl_node, "rdigits")),
--- 13219,13225 ----
        gg_call(VOID,
                "__gg__int128_to_qualified_field",
                gg_get_address_of(returned.field->var_decl_node),
!               refer_offset(returned),
                refer_size_dest(returned),
                gg_cast(INT128, returned_value),
                gg_cast(INT, member(returned.field->var_decl_node, "rdigits")),
*************** create_and_call(size_t narg,
*** 12416,12422 ****
        tree returned_length   = gg_define_size_t();
        // we were given a returned::field, so find its location and length:
        gg_assign(returned_location,
!                 qualified_data_source(returned));
        gg_assign(returned_length,
                  refer_size_source(returned));
  
--- 13241,13247 ----
        tree returned_length   = gg_define_size_t();
        // we were given a returned::field, so find its location and length:
        gg_assign(returned_location,
!                 qualified_data_location(returned));
        gg_assign(returned_length,
                  refer_size_source(returned));
  
*************** create_and_call(size_t narg,
*** 12436,12469 ****
      else
        {
        cbl_internal_error(
!             "%s(): What in the name of Nero's fiddle are we doing here?",
              __func__);
        }
      }
    else
      {
!     // Because no explicit returning value is expected, we switch to
!     // the IBM default behavior, where the returned INT value is assigned
!     // to our RETURN-CODE:
!     returned_value = gg_define_variable(SHORT);
! 
!     // Before doing the call, we save the COBOL program_state:
!     push_program_state();
!     gg_assign(returned_value, gg_cast(SHORT, call_expr));
!     // And after the call, we restore it:
!     pop_program_state();
! 
!     // We know that the returned value is a 2-byte little-endian INT:
!     gg_assign(  var_decl_return_code,
!                 returned_value);
!     TRACE1
!       {
!       TRACE1_HEADER
!       gg_printf("returned value: %d",
!                 gg_cast(INT, var_decl_return_code),
!                 NULL_TREE);
!       TRACE1_END
!       }
      }
  
    for( size_t i=0; i<narg; i++ )
--- 13261,13275 ----
      else
        {
        cbl_internal_error(
!             "%s: What in the name of Nero are we doing here?",
              __func__);
        }
      }
    else
      {
!     // Because no explicit returning value is expected, we just call it.  We
!     // expect COBOL routines to set RETURN-CODE when they think it necessary.
!     gg_append_statement(call_expr);
      }
  
    for( size_t i=0; i<narg; i++ )
*************** parser_call(   cbl_refer_t name,
*** 12510,12516 ****
      SHOW_PARSE_TEXT(" (")
      for(size_t i=0; i<narg; i++)
        {
!       cbl_field_t *p = args[i].refer.field;
        SHOW_PARSE_FIELD( " ",  p)
        }
      SHOW_PARSE_TEXT(" )")
--- 13316,13322 ----
      SHOW_PARSE_TEXT(" (")
      for(size_t i=0; i<narg; i++)
        {
!       const cbl_field_t *p = args[i].refer.field;
        SHOW_PARSE_FIELD( " ",  p)
        }
      SHOW_PARSE_TEXT(" )")
*************** parser_call(   cbl_refer_t name,
*** 12571,12609 ****
    // We are getting close to establishing the function_type.  To do that,
    // we want to establish the function's return type.
  
- //  gg_push_context();
    size_t nbytes;
    tree returned_value_type = tree_type_from_field_type(returned.field, nbytes);
  
!   tree function_handle = function_handle_from_name( name,
!                                                     returned_value_type);
!   if(    (use_static_call() && is_literal(name.field))
!       || (name.field && name.field->type == FldPointer) )
      {
!     // If these conditions are true, then we know we have a good
!     // function_handle, and we don't need to check
      create_and_call(narg,
                      args,
!                     function_handle,
                      returned_value_type,
                      returned,
!                     not_except
!                     );
      }
    else
      {
      // We might not have a good handle, so we have to check:
!     IF( function_handle,
          ne_op,
!         gg_cast(TREE_TYPE(function_handle), null_pointer_node) )
        {
!       create_and_call(narg,
!                       args,
!                       function_handle,
!                       returned_value_type,
!                       returned,
!                       not_except
!                       );
        }
      ELSE
        {
--- 13377,13425 ----
    // We are getting close to establishing the function_type.  To do that,
    // we want to establish the function's return type.
  
    size_t nbytes;
    tree returned_value_type = tree_type_from_field_type(returned.field, nbytes);
  
!   if( use_static_call() && is_literal(name.field) )
      {
!     // name is a literal
      create_and_call(narg,
                      args,
!                     NULL_TREE,
!                     name.field->data.initial,
                      returned_value_type,
                      returned,
!                     not_except);
!     }
!   else if( name.field && name.field->type == FldPointer )
!     {
!     tree function_pointer = function_pointer_from_name( name,
!                                                         returned_value_type);
!     // This is call-by-pointer; we know function_pointer is good:
!     create_and_call(narg,
!                     args,
!                     function_pointer,
!                     nullptr,
!                     returned_value_type,
!                     returned,
!                     not_except);
      }
    else
      {
+     tree function_pointer = function_pointer_from_name( name,
+                                                       returned_value_type);
      // We might not have a good handle, so we have to check:
!     IF( function_pointer,
          ne_op,
!         gg_cast(TREE_TYPE(function_pointer), null_pointer_node) )
        {
!     create_and_call(narg,
!                     args,
!                     function_pointer,
!                     nullptr,
!                     returned_value_type,
!                     returned,
!                     not_except);
        }
      ELSE
        {
*************** parser_call(   cbl_refer_t name,
*** 12651,12658 ****
      gg_append_statement( not_except->structs.call_exception->bottom.label );
      free( not_except->structs.call_exception );
      }
- //  gg_pop_context();
- 
    }
  
  // Set global variable to use alternative ENTRY point.
--- 13467,13472 ----
*************** parser_bitop( struct cbl_field_t *tgt,
*** 12686,12692 ****
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_FIELD( " switch: ", a)
!     fprintf(stderr, " mask: %lx", bitmask);
      fprintf(stderr, " op: %s", ops[op]);
      SHOW_PARSE_FIELD( " target ", tgt)
      SHOW_PARSE_END
--- 13500,13506 ----
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_FIELD( " switch: ", a)
!     fprintf(stderr, " mask: " HOST_SIZE_T_PRINT_HEX_PURE, (fmt_size_t)bitmask);
      fprintf(stderr, " op: %s", ops[op]);
      SHOW_PARSE_FIELD( " target ", tgt)
      SHOW_PARSE_END
*************** parser_bitop( struct cbl_field_t *tgt,
*** 12695,12701 ****
    if(tgt && tgt->type != FldConditional)
      {
      fprintf(stderr,
!             "%s(): The target %s has to be a FldConditional, not %s\n",
              __func__,
              tgt->name,
              cbl_field_type_str(tgt->type));
--- 13509,13515 ----
    if(tgt && tgt->type != FldConditional)
      {
      fprintf(stderr,
!             "%s: The target %s has to be a FldConditional, not %s\n",
              __func__,
              tgt->name,
              cbl_field_type_str(tgt->type));
*************** parser_bitop( struct cbl_field_t *tgt,
*** 12732,12738 ****
      case bit_or_op:
      case bit_xor_op:
        fprintf(stderr,
!               "%s(): The %s operation is not valid\n",
                __func__,
                ops[op]);
        gcc_unreachable();
--- 13546,13552 ----
      case bit_or_op:
      case bit_xor_op:
        fprintf(stderr,
!               "%s: The %s operation is not valid\n",
                __func__,
                ops[op]);
        gcc_unreachable();
*************** parser_bitwise_op(struct cbl_field_t *tg
*** 12770,12776 ****
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_FIELD( " switch: ", a)
!     fprintf(stderr, " mask: %lx", bitmask);
      fprintf(stderr, " op: %s", ops[op]);
      SHOW_PARSE_FIELD( " target ", tgt)
      SHOW_PARSE_END
--- 13584,13590 ----
      {
      SHOW_PARSE_HEADER
      SHOW_PARSE_FIELD( " switch: ", a)
!     fprintf(stderr, " mask: " HOST_SIZE_T_PRINT_HEX_PURE, (fmt_size_t)bitmask);
      fprintf(stderr, " op: %s", ops[op]);
      SHOW_PARSE_FIELD( " target ", tgt)
      SHOW_PARSE_END
*************** parser_bitwise_op(struct cbl_field_t *tg
*** 12779,12785 ****
    if( tgt && !is_valuable(tgt->type) && tgt->type != FldLiteralN)
      {
      fprintf(stderr,
!             "%s(): The target %s has to be is_valuable, not %s\n",
              __func__,
              tgt->name,
              cbl_field_type_str(tgt->type));
--- 13593,13599 ----
    if( tgt && !is_valuable(tgt->type) && tgt->type != FldLiteralN)
      {
      fprintf(stderr,
!             "%s: The target %s has to be is_valuable, not %s\n",
              __func__,
              tgt->name,
              cbl_field_type_str(tgt->type));
*************** parser_bitwise_op(struct cbl_field_t *tg
*** 12793,12799 ****
      case bit_on_op:
      case bit_off_op:
        fprintf(stderr,
!               "%s(): The %s operation is not valid\n",
                __func__,
                ops[op]);
        gcc_unreachable();
--- 13607,13613 ----
      case bit_on_op:
      case bit_off_op:
        fprintf(stderr,
!               "%s: The %s operation is not valid\n",
                __func__,
                ops[op]);
        gcc_unreachable();
*************** parser_set_pointers( size_t ntgt, cbl_re
*** 12848,12857 ****
              || source.field->type == FldLiteralA))
        {
        // This is something like SET varp TO ENTRY "ref".
!       tree function_handle = function_handle_from_name(source,
                                                     COBOL_FUNCTION_RETURN_TYPE);
!       gg_memcpy(qualified_data_dest(tgts[i]),
!                 gg_get_address_of(function_handle),
                  sizeof_pointer);
        }
      else
--- 13662,13671 ----
              || source.field->type == FldLiteralA))
        {
        // This is something like SET varp TO ENTRY "ref".
!       tree function_pointer = function_pointer_from_name(source,
                                                     COBOL_FUNCTION_RETURN_TYPE);
!       gg_memcpy(qualified_data_location(tgts[i]),
!                 gg_get_address_of(function_pointer),
                  sizeof_pointer);
        }
      else
*************** parser_set_pointers( size_t ntgt, cbl_re
*** 12870,12879 ****
        gg_call(  VOID,
                  "__gg__set_pointer",
                  gg_get_address_of(tgts[i].field->var_decl_node),
!                 refer_offset_dest(tgts[i]),
                  build_int_cst_type(INT, tgts[i].addr_of  ? REFER_T_ADDRESS_OF : 0),
                  source.field ? gg_get_address_of(source.field->var_decl_node) : null_pointer_node,
!                 refer_offset_source(source),
                  build_int_cst_type(INT, source.addr_of  ? REFER_T_ADDRESS_OF : 0),
                  NULL_TREE
                  );
--- 13684,13693 ----
        gg_call(  VOID,
                  "__gg__set_pointer",
                  gg_get_address_of(tgts[i].field->var_decl_node),
!                 refer_offset(tgts[i]),
                  build_int_cst_type(INT, tgts[i].addr_of  ? REFER_T_ADDRESS_OF : 0),
                  source.field ? gg_get_address_of(source.field->var_decl_node) : null_pointer_node,
!                 refer_offset(source),
                  build_int_cst_type(INT, source.addr_of  ? REFER_T_ADDRESS_OF : 0),
                  NULL_TREE
                  );
*************** typedef struct hier_node
*** 12900,12906 ****
    hier_node() :
      our_index(0),
      common(false),
!     parent_node(NULL)
      {}
    } hier_node;
  
--- 13714,13721 ----
    hier_node() :
      our_index(0),
      common(false),
!     parent_node(nullptr),
!     name(nullptr)
      {}
    } hier_node;
  
*************** find_uncles(const hier_node *node, std::
*** 12944,12957 ****
    }
  
  void
! parser_program_hierarchy( const struct cbl_prog_hier_t& hier )
    {
    Analyze();
!   /*  The complication in this routine is that it gets called near the end
!       of every program-id.  And it keeps growing.  The reason is because the
!       parser doesn't know when it is working on the last program of a list of
!       nested programs.  So, we just do what we need to do, and we keep track
!       of what we've already built so that we don't build it more than once.
        */
    SHOW_PARSE
      {
--- 13759,13772 ----
    }
  
  void
! parser_program_hierarchy( const cbl_prog_hier_t& hier )
    {
    Analyze();
!   /*  This routine gets called near the end of every program-id.  It keeps
!       growing because the parser doesn't know when it is working on the last
!       program of a list of nested programs.  So, we just do what we need to do,
!       and we keep track of what we've already built so that we don't build it
!       more than once.
        */
    SHOW_PARSE
      {
*************** parser_program_hierarchy( const struct c
*** 12962,12968 ****
        }
      else
        {
!       for( size_t i=0; i<hier.nlabel; i++ )
          {
          if( i )
            {
--- 13777,13783 ----
        }
      else
        {
!       for( size_t i=0; i<hier.labels.size(); i++ )
          {
          if( i )
            {
*************** parser_program_hierarchy( const struct c
*** 12974,12984 ****
            }
          char ach[128];
          sprintf(ach,
!                 "%ld %s%s parent:%ld",
!                 hier.labels[i].ordinal,
                  hier.labels[i].label.name,
                  hier.labels[i].label.common ? " COMMON" : "",
!                 hier.labels[i].label.parent);
          SHOW_PARSE_TEXT(ach);
          }
        }
--- 13789,13799 ----
            }
          char ach[128];
          sprintf(ach,
!                 HOST_SIZE_T_PRINT_DEC " %s%s parent:" HOST_SIZE_T_PRINT_DEC,
!                 (fmt_size_t)hier.labels[i].ordinal,
                  hier.labels[i].label.name,
                  hier.labels[i].label.common ? " COMMON" : "",
!                 (fmt_size_t)hier.labels[i].label.parent);
          SHOW_PARSE_TEXT(ach);
          }
        }
*************** parser_program_hierarchy( const struct c
*** 13017,13025 ****
    node_map[0] = nodes.back();
  
    // Pass 1: Create a node for every program:
!   for( size_t i=0; i<hier.nlabel; i++ )
      {
!     hier_node *existing_node = find_hier_node(node_map, hier.labels[i].ordinal);
      gcc_assert( existing_node == NULL );
  
      hier_node *new_node = new hier_node;
--- 13832,13840 ----
    node_map[0] = nodes.back();
  
    // Pass 1: Create a node for every program:
!   for( size_t i=0; i<hier.labels.size(); i++ )
      {
!     const hier_node *existing_node = find_hier_node(node_map, hier.labels[i].ordinal);
      gcc_assert( existing_node == NULL );
  
      hier_node *new_node = new hier_node;
*************** parser_program_hierarchy( const struct c
*** 13031,13037 ****
      }
  
    // Pass 2: populate each node with their parent and children:
!   for( size_t i=0; i<hier.nlabel; i++ )
      {
      hier_node *child_node = find_hier_node(node_map, hier.labels[i].ordinal);
      gcc_assert(child_node);
--- 13846,13852 ----
      }
  
    // Pass 2: populate each node with their parent and children:
!   for( size_t i=0; i<hier.labels.size(); i++ )
      {
      hier_node *child_node = find_hier_node(node_map, hier.labels[i].ordinal);
      gcc_assert(child_node);
*************** parser_program_hierarchy( const struct c
*** 13063,13071 ****
      // are also accessible by us.  Go find them.
      std::vector<const hier_node *>uncles;
      find_uncles(nodes[i], uncles);
!     for( size_t i=0; i<uncles.size(); i++ )
        {
!       const hier_node *uncle = uncles[i];
        if( map_of_sets[caller].find(uncle->name) == map_of_sets[caller].end() )
          {
          // We have a COMMON uncle or sibling we haven't seen before.
--- 13878,13886 ----
      // are also accessible by us.  Go find them.
      std::vector<const hier_node *>uncles;
      find_uncles(nodes[i], uncles);
!     for( size_t j=0; j<uncles.size(); j++ )
        {
!       const hier_node *uncle = uncles[j];
        if( map_of_sets[caller].find(uncle->name) == map_of_sets[caller].end() )
          {
          // We have a COMMON uncle or sibling we haven't seen before.
*************** parser_program_hierarchy( const struct c
*** 13103,13118 ****
        if( callers.find(caller) == callers.end() )
          {
          // We haven't seen this caller before
-         callers.insert(caller);
  
!         char ach[2*sizeof(cbl_name_t)];
          tree names_table_type = build_array_type_nelts(CHAR_P, mol->second.size()+1);
!         sprintf(ach, "..our_accessible_functions_%ld", caller);
          tree the_names_table = gg_define_variable(names_table_type, ach, vs_file_static);
  
          // Here is where we build a table out of constructors:
          tree constructed_array_type   = build_array_type_nelts(pointer_type, mol->second.size());
!         sprintf(ach, "..our_constructed_table_%ld", caller);
          tree the_constructed_table = gg_define_variable(constructed_array_type, ach, vs_file_static);
  
          tree constr_names = make_node(CONSTRUCTOR);
--- 13918,13934 ----
        if( callers.find(caller) == callers.end() )
          {
          // We haven't seen this caller before
  
!         char ach[3*sizeof(cbl_name_t)];
          tree names_table_type = build_array_type_nelts(CHAR_P, mol->second.size()+1);
!         sprintf(ach, "..our_accessible_functions_" HOST_SIZE_T_PRINT_DEC,
!                 (fmt_size_t)caller);
          tree the_names_table = gg_define_variable(names_table_type, ach, vs_file_static);
  
          // Here is where we build a table out of constructors:
          tree constructed_array_type   = build_array_type_nelts(pointer_type, mol->second.size());
!         sprintf(ach, "..our_constructed_table_" HOST_SIZE_T_PRINT_DEC,
!                 (fmt_size_t)caller);
          tree the_constructed_table = gg_define_variable(constructed_array_type, ach, vs_file_static);
  
          tree constr_names = make_node(CONSTRUCTOR);
*************** parser_program_hierarchy( const struct c
*** 13130,13136 ****
                callee != mol->second.end();
                callee++ )
            {
!           sprintf(ach, "%s.%ld", (*callee)->name, (*callee)->parent_node->our_index);
  
            CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr_names),
                                    build_int_cst_type(SIZE_T, i),
--- 13946,13955 ----
                callee != mol->second.end();
                callee++ )
            {
!           sprintf(ach,
!                   "%s." HOST_SIZE_T_PRINT_DEC,
!                   (*callee)->name,
!                   (fmt_size_t)(*callee)->parent_node->our_index);
  
            CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr_names),
                                    build_int_cst_type(SIZE_T, i),
*************** parser_program_hierarchy( const struct c
*** 13156,13168 ****
  
          // And put a pointer to that table into the file-static variable set aside
          // for it:
!         sprintf(ach, "..accessible_program_list_%ld", caller);
          tree accessible_list_var_decl = gg_trans_unit_var_decl(ach);
          gg_assign( accessible_list_var_decl, gg_get_address_of(the_names_table) );
  
!         sprintf(ach, "..accessible_program_pointers_%ld", caller);
          tree accessible_programs_decl = gg_trans_unit_var_decl(ach);
          gg_assign( accessible_programs_decl, gg_get_address_of(the_constructed_table) );
          }
        }
      }
--- 13975,13991 ----
  
          // And put a pointer to that table into the file-static variable set aside
          // for it:
!         sprintf(ach, "..accessible_program_list_" HOST_SIZE_T_PRINT_DEC,
!                 (fmt_size_t)caller);
          tree accessible_list_var_decl = gg_trans_unit_var_decl(ach);
          gg_assign( accessible_list_var_decl, gg_get_address_of(the_names_table) );
  
!         sprintf(ach, "..accessible_program_pointers_" HOST_SIZE_T_PRINT_DEC,
!                 (fmt_size_t)caller);
          tree accessible_programs_decl = gg_trans_unit_var_decl(ach);
          gg_assign( accessible_programs_decl, gg_get_address_of(the_constructed_table) );
+ 
+         callers.insert(caller);
          }
        }
      }
*************** parser_program_hierarchy( const struct c
*** 13171,13242 ****
    }
  
  void
- parser_set_handled(ec_type_t ec_handled)
-   {
-   if( mode_syntax_only() ) return;
-   SHOW_PARSE
-     {
-     SHOW_PARSE_HEADER
-     char ach[64];
-     sprintf(ach, "ec_type_t: 0x%lx", size_t(ec_handled));
-     SHOW_PARSE_TEXT(ach);
-     SHOW_PARSE_END
-     }
- 
-   TRACE1
-     {
-     TRACE1_HEADER
-     TRACE1_END
-     }
- 
-   if( gg_trans_unit.function_stack.size() )
-     {
-     if( ec_handled )
-       {
-       // We assume that exception_handled is zero, always.  We only make it
-       // non-zero when something needs to be done.  __gg__match_exception is
-       // in charge of setting it back to zero.
-       gg_assign(var_decl_exception_handled,
-                 build_int_cst_type(INT, (int)ec_handled));
-       }
-     }
-   else
-     {
-     yywarn("parser_set_handled() called between programs");
-     }
-   }
- 
- void
- parser_set_file_number(int file_number)
-   {
-   if( mode_syntax_only() ) return;
-   SHOW_PARSE
-     {
-     SHOW_PARSE_HEADER
-     char ach[32];
-     sprintf(ach, "file number: %d", file_number);
-     SHOW_PARSE_TEXT(ach);
-     SHOW_PARSE_END
-     }
- 
-   TRACE1
-     {
-     TRACE1_HEADER
-     TRACE1_END
-     }
- 
-   if( gg_trans_unit.function_stack.size() )
-     {
-     gg_assign(var_decl_exception_file_number,
-               build_int_cst_type(INT, file_number));
-     }
-   else
-     {
-     yywarn("parser_set_file_number() called between programs");
-     }
-   }
- 
- void
  parser_set_numeric(struct cbl_field_t *tgt, ssize_t value)
    {
    Analyze();
--- 13994,13999 ----
*************** parser_set_numeric(struct cbl_field_t *t
*** 13247,13253 ****
      SHOW_PARSE_TEXT(tgt->name)
      SHOW_PARSE_TEXT(" to ")
      char ach[32];
!     sprintf(ach, "%ld", value);
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_END
      }
--- 14004,14010 ----
      SHOW_PARSE_TEXT(tgt->name)
      SHOW_PARSE_TEXT(" to ")
      char ach[32];
!     sprintf(ach, HOST_SIZE_T_PRINT_DEC, (fmt_size_t)value);
      SHOW_PARSE_TEXT(ach);
      SHOW_PARSE_END
      }
*************** parser_set_numeric(struct cbl_field_t *t
*** 13262,13420 ****
            NULL_TREE );
    }
  
- static void
- stash_exceptions( const cbl_enabled_exceptions_array_t *enabled )
-   {
-   // We need to create a static array of bytes
-   size_t narg = enabled->nbytes();
-   unsigned char *p = (unsigned char *)(enabled->ecs);
- 
-   static size_t prior_narg = 0;
-   static size_t max_narg   = 128;
-   static unsigned char *prior_p = (unsigned char *)xmalloc(max_narg);
- 
-   bool we_got_new_data = false;
-   if( prior_narg != narg )
-     {
-     we_got_new_data = true;
-     }
-   else
-     {
-     // The narg counts are the same.
-     for(size_t i=0; i<narg; i++)
-       {
-       if( p[i] != prior_p[i] )
-         {
-         we_got_new_data = true;
-         break;
-         }
-       }
-     }
- 
-   if( !we_got_new_data )
-     {
-     return;
-     }
- 
-   if( narg > max_narg )
-     {
-     max_narg = narg;
-     prior_p = (unsigned char *)xrealloc(prior_p, max_narg);
-     }
- 
-   memcpy(prior_p, p, narg);
- 
-   static int count = 1;
- 
-   tree array_of_chars_type;
-   tree array_of_chars;
- 
-   if( narg )
-     {
-     char ach[32];
-     sprintf(ach, "_ec_array_%d", count++);
-     array_of_chars_type = build_array_type_nelts(UCHAR, narg);
- 
-     // We have the array.  Now we need to build the constructor for it
-     tree constr = make_node(CONSTRUCTOR);
-     TREE_TYPE(constr) = array_of_chars_type;
-     TREE_STATIC(constr)    = 1;
-     TREE_CONSTANT(constr)  = 1;
- 
-     for(size_t i=0; i<narg; i++)
-       {
-       CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr),
-                               build_int_cst_type(SIZE_T, i),
-                               build_int_cst_type(UCHAR, p[i]));
-       }
-     array_of_chars = gg_define_variable(array_of_chars_type, ach, vs_static);
-     DECL_INITIAL(array_of_chars) = constr;
- 
-     gg_call(VOID,
-             "__gg__stash_exceptions",
-             build_int_cst_type(SIZE_T, enabled->nec),
-             narg ? gg_get_address_of(array_of_chars) : null_pointer_node,
-             NULL_TREE);
-     }
-   }
- 
- static void
- store_location_stuff(const cbl_name_t statement_name)
-   {
-   if( exception_location_active && !current_declarative_section_name() )
-     {
-     // We need to establish some stuff for EXCEPTION- function processing
-     gg_assign(var_decl_exception_source_file,
-               gg_string_literal(current_filename.back().c_str()));
- 
-     gg_assign(var_decl_exception_program_id,
-               gg_string_literal(current_function->our_unmangled_name));
- 
-     if( strstr(current_function->current_section->label->name, "_implicit")
-         != current_function->current_section->label->name )
-       {
-       gg_assign(var_decl_exception_section,
-            gg_string_literal(current_function->current_section->label->name));
-       }
-     else
-       {
-       gg_assign(var_decl_exception_section,
-                 gg_cast(build_pointer_type(CHAR_P),null_pointer_node));
-       }
- 
-     if( strstr(current_function->current_paragraph->label->name, "_implicit")
-         != current_function->current_paragraph->label->name )
-       {
-       gg_assign(var_decl_exception_paragraph,
-            gg_string_literal(current_function->current_paragraph->label->name));
-       }
-     else
-       {
-       gg_assign(var_decl_exception_paragraph,
-                 gg_cast(build_pointer_type(CHAR_P), null_pointer_node));
-       }
- 
-     gg_assign(var_decl_exception_source_file,
-               gg_string_literal(current_filename.back().c_str()));
-     gg_assign(var_decl_exception_line_number, build_int_cst_type(INT,
-                                                           CURRENT_LINE_NUMBER));
-     gg_assign(var_decl_exception_statement, gg_string_literal(statement_name));
-     }
-   }
- 
- void
- parser_exception_prepare( const cbl_name_t statement_name,
-                           const cbl_enabled_exceptions_array_t *enabled )
-   {
-   Analyze();
-   SHOW_PARSE
-     {
-     SHOW_PARSE_HEADER
-     SHOW_PARSE_TEXT(enabled->nec? " stashing " : " skipping ")
-     SHOW_PARSE_TEXT(statement_name)
-     SHOW_PARSE_END
-     }
- 
-   TRACE1
-     {
-     TRACE1_HEADER
-     TRACE1_END
-     }
- 
-   if( enabled->nec )
-     {
-     if( gg_trans_unit.function_stack.size() )
-       {
-       stash_exceptions(enabled);
-       store_location_stuff(statement_name);
-       }
-     else
-       {
-       yywarn("parser_exception_prepare() called between programs");
-       }
-     }
-   }
- 
  void
  parser_exception_clear()
    {
--- 14019,14024 ----
*************** parser_exception_raise(ec_type_t ec)
*** 13443,13450 ****
    }
  
  void
! parser_match_exception(cbl_field_t *index,
!                        cbl_field_t *blob )
    {
    Analyze();
    SHOW_PARSE
--- 14047,14053 ----
    }
  
  void
! parser_match_exception(cbl_field_t *index)
    {
    Analyze();
    SHOW_PARSE
*************** parser_match_exception(cbl_field_t *inde
*** 13452,13465 ****
      SHOW_PARSE_HEADER
      SHOW_PARSE_FIELD(" index   ", index)
      SHOW_PARSE_INDENT
-     if( blob )
-       {
-       SHOW_PARSE_FIELD("blob    ", blob)
-       }
-     else
-       {
-       SHOW_PARSE_TEXT("blob    is NULL")
-       }
      SHOW_PARSE_END
      }
  
--- 14055,14060 ----
*************** parser_match_exception(cbl_field_t *inde
*** 13468,13489 ****
      TRACE1_HEADER
      TRACE1_FIELD("index   ", index, "")
      TRACE1_INDENT
-     TRACE1_TEXT("blob    ")
-     if( blob )
-       {
-       TRACE1_TEXT(blob->name)
-       }
-     else
-       {
-       TRACE1_TEXT("is NULL")
-       }
      TRACE1_END
      }
  
    gg_call(VOID,
            "__gg__match_exception",
            gg_get_address_of(index->var_decl_node),
-           blob ? blob->var_decl_node : null_pointer_node,
            NULL_TREE);
  
    TRACE1
--- 14063,14074 ----
*************** parser_check_fatal_exception()
*** 13506,13514 ****
      SHOW_PARSE_TEXT(" Check for fatal EC...")
      SHOW_PARSE_END
      }
!   gg_call(VOID,
!           "__gg__check_fatal_exception",
!           NULL_TREE);
    }
  
  void
--- 14091,14126 ----
      SHOW_PARSE_TEXT(" Check for fatal EC...")
      SHOW_PARSE_END
      }
!   TRACE1
!     {
!     TRACE1_HEADER
!     TRACE1_TEXT(" Check for fatal EC...")
!     TRACE1_END
!     }
! 
!   // Performance note:
!   // A simple program that does two billion additions of 32-bit binary numbers
!   // in its innermost loop had an execution time of 19.5 seconds.  By putting in
!   // the if() statement, that was reduced to 3.8 seconds.
! 
!   if( cdf_enabled_exceptions().size() || sv_is_i_o )
!     {
!     gg_call(VOID,
!             "__gg__check_fatal_exception",
!             NULL_TREE);
!     }
!   }
! 
! void
! parser_push_exception()
!   {
!   gg_call(VOID, "__gg__exception_push", NULL_TREE);
!   }
! 
! void
! parser_pop_exception()
!   {
!   gg_call(VOID, "__gg__exception_pop", NULL_TREE);
    }
  
  void
*************** hijack_for_development(const char *funcn
*** 13611,13617 ****
    // Assume that funcname is lowercase with no hyphens
    enter_program_common(funcname, funcname);
    parser_display_literal("You have been hijacked by a program named \"dubner\"");
!   gg_insert_into_assembler("%s HIJACKED DUBNER CODE START", ASM_COMMENT_START);
  
    for(int i=0; i<10; i++)
      {
--- 14223,14229 ----
    // Assume that funcname is lowercase with no hyphens
    enter_program_common(funcname, funcname);
    parser_display_literal("You have been hijacked by a program named \"dubner\"");
!   gg_insert_into_assemblerf("%s HIJACKED DUBNER CODE START", ASM_COMMENT_START);
  
    for(int i=0; i<10; i++)
      {
*************** hijack_for_development(const char *funcn
*** 13624,13635 ****
              NULL_TREE);
      }
  
!   gg_insert_into_assembler("%s HIJACKED DUBNER CODE END", ASM_COMMENT_START);
    gg_return(0);
    }
  
  static void
! conditional_abs(tree source, cbl_field_t *field)
    {
    Analyze();
    if( !(field->attr & signable_e) )
--- 14236,14247 ----
              NULL_TREE);
      }
  
!   gg_insert_into_assemblerf("%s HIJACKED DUBNER CODE END", ASM_COMMENT_START);
    gg_return(0);
    }
  
  static void
! conditional_abs(tree source, const cbl_field_t *field)
    {
    Analyze();
    if( !(field->attr & signable_e) )
*************** conditional_abs(tree source, cbl_field_t
*** 13639,13647 ****
    }
  
  static bool
! mh_identical(cbl_refer_t &destref,
!              cbl_refer_t &sourceref,
!              TREEPLET    &tsource)
    {
    // Check to see if the two variables are identical types, thus allowing
    // for a simple byte-for-byte copy of the data areas:
--- 14251,14259 ----
    }
  
  static bool
! mh_identical(const cbl_refer_t &destref,
!              const cbl_refer_t &sourceref,
!              const TREEPLET    &tsource)
    {
    // Check to see if the two variables are identical types, thus allowing
    // for a simple byte-for-byte copy of the data areas:
*************** mh_identical(cbl_refer_t &destref,
*** 13663,13669 ****
        )
      {
      // The source and destination are identical in type
!     if( (sourceref.field->attr & intermediate_e) || !symbol_find_odo(sourceref.field) )
        {
        Analyze();
        // Source doesn't have a depending_on clause
--- 14275,14281 ----
        )
      {
      // The source and destination are identical in type
!     if( !symbol_find_odo(sourceref.field) )
        {
        Analyze();
        // Source doesn't have a depending_on clause
*************** mh_identical(cbl_refer_t &destref,
*** 13673,13679 ****
          SHOW_PARSE_TEXT("mh_identical()");
          }
        gg_memcpy(gg_add(member(destref.field->var_decl_node,   "data"),
!                        refer_offset_dest(destref)),
                  gg_add(member(sourceref.field->var_decl_node, "data"),
                         tsource.offset),
                  build_int_cst_type(SIZE_T, sourceref.field->data.capacity));
--- 14285,14291 ----
          SHOW_PARSE_TEXT("mh_identical()");
          }
        gg_memcpy(gg_add(member(destref.field->var_decl_node,   "data"),
!                        refer_offset(destref)),
                  gg_add(member(sourceref.field->var_decl_node, "data"),
                         tsource.offset),
                  build_int_cst_type(SIZE_T, sourceref.field->data.capacity));
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 13714,13720 ****
          gg_call(VOID,
                  "__gg__psz_to_alpha_move",
                  gg_get_address_of(destref.field->var_decl_node),
!                 refer_offset_dest(destref),
                  refer_size_dest(destref),
                  gg_string_literal(buffer),
                  build_int_cst_type(SIZE_T, strlen(sourceref.field->data.initial)),
--- 14326,14332 ----
          gg_call(VOID,
                  "__gg__psz_to_alpha_move",
                  gg_get_address_of(destref.field->var_decl_node),
!                 refer_offset(destref),
                  refer_size_dest(destref),
                  gg_string_literal(buffer),
                  build_int_cst_type(SIZE_T, strlen(sourceref.field->data.initial)),
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 13752,13764 ****
                {
                // We are dealing with a negative number
                gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset_dest(destref)),
                                  build_int_cst_type(UCHAR, 0xFF),
                                  build_int_cst_type(SIZE_T, 8));
                }
              ELSE
                gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset_dest(destref)),
                                  build_int_cst_type(UCHAR, 0x00),
                                  build_int_cst_type(SIZE_T, 8));
                ENDIF
--- 14364,14376 ----
                {
                // We are dealing with a negative number
                gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset(destref)),
                                  build_int_cst_type(UCHAR, 0xFF),
                                  build_int_cst_type(SIZE_T, 8));
                }
              ELSE
                gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset(destref)),
                                  build_int_cst_type(UCHAR, 0x00),
                                  build_int_cst_type(SIZE_T, 8));
                ENDIF
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 13767,13773 ****
              {
              // The too-short source is positive.
                gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset_dest(destref)),
                                build_int_cst_type(UCHAR, 0x00),
                                build_int_cst_type(SIZE_T, 8));
              }
--- 14379,14385 ----
              {
              // The too-short source is positive.
                gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset(destref)),
                                build_int_cst_type(UCHAR, 0x00),
                                build_int_cst_type(SIZE_T, 8));
              }
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 13776,13782 ****
          tree literalN_value = get_literalN_value(sourceref.field);
          scale_by_power_of_ten_N(literalN_value, -sourceref.field->data.rdigits);
          gg_memcpy(gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset_dest(destref)),
                    gg_get_address_of(literalN_value),
                    build_int_cst_type(SIZE_T, sourceref.field->data.capacity));
          moved = true;
--- 14388,14394 ----
          tree literalN_value = get_literalN_value(sourceref.field);
          scale_by_power_of_ten_N(literalN_value, -sourceref.field->data.rdigits);
          gg_memcpy(gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset(destref)),
                    gg_get_address_of(literalN_value),
                    build_int_cst_type(SIZE_T, sourceref.field->data.capacity));
          moved = true;
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 13837,13843 ****
          tree dest_location = gg_indirect(
                      gg_cast(build_pointer_type(dest_type),
                              gg_add(member(destref.field->var_decl_node, "data"),
!                                    refer_offset_dest(destref))));
          gg_assign(dest_location, gg_cast(dest_type, source));
          moved = true;
          break;
--- 14449,14455 ----
          tree dest_location = gg_indirect(
                      gg_cast(build_pointer_type(dest_type),
                              gg_add(member(destref.field->var_decl_node, "data"),
!                                    refer_offset(destref))));
          gg_assign(dest_location, gg_cast(dest_type, source));
          moved = true;
          break;
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 13866,13872 ****
          gg_call(INT,
                  "__gg__int128_to_qualified_field",
                  gg_get_address_of(destref.field->var_decl_node),
!                 refer_offset_dest(destref),
                  refer_size_dest(destref),
                  gg_cast(INT128, literalN_value),
                  build_int_cst_type(INT, sourceref.field->data.rdigits),
--- 14478,14484 ----
          gg_call(INT,
                  "__gg__int128_to_qualified_field",
                  gg_get_address_of(destref.field->var_decl_node),
!                 refer_offset(destref),
                  refer_size_dest(destref),
                  gg_cast(INT128, literalN_value),
                  build_int_cst_type(INT, sourceref.field->data.rdigits),
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 13897,13903 ****
          gg_call(VOID,
                  "__gg__string_to_alpha_edited_ascii",
                  gg_add( member(destref.field->var_decl_node, "data"),
!                         refer_offset_dest(destref) ),
                  gg_string_literal(sourceref.field->data.initial),
                  build_int_cst_type(INT, strlen(sourceref.field->data.initial)),
                  gg_string_literal(destref.field->data.picture),
--- 14509,14515 ----
          gg_call(VOID,
                  "__gg__string_to_alpha_edited_ascii",
                  gg_add( member(destref.field->var_decl_node, "data"),
!                         refer_offset(destref) ),
                  gg_string_literal(sourceref.field->data.initial),
                  build_int_cst_type(INT, strlen(sourceref.field->data.initial)),
                  gg_string_literal(destref.field->data.picture),
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 13909,13915 ****
        case FldFloat:
          {
          tree tdest = gg_add(member(destref.field->var_decl_node, "data"),
!                             refer_offset_dest(destref) );
          switch( destref.field->data.capacity )
            {
            // For some reason, using FLOAT128 in the build_pointer_type causes
--- 14521,14527 ----
        case FldFloat:
          {
          tree tdest = gg_add(member(destref.field->var_decl_node, "data"),
!                             refer_offset(destref) );
          switch( destref.field->data.capacity )
            {
            // For some reason, using FLOAT128 in the build_pointer_type causes
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 13945,13952 ****
  
        default:
          cbl_internal_error(
!               "In parser_move(%s to %s), the move of FldLiteralN to %s "
!               "hasn't been implemented",
                sourceref.field->name,
                destref.field->name,
                cbl_field_type_str(destref.field->type));
--- 14557,14564 ----
  
        default:
          cbl_internal_error(
!               "In %<parser_move(%s to %s)%>, the move of FldLiteralN to %s "
!               "is unimplemented",
                sourceref.field->name,
                destref.field->name,
                cbl_field_type_str(destref.field->type));
*************** tree float_type_of(int n)
*** 13974,13987 ****
    }
  
  static tree
! float_type_of(cbl_field_t *field)
    {
    gcc_assert(field->type == FldFloat);
    return float_type_of(field->data.capacity);
    }
  
  static tree
! float_type_of(cbl_refer_t *refer)
    {
    return float_type_of(refer->field);
    }
--- 14586,14599 ----
    }
  
  static tree
! float_type_of(const cbl_field_t *field)
    {
    gcc_assert(field->type == FldFloat);
    return float_type_of(field->data.capacity);
    }
  
  static tree
! float_type_of(const cbl_refer_t *refer)
    {
    return float_type_of(refer->field);
    }
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14013,14019 ****
              gg_call(VOID,
                      "__gg__float32_from_int128",
                      gg_get_address_of(destref.field->var_decl_node),
!                     refer_offset_dest(destref),
                      tsource.pfield,
                      tsource.offset,
                      build_int_cst_type(INT, rounded),
--- 14625,14631 ----
              gg_call(VOID,
                      "__gg__float32_from_int128",
                      gg_get_address_of(destref.field->var_decl_node),
!                     refer_offset(destref),
                      tsource.pfield,
                      tsource.offset,
                      build_int_cst_type(INT, rounded),
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14024,14030 ****
              gg_call(VOID,
                      "__gg__float64_from_int128",
                      gg_get_address_of(destref.field->var_decl_node),
!                     refer_offset_dest(destref),
                      tsource.pfield,
                      tsource.offset,
                      build_int_cst_type(INT, rounded),
--- 14636,14642 ----
              gg_call(VOID,
                      "__gg__float64_from_int128",
                      gg_get_address_of(destref.field->var_decl_node),
!                     refer_offset(destref),
                      tsource.pfield,
                      tsource.offset,
                      build_int_cst_type(INT, rounded),
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14035,14041 ****
              gg_call(VOID,
                      "__gg__float128_from_int128",
                      gg_get_address_of(destref.field->var_decl_node),
!                     refer_offset_dest(destref),
                      tsource.pfield,
                      tsource.offset,
                      build_int_cst_type(INT, rounded),
--- 14647,14653 ----
              gg_call(VOID,
                      "__gg__float128_from_int128",
                      gg_get_address_of(destref.field->var_decl_node),
!                     refer_offset(destref),
                      tsource.pfield,
                      tsource.offset,
                      build_int_cst_type(INT, rounded),
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14077,14085 ****
              tree stype = float_type_of(&sourceref);
  
              tree tdest = gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset_dest(destref));
              tree source = gg_add(member(sourceref.field->var_decl_node, "data"),
!                                 refer_offset_source(sourceref));
              gg_assign(gg_indirect(gg_cast(build_pointer_type(dtype), tdest)),
                        gg_cast(dtype,
                                gg_indirect(gg_cast(build_pointer_type(stype),
--- 14689,14697 ----
              tree stype = float_type_of(&sourceref);
  
              tree tdest = gg_add(member(destref.field->var_decl_node, "data"),
!                                refer_offset(destref));
              tree source = gg_add(member(sourceref.field->var_decl_node, "data"),
!                                 refer_offset(sourceref));
              gg_assign(gg_indirect(gg_cast(build_pointer_type(dtype), tdest)),
                        gg_cast(dtype,
                                gg_indirect(gg_cast(build_pointer_type(stype),
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14096,14102 ****
                            gg_call_expr( INT,
                                  "__gg__float64_from_128",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset_dest(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE));
--- 14708,14714 ----
                            gg_call_expr( INT,
                                  "__gg__float64_from_128",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE));
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14106,14112 ****
                            gg_call( INT,
                                  "__gg__float64_from_128",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset_dest(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE);
--- 14718,14724 ----
                            gg_call( INT,
                                  "__gg__float64_from_128",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE);
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14123,14129 ****
                              gg_call_expr( INT,
                                  "__gg__float32_from_64",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset_dest(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE));
--- 14735,14741 ----
                              gg_call_expr( INT,
                                  "__gg__float32_from_64",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE));
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14133,14139 ****
                              gg_call( INT,
                                  "__gg__float32_from_64",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset_dest(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE);
--- 14745,14751 ----
                              gg_call( INT,
                                  "__gg__float32_from_64",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE);
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14148,14154 ****
                              gg_call_expr( INT,
                                  "__gg__float32_from_128",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset_dest(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE));
--- 14760,14766 ----
                              gg_call_expr( INT,
                                  "__gg__float32_from_128",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE));
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14158,14164 ****
                              gg_call( INT,
                                  "__gg__float32_from_128",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset_dest(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE);
--- 14770,14776 ----
                              gg_call( INT,
                                  "__gg__float32_from_128",
                                  gg_get_address_of(destref.field->var_decl_node),
!                                 refer_offset(destref),
                                  tsource.pfield,
                                  tsource.offset,
                                  NULL_TREE);
*************** mh_dest_is_float( cbl_refer_t &destref,
*** 14181,14188 ****
          }
  
        default:
!         cbl_internal_error("In mh_dest_is_float(%s to %s), the "
!                            "move of %s to %s hasn't been implemented",
                sourceref.field->name,
                destref.field->name,
                cbl_field_type_str(sourceref.field->type),
--- 14793,14800 ----
          }
  
        default:
!         cbl_internal_error("In %<mh_dest_is_float%>(%s to %s), the "
!                            "move of %s to %s is unimplemented",
                sourceref.field->name,
                destref.field->name,
                cbl_field_type_str(sourceref.field->type),
*************** picky_memset(tree &dest_p, unsigned char
*** 14213,14219 ****
    }
  
  static void
! picky_memcpy(tree &dest_p, tree &source_p, size_t length)
    {
    if( length )
      {
--- 14825,14831 ----
    }
  
  static void
! picky_memcpy(tree &dest_p, const tree &source_p, size_t length)
    {
    if( length )
      {
*************** picky_memcpy(tree &dest_p, tree &source_
*** 14232,14241 ****
    }
  
  static bool
! mh_numeric_display( cbl_refer_t &destref,
!                     cbl_refer_t &sourceref,
!                     TREEPLET    &tsource,
!                     tree size_error)
    {
    bool moved = false;
  
--- 14844,14853 ----
    }
  
  static bool
! mh_numeric_display( const cbl_refer_t &destref,
!                     const cbl_refer_t &sourceref,
!                     const TREEPLET    &tsource,
!                           tree size_error)
    {
    bool moved = false;
  
*************** mh_numeric_display( cbl_refer_t &destref
*** 14265,14271 ****
      static tree source_p  = gg_define_variable(UCHAR_P, "..mhnd_source", vs_file_static); // The source data pointer
      static tree source_ep = gg_define_variable(UCHAR_P, "..mhnd_source_e", vs_file_static); // When we need an end pointer
  
!     gg_assign(dest_p,   qualified_data_dest(destref));
      gg_assign(source_p, gg_add(member(sourceref.field, "data"),
                                 tsource.offset));
  
--- 14877,14883 ----
      static tree source_p  = gg_define_variable(UCHAR_P, "..mhnd_source", vs_file_static); // The source data pointer
      static tree source_ep = gg_define_variable(UCHAR_P, "..mhnd_source_e", vs_file_static); // When we need an end pointer
  
!     gg_assign(dest_p,   qualified_data_location(destref));
      gg_assign(source_p, gg_add(member(sourceref.field, "data"),
                                 tsource.offset));
  
*************** mh_numeric_display( cbl_refer_t &destref
*** 14605,14611 ****
          if( destref.field->attr & leading_e )
            {
            // The sign bit goes into the first byte:
!           gg_assign(dest_p, qualified_data_dest(destref));
            }
          else
            {
--- 15217,15223 ----
          if( destref.field->attr & leading_e )
            {
            // The sign bit goes into the first byte:
!           gg_assign(dest_p, qualified_data_location(destref));
            }
          else
            {
*************** mh_numeric_display( cbl_refer_t &destref
*** 14721,14731 ****
    }
  
  static bool
! mh_little_endian( cbl_refer_t &destref,
!                   cbl_refer_t &sourceref,
!                   TREEPLET    &tsource,
!                   bool check_for_error,
!                   tree size_error)
    {
    bool moved = false;
  
--- 15333,15343 ----
    }
  
  static bool
! mh_little_endian( const cbl_refer_t &destref,
!                   const cbl_refer_t &sourceref,
!                   const TREEPLET    &tsource,
!                         bool check_for_error,
!                         tree size_error)
    {
    bool moved = false;
  
*************** mh_little_endian( cbl_refer_t &destref,
*** 14767,14773 ****
        // Get binary value from float actually scales the source value to the
        // dest:: rdigits
        copy_little_endian_into_place(destref.field,
!                                     refer_offset_dest(destref),
                                      source,
                                      destref.field->data.rdigits,
                                      check_for_error,
--- 15379,15385 ----
        // Get binary value from float actually scales the source value to the
        // dest:: rdigits
        copy_little_endian_into_place(destref.field,
!                                     refer_offset(destref),
                                      source,
                                      destref.field->data.rdigits,
                                      check_for_error,
*************** mh_little_endian( cbl_refer_t &destref,
*** 14781,14787 ****
                          sourceref.field,
                          tsource.offset);
        copy_little_endian_into_place(destref.field,
!                                     refer_offset_dest(destref),
                                      source,
                                      sourceref.field->data.rdigits,
                                      check_for_error,
--- 15393,15399 ----
                          sourceref.field,
                          tsource.offset);
        copy_little_endian_into_place(destref.field,
!                                     refer_offset(destref),
                                      source,
                                      sourceref.field->data.rdigits,
                                      check_for_error,
*************** mh_little_endian( cbl_refer_t &destref,
*** 14793,14801 ****
    }
  
  static bool
! mh_source_is_group( cbl_refer_t &destref,
!                     cbl_refer_t &sourceref,
!                     TREEPLET    &tsrc)
    {
    bool retval = false;
    if( sourceref.field->type == FldGroup && !(destref.field->attr & rjust_e) )
--- 15405,15413 ----
    }
  
  static bool
! mh_source_is_group( const cbl_refer_t &destref,
!                     const cbl_refer_t &sourceref,
!                     const TREEPLET    &tsrc)
    {
    bool retval = false;
    if( sourceref.field->type == FldGroup && !(destref.field->attr & rjust_e) )
*************** mh_source_is_group( cbl_refer_t &destref
*** 14804,14816 ****
      // We are moving a group to a something.  The rule here is just move as
      // many bytes as you can, and, if necessary, fill with spaces
      tree tdest   = gg_add( member(destref.field->var_decl_node, "data"),
!                            refer_offset_dest(destref));
      tree tsource = gg_add( member(sourceref.field->var_decl_node, "data"),
                             tsrc.offset);
      tree dbytes  = refer_size_dest(destref);
      tree sbytes  = tsrc.length;
  
!     IF( sbytes, ge_op, dbytes )
        {
        // There are too many source bytes
        gg_memcpy(tdest, tsource, dbytes);
--- 15416,15428 ----
      // We are moving a group to a something.  The rule here is just move as
      // many bytes as you can, and, if necessary, fill with spaces
      tree tdest   = gg_add( member(destref.field->var_decl_node, "data"),
!                            refer_offset(destref));
      tree tsource = gg_add( member(sourceref.field->var_decl_node, "data"),
                             tsrc.offset);
      tree dbytes  = refer_size_dest(destref);
      tree sbytes  = tsrc.length;
  
!     IF( sbytes, ge_op, gg_cast(TREE_TYPE(sbytes), dbytes) )
        {
        // There are too many source bytes
        gg_memcpy(tdest, tsource, dbytes);
*************** move_helper(tree size_error,        // T
*** 14860,14866 ****
      {
      // We are creating a copy of the original destination in case we clobber it
      // and have to restore it because of a computational error.
!     bool first_time = true;
      static size_t stash_size = 1024;
      if( first_time )
        {
--- 15472,15478 ----
      {
      // We are creating a copy of the original destination in case we clobber it
      // and have to restore it because of a computational error.
!     static bool first_time = true;
      static size_t stash_size = 1024;
      if( first_time )
        {
*************** move_helper(tree size_error,        // T
*** 14872,14878 ****
        stash_size = destref.field->data.capacity;
        gg_assign(stash, gg_cast(UCHAR_P, gg_realloc(stash, stash_size)));
        }
!     st_data = qualified_data_dest(destref);
      st_size = refer_size_dest(destref);
      gg_memcpy(stash,
                st_data,
--- 15484,15490 ----
        stash_size = destref.field->data.capacity;
        gg_assign(stash, gg_cast(UCHAR_P, gg_realloc(stash, stash_size)));
        }
!     st_data = qualified_data_location(destref);
      st_size = refer_size_dest(destref);
      gg_memcpy(stash,
                st_data,
*************** move_helper(tree size_error,        // T
*** 14885,14891 ****
      //goto dont_be_clever; this will go through to the default.
      }
  
!   if( !moved )
      {
      moved = mh_source_is_group(destref, sourceref, tsource);
      }
--- 15497,15503 ----
      //goto dont_be_clever; this will go through to the default.
      }
  
!   // if( !moved ) // commented out to quiet cppcheck
      {
      moved = mh_source_is_group(destref, sourceref, tsource);
      }
*************** move_helper(tree size_error,        // T
*** 14954,14961 ****
      if( buffer_size < source_length )
        {
        buffer_size = source_length;
!       buffer = (char *)xrealloc(buffer, buffer_size);
        }
  
      if( figconst )
        {
--- 15566,15574 ----
      if( buffer_size < source_length )
        {
        buffer_size = source_length;
!       buffer = static_cast<char *>(xrealloc(buffer, buffer_size));
        }
+     gcc_assert(buffer);
  
      if( figconst )
        {
*************** move_helper(tree size_error,        // T
*** 15009,15015 ****
                  gg_call_expr( INT,
                                "__gg__move_literala",
                                gg_get_address_of(destref.field->var_decl_node),
!                               refer_offset_dest(destref),
                                refer_size_dest(destref),
                                build_int_cst_type(INT, rounded_parameter),
                                build_string_literal(source_length,
--- 15622,15628 ----
                  gg_call_expr( INT,
                                "__gg__move_literala",
                                gg_get_address_of(destref.field->var_decl_node),
!                               refer_offset(destref),
                                refer_size_dest(destref),
                                build_int_cst_type(INT, rounded_parameter),
                                build_string_literal(source_length,
*************** move_helper(tree size_error,        // T
*** 15022,15028 ****
                  gg_call     ( INT,
                                "__gg__move_literala",
                                gg_get_address_of(destref.field->var_decl_node),
!                               refer_offset_dest(destref),
                                refer_size_dest(destref),
                                build_int_cst_type(INT, rounded_parameter),
                                build_string_literal(source_length,
--- 15635,15641 ----
                  gg_call     ( INT,
                                "__gg__move_literala",
                                gg_get_address_of(destref.field->var_decl_node),
!                               refer_offset(destref),
                                refer_size_dest(destref),
                                build_int_cst_type(INT, rounded_parameter),
                                build_string_literal(source_length,
*************** move_helper(tree size_error,        // T
*** 15065,15071 ****
                  gg_call_expr( INT,
                                "__gg__move",
                                gg_get_address_of(destref.field->var_decl_node),
!                               refer_offset_dest(destref),
                                refer_size_dest(destref),
                                tsource.pfield,
                                tsource.offset,
--- 15678,15684 ----
                  gg_call_expr( INT,
                                "__gg__move",
                                gg_get_address_of(destref.field->var_decl_node),
!                               refer_offset(destref),
                                refer_size_dest(destref),
                                tsource.pfield,
                                tsource.offset,
*************** move_helper(tree size_error,        // T
*** 15079,15085 ****
                  gg_call     ( INT,
                                "__gg__move",
                                gg_get_address_of(destref.field->var_decl_node),
!                               refer_offset_dest(destref),
                                refer_size_dest(destref),
                                tsource.pfield,
                                tsource.offset,
--- 15692,15698 ----
                  gg_call     ( INT,
                                "__gg__move",
                                gg_get_address_of(destref.field->var_decl_node),
!                               refer_offset(destref),
                                refer_size_dest(destref),
                                tsource.pfield,
                                tsource.offset,
*************** move_helper(tree size_error,        // T
*** 15098,15104 ****
        gg_attribute_bit_clear(destref.field, refmod_e);
        }
  
!     moved = true;
      }
  
    if( restore_on_error )
--- 15711,15717 ----
        gg_attribute_bit_clear(destref.field, refmod_e);
        }
  
!     // moved = true; // commented out to quiet cppcheck
      }
  
    if( restore_on_error )
*************** binary_initial_from_float128(cbl_field_t
*** 15229,15235 ****
    FIXED_WIDE_INT(128) i
      = FIXED_WIDE_INT(128)::from (real_to_integer (&value, &fail, 128), SIGNED);
  
!   retval = (char *)xmalloc(field->data.capacity);
    switch(field->data.capacity)
      {
        tree type;
--- 15842,15849 ----
    FIXED_WIDE_INT(128) i
      = FIXED_WIDE_INT(128)::from (real_to_integer (&value, &fail, 128), SIGNED);
  
!   retval = static_cast<char *>(xmalloc(field->data.capacity));
!   gcc_assert(retval);
    switch(field->data.capacity)
      {
        tree type;
*************** binary_initial_from_float128(cbl_field_t
*** 15238,15251 ****
      case 4:
      case 8:
      case 16:
!       type = build_nonstandard_integer_type (field->data.capacity
! 					     * BITS_PER_UNIT, 0);
!       native_encode_wide_int (type, i, (unsigned char *)retval,
! 			      field->data.capacity);
        break;
      default:
        fprintf(stderr,
!               "Trouble in initial_from_float128 at %s() %s:%d\n",
                __func__,
                __FILE__,
                __LINE__);
--- 15852,15865 ----
      case 4:
      case 8:
      case 16:
!       type = build_nonstandard_integer_type ( field->data.capacity
!                                               * BITS_PER_UNIT, 0);
!       native_encode_wide_int (type, i, PTRCAST(unsigned char, retval),
!                               field->data.capacity);
        break;
      default:
        fprintf(stderr,
!               "Trouble in binary_initial_from_float128 at %s() %s:%d\n",
                __func__,
                __FILE__,
                __LINE__);
*************** digits_from_float128(char *retval, cbl_f
*** 15304,15316 ****
    }
  
  static char *
! initial_from_float128(cbl_field_t *field)
    {
    Analyze();
    // This routine returns an xmalloced buffer that is intended to replace the
    // data.initial member of the incoming field.
  
!   //fprintf(stderr, "initial_from_float128 %s\n", field->name);
  
    char *retval = NULL;
    int rdigits;
--- 15918,15930 ----
    }
  
  static char *
! initial_from_initial(cbl_field_t *field)
    {
    Analyze();
    // This routine returns an xmalloced buffer that is intended to replace the
    // data.initial member of the incoming field.
  
!   //fprintf(stderr, "initial_from_initial %s\n", field->name);
  
    char *retval = NULL;
    int rdigits;
*************** initial_from_float128(cbl_field_t *field
*** 15370,15377 ****
        }
      if( set_return )
        {
!       retval = (char *)xmalloc(field->data.capacity);
        memset(retval, const_char, field->data.capacity);
        return retval;
        }
      }
--- 15984,15993 ----
        }
      if( set_return )
        {
!       retval = static_cast<char *>(xmalloc(field->data.capacity+1));
!       gcc_assert(retval);
        memset(retval, const_char, field->data.capacity);
+       retval[field->data.capacity] = '\0';
        return retval;
        }
      }
*************** initial_from_float128(cbl_field_t *field
*** 15439,15445 ****
  
      case FldNumericDisplay:
        {
!       retval = (char *)xmalloc(field->data.capacity);
        char *pretval = retval;
        char ach[128];
  
--- 16055,16062 ----
  
      case FldNumericDisplay:
        {
!       retval = static_cast<char *>(xmalloc(field->data.capacity));
!       gcc_assert(retval);
        char *pretval = retval;
        char ach[128];
  
*************** initial_from_float128(cbl_field_t *field
*** 15456,15462 ****
  
        digits_from_float128(ach, field, field->data.digits, rdigits, value);
  
!       char *digits = ach;
        if(    (field->attr & signable_e)
            && (field->attr & separate_e)
            && (field->attr & leading_e ) )
--- 16073,16079 ----
  
        digits_from_float128(ach, field, field->data.digits, rdigits, value);
  
!       const char *digits = ach;
        if(    (field->attr & signable_e)
            && (field->attr & separate_e)
            && (field->attr & leading_e ) )
*************** initial_from_float128(cbl_field_t *field
*** 15519,15525 ****
  
      case FldPacked:
        {
!       retval = (char *)xmalloc(field->data.capacity);
        char *pretval = retval;
        char ach[128];
  
--- 16136,16143 ----
  
      case FldPacked:
        {
!       retval = static_cast<char *>(xmalloc(field->data.capacity));
!       gcc_assert(retval);
        char *pretval = retval;
        char ach[128];
  
*************** initial_from_float128(cbl_field_t *field
*** 15545,15551 ****
                         : field->data.capacity * 2 - 1;
        digits_from_float128(ach, field, ndigits, rdigits, value);
  
!       char *digits = ach;
        for(size_t i=0; i<ndigits; i++)
          {
          if( !(i & 0x01) )
--- 16163,16169 ----
                         : field->data.capacity * 2 - 1;
        digits_from_float128(ach, field, ndigits, rdigits, value);
  
!       const char *digits = ach;
        for(size_t i=0; i<ndigits; i++)
          {
          if( !(i & 0x01) )
*************** initial_from_float128(cbl_field_t *field
*** 15586,15592 ****
        {
        if( field->data.initial )
          {
!         retval = (char *)xmalloc(field->data.capacity+1);
          if( field->attr & hex_encoded_e)
            {
            memcpy(retval, field->data.initial, field->data.capacity);
--- 16204,16211 ----
        {
        if( field->data.initial )
          {
!         retval = static_cast<char *>(xmalloc(field->data.capacity+1));
!         gcc_assert(retval);
          if( field->attr & hex_encoded_e)
            {
            memcpy(retval, field->data.initial, field->data.capacity);
*************** initial_from_float128(cbl_field_t *field
*** 15594,15600 ****
          else
            {
            size_t buffer_size = 0;
!           size_t length = (size_t)field->data.capacity;
            memset(retval, internal_space, length);
            raw_to_internal(&retval, &buffer_size, field->data.initial, length);
            if( strlen(field->data.initial) < length )
--- 16213,16219 ----
          else
            {
            size_t buffer_size = 0;
!           size_t length = field->data.capacity;
            memset(retval, internal_space, length);
            raw_to_internal(&retval, &buffer_size, field->data.initial, length);
            if( strlen(field->data.initial) < length )
*************** initial_from_float128(cbl_field_t *field
*** 15610,15634 ****
  
      case FldNumericEdited:
        {
!       retval = (char *)xmalloc(field->data.capacity+1);
        if( field->data.initial && field->attr & quoted_e )
          {
!         if( field->attr & quoted_e )
            {
!           // What the programmer says the value is, the value becomes, no
!           // matter how wrong it might be.
!           size_t length = std::min( (size_t)field->data.capacity,
!                                     strlen(field->data.initial));
!           for(size_t i=0; i<length; i++)
!             {
!             retval[i] = ascii_to_internal(field->data.initial[i]);
!             }
!           if( length < (size_t)field->data.capacity )
!             {
!             memset( retval+length,
!                     internal_space,
!                     (size_t)field->data.capacity - length);
!             }
            }
          }
        else
--- 16229,16251 ----
  
      case FldNumericEdited:
        {
!       retval = static_cast<char *>(xmalloc(field->data.capacity+1));
!       gcc_assert(retval);
        if( field->data.initial && field->attr & quoted_e )
          {
!         // What the programmer says the value is, the value becomes, no
!         // matter how wrong it might be.
!         size_t length = std::min( (size_t)field->data.capacity,
!                                   strlen(field->data.initial));
!         for(size_t i=0; i<length; i++)
            {
!           retval[i] = ascii_to_internal(field->data.initial[i]);
!           }
!         if( length < (size_t)field->data.capacity )
!           {
!           memset( retval+length,
!                   internal_space,
!                   (size_t)field->data.capacity - length);
            }
          }
        else
*************** initial_from_float128(cbl_field_t *field
*** 15648,15654 ****
          char ach[128];
          memset(ach, 0, sizeof(ach));
          memset(retval, 0, field->data.capacity);
-         size_t ndigits = field->data.capacity;
  
          if( (field->attr & blank_zero_e) && real_iszero (&value) )
            {
--- 16265,16270 ----
*************** initial_from_float128(cbl_field_t *field
*** 15656,15661 ****
--- 16272,16278 ----
            }
          else
            {
+           size_t ndigits = field->data.capacity;
            digits_from_float128(ach, field, ndigits, rdigits, value);
            /* ???  This resides in libgcobol valconv.cc.  */
            __gg__string_to_numeric_edited( retval,
*************** initial_from_float128(cbl_field_t *field
*** 15670,15692 ****
  
      case FldFloat:
        {
!       retval = (char *)xmalloc(field->data.capacity);
        switch( field->data.capacity )
          {
          case 4:
            value = real_value_truncate (TYPE_MODE (FLOAT), value);
            native_encode_real (SCALAR_FLOAT_TYPE_MODE (FLOAT), &value,
! 			      (unsigned char *)retval, 4, 0);
            break;
          case 8:
            value = real_value_truncate (TYPE_MODE (DOUBLE), value);
            native_encode_real (SCALAR_FLOAT_TYPE_MODE (DOUBLE), &value,
! 			      (unsigned char *)retval, 8, 0);
            break;
          case 16:
            value = real_value_truncate (TYPE_MODE (FLOAT128), value);
            native_encode_real (SCALAR_FLOAT_TYPE_MODE (FLOAT128), &value,
! 			      (unsigned char *)retval, 16, 0);
            break;
          }
        break;
--- 16287,16310 ----
  
      case FldFloat:
        {
!       retval = static_cast<char *>(xmalloc(field->data.capacity));
!       gcc_assert(retval);
        switch( field->data.capacity )
          {
          case 4:
            value = real_value_truncate (TYPE_MODE (FLOAT), value);
            native_encode_real (SCALAR_FLOAT_TYPE_MODE (FLOAT), &value,
!                               PTRCAST(unsigned char, retval), 4, 0);
            break;
          case 8:
            value = real_value_truncate (TYPE_MODE (DOUBLE), value);
            native_encode_real (SCALAR_FLOAT_TYPE_MODE (DOUBLE), &value,
!                               PTRCAST(unsigned char, retval), 8, 0);
            break;
          case 16:
            value = real_value_truncate (TYPE_MODE (FLOAT128), value);
            native_encode_real (SCALAR_FLOAT_TYPE_MODE (FLOAT128), &value,
!                               PTRCAST(unsigned char, retval), 16, 0);
            break;
          }
        break;
*************** psa_new_var_decl(cbl_field_t *new_var, c
*** 15969,15980 ****
            && symbol_at(new_var->parent)->type == SymField )
          {
          // We have a parent that is a field
!         sprintf(id_string, ".%ld_%ld", our_index, new_var->parent);
          }
        else
          {
          // The parent is zero, so it'll be implied:
!         sprintf(id_string, ".%ld", our_index);
          }
  
        if(strcasecmp(new_var->name, "filler") == 0)
--- 16587,16600 ----
            && symbol_at(new_var->parent)->type == SymField )
          {
          // We have a parent that is a field
!         sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC "_" HOST_SIZE_T_PRINT_DEC,
!                 (fmt_size_t)our_index, (fmt_size_t)new_var->parent);
          }
        else
          {
          // The parent is zero, so it'll be implied:
!         sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC,
!                 (fmt_size_t)our_index);
          }
  
        if(strcasecmp(new_var->name, "filler") == 0)
*************** psa_FldLiteralA(struct cbl_field_t *fiel
*** 16070,16081 ****
  
    // First make room
    static size_t buffer_size = 1024;
!   static char *buffer = (char *)xmalloc(buffer_size);
    if( buffer_size < field->data.capacity+1 )
      {
      buffer_size = field->data.capacity+1;
!     buffer = (char *)xrealloc(buffer, buffer_size);
      }
  
    cbl_figconst_t figconst = cbl_figconst_of( field->data.initial );
    gcc_assert(figconst == normal_value_e);
--- 16690,16702 ----
  
    // First make room
    static size_t buffer_size = 1024;
!   static char *buffer = static_cast<char *>(xmalloc(buffer_size));
    if( buffer_size < field->data.capacity+1 )
      {
      buffer_size = field->data.capacity+1;
!     buffer = static_cast<char *>(xrealloc(buffer, buffer_size));
      }
+   gcc_assert(buffer);
  
    cbl_figconst_t figconst = cbl_figconst_of( field->data.initial );
    gcc_assert(figconst == normal_value_e);
*************** psa_FldLiteralA(struct cbl_field_t *fiel
*** 16096,16109 ****
    // We have the original nul-terminated text at data.initial.  We have a
    // copy of it in buffer[] in the internal codeset.
  
    // We will reuse a single static structure for each string
    static std::unordered_map<std::string, int> seen_before;
    std::string field_string(buffer);
    std::unordered_map<std::string, int>::const_iterator it =
                seen_before.find(field_string);
  
-   static const char name_base[] = "_literal_a_";
- 
    if( it != seen_before.end() )
      {
      // We've seen that string before.
--- 16717,16744 ----
    // We have the original nul-terminated text at data.initial.  We have a
    // copy of it in buffer[] in the internal codeset.
  
+   static const char name_base[] = "_literal_a_";
+ 
    // We will reuse a single static structure for each string
    static std::unordered_map<std::string, int> seen_before;
+ 
    std::string field_string(buffer);
+ 
+ #if 0
+   /*  This code is suppoed to re-use literals, and seems to work just fine in
+       x86_64-linux and on an Apple aarch64 M1 Macbook Pro.  But on an M1
+       mini, using -Os optimization, attempts were made in the generated
+       assembly language to define _literal_a_1 more than once.
+ 
+       I didn't know how to try to track this one down, so I decided simply to
+       punt by removing the code.
+ 
+       I am leaving the code here because of a conviction that it someday should
+       be tracked down. */
+ 
    std::unordered_map<std::string, int>::const_iterator it =
                seen_before.find(field_string);
  
    if( it != seen_before.end() )
      {
      // We've seen that string before.
*************** psa_FldLiteralA(struct cbl_field_t *fiel
*** 16116,16124 ****
                                                    vs_file_static);
      }
    else
      {
      // We have not seen that string before
!     static int nvar = 1;
      seen_before[field_string] = nvar;
  
      char ach[32];
--- 16751,16761 ----
                                                    vs_file_static);
      }
    else
+ #endif
      {
      // We have not seen that string before
!     static int nvar = 0;
!     nvar += 1;
      seen_before[field_string] = nvar;
  
      char ach[32];
*************** psa_FldLiteralA(struct cbl_field_t *fiel
*** 16138,16151 ****
      TREE_USED(field->var_decl_node) = 1;
      TREE_STATIC(field->var_decl_node) = 1;
      DECL_PRESERVE_P (field->var_decl_node) = 1;
-     nvar += 1;
-     }
-   TRACE1
-     {
-     TRACE1_INDENT
-     TRACE1_TEXT("Finished")
-     TRACE1_END
      }
    }
  #endif
  
--- 16775,16787 ----
      TREE_USED(field->var_decl_node) = 1;
      TREE_STATIC(field->var_decl_node) = 1;
      DECL_PRESERVE_P (field->var_decl_node) = 1;
      }
+ //  TRACE1
+ //    {
+ //    TRACE1_INDENT
+ //    TRACE1_TEXT("Finished")
+ //    TRACE1_END
+ //    }
    }
  #endif
  
*************** parser_local_add(struct cbl_field_t *new
*** 16159,16164 ****
--- 16795,16802 ----
      SHOW_PARSE_END
      }
  
+   CHECK_FIELD(new_var);
+ 
    IF( member(new_var->var_decl_node, "data"),
        ne_op,
        gg_cast(UCHAR_P, null_pointer_node) )
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16211,16243 ****
      {
      do
        {
!       fprintf(stderr, "( %d ) %s():", CURRENT_LINE_NUMBER, __func__);
        }
      while(0);
  
!     fprintf(stderr, " %2.2d %s<%s> off:%zd "
!                     "msiz:%d cap:%d dig:%d rdig:%d attr:0x%lx loc:%p",
              new_var->level,
              new_var->name,
              cbl_field_type_str(new_var->type),
!             new_var->offset,
              new_var->data.memsize,
              new_var->data.capacity,
              new_var->data.digits,
              new_var->data.rdigits,
!             new_var->attr,
!             (void*)new_var);
  
      if( is_table(new_var) )
        {
!       fprintf(stderr," OCCURS:%zd", new_var->occurs.ntimes());
        }
!     cbl_field_t *parent = parent_of(new_var);
      if( parent )
        {
        fprintf(stderr,
!               " parent:(%zd)%s",
!               new_var->parent,
                parent->name);
        }
      else
--- 16849,16882 ----
      {
      do
        {
!       fprintf(stderr, "( %d ) %s:", CURRENT_LINE_NUMBER, __func__);
        }
      while(0);
  
!     fprintf(stderr, " %2.2u %s<%s> off:" HOST_SIZE_T_PRINT_UNSIGNED " "
!                     "msiz:%u cap:%u dig:%u rdig:%d attr:0x" HOST_SIZE_T_PRINT_HEX_PURE " loc:%p",
              new_var->level,
              new_var->name,
              cbl_field_type_str(new_var->type),
!             (fmt_size_t)new_var->offset,
              new_var->data.memsize,
              new_var->data.capacity,
              new_var->data.digits,
              new_var->data.rdigits,
!             (fmt_size_t)new_var->attr,
!             static_cast<void*>(new_var));
  
      if( is_table(new_var) )
        {
!       fprintf(stderr," OCCURS:" HOST_SIZE_T_PRINT_DEC,
!               (fmt_size_t)new_var->occurs.ntimes());
        }
!     const cbl_field_t *parent = parent_of(new_var);
      if( parent )
        {
        fprintf(stderr,
!               " parent:(" HOST_SIZE_T_PRINT_DEC ")%s",
!               (fmt_size_t)new_var->parent,
                parent->name);
        }
      else
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16246,16257 ****
        size_t parent_index = new_var->parent;
        if( parent_index )
          {
!         symbol_elem_t *e = symbol_at(parent_index);
          if( e->type == SymFile )
            {
            fprintf(stderr,
!                   " parent_file:(%zd)%s",
!                   new_var->parent,
                    e->elem.file.name);
            if( e->elem.file.attr & external_e )
              {
--- 16885,16896 ----
        size_t parent_index = new_var->parent;
        if( parent_index )
          {
!         const symbol_elem_t *e = symbol_at(parent_index);
          if( e->type == SymFile )
            {
            fprintf(stderr,
!                   " parent_file:(" HOST_SIZE_T_PRINT_DEC ")%s",
!                   (fmt_size_t)new_var->parent,
                    e->elem.file.name);
            if( e->elem.file.attr & external_e )
              {
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16265,16271 ****
        {
        fprintf(stderr,
                " redefines:(%p)%s",
!               (void*)symbol_redefines(new_var),
                symbol_redefines(new_var)->name);
        }
  
--- 16904,16910 ----
        {
        fprintf(stderr,
                " redefines:(%p)%s",
!               static_cast<void*>(symbol_redefines(new_var)),
                symbol_redefines(new_var)->name);
        }
  
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16348,16354 ****
      //  Make sure we have a new variable to work with.
      if( !new_var )
        {
!       cbl_internal_error("parser_symbol_add() was called with a NULL new_var\n");
        }
  
      TRACE1
--- 16987,16993 ----
      //  Make sure we have a new variable to work with.
      if( !new_var )
        {
!       cbl_internal_error("%<parser_symbol_add()%> was called with a NULL %<new_var%>");
        }
  
      TRACE1
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16365,16374 ****
        TRACE1_TEXT_ABC(" (", cbl_field_type_str(new_var->type) ,")")
        if( new_var->type == FldLiteralN)
          {
          gg_fprintf( trace_handle,
                      1, " [%ld]",
!                     build_int_cst_type(LONG,
!                                         *(const long *)new_var->data.initial));
          }
        TRACE1_END
        }
--- 17004,17015 ----
        TRACE1_TEXT_ABC(" (", cbl_field_type_str(new_var->type) ,")")
        if( new_var->type == FldLiteralN)
          {
+         const void *p1 = (new_var->data.initial);
+         const long *pldata = static_cast<const long *>(p1);
+         long ldata = *pldata;
          gg_fprintf( trace_handle,
                      1, " [%ld]",
!                     build_int_cst_type(LONG, ldata));
          }
        TRACE1_END
        }
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16376,16382 ****
      if( is_table(new_var) && new_var->data.capacity == 0)
        {
        cbl_internal_error(
!           "%s(): %2.2d %s is a table, but it improperly has a capacity of zero",
             __func__,
             new_var->level,
             new_var->name);
--- 17017,17023 ----
      if( is_table(new_var) && new_var->data.capacity == 0)
        {
        cbl_internal_error(
!           "%s: %d %s is a table, but it improperly has a capacity of zero",
             __func__,
             new_var->level,
             new_var->name);
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16416,16438 ****
  
      if( ancestor == new_var )
        {
!       cbl_internal_error("parser_symbol_add(): %s is its own ancestor",
!                           new_var->name);
        }
  
      if( !ancestor && (new_var->level > LEVEL01 && new_var->level <= LEVEL49 ) )
        {
!       cbl_internal_error("parser_symbol_add(): %2.2d %s has null ancestor",
!             new_var->level,
!             new_var->name);
        }
  
      //  new_var's var_decl_node should be NULL at this point
      if( new_var->var_decl_node )
        {
!       cbl_internal_error( "parser_symbol_add( %s ) improperly has a non-null "
!              "var_decl_node\n",
!              new_var->name);
        }
  
      switch( new_var->type )
--- 17057,17076 ----
  
      if( ancestor == new_var )
        {
!       cbl_internal_error("%s: %s is its own ancestor", __func__, new_var->name);
        }
  
      if( !ancestor && (new_var->level > LEVEL01 && new_var->level <= LEVEL49 ) )
        {
!       cbl_internal_error("%s: %d %qs has NULL ancestor", __func__,
!                          new_var->level, new_var->name);
        }
  
      //  new_var's var_decl_node should be NULL at this point
      if( new_var->var_decl_node )
        {
!       cbl_internal_error( "%s(%s) improperly has a non-null "
!                           "%<var_decl_node%>", __func__, new_var->name);
        }
  
      switch( new_var->type )
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16535,16558 ****
  
      size_t our_index = new_var->our_index;
  
-     // During the early stages of implementing cbl_field_t::our_index, there
-     // were execution paths in parse.y and parser.cc that resulted in our_index
-     // not being set.  I hereby try to use field_index() to find the index
-     // of this field to resolve those.  I note that field_index does a linear
-     // search of the symbols[] table to find that index.  That's why I don't
-     // use it routinely; it results in O(N^squared) computational complexity
-     // to do a linear search of the symbol table for each symbol
- 
      if(   !our_index
            && new_var->type != FldLiteralN
            && !(new_var->attr & intermediate_e))
        {
!       our_index = field_index(new_var);
!       if( our_index == (size_t)-1 )
!         {
!         // Hmm.  Couldn't find it.  Seems odd.
!         our_index = 0;
!         }
        }
  
      // When we create the cblc_field_t structure, we need a data pointer
--- 17173,17187 ----
  
      size_t our_index = new_var->our_index;
  
      if(   !our_index
            && new_var->type != FldLiteralN
            && !(new_var->attr & intermediate_e))
        {
!       // During the early stages of implementing cbl_field_t::our_index, there
!       // were execution paths in parse.y and parser.cc that resulted in
!       // our_index not being set.  Those should be gone.
!       fprintf(stderr, "our_index is NULL under unanticipated circumstances");
!       gcc_assert(false);
        }
  
      // When we create the cblc_field_t structure, we need a data pointer
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16561,16567 ****
      // we calculate data as the pointer to our parent's data plus our
      // offset.
  
!     // declare and define the structure.  This code *must* match
      // the C structure declared in libgcobol.c.  Towards that end, the
      // variables are declared in descending order of size in order to
      // make the packing match up.
--- 17190,17196 ----
      // we calculate data as the pointer to our parent's data plus our
      // offset.
  
!     // Declare and define the structure.  This code *must* match
      // the C structure declared in libgcobol.c.  Towards that end, the
      // variables are declared in descending order of size in order to
      // make the packing match up.
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16635,16641 ****
          && new_var->type  != FldLiteralN
          && new_var->type  != FldLiteralA )
        {
!       cbl_internal_error(  "%s(): %2.2d %s<%s> improperly has a data.capacity of zero",
                __func__,
                new_var->level,
                new_var->name,
--- 17264,17270 ----
          && new_var->type  != FldLiteralN
          && new_var->type  != FldLiteralA )
        {
!       cbl_internal_error(  "%s: %d %s<%s> improperly has a data.capacity of zero",
                __func__,
                new_var->level,
                new_var->name,
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16655,16664 ****
      if( *external_record_base )
        {
        char achDataName[256];
!       if( *external_record_base )
!         {
!         sprintf(achDataName, "__%s_vardata", external_record_base);
!         }
        tree array_type = build_array_type_nelts(UCHAR, new_var->data.capacity);
        new_var->data_decl_node = gg_define_variable(
                            array_type,
--- 17284,17290 ----
      if( *external_record_base )
        {
        char achDataName[256];
!       sprintf(achDataName, "__%s_vardata", external_record_base);
        tree array_type = build_array_type_nelts(UCHAR, new_var->data.capacity);
        new_var->data_decl_node = gg_define_variable(
                            array_type,
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16705,16715 ****
  
          if( !bytes_to_allocate )
            {
!           fprintf(stderr,
!                   "bytes_to_allocate is zero for %s (symbol number %ld)\n",
!                   new_var->name,
!                   new_var->our_index);
!           gcc_assert(bytes_to_allocate);
            }
  
          if( new_var->type == FldIndex && new_var->level == 0 )
--- 17331,17340 ----
  
          if( !bytes_to_allocate )
            {
!           cbl_internal_error( "%<bytes_to_allocate%> is zero for %s (symbol number "
!                               HOST_SIZE_T_PRINT_DEC ")",
!                               new_var->name,
!                               (fmt_size_t)new_var->our_index);
            }
  
          if( new_var->type == FldIndex && new_var->level == 0 )
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16742,16757 ****
              {
              // Avoid doubling up on leading underscore
              sprintf(achDataName,
!                     "%s_data_%lu",
                      new_var->name,
!                     sv_data_name_counter++);
              }
            else
              {
              sprintf(achDataName,
!                     "_%s_data_%lu",
                      new_var->name,
!                     sv_data_name_counter++);
              }
  
            if( new_var->attr & external_e )
--- 17367,17382 ----
              {
              // Avoid doubling up on leading underscore
              sprintf(achDataName,
!                     "%s_data_" HOST_SIZE_T_PRINT_UNSIGNED,
                      new_var->name,
!                     (fmt_size_t)sv_data_name_counter++);
              }
            else
              {
              sprintf(achDataName,
!                     "_%s_data_" HOST_SIZE_T_PRINT_UNSIGNED,
                      new_var->name,
!                     (fmt_size_t)sv_data_name_counter++);
              }
  
            if( new_var->attr & external_e )
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16780,16786 ****
  
      if( new_var->data.initial )
        {
!       new_initial = initial_from_float128(new_var);
        }
      if( new_initial )
        {
--- 17405,17411 ----
  
      if( new_var->data.initial )
        {
!       new_initial = initial_from_initial(new_var);
        }
      if( new_initial )
        {
*************** parser_symbol_add(struct cbl_field_t *ne
*** 16800,16848 ****
      else
        {
        new_initial = new_var->data.initial;
-       if( !new_initial )
-         {
-         if( length_of_initial_string )
-           {
-           gcc_unreachable();
-           }
-         }
-       else
-         {
-         if( new_var->type == FldLiteralN )
-           {
-           // We need to convert this string to the internal character set
-           // char *buffer = NULL;
-           // size_t buffer_size = 0;
-           // raw_to_internal(&buffer,
-                           // &buffer_size,
-                           // new_var->data.initial,
-                           // strlen(new_var->data.initial));
-           // new_initial = bufer;
-           // length_of_initial_string = strlen(new_var->data.initial)+1;
-           }
-         }
        }
  
      actual_allocate:
!     // if( level_88_string )
!       // {
!       // actually_create_the_static_field( new_var,
!                                         // data_area,
!                                         // level_88_string_size,
!                                         // level_88_string,
!                                         // immediate_parent,
!                                         // new_var_decl);
!       // }
!     // else
!       {
!       actually_create_the_static_field( new_var,
!                                         data_area,
!                                         length_of_initial_string,
!                                         new_initial,
!                                         immediate_parent,
!                                         new_var_decl);
!       }
  
      if( level_88_string )
        {
--- 17425,17439 ----
      else
        {
        new_initial = new_var->data.initial;
        }
  
      actual_allocate:
!     actually_create_the_static_field( new_var,
!                                       data_area,
!                                       length_of_initial_string,
!                                       new_initial,
!                                       immediate_parent,
!                                       new_var_decl);
  
      if( level_88_string )
        {
diff -Nrcpad gcc-15-20250726/gcc/cobol/genapi.h gcc-15-20250809/gcc/cobol/genapi.h
*** gcc-15-20250726/gcc/cobol/genapi.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/genapi.h	Sat Aug  9 22:32:37 2025
***************
*** 7,13 ****
   *
   * * Redistributions of source code must retain the above copyright
   *   notice, this list of conditions and the following disclaimer.
!  * * Redistributions in binary form must reproduce the above
   *   copyright notice, this list of conditions and the following disclaimer
   *   in the documentation and/or other materials provided with the
   *   distribution.
--- 7,13 ----
   *
   * * Redistributions of source code must retain the above copyright
   *   notice, this list of conditions and the following disclaimer.
!  * * Redistributions in binary form must reproduce the above`
   *   copyright notice, this list of conditions and the following disclaimer
   *   in the documentation and/or other materials provided with the
   *   distribution.
*************** void parser_division( cbl_division_t div
*** 52,68 ****
  void parser_enter_program(const char *funcname, bool is_function, int *retval);
  void parser_leave_program();
  
! void parser_accept( cbl_refer_t refer, special_name_t special_e);
  void parser_accept_exception( cbl_label_t *name );
  void parser_accept_exception_end( cbl_label_t *name );
  
! void parser_accept_envar( cbl_refer_t refer, cbl_refer_t envar,
!                           cbl_label_t *error, cbl_label_t *not_error );
! void parser_set_envar( cbl_refer_t envar, cbl_refer_t refer );
  
! void parser_accept_command_line( cbl_refer_t tgt, cbl_refer_t src,
!                           cbl_label_t *error, cbl_label_t *not_error );
! void parser_accept_command_line_count( cbl_refer_t tgt );
  
  void parser_accept_date_yymmdd( cbl_field_t *tgt );
  void parser_accept_date_yyyymmdd( cbl_field_t *tgt );
--- 52,77 ----
  void parser_enter_program(const char *funcname, bool is_function, int *retval);
  void parser_leave_program();
  
! void parser_accept( const cbl_refer_t &refer,
!                     special_name_t special_e,
!                     cbl_label_t *error,
!                     cbl_label_t *not_error );
  void parser_accept_exception( cbl_label_t *name );
  void parser_accept_exception_end( cbl_label_t *name );
  
! void parser_accept_under_discussion(struct cbl_refer_t tgt, special_name_t special,
!                                     cbl_label_t *error, cbl_label_t *not_error );
! void parser_accept_envar( const cbl_refer_t &refer,
!                           const cbl_refer_t &envar,
!                           cbl_label_t *error,
!                           cbl_label_t *not_error );
! void parser_set_envar( const cbl_refer_t &envar, const cbl_refer_t &refer );
  
! void parser_accept_command_line(const cbl_refer_t &tgt,
!                                 const cbl_refer_t &src,
!                                 cbl_label_t *error,
!                                 cbl_label_t *not_error );
! void parser_accept_command_line_count( const cbl_refer_t &tgt );
  
  void parser_accept_date_yymmdd( cbl_field_t *tgt );
  void parser_accept_date_yyyymmdd( cbl_field_t *tgt );
*************** parser_add( size_t nC, cbl_num_result_t
*** 86,93 ****
              size_t nA, cbl_refer_t *A,
              cbl_arith_format_t format,
              cbl_label_t *error,
!             cbl_label_t *not_error,
!             void *compute_error = NULL);  // This has to be cast to a tree pointer to int
  
  void parser_arith_error( cbl_label_t *name );
  void parser_arith_error_end( cbl_label_t *name );
--- 95,101 ----
              size_t nA, cbl_refer_t *A,
              cbl_arith_format_t format,
              cbl_label_t *error,
!             cbl_label_t *not_error,            void *compute_error = NULL);  // This has to be cast to a tree pointer to int
  
  void parser_arith_error( cbl_label_t *name );
  void parser_arith_error_end( cbl_label_t *name );
*************** parser_divide(size_t nC, cbl_num_result_
*** 119,144 ****
                void *compute_error = NULL);  // This has to be cast to a tree pointer to int
  
  void
! parser_add( struct cbl_refer_t tgt,
!             struct cbl_refer_t a, struct cbl_refer_t b,
              enum cbl_round_t = truncation_e );
  
  void
! parser_subtract( struct cbl_refer_t tgt,
!                  struct cbl_refer_t a, struct cbl_refer_t b,
                   enum cbl_round_t = truncation_e );
  
  void
! parser_multiply( struct cbl_refer_t tgt,
!                  struct cbl_refer_t a, struct cbl_refer_t b,
                   enum cbl_round_t = truncation_e );
  
  void
! parser_divide( struct cbl_refer_t quotient,
!                struct cbl_refer_t divisor,
!                struct cbl_refer_t dividend,
                 enum cbl_round_t = truncation_e,
!                struct cbl_refer_t remainder = cbl_refer_t());
  
  // void
  // parser_exponentiation(  cbl_refer_t cref,
--- 127,152 ----
                void *compute_error = NULL);  // This has to be cast to a tree pointer to int
  
  void
! parser_add( const cbl_refer_t& tgt,
!             const cbl_refer_t& a,  const cbl_refer_t& b,
              enum cbl_round_t = truncation_e );
  
  void
! parser_subtract( const cbl_refer_t& tgt,
!                  const cbl_refer_t& a,  const cbl_refer_t& b,
                   enum cbl_round_t = truncation_e );
  
  void
! parser_multiply( const cbl_refer_t& tgt,
!                  const cbl_refer_t& a,  const cbl_refer_t& b,
                   enum cbl_round_t = truncation_e );
  
  void
! parser_divide( const cbl_refer_t& quotient,
!                const cbl_refer_t& divisor,
!                const cbl_refer_t& dividend,
                 enum cbl_round_t = truncation_e,
!                const cbl_refer_t& remainder = cbl_refer_t());
  
  // void
  // parser_exponentiation(  cbl_refer_t cref,
*************** parser_bitwise_op(struct cbl_field_t *tg
*** 174,180 ****
  
  void
  parser_classify( struct cbl_field_t *tgt,
!                  struct cbl_refer_t  srca,  enum classify_t type );
  
  void
  parser_op( struct cbl_refer_t cref,
--- 182,189 ----
  
  void
  parser_classify( struct cbl_field_t *tgt,
!            const struct cbl_refer_t &srca,
!                  enum                classify_t type );
  
  void
  parser_op( struct cbl_refer_t cref,
*************** parser_perform_conditional_end( struct c
*** 225,231 ****
   * For an in-line loop body, tgt->from.type == LblLoop, and tgt->to is NULL.
   */
  void
! parser_perform( struct cbl_perform_tgt_t *tgt, struct cbl_refer_t N );
  
  /*
   * A simple UNTIL loop uses 1 varys element.  For VARY loops, the
--- 234,240 ----
   * For an in-line loop body, tgt->from.type == LblLoop, and tgt->to is NULL.
   */
  void
! parser_perform( const cbl_perform_tgt_t *tgt, cbl_refer_t N );
  
  /*
   * A simple UNTIL loop uses 1 varys element.  For VARY loops, the
*************** parser_program_hierarchy( const struct c
*** 253,270 ****
  void
  parser_end_program(const char *name=NULL);
  
! void parser_sleep(cbl_refer_t seconds);
  
! void parser_exit( cbl_refer_t refer, ec_type_t = ec_none_e );
  void parser_exit_section(void);
  void parser_exit_paragraph(void);
  void parser_exit_perform( struct cbl_perform_tgt_t *tgt, bool cycle );
  void parser_exit_program(void); // exits back to COBOL only, else continue
  
  void
  parser_display( const struct cbl_special_name_t *upon,
!                 struct cbl_refer_t args[], size_t n,
!                 bool advance = DISPLAY_ADVANCE );
  
  void parser_display_field(cbl_field_t *fld);
  
--- 262,284 ----
  void
  parser_end_program(const char *name=NULL);
  
! void parser_sleep(const cbl_refer_t &seconds);
  
! void parser_exit( const cbl_refer_t& refer, ec_type_t = ec_none_e );
  void parser_exit_section(void);
  void parser_exit_paragraph(void);
  void parser_exit_perform( struct cbl_perform_tgt_t *tgt, bool cycle );
  void parser_exit_program(void); // exits back to COBOL only, else continue
  
  void
+ parser_exhibit( bool changed, bool named,
+                 const std::vector<cbl_refer_t> &args );
+ void
  parser_display( const struct cbl_special_name_t *upon,
!                 const std::vector<cbl_refer_t> &args,
!                 bool advance = DISPLAY_ADVANCE,
!           const cbl_label_t *not_error = nullptr,
!           const cbl_label_t *compute_error = nullptr );
  
  void parser_display_field(cbl_field_t *fld);
  
*************** void
*** 297,306 ****
  parser_symbol_add(struct cbl_field_t *field);
  
  void
! parser_initialize(struct cbl_refer_t refer, bool like_parser_symbol_add=false);
  
  void
! parser_initialize_programs(size_t nprog, struct cbl_refer_t *progs);
  
  void
  parser_label_label( struct cbl_label_t *label );
--- 311,320 ----
  parser_symbol_add(struct cbl_field_t *field);
  
  void
! parser_initialize(const cbl_refer_t& refer, bool like_parser_symbol_add=false);
  
  void
! parser_initialize_programs(size_t nprog, const struct cbl_refer_t *progs);
  
  void
  parser_label_label( struct cbl_label_t *label );
*************** void
*** 315,321 ****
  parser_alter( cbl_perform_tgt_t *tgt );
  
  void
! parser_set_conditional88( struct cbl_refer_t tgt, bool which_way );
  void
  parser_set_numeric(struct cbl_field_t *tgt, ssize_t value);
  
--- 329,335 ----
  parser_alter( cbl_perform_tgt_t *tgt );
  
  void
! parser_set_conditional88( const cbl_refer_t& tgt, bool which_way );
  void
  parser_set_numeric(struct cbl_field_t *tgt, ssize_t value);
  
*************** void
*** 406,419 ****
  parser_sort(cbl_refer_t table,
              bool duplicates,
              cbl_alphabet_t *alphabet,
!             size_t nkey,
!             cbl_key_t *keys );
  void
  parser_file_sort(   cbl_file_t *file,
                      bool duplicates,
                      cbl_alphabet_t *alphabet,
!                     size_t nkey,
!                     cbl_key_t *keys,
                      size_t ninput,
                      cbl_file_t **inputs,
                      size_t noutput,
--- 420,431 ----
  parser_sort(cbl_refer_t table,
              bool duplicates,
              cbl_alphabet_t *alphabet,
!             const std::vector<cbl_key_t>& keys );
  void
  parser_file_sort(   cbl_file_t *file,
                      bool duplicates,
                      cbl_alphabet_t *alphabet,
!                     const std::vector<cbl_key_t>& keys,
                      size_t ninput,
                      cbl_file_t **inputs,
                      size_t noutput,
*************** parser_file_sort(   cbl_file_t *file,
*** 423,430 ****
  void
  parser_file_merge(  cbl_file_t *file,
                      cbl_alphabet_t *alphabet,
!                     size_t nkey,
!                     cbl_key_t *keys,
                      size_t ninput,
                      cbl_file_t **inputs,
                      size_t noutput,
--- 435,441 ----
  void
  parser_file_merge(  cbl_file_t *file,
                      cbl_alphabet_t *alphabet,
!                     const std::vector<cbl_key_t>& keys,
                      size_t ninput,
                      cbl_file_t **inputs,
                      size_t noutput,
*************** parser_intrinsic_numval_c( cbl_field_t *
*** 450,456 ****
  
  void
  parser_intrinsic_subst( cbl_field_t *f,
!                         cbl_refer_t& ref1,
                          size_t argc,
                          cbl_substitute_t * argv );
  
--- 461,467 ----
  
  void
  parser_intrinsic_subst( cbl_field_t *f,
!                   const cbl_refer_t& ref1,
                          size_t argc,
                          cbl_substitute_t * argv );
  
*************** void
*** 492,503 ****
  parser_string_overflow_end( cbl_label_t *name );
  
  void
! parser_string(  cbl_refer_t tgt,
!                 cbl_refer_t pointer,
!                 size_t nsource,
!                 cbl_string_src_t *sources,
!                 cbl_label_t *overflow,
!                 cbl_label_t *not_overflow );
  
  void
  parser_unstring( cbl_refer_t src,
--- 503,514 ----
  parser_string_overflow_end( cbl_label_t *name );
  
  void
! parser_string(const cbl_refer_t& tgt,
!               const cbl_refer_t& pointer,
!               size_t nsource,
!               cbl_string_src_t *sources,
!               cbl_label_t *overflow,
!               cbl_label_t *not_overflow );
  
  void
  parser_unstring( cbl_refer_t src,
*************** void parser_return_atend( cbl_file_t *fi
*** 518,530 ****
  void parser_return_notatend( cbl_file_t *file );
  void parser_return_finish( cbl_file_t *file );
  
- void parser_exception_prepare( const cbl_name_t statement_name,
-                                const cbl_enabled_exceptions_array_t *enabled );
- 
- //void parser_exception_condition( cbl_field_t *ec );
- 
  struct cbl_exception_file;
- struct cbl_exception_files_t;
  
  void parser_exception_raise(ec_type_t ec);
  
--- 529,535 ----
*************** void parser_call_exception_end( cbl_labe
*** 533,542 ****
  
  //void parser_stash_exceptions(const cbl_enabled_exceptions_array_t *enabled);
  
! void parser_match_exception(cbl_field_t *index,
!                             cbl_field_t *blob);
  void parser_check_fatal_exception();
  void parser_clear_exception();
  
  void parser_call_targets_dump();
  size_t parser_call_target_update( size_t caller,
--- 538,548 ----
  
  //void parser_stash_exceptions(const cbl_enabled_exceptions_array_t *enabled);
  
! void parser_match_exception(cbl_field_t *index);
  void parser_check_fatal_exception();
  void parser_clear_exception();
+ void parser_push_exception();
+ void parser_pop_exception();
  
  void parser_call_targets_dump();
  size_t parser_call_target_update( size_t caller,
*************** void parser_entry_activate( size_t iprog
*** 557,563 ****
  void parser_entry( cbl_field_t *name,
                     size_t narg = 0, cbl_ffi_arg_t args[] = NULL);
  
! bool is_ascending_key(cbl_refer_t key);
  
  void register_main_switch(const char *main_string);
  
--- 563,569 ----
  void parser_entry( cbl_field_t *name,
                     size_t narg = 0, cbl_ffi_arg_t args[] = NULL);
  
! bool is_ascending_key(const cbl_refer_t& key);
  
  void register_main_switch(const char *main_string);
  
*************** void parser_print_long(const char *fmt,
*** 569,576 ****
  void parser_print_string(const char *ach);
  void parser_print_string(const char *fmt, const char *ach); // fmt needs to have a %s in it
  void parser_set_statement(const char *statement);
- void parser_set_handled(ec_type_t ec_handled);
- void parser_set_file_number(int file_number);
  void parser_exception_clear();
  
  void parser_init_list_size(int count_of_variables);
--- 575,580 ----
*************** void parser_init_list();
*** 579,584 ****
  
  tree file_static_variable(tree type, const char *name);
  
! void parser_statement_begin();
  
  #endif
--- 583,591 ----
  
  tree file_static_variable(tree type, const char *name);
  
! void parser_statement_begin( const cbl_name_t name, tree ecs, tree dcls );
! 
! tree parser_compile_ecs( const std::vector<uint64_t>& ecs );
! tree parser_compile_dcls( const std::vector<uint64_t>& dcls );
  
  #endif
diff -Nrcpad gcc-15-20250726/gcc/cobol/gengen.cc gcc-15-20250809/gcc/cobol/gengen.cc
*** gcc-15-20250726/gcc/cobol/gengen.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/gengen.cc	Sat Aug  9 22:32:37 2025
***************
*** 107,114 ****
  // Don't like it?  Cry me a river.
  static const int ARG_LIMIT = 512;
  
- static int sv_current_line_number;
- 
  // These are globally useful constants
  tree char_nodes[256];
  
--- 107,112 ----
*************** tree bool_false_node;
*** 136,141 ****
--- 134,147 ----
  
  struct cbl_translation_unit_t gg_trans_unit;
  
+ // This set is used to prevent duplicated top-level program names from breaking
+ // the compiler when a source code module makes that mistake.
+ static std::unordered_set<std::string> names_we_have_seen;
+ 
+ // This vector is used to process the function_decls at the point we leave
+ // the file.
+ static std::vector<tree> finalized_function_decls;
+ 
  void
  gg_build_translation_unit(const char *filename)
    {
*************** gg_append_var_decl(tree var_decl)
*** 257,270 ****
      }
    }
  
- location_t
- location_from_lineno()
-   {
-   location_t loc;
-   loc = linemap_line_start(line_table, sv_current_line_number, 0);
-   return loc;
-   }
- 
  void
  gg_append_statement(tree stmt)
    {
--- 263,268 ----
*************** adjust_for_type(tree type)
*** 354,366 ****
    return retval;
    }
  
- static
  char *
! show_type(tree type)
    {
    if( !type )
      {
!     cbl_internal_error("The given type is not NULL, and that's just not fair");
      }
  
    if( DECL_P(type) )
--- 352,363 ----
    return retval;
    }
  
  char *
! gg_show_type(tree type)
    {
    if( !type )
      {
!     cbl_internal_error("The given type is NULL, and that is just not fair");
      }
  
    if( DECL_P(type) )
*************** show_type(tree type)
*** 369,382 ****
      }
    if( !TYPE_P(type) )
      {
!     cbl_internal_error("The given type is not a DECL or a TYPE");
      }
  
!   static char ach[1024];
    switch( TREE_CODE(type) )
      {
      case POINTER_TYPE:
!       sprintf(ach, "POINTER");
        break;
  
      case VOID_TYPE:
--- 366,382 ----
      }
    if( !TYPE_P(type) )
      {
!     cbl_internal_error("The given type is not a declaration or a TYPE");
      }
  
!   static char ach[1100];
!   static char ach2[1024];
!   static char ach3[1024];
    switch( TREE_CODE(type) )
      {
      case POINTER_TYPE:
!       strcpy(ach2, gg_show_type(TREE_TYPE(type)));
!       sprintf(ach, "POINTER to %s", ach2);
        break;
  
      case VOID_TYPE:
*************** show_type(tree type)
*** 393,415 ****
  
      case REAL_TYPE:
        sprintf(ach,
!               "%3ld-bit REAL",
                TREE_INT_CST_LOW(TYPE_SIZE(type)));
        break;
  
      case INTEGER_TYPE:
        sprintf(ach,
!               "%3ld-bit %s INT",
                TREE_INT_CST_LOW(TYPE_SIZE(type)),
                (TYPE_UNSIGNED(type) ? "unsigned" : "  signed"));
        break;
  
      case FUNCTION_TYPE:
!       sprintf(ach, "FUNCTION");
! //      sprintf(ach,
! //              "%3ld-bit %s INT",
! //              TREE_INT_CST_LOW(TYPE_SIZE(type)),
! //              (TYPE_UNSIGNED(type) ? "unsigned" : "  signed"));
        break;
  
      default:
--- 393,412 ----
  
      case REAL_TYPE:
        sprintf(ach,
!               "%3" PRId64 "-bit REAL",
                TREE_INT_CST_LOW(TYPE_SIZE(type)));
        break;
  
      case INTEGER_TYPE:
        sprintf(ach,
!               "%3" PRId64 "-bit %s INT",
                TREE_INT_CST_LOW(TYPE_SIZE(type)),
                (TYPE_UNSIGNED(type) ? "unsigned" : "  signed"));
        break;
  
      case FUNCTION_TYPE:
!       strcpy(ach3, gg_show_type(TREE_TYPE(type)));
!       sprintf(ach, "FUNCTION returning %s", ach3);
        break;
  
      default:
*************** show_type(tree type)
*** 419,425 ****
    return ach;
    }
  
! void
  gg_assign(tree dest, const tree source)
    {
    // This does the equivalent of a C/C++ "dest = source".  When X1 is set, it
--- 416,422 ----
    return ach;
    }
  
! tree
  gg_assign(tree dest, const tree source)
    {
    // This does the equivalent of a C/C++ "dest = source".  When X1 is set, it
*************** gg_assign(tree dest, const tree source)
*** 430,435 ****
--- 427,433 ----
    // This routine also provides for the possibility that the assignment is
    // for a source that is a function invocation, as in
    //    "dest = function_call()"
+   tree stmt = NULL_TREE;
  
    saw_pointer = false;
    tree dest_type = adjust_for_type(TREE_TYPE(dest));
*************** gg_assign(tree dest, const tree source)
*** 452,462 ****
  
    if( okay )
      {
!     tree stmt = build2_loc( location_from_lineno(),
!                             MODIFY_EXPR,
!                             TREE_TYPE(dest),
!                             dest,
!                             source);
      gg_append_statement(stmt);
      }
    else
--- 450,460 ----
  
    if( okay )
      {
!     stmt = build2_loc(gg_token_location(),
!                       MODIFY_EXPR,
!                       TREE_TYPE(dest),
!                       dest,
!                       source);
      gg_append_statement(stmt);
      }
    else
*************** gg_assign(tree dest, const tree source)
*** 465,484 ****
      // the same.  This is a compilation-time error, since we want the caller to
      // have sorted the types out explicitly.  If we don't throw an error here,
      // the gimple reduction will do so.  Better to do it here, when we know
!     // where we are.
!     dbgmsg("Inefficient assignment");
!     if(DECL_P(dest) && DECL_NAME(dest))
!       {
!       dbgmsg("   Destination is %s", IDENTIFIER_POINTER(DECL_NAME(dest)));
!       }
!     dbgmsg("   dest type   is %s%s", show_type(dest_type), p2 ? "_P" : "");
!     if(DECL_P(source) && DECL_NAME(source))
        {
!       dbgmsg("   Source      is %s", IDENTIFIER_POINTER(DECL_NAME(source)));
        }
!     dbgmsg("   source type is %s%s", show_type(source_type), p2 ? "_P" : "");
!     gcc_unreachable();
      }
    }
  
  tree
--- 463,487 ----
      // the same.  This is a compilation-time error, since we want the caller to
      // have sorted the types out explicitly.  If we don't throw an error here,
      // the gimple reduction will do so.  Better to do it here, when we know
!     // where we are.S
!     static const int debugging = 1;
!     if( debugging )
        {
!       fprintf(stderr, "Inefficient assignment\n");
!       if(DECL_P(dest) && DECL_NAME(dest))
!         {
!         fprintf(stderr, "   Destination is %s\n", IDENTIFIER_POINTER(DECL_NAME(dest)));
!         }
!       fprintf(stderr, "   dest type   is %s%s\n", gg_show_type(dest_type), p2 ? "_P" : "");
!       if(DECL_P(source) && DECL_NAME(source))
!         {
!         fprintf(stderr, "   Source      is %s\n", IDENTIFIER_POINTER(DECL_NAME(source)));
!         }
!       fprintf(stderr, "   source type is %s%s\n", gg_show_type(source_type), p2 ? "_P" : "");
        }
!     cbl_internal_error("Attempting an assignment of differing types.");
      }
+   return stmt;
    }
  
  tree
*************** gg_find_field_in_struct(const tree base,
*** 520,527 ****
  
    if( !field_decl )
      {
!     yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
!     yywarn("###### Somebody asked for the field %s.%s, which doesn't exist",
            IDENTIFIER_POINTER(DECL_NAME(base)),
            field_name);
      gcc_unreachable();
--- 523,529 ----
  
    if( !field_decl )
      {
!     yywarn("Somebody asked for the field %s.%s, which does not exist",
            IDENTIFIER_POINTER(DECL_NAME(base)),
            field_name);
      gcc_unreachable();
*************** gg_add_field_to_structure(const tree typ
*** 612,618 ****
    tree id_of_field = get_identifier (name_of_field);
  
    // Create the new field:
!   tree new_field_decl = build_decl(   location_from_lineno(),
                                        FIELD_DECL,
                                        id_of_field,
                                        type_of_field);
--- 614,620 ----
    tree id_of_field = get_identifier (name_of_field);
  
    // Create the new field:
!   tree new_field_decl = build_decl(   gg_token_location(),
                                        FIELD_DECL,
                                        id_of_field,
                                        type_of_field);
*************** gg_create_assembler_name(const char *cob
*** 889,898 ****
  static char *
  gg_unique_in_function(const char *var_name, gg_variable_scope_t vs_scope)
    {
!   char *retval = (char *)xmalloc(strlen(var_name)+32);
    if( (vs_scope == vs_stack || vs_scope == vs_static) )
      {
!     sprintf(retval, "%s.%ld", var_name, current_function->program_id_number);
      }
    else
      {
--- 891,901 ----
  static char *
  gg_unique_in_function(const char *var_name, gg_variable_scope_t vs_scope)
    {
!   char *retval = static_cast<char *>(xmalloc(strlen(var_name)+32));
    if( (vs_scope == vs_stack || vs_scope == vs_static) )
      {
!     sprintf(retval, "%s." HOST_SIZE_T_PRINT_DEC, var_name,
!             (fmt_size_t)current_function->program_id_number);
      }
    else
      {
*************** gg_declare_variable(tree type_decl,
*** 932,938 ****
    // causes the storage to be allocated.
  
    // It is routine to let the compiler assign names to stack variables.  The
!   // assembly code doesn't use names for variables on the stack; they are
    // referenced by offsets to the base pointer.  But static variables have to
    // have names, and there are places in my code generation -- Lord only knows
    // why -- where I didn't give the variables explicit names.  We remedy that
--- 935,941 ----
    // causes the storage to be allocated.
  
    // It is routine to let the compiler assign names to stack variables.  The
!   // assembly code does not use names for variables on the stack; they are
    // referenced by offsets to the base pointer.  But static variables have to
    // have names, and there are places in my code generation -- Lord only knows
    // why -- where I didn't give the variables explicit names.  We remedy that
*************** gg_declare_variable(tree type_decl,
*** 1023,1032 ****
        break;
      }
    DECL_INITIAL(var_decl) = initial_value;
!   if( unique_name )
!     {
!     free(unique_name);
!     }
    return var_decl;
    }
  
--- 1026,1032 ----
        break;
      }
    DECL_INITIAL(var_decl) = initial_value;
!   free(unique_name);
    return var_decl;
    }
  
*************** gg_define_from_declaration(tree var_decl
*** 1041,1047 ****
      {
      // Having made sure the chain of variable declarations is nicely started,
      // it's time to actually define the storage with a decl_expression:
!     tree stmt = build1_loc (location_from_lineno(),
                              DECL_EXPR,
                              TREE_TYPE(var_decl),
                              var_decl);
--- 1041,1047 ----
      {
      // Having made sure the chain of variable declarations is nicely started,
      // it's time to actually define the storage with a decl_expression:
!     tree stmt = build1_loc (gg_token_location(),
                              DECL_EXPR,
                              TREE_TYPE(var_decl),
                              var_decl);
*************** gg_build_relational_expression(tree oper
*** 1772,1778 ****
        compare = LE_EXPR;
        break;
      }
!   tree relational_expression = build2_loc(location_from_lineno(),
                                            compare,
                                            boolean_type_node,
                                            operand_a,
--- 1772,1778 ----
        compare = LE_EXPR;
        break;
      }
!   tree relational_expression = build2_loc(gg_token_location(),
                                            compare,
                                            boolean_type_node,
                                            operand_a,
*************** gg_create_goto_pair(tree *goto_expr,
*** 1889,1895 ****
  void
  gg_goto_label_decl(tree label_decl)
    {
!   tree goto_expr  = build1_loc( location_from_lineno(),
                                  GOTO_EXPR,
                                  void_type_node,
                                  label_decl);
--- 1889,1895 ----
  void
  gg_goto_label_decl(tree label_decl)
    {
!   tree goto_expr  = build1_loc( gg_token_location(),
                                  GOTO_EXPR,
                                  void_type_node,
                                  label_decl);
*************** gg_create_goto_pair(tree *goto_expr, tre
*** 1936,1942 ****
  void
  gg_goto(tree var_decl_pointer)
    {
!   tree go_to = build1_loc(location_from_lineno(),
                            GOTO_EXPR,
                            void_type_node,
                            var_decl_pointer);
--- 1936,1942 ----
  void
  gg_goto(tree var_decl_pointer)
    {
!   tree go_to = build1_loc(gg_token_location(),
                            GOTO_EXPR,
                            void_type_node,
                            var_decl_pointer);
*************** gg_printf(const char *format_string, ...
*** 2151,2168 ****
    int nargs = 0;
    tree args[ARG_LIMIT];
  
-   // Because this routine is intended for debugging, we are sending the
-   // text to STDERR
- 
-   // Because we don't actually use stderr ourselves, we just pick it up as a
-   // VOID_P and pass it along to fprintf()
-   tree t_stderr = gg_declare_variable(VOID_P, "stderr",
-                                       NULL_TREE,
-                                       vs_external_reference);
- 
-   gg_push_context();
- 
-   args[nargs++] = t_stderr;
    args[nargs++] = build_string_literal(strlen(format_string)+1, format_string);
  
    va_list ap;
--- 2151,2156 ----
*************** gg_printf(const char *format_string, ...
*** 2172,2179 ****
      {
      if(nargs >= ARG_LIMIT)
        {
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
!       yywarn("###### You *must* be joking!");
        gcc_unreachable();
        }
  
--- 2160,2166 ----
      {
      if(nargs >= ARG_LIMIT)
        {
!       yywarn("You *must* be joking");
        gcc_unreachable();
        }
  
*************** gg_printf(const char *format_string, ...
*** 2181,2190 ****
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You nitwit!");
!       yywarn("You forgot to put a NULL_TREE at the end of a "
!                   "gg_printf() again!");
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
        gcc_unreachable();
        }
  
--- 2168,2175 ----
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You forgot to put a %<NULL_TREE%> at the end of a "
!                   "%<gg_printf()%> again");
        gcc_unreachable();
        }
  
*************** gg_printf(const char *format_string, ...
*** 2196,2212 ****
    static tree function = NULL_TREE;
    if( !function )
      {
!     function = gg_get_function_address(INT, "fprintf");
      }
  
!   tree stmt = build_call_array_loc (location_from_lineno(),
                                      INT,
                                      function,
                                      nargs,
                                      args);
    gg_append_statement(stmt);
- 
-   gg_pop_context();
    }
  
  tree
--- 2181,2195 ----
    static tree function = NULL_TREE;
    if( !function )
      {
!     function = gg_get_function_address(INT, "__gg__fprintf_stderr");
      }
  
!   tree stmt = build_call_array_loc (gg_token_location(),
                                      INT,
                                      function,
                                      nargs,
                                      args);
    gg_append_statement(stmt);
    }
  
  tree
*************** gg_fprintf(tree fd, int nargs, const cha
*** 2232,2239 ****
      {
      if(argc >= ARG_LIMIT)
        {
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
!       yywarn("###### You *must* be joking!");
        gcc_unreachable();
        }
  
--- 2215,2221 ----
      {
      if(argc >= ARG_LIMIT)
        {
!       yywarn("You *must* be joking");
        gcc_unreachable();
        }
  
*************** gg_fprintf(tree fd, int nargs, const cha
*** 2249,2255 ****
      function = gg_get_function_address(INT, "sprintf");
      }
  
!   tree stmt = build_call_array_loc (location_from_lineno(),
                                      INT,
                                      function,
                                      argc,
--- 2231,2237 ----
      function = gg_get_function_address(INT, "sprintf");
      }
  
!   tree stmt = build_call_array_loc (gg_token_location(),
                                      INT,
                                      function,
                                      argc,
*************** void
*** 2296,2302 ****
  gg_memset(tree dest, const tree value, tree size)
    {
    tree the_call =
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_MEMSET),
                            3,
                            dest,
--- 2278,2284 ----
  gg_memset(tree dest, const tree value, tree size)
    {
    tree the_call =
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_MEMSET),
                            3,
                            dest,
*************** gg_memchr(tree buf, tree ch, tree length
*** 2310,2316 ****
    {
    tree the_call = fold_convert(
        pvoid_type_node,
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_MEMCHR),
                            3,
                            buf,
--- 2292,2298 ----
    {
    tree the_call = fold_convert(
        pvoid_type_node,
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_MEMCHR),
                            3,
                            buf,
*************** void
*** 2325,2331 ****
  gg_memcpy(tree dest, const tree src, tree size)
    {
    tree the_call = build_call_expr_loc(
!         location_from_lineno(),
          builtin_decl_explicit (BUILT_IN_MEMCPY),
          3,
          dest,
--- 2307,2313 ----
  gg_memcpy(tree dest, const tree src, tree size)
    {
    tree the_call = build_call_expr_loc(
!         gg_token_location(),
          builtin_decl_explicit (BUILT_IN_MEMCPY),
          3,
          dest,
*************** void
*** 2340,2346 ****
  gg_memmove(tree dest, const tree src, tree size)
    {
    tree the_call = build_call_expr_loc(
!         location_from_lineno(),
          builtin_decl_explicit (BUILT_IN_MEMMOVE),
          3,
          dest,
--- 2322,2328 ----
  gg_memmove(tree dest, const tree src, tree size)
    {
    tree the_call = build_call_expr_loc(
!         gg_token_location(),
          builtin_decl_explicit (BUILT_IN_MEMMOVE),
          3,
          dest,
*************** void
*** 2373,2379 ****
  gg_strcpy(tree dest, tree src)
    {
    tree the_call =
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_STRCPY),
                            2,
                            dest,
--- 2355,2361 ----
  gg_strcpy(tree dest, tree src)
    {
    tree the_call =
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRCPY),
                            2,
                            dest,
*************** gg_strcmp(tree A, tree B)
*** 2386,2392 ****
    {
    tree the_call = fold_convert(
        integer_type_node,
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_STRCMP),
                            2,
                            A,
--- 2368,2374 ----
    {
    tree the_call = fold_convert(
        integer_type_node,
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRCMP),
                            2,
                            A,
*************** gg_strncmp(tree char_star_A, tree char_s
*** 2418,2424 ****
    {
    tree the_call = fold_convert(
        integer_type_node,
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_STRNCMP),
                            3,
                            char_star_A,
--- 2400,2406 ----
    {
    tree the_call = fold_convert(
        integer_type_node,
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRNCMP),
                            3,
                            char_star_A,
*************** gg_return(tree operand)
*** 2449,2455 ****
      {
      // When there is no operand, or if the function result is void, then
      // we just generate a return_expr.
!     stmt = build1_loc(location_from_lineno(), RETURN_EXPR, void_type_node, NULL_TREE);
      }
    else
      {
--- 2431,2437 ----
      {
      // When there is no operand, or if the function result is void, then
      // we just generate a return_expr.
!     stmt = build1_loc(gg_token_location(), RETURN_EXPR, void_type_node, NULL_TREE);
      }
    else
      {
*************** gg_return(tree operand)
*** 2459,2465 ****
                              function_type,
                              DECL_RESULT(current_function->function_decl),
                              gg_cast(function_type, operand));
!     stmt = build1_loc(location_from_lineno(), RETURN_EXPR, void_type_node, modify);
      }
    gg_append_statement(stmt);
    }
--- 2441,2447 ----
                              function_type,
                              DECL_RESULT(current_function->function_decl),
                              gg_cast(function_type, operand));
!     stmt = build1_loc(gg_token_location(), RETURN_EXPR, void_type_node, modify);
      }
    gg_append_statement(stmt);
    }
*************** gg_return(tree operand)
*** 2467,2473 ****
  void
  chain_parameter_to_function(tree function_decl, const tree param_type,  const char *name)
    {
!   tree parm = build_decl (location_from_lineno(),
                            PARM_DECL,
                            get_identifier (name),
                            param_type);
--- 2449,2455 ----
  void
  chain_parameter_to_function(tree function_decl, const tree param_type,  const char *name)
    {
!   tree parm = build_decl (gg_token_location(),
                            PARM_DECL,
                            get_identifier (name),
                            param_type);
*************** chain_parameter_to_function(tree functio
*** 2485,2655 ****
      }
    }
  
! void
! gg_modify_function_type(tree function_decl, tree return_type)
!   {
!   tree fndecl_type = build_varargs_function_type_array( return_type,
!                      0,     // No parameters yet
!                      NULL); // And, hence, no types
!   TREE_TYPE(function_decl)  = fndecl_type;
!   tree resdecl = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, return_type);
!   DECL_CONTEXT (resdecl) = function_decl;
!   DECL_RESULT (function_decl) = resdecl;
!   }
! 
! tree
! gg_define_function_with_no_parameters(tree return_type,
!                                       const char *funcname,
!                                       const char *unmangled_name)
!   {
!   // This routine builds a function_decl, puts it on the stack, and
!   // gives it a context.
  
!   // At this time we don't know how many parameters this function expects, so
!   // we set things up and we'll tack on the parameters later.
  
!   // Create the FUNCTION_TYPE for that array:
!   // int nparams = 1;
!   // tree types[1] = {VOID_P};
!   // const char *names[1] = {"_p1"};
  
!   // tree fndecl_type = build_varargs_function_type_array( return_type,
!   // nparams,
!   // types);
  
!   tree fndecl_type = build_varargs_function_type_array( return_type,
!                      0,     // No parameters yet
!                      NULL); // And, hence, no types
  
-   // Create the FUNCTION_DECL for that FUNCTION_TYPE
-   tree function_decl = build_fn_decl (funcname, fndecl_type);
  
!   // Some of this stuff is magical, and is based on compiling C programs
!   // and just mimicking the results.
!   TREE_ADDRESSABLE(function_decl) = 1;
!   TREE_STATIC(function_decl) = 1;
!   DECL_EXTERNAL (function_decl) = 0;
!   DECL_PRESERVE_P (function_decl) = 0;
!   DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(function_decl) = 1;
!   DECL_ARTIFICIAL(function_decl) = 0;
!   TREE_NOTHROW(function_decl) = 0;
!   TREE_USED(function_decl) = 1;
  
!   // This code makes COBOL nested programs actual visible on the
!   // source code "trans_unit_decl" level, but with non-public "static"
!   // visibility.
!   if( gg_trans_unit.function_stack.size() == 0 )
!     {
!     // gg_trans_unit.function_stack is empty, so our context is
!     // the compilation module, and we need to be public:
!     DECL_CONTEXT (function_decl) = gg_trans_unit.trans_unit_decl;
!     TREE_PUBLIC(function_decl) = 1;
!     }
!   else
!     {
!     // The stack has something in it, so we are building a nested function.
!     // Make the current function our context
!     DECL_CONTEXT (function_decl) = gg_trans_unit.trans_unit_decl;
!     TREE_PUBLIC(function_decl) = 0;
  
!     // This function is file static, but nobody calls it, so without
!     // intervention -O1+ optimizations will discard it.
!     DECL_PRESERVE_P (function_decl) = 1;
  
!     // Append this function to the list of functions and variables
!     // associated with the computation module.
!     gg_append_var_decl(function_decl);
      }
! 
!   // Establish the RESULT_DECL for the function:
!   tree resdecl = build_decl (location_from_lineno(), RESULT_DECL, NULL_TREE, return_type);
!   DECL_CONTEXT (resdecl) = function_decl;
!   DECL_RESULT (function_decl) = resdecl;
! 
!   // The function_decl has a .function member, a pointer to struct_function.
!   // This is quietly, almost invisibly, extremely important.  You need to
!   // call this routine after DECL_RESULT has been established:
! 
!   allocate_struct_function(function_decl, false);
! 
!   struct gg_function_t new_function = {};
!   new_function.context_count = 0;
!   new_function.function_decl = function_decl;
!   new_function.our_name = IDENTIFIER_POINTER(DECL_NAME(function_decl));
!   new_function.our_unmangled_name = xstrdup(unmangled_name);
!   new_function.function_address = gg_get_function_address(VOID, new_function.our_name);
! 
!   // Each program on the stack gets a unique identifier.  This is used, for
!   // example, to make sure that static variables have unique names.
!   static size_t program_id = 0;
!   new_function.program_id_number = program_id++;
! 
!   // With everything established, put this function_decl on the stack
!   gg_trans_unit.function_stack.push_back(new_function);
! 
!   // All we need is a context, and we are ready to go:
!   gg_push_context();
!   return function_decl;
    }
  
! void
! gg_tack_on_function_parameters(tree function_decl, ...)
    {
!   int nparams = 0;
! 
!   tree types[ARG_LIMIT];
!   const char *names[ARG_LIMIT];
  
!   va_list params;
!   va_start(params, function_decl);
!   for(;;)
      {
!     tree var_type = va_arg(params, tree);
!     if( !var_type )
!       {
!       break;
!       }
! 
!     if( TREE_CODE(var_type) >= NUM_TREE_CODES)
!       {
!       // Warning:  This test is not completely reliable, because a garbage
!       // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You nitwit!");
!       yywarn("You forgot to put a NULL_TREE at the end of a "
!                   "gg_define_function() again!");
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
!       gcc_unreachable();
!       }
  
!     const char *name = va_arg(params, const char *);
  
!     types[nparams] = var_type;
!     names[nparams] = name;
!     nparams += 1;
!     if(nparams > ARG_LIMIT)
!       {
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
!       yywarn("###### %d parameters?  Really?  Are you insane?",ARG_LIMIT+1);
!       gcc_unreachable();
!       }
!     }
!   va_end(params);
  
!   // Chain the names onto the variables list:
!   for(int i=0; i<nparams; i++)
!     {
!     chain_parameter_to_function(function_decl, types[i], names[i]);
      }
    }
  
! void
! gg_define_function(tree return_type, const char *funcname, ...)
    {
    // This routine builds a function_decl, puts it on the stack, and
    // gives it a context.
  
!   // After the funcname, we expect the formal parameters: pairs of types/names
!   // terminated by a NULL_TREE
  
    int nparams = 0;
  
--- 2467,2579 ----
      }
    }
  
! /*  There are five ways that we use function_decls:
  
!     1, We define a main() entry point.
!     2. We call a function that turns out to be a static "t" function local to the source code module.
!     3. We define an global "T" function, and possibly call it later.
!     4. We call a function that we define later in the source code module.
!     5. We call a function that ends up being an extern that is not defined in the source code module.
  
!     Cases 3. and 4. turn out to require the same flags.  Here are the combinations of
!     flags that are required for each flavor of function_decl.  This was empirically
!     determind by compiling a C++ program with sample code for each type.
  
!                             | addressable | used | nothrow | static | external | public | no_instrument
! main                        |             |      |         |   X    |          |   X    |    X
! local                       |  X          |  X   |   X     |   X    |          |        |    X
! external defined inside     |  X          |  X   |   X     |   X    |          |   X    |    X
! external defined elsewhere  |  X          |  X   |         |        |   X      |   X    |
  
! */
  
  
! static std::unordered_map<std::string, tree> map_of_function_decls;
  
! static
! std::string function_decl_key(const char *funcname, tree fndecl_type)
!   {
!   std::string retval;
!   retval += funcname;
!   retval += gg_show_type(TREE_TYPE(fndecl_type));
!   return retval;
!   }
  
! tree
! gg_peek_fn_decl(const char *funcname, tree fndecl_type)
!   {
!   // When funcname is found in map_of_function_decls, this routine returns
!   // the type of the return value of that function decl.
  
!   tree retval = NULL_TREE;
!   std::string key = function_decl_key(funcname, fndecl_type);
!   std::unordered_map<std::string, tree>::const_iterator it =
!           map_of_function_decls.find(key);
!   if( it != map_of_function_decls.end() )
!     {
!     // This function_decl has already been defined.
!     retval = TREE_TYPE(TREE_TYPE(it->second));
      }
!   return retval;
    }
  
! tree
! gg_build_fn_decl(const char *funcname, tree fndecl_type)
    {
!   tree function_decl;
  
!   std::string key = function_decl_key(funcname, fndecl_type);
!   std::unordered_map<std::string, tree>::const_iterator it =
!           map_of_function_decls.find(key);
!   if( it != map_of_function_decls.end() )
      {
!     // This function_decl has already been defined.  Just return it; the caller
!     // is responsible for modifying it, if necessary.
!     function_decl = it->second;
!     }
!   else
!     {
!     // When creating a never-seen function_decl, we default to the type used
!     // for calling a function defined elsewhere.  It's up to our caller to
!     // modify the flags, for example if this is part of creating a function.
  
!     function_decl = build_fn_decl(funcname, fndecl_type);
  
!     // These are the bits shown in the table in the comment up above
!     TREE_ADDRESSABLE(function_decl) = 1;
!     TREE_USED(function_decl) = 1;
!     TREE_NOTHROW(function_decl) = 0;
!     TREE_STATIC(function_decl) = 0;
!     DECL_EXTERNAL (function_decl) = 1;
!     TREE_PUBLIC (function_decl) = 1;
!     DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(function_decl) = 0;
  
!     DECL_PRESERVE_P (function_decl) = 0;
!     DECL_ARTIFICIAL(function_decl) = 0;
!     map_of_function_decls[key] = function_decl;
      }
+   return function_decl;
    }
  
! tree
! gg_define_function( tree return_type,
!                     const char *funcname,
!                     const char *unmangled_name,
!                     ...)
    {
    // This routine builds a function_decl, puts it on the stack, and
    // gives it a context.
  
!   // At this time we don't know how many parameters this function expects, so
!   // we set things up and we'll tack on the parameters later.
! 
!   /*  There is some bookkeeping we need to do to avoid crashing.
! 
!       It's possible for the source code to have two top-level functions with
!       the same name.  This is a compile-time error, but the GCC processing gets
!       upset when it happens.  We'll prevent it from happening here:
! 
!       */
  
    int nparams = 0;
  
*************** gg_define_function(tree return_type, con
*** 2657,2663 ****
    const char *names[ARG_LIMIT];
  
    va_list params;
!   va_start(params,funcname);
    for(;;)
      {
      tree var_type = va_arg(params, tree);
--- 2581,2587 ----
    const char *names[ARG_LIMIT];
  
    va_list params;
!   va_start(params, unmangled_name);
    for(;;)
      {
      tree var_type = va_arg(params, tree);
*************** gg_define_function(tree return_type, con
*** 2670,2679 ****
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You nitwit!");
!       yywarn("You forgot to put a NULL_TREE at the end of a "
!                   "gg_define_function() again!");
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
        gcc_unreachable();
        }
  
--- 2594,2601 ----
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You forgot to put a %<NULL_TREE%> at the end of a "
!                   "%<gg_define_function()%> again");
        gcc_unreachable();
        }
  
*************** gg_define_function(tree return_type, con
*** 2684,2715 ****
      nparams += 1;
      if(nparams > ARG_LIMIT)
        {
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
!       yywarn("###### %d parameters?  Really?  Are you insane?",
!                   ARG_LIMIT+1);
        gcc_unreachable();
        }
      }
    va_end(params);
  
!   // Create the FUNCTION_TYPE for that array:
    tree fndecl_type = build_varargs_function_type_array( return_type,
                       nparams,
                       types);
  
    // Create the FUNCTION_DECL for that FUNCTION_TYPE
!   tree function_decl = build_fn_decl (funcname, fndecl_type);
! 
!   // Some of this stuff is magical, and is based on compiling C programs
!   // and just mimicking the results.
!   TREE_ADDRESSABLE(function_decl) = 1;
!   TREE_STATIC(function_decl) = 1;
!   DECL_EXTERNAL (function_decl) = 0;
!   DECL_PRESERVE_P (function_decl) = 0;
!   DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(function_decl) = 1;
!   DECL_ARTIFICIAL(function_decl) = 0;
!   TREE_NOTHROW(function_decl) = 0;
!   TREE_USED(function_decl) = 1;
  
    // This code makes COBOL nested programs actual visible on the
    // source code "trans_unit_decl" level, but with non-public "static"
--- 2606,2638 ----
      nparams += 1;
      if(nparams > ARG_LIMIT)
        {
!       yywarn("%d parameters? Really? Are you insane?", ARG_LIMIT+1);
        gcc_unreachable();
        }
      }
    va_end(params);
  
!   char ach[32];
!   std::unordered_set<std::string>::const_iterator it =
!           names_we_have_seen.find(funcname);
!   if( it != names_we_have_seen.end() )
!     {
!     static int bum_counter = 1;
!     // We have seen this name before.  Replace it with something unique:
!     sprintf(ach, "..no_dupes.%d", bum_counter++);
!     funcname = ach;
!     }
!   else
!     {
!     names_we_have_seen.insert(funcname);
!     }
! 
    tree fndecl_type = build_varargs_function_type_array( return_type,
                       nparams,
                       types);
  
    // Create the FUNCTION_DECL for that FUNCTION_TYPE
!   tree function_decl = gg_build_fn_decl (funcname, fndecl_type);
  
    // This code makes COBOL nested programs actual visible on the
    // source code "trans_unit_decl" level, but with non-public "static"
*************** gg_define_function(tree return_type, con
*** 2717,2738 ****
    if( gg_trans_unit.function_stack.size() == 0 )
      {
      // gg_trans_unit.function_stack is empty, so our context is
!     // the compilation module, and we need to be public:
      DECL_CONTEXT (function_decl) = gg_trans_unit.trans_unit_decl;
-     TREE_PUBLIC(function_decl) = 1;
      }
    else
      {
!     // The stack has something in it, so we are building a nested function.
!     // Make the current function our context
!     DECL_CONTEXT (function_decl) = gg_trans_unit.trans_unit_decl;
! 
!     // We need to make it public, because otherwise COBOL CALL "func"
!     // won't be able to find it, because dlopen/dlsym won't find it.
!     TREE_PUBLIC(function_decl) = 0;
  
!     // Append this function to the list of functions and variables
!     // associated with the computation module.
      gg_append_var_decl(function_decl);
      }
  
--- 2640,2679 ----
    if( gg_trans_unit.function_stack.size() == 0 )
      {
      // gg_trans_unit.function_stack is empty, so our context is
!     // the compilation module, and we need to be public because this is a
!     // top-level function with global scope:
! 
!     // These are the bits shown in the table for gg_build_fn_decl()
!     TREE_ADDRESSABLE(function_decl) = 1;
!     TREE_USED(function_decl) = 1;
!     TREE_NOTHROW(function_decl) = 1;
!     TREE_STATIC(function_decl) = 1;
!     DECL_EXTERNAL (function_decl) = 0;
!     TREE_PUBLIC (function_decl) = 1;
!     DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(function_decl) = 1;
      DECL_CONTEXT (function_decl) = gg_trans_unit.trans_unit_decl;
      }
    else
      {
!     // The stack has something in it, so we are building a contained
!     // program-id.  Such function are implemented local static functions.
!     //
!     // It's not necessarily true that a static call to such a function will be
!     // part of the source code (the call can be through a variable), and so
!     // optimization routines can decide the function isn't used and can
!     // therefore be optimized away.  The preserve flag prevents that.
  
!     // These are the bits shown in the table for gg_build_fn_decl()
!     TREE_ADDRESSABLE(function_decl) = 1;
!     TREE_USED(function_decl) = 1;
!     TREE_NOTHROW(function_decl) = 1;
!     TREE_STATIC(function_decl) = 1;
!     DECL_EXTERNAL (function_decl) = 0;
!     TREE_PUBLIC (function_decl) = 0;
!     DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(function_decl) = 1;
!     DECL_CONTEXT (function_decl) = gg_trans_unit.trans_unit_decl;
!     DECL_CONTEXT(function_decl) = gg_trans_unit.trans_unit_decl;
!     DECL_PRESERVE_P (function_decl) = 1;
      gg_append_var_decl(function_decl);
      }
  
*************** gg_define_function(tree return_type, con
*** 2743,2749 ****
      }
  
    // Establish the RESULT_DECL for the function:
!   tree resdecl = build_decl (location_from_lineno(), RESULT_DECL, NULL_TREE, return_type);
    DECL_CONTEXT (resdecl) = function_decl;
    DECL_RESULT (function_decl) = resdecl;
  
--- 2684,2690 ----
      }
  
    // Establish the RESULT_DECL for the function:
!   tree resdecl = build_decl (gg_token_location(), RESULT_DECL, NULL_TREE, return_type);
    DECL_CONTEXT (resdecl) = function_decl;
    DECL_RESULT (function_decl) = resdecl;
  
*************** gg_define_function(tree return_type, con
*** 2756,2761 ****
--- 2697,2705 ----
    struct gg_function_t new_function = {};
    new_function.context_count = 0;
    new_function.function_decl = function_decl;
+   new_function.our_name = IDENTIFIER_POINTER(DECL_NAME(function_decl));
+   new_function.our_unmangled_name = xstrdup(unmangled_name);
+   new_function.function_address = gg_get_address_of(function_decl);
  
    // Each program on the stack gets a unique identifier.  This is used, for
    // example, to make sure that static variables have unique names.
*************** gg_define_function(tree return_type, con
*** 2767,2772 ****
--- 2711,2729 ----
  
    // All we need is a context, and we are ready to go:
    gg_push_context();
+   return function_decl;
+   }
+ 
+ void
+ gg_modify_function_type(tree function_decl, tree return_type)
+   {
+   tree fndecl_type = build_varargs_function_type_array( return_type,
+                      0,     // No parameters yet
+                      NULL); // And, hence, no types
+   TREE_TYPE(function_decl)  = fndecl_type;
+   tree resdecl = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, return_type);
+   DECL_CONTEXT (resdecl) = function_decl;
+   DECL_RESULT (function_decl) = resdecl;
    }
  
  tree
*************** gg_get_function_decl(tree return_type, c
*** 2798,2807 ****
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You nitwit!");
!       yywarn("You forgot to put a NULL_TREE at the end of a "
!             "gg_define_function() again!");
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
        gcc_unreachable();
        }
  
--- 2755,2762 ----
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You forgot to put a %<NULL_TREE%> at the end of a "
!             "%<gg_define_function()%> again");
        gcc_unreachable();
        }
  
*************** gg_get_function_decl(tree return_type, c
*** 2812,2819 ****
      nparams += 1;
      if(nparams > ARG_LIMIT)
        {
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
!       yywarn("###### %d parameters?  Really?  Are you insane?",
                    ARG_LIMIT+1);
        gcc_unreachable();
        }
--- 2767,2773 ----
      nparams += 1;
      if(nparams > ARG_LIMIT)
        {
!       yywarn("%d parameters? Really? Are you insane?",
                    ARG_LIMIT+1);
        gcc_unreachable();
        }
*************** gg_get_function_decl(tree return_type, c
*** 2862,2868 ****
      }
  
    // Establish the RESULT_DECL for the function:
!   tree resdecl = build_decl (location_from_lineno(), RESULT_DECL, NULL_TREE, return_type);
    DECL_CONTEXT (resdecl) = function_decl;
    DECL_RESULT (function_decl) = resdecl;
  
--- 2816,2822 ----
      }
  
    // Establish the RESULT_DECL for the function:
!   tree resdecl = build_decl (gg_token_location(), RESULT_DECL, NULL_TREE, return_type);
    DECL_CONTEXT (resdecl) = function_decl;
    DECL_RESULT (function_decl) = resdecl;
  
*************** gg_finalize_function()
*** 2888,2950 ****
    // Finish off the context
    gg_pop_context();
  
!   if( gg_trans_unit.function_stack.back().is_truly_nested )
!     {
!     // This code is for true nested functions.
! 
!     /////////  DANGER, WILL ROBINSON!
!     /////////  This is all well and good.  It does not, however, work.
!     /////////  I tried to implement it because I had a Brilliant Idea for
!     /////////  building COBOL paragraphs in a way that would easily allow
!     /////////  the GDB "NEXT" command to step over a PERFORM <paragraph>.
!     /////////  But, alas, I realized that it was just not going to work.
!     /////////
!     /////////  Pity.
!     /////////
!     /////////  But at that point, I was here, and I am leaving this uncooked
!     /////////  code in case I someday want to return to it.  If it becomes
!     /////////  your job, rather than mine, I encourage you to write a C
!     /////////  program that uses the GNU extensions that allow true nested
!     /////////  functions, and reverse engineer the "finish_function"
!     /////////  function, and get it working.
!     /////////
!     /////////  Good luck.  Bob Dubner, 2022-08-13
  
!     // Because this is a nested function, let's make sure that it actually
!     // has a function that it is nested within
!     gcc_assert(gg_trans_unit.function_stack.size() > 1 );
  
!     /* Genericize before inlining.  Delay genericizing nested functions
!        until their parent function is genericized.  Since finalizing
!        requires GENERIC, delay that as well.  */
  
!     // This is the comment in gcc/c/c-decl.c:
  
!     /* Register this function with cgraph just far enough to get it
!     added to our parent's nested function list.  Handy, since the
!     C front end doesn't have such a list.  */
  
!     static cgraph_node *node = cgraph_node::get_create (current_function->function_decl);
!     gcc_assert(node);
  
!     }
!   else
!     {
!     // This makes the function visible on the source code module level.
!     cgraph_node::finalize_function (current_function->function_decl, true);
!     }
  
    dump_function (TDI_original, current_function->function_decl);
  
    if( gg_trans_unit.function_stack.back().context_count )
      {
!     cbl_internal_error("Residual context count!");
      }
  
    gg_trans_unit.function_stack.pop_back();
    }
  
  void
  gg_push_context()
    {
    // Sit back, relax, prepare to be amazed.
--- 2842,2914 ----
    // Finish off the context
    gg_pop_context();
  
!   /*  Because COBOL functions can be misleadingly referenced before they
!     defined, and because our compiler is single pass, we need to defer
!     actually passing the function_decls to the middle end until we are
!     done with the entire compilation unit.
  
!     An actual example:
  
!       IDENTIFICATION DIVISION.
!       PROGRAM-ID. A.
!       DATA DIVISION.
!       WORKING-STORAGE SECTION.
!       01  CWD          PIC X(100).
!       01  LEN_OF_CWD   PIC 999 VALUE 100.
!       PROCEDURE DIVISION.
!           CALL    "getcwd" USING BY REFERENCE CWD BY VALUE LEN_OF_CWD
!           DISPLAY CWD
!           goback.
!       END PROGRAM A.
!       IDENTIFICATION DIVISION.
!       PROGRAM-ID. B.
!       DATA DIVISION.
!       WORKING-STORAGE SECTION.
!       01  CWD          PIC X(100).
!       01  RETURNED-CWD PIC X(100).
!       01  LEN_OF_CWD   PIC 999 VALUE 100.
!       PROCEDURE DIVISION.
!           CALL    "getcwd" USING BY REFERENCE CWD BY VALUE LEN_OF_CWD RETURNING RETURNED-CWD
!           DISPLAY RETURNED-CWD
!           goback.
!       END PROGRAM B.
  
!     When we encounter the first call to getcwd, we have no clue as to the
!     type of the return value, so we assume it is COBOL_FUNCTION_RETURN_TYPE
  
!     When we encounter the second call, we learn that it returns CHAR_P. But
!     an attempt to change the return type of the function_decl will result
!     in problems if the function_decl of A is processed by the middle end
!     before we get a chance to change the getcwd functiona_decl.
  
!     Hence the need for finalized_function_decls, which gets processed
!     at the end of the file.  */
  
!   finalized_function_decls.push_back(current_function->function_decl);
  
    dump_function (TDI_original, current_function->function_decl);
  
    if( gg_trans_unit.function_stack.back().context_count )
      {
!     cbl_internal_error("Residual context count");
      }
  
    gg_trans_unit.function_stack.pop_back();
    }
  
  void
+ gg_leaving_the_source_code_file()
+   {
+   for(  std::vector<tree>::const_iterator it=finalized_function_decls.begin();
+         it != finalized_function_decls.end();
+         it++ )
+     {
+     //This makes the function visible on the source code module level.
+     cgraph_node::finalize_function(*it, true);
+     }
+   }
+ 
+ void
  gg_push_context()
    {
    // Sit back, relax, prepare to be amazed.
*************** gg_call_expr(tree return_type, const cha
*** 3083,3096 ****
      {
      if(nargs >= ARG_LIMIT)
        {
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
!       yywarn("###### You *must* be joking!");
        gcc_unreachable();
        }
  
      tree arg = va_arg(ap, tree);
  
!     if( !arg )
        {
        break;
        }
--- 3047,3059 ----
      {
      if(nargs >= ARG_LIMIT)
        {
!       yywarn("You *must* be joking");
        gcc_unreachable();
        }
  
      tree arg = va_arg(ap, tree);
  
!     if( arg == NULL_TREE )
        {
        break;
        }
*************** gg_call_expr(tree return_type, const cha
*** 3111,3117 ****
    tree the_func_addr = build1(ADDR_EXPR,
                                build_pointer_type (TREE_TYPE(function_decl)),
                                function_decl);
!   tree the_call = build_call_array_loc(location_from_lineno(),
                                         return_type,
                                         the_func_addr,
                                         nargs,
--- 3074,3080 ----
    tree the_func_addr = build1(ADDR_EXPR,
                                build_pointer_type (TREE_TYPE(function_decl)),
                                function_decl);
!   tree the_call = build_call_array_loc(gg_token_location(),
                                         return_type,
                                         the_func_addr,
                                         nargs,
*************** gg_call(tree return_type, const char *fu
*** 3140,3153 ****
      {
      if(nargs >= ARG_LIMIT)
        {
!       yywarn("###### %10s in %s:%d", __func__, __FILE__,__LINE__ );
!       yywarn("###### You *must* be joking!");
        gcc_unreachable();
        }
  
      tree arg = va_arg(ap, tree);
  
!     if( !arg )
        {
        break;
        }
--- 3103,3115 ----
      {
      if(nargs >= ARG_LIMIT)
        {
!       yywarn("You *must* be joking");
        gcc_unreachable();
        }
  
      tree arg = va_arg(ap, tree);
  
!     if( arg == NULL_TREE )
        {
        break;
        }
*************** gg_call(tree return_type, const char *fu
*** 3168,3174 ****
    tree the_func_addr = build1(ADDR_EXPR,
                                build_pointer_type (TREE_TYPE(function_decl)),
                                function_decl);
!   tree the_call = build_call_array_loc(location_from_lineno(),
                                         return_type,
                                         the_func_addr,
                                         nargs,
--- 3130,3136 ----
    tree the_func_addr = build1(ADDR_EXPR,
                                build_pointer_type (TREE_TYPE(function_decl)),
                                function_decl);
!   tree the_call = build_call_array_loc(gg_token_location(),
                                         return_type,
                                         the_func_addr,
                                         nargs,
*************** gg_call(tree return_type, const char *fu
*** 3178,3184 ****
    }
  
  tree
! gg_call_expr_list(tree return_type, tree function_name, int param_count, tree args[])
    {
    // Generalized caller. param_count is the count of params in the arg[]]
  
--- 3140,3146 ----
    }
  
  tree
! gg_call_expr_list(tree return_type, tree function_pointer, int param_count, tree args[])
    {
    // Generalized caller. param_count is the count of params in the arg[]]
  
*************** gg_call_expr_list(tree return_type, tree
*** 3193,3201 ****
    // Avoid that with something like
    //      gg_assign( dest, gg_call_expr_list(...) );
  
!   tree the_call = build_call_array_loc(location_from_lineno(),
                                         return_type,
!                                        function_name,
                                         param_count,
                                         args);
    // This routine returns the call_expr; the caller will have to deal with it
--- 3155,3163 ----
    // Avoid that with something like
    //      gg_assign( dest, gg_call_expr_list(...) );
  
!   tree the_call = build_call_array_loc(gg_token_location(),
                                         return_type,
!                                        function_pointer,
                                         param_count,
                                         args);
    // This routine returns the call_expr; the caller will have to deal with it
*************** void
*** 3228,3234 ****
  gg_exit(tree exit_code)
    {
    tree the_call =
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_EXIT),
                            1,
                            exit_code);
--- 3190,3196 ----
  gg_exit(tree exit_code)
    {
    tree the_call =
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_EXIT),
                            1,
                            exit_code);
*************** void
*** 3239,3245 ****
  gg_abort()
    {
    tree the_call =
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_ABORT),
                            0);
    gg_append_statement(the_call);
--- 3201,3207 ----
  gg_abort()
    {
    tree the_call =
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_ABORT),
                            0);
    gg_append_statement(the_call);
*************** gg_strlen(tree psz)
*** 3250,3256 ****
    {
    tree the_call = fold_convert(
        size_type_node,
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_STRLEN),
                            1,
                            psz));
--- 3212,3218 ----
    {
    tree the_call = fold_convert(
        size_type_node,
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRLEN),
                            1,
                            psz));
*************** gg_strdup(tree psz)
*** 3262,3268 ****
    {
    tree the_call = fold_convert(
        build_pointer_type(char_type_node),
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_STRDUP),
                            1,
                            psz));
--- 3224,3230 ----
    {
    tree the_call = fold_convert(
        build_pointer_type(char_type_node),
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRDUP),
                            1,
                            psz));
*************** gg_malloc(tree size)
*** 3276,3282 ****
    {
    tree the_call = fold_convert(
        pvoid_type_node,
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_MALLOC),
                            1,
                            size));
--- 3238,3244 ----
    {
    tree the_call = fold_convert(
        pvoid_type_node,
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_MALLOC),
                            1,
                            size));
*************** gg_realloc(tree base, tree size)
*** 3288,3294 ****
    {
    tree the_call = fold_convert(
        pvoid_type_node,
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_REALLOC),
                            2,
                            base,
--- 3250,3256 ----
    {
    tree the_call = fold_convert(
        pvoid_type_node,
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_REALLOC),
                            2,
                            base,
*************** void
*** 3312,3318 ****
  gg_free(tree pointer)
    {
    tree the_call =
!       build_call_expr_loc(location_from_lineno(),
                            builtin_decl_explicit (BUILT_IN_FREE),
                            1,
                            pointer);
--- 3274,3280 ----
  gg_free(tree pointer)
    {
    tree the_call =
!       build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_FREE),
                            1,
                            pointer);
*************** gg_string_literal(const char *string)
*** 3413,3430 ****
    return build_string_literal(strlen(string)+1, string);
    }
  
- void
- gg_set_current_line_number(int line_number)
-   {
-   sv_current_line_number = line_number;
-   }
- 
- int
- gg_get_current_line_number()
-   {
-   return sv_current_line_number;
-   }
- 
  tree
  gg_trans_unit_var_decl(const char *var_name)
    {
--- 3375,3380 ----
*************** gg_trans_unit_var_decl(const char *var_n
*** 3437,3444 ****
    return NULL_TREE;
    }
  
  void
! gg_insert_into_assembler(const char *format, ...)
    {
    // Temporarily defeat all ASM_EXPR for optimized code per PR119214
    // The correct solution using LABEL_DECL is forthcoming
--- 3387,3417 ----
    return NULL_TREE;
    }
  
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wsuggest-attribute=format"
+ 
  void
! gg_insert_into_assembler(const char ach[])
!   {
!   if( !optimize )
!     {
!     // Create the required generic tag
!     tree asm_expr = build5_loc( gg_token_location(),
!                             ASM_EXPR,
!                             VOID,
!                             build_string(strlen(ach), ach),
!                             NULL_TREE,
!                             NULL_TREE,
!                             NULL_TREE,
!                             NULL_TREE);
! 
!     // And insert it as a statement
!     gg_append_statement(asm_expr);
!     }
!   }
! 
! void
! gg_insert_into_assemblerf(const char *format, ...)
    {
    // Temporarily defeat all ASM_EXPR for optimized code per PR119214
    // The correct solution using LABEL_DECL is forthcoming
*************** gg_insert_into_assembler(const char *for
*** 3457,3474 ****
      vsnprintf(ach, sizeof(ach), format, ap);
      va_end(ap);
  
!     // Create the required generic tag
!     tree asm_expr = build5_loc( location_from_lineno(),
!                             ASM_EXPR,
!                             VOID,
!                             build_string(strlen(ach), ach),
!                             NULL_TREE,
!                             NULL_TREE,
!                             NULL_TREE,
!                             NULL_TREE);
!     //SET_EXPR_LOCATION (asm_expr, UNKNOWN_LOCATION);
  
!     // And insert it as a statement
!     gg_append_statement(asm_expr);
      }
    }
--- 3430,3460 ----
      vsnprintf(ach, sizeof(ach), format, ap);
      va_end(ap);
  
!     gg_insert_into_assembler(ach);
!     }
!   }
! #pragma GCC diagnostic pop
  
! static location_t sv_token_location_override = 0;
! 
! void
! token_location_override(location_t loc)
!   {
!   sv_token_location_override = loc;
!   }
! 
! location_t
! gg_token_location()
!   {
!   location_t retval;
!   if( sv_token_location_override )
!     {
!     retval = sv_token_location_override;
!     sv_token_location_override = 0;
      }
+   else
+     {
+     retval = current_token_location();
+     }
+   return retval;
    }
diff -Nrcpad gcc-15-20250726/gcc/cobol/gengen.h gcc-15-20250809/gcc/cobol/gengen.h
*** gcc-15-20250726/gcc/cobol/gengen.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/gengen.h	Sat Aug  9 22:32:37 2025
*************** struct gg_function_t
*** 206,216 ****
      // logical way: All programs are siblings, with the context being the source
      // code module.  The nested aspect is not reflected in the GENERIC tree.
  
-     // Truly nested functions are implemented within the generic tree; the
-     // nested function is completely inside the outer function.  This was
-     // implemented to support paragraphs as callable entities.
-     bool is_truly_nested;
- 
      // This variable, which appears on the stack, contains the exit_address
      // for the terminating proc of a PERFORM A or PERFORM A THROUGH B
      tree perform_exit_address;
--- 206,211 ----
*************** extern tree gg_trunc(tree integer_type,
*** 300,306 ****
  extern tree gg_cast(tree type, tree var);
  
  // Assignment, that is to say, A = B
! extern void gg_assign(tree dest, const tree source);
  
  // struct creation and field access
  // Create struct, and access a field in a struct
--- 295,301 ----
  extern tree gg_cast(tree type, tree var);
  
  // Assignment, that is to say, A = B
! extern tree gg_assign(tree dest, const tree source);
  
  // struct creation and field access
  // Create struct, and access a field in a struct
*************** extern tree gg_strncmp(tree char_star_A,
*** 456,468 ****
  extern void gg_return(tree operand = NULL_TREE);
  
  // These routines are the preample and postamble that bracket everything else
! extern void gg_define_function(tree return_type, const char *funcname, ...);
! extern tree gg_define_function_with_no_parameters(tree return_type,
!                                                   const char *funcname,
!                                                   const char *unmangled_name);
  extern void chain_parameter_to_function( tree function_decl,
                                          const tree param_type,
                                          const char *name);
  
  extern void gg_finalize_function();
  extern void gg_push_context();
--- 451,466 ----
  extern void gg_return(tree operand = NULL_TREE);
  
  // These routines are the preample and postamble that bracket everything else
! extern tree gg_build_fn_decl(const char *funcname, tree fndecl_type);
! extern tree gg_peek_fn_decl(const char *funcname);
! extern tree gg_define_function( tree return_type,
!                                 const char *funcname,
!                                 const char *unmangled_name,
!                                 ...);
  extern void chain_parameter_to_function( tree function_decl,
                                          const tree param_type,
                                          const char *name);
+ extern void gg_modify_function_type(tree function_decl, tree return_type);
  
  extern void gg_finalize_function();
  extern void gg_push_context();
*************** extern void gg_pop_context();
*** 471,477 ****
  // These are a generalized call constructor.  The first for when you just want
  // the function called, because you don't care about the return value.  The others
  // are for when you do need the return value.
! extern tree gg_call_expr_list(tree return_type,        tree function_name, int param_count, tree[]);
  
  // The following is a garden-variety call, with known return type and known
  // but in the case where the return value is unimportant.
--- 469,477 ----
  // These are a generalized call constructor.  The first for when you just want
  // the function called, because you don't care about the return value.  The others
  // are for when you do need the return value.
! extern tree gg_call_expr_list(tree return_type,
!                               tree function_pointer,
!                               int param_count, tree[]);
  
  // The following is a garden-variety call, with known return type and known
  // but in the case where the return value is unimportant.
*************** void gg_goto(tree pointer);
*** 505,513 ****
  void gg_record_statement_list_start();
  tree gg_record_statement_list_finish();
  
- // These routines are in support of PERFORM PARAGRAPH
- extern tree gg_get_function_decl(tree return_type, const char *funcname, ...);
- 
  // Used to call system exit()
  extern void gg_exit(tree exit_code);
  extern void gg_abort();
--- 505,510 ----
*************** extern tree gg_indirect(tree pointer, tr
*** 528,544 ****
  extern tree gg_string_literal(const char *string);
  
  #define CURRENT_LINE_NUMBER (cobol_location().first_line)
! location_t location_from_lineno();
! 
! // When set to true, use UNKNOWN_LOCATION instead of CURRENT_LINE_NUMBER
! extern void gg_set_current_line_number(int line_number);
! extern int  gg_get_current_line_number();
  
  extern tree gg_trans_unit_var_decl(const char *var_name);
  
! tree gg_open(tree char_star_A, tree int_B);
! tree gg_close(tree int_A);
! tree gg_get_indirect_reference(tree pointer, tree offset);
! void gg_insert_into_assembler(const char *format, ...);
! void gg_modify_function_type(tree function_decl, tree return_type);
  #endif
--- 525,545 ----
  extern tree gg_string_literal(const char *string);
  
  #define CURRENT_LINE_NUMBER (cobol_location().first_line)
! extern location_t gg_token_location();
! extern location_t current_token_location();
! extern location_t current_location_minus_one();
! extern void current_location_minus_one_clear();
! extern void token_location_override(location_t loc);
  
  extern tree gg_trans_unit_var_decl(const char *var_name);
  
! extern tree gg_open(tree char_star_A, tree int_B);
! extern tree gg_close(tree int_A);
! extern tree gg_get_indirect_reference(tree pointer, tree offset);
! 
! extern void gg_insert_into_assembler(const char ach[]);
! extern void gg_insert_into_assemblerf(const char *format, ...) ATTRIBUTE_PRINTF_1;
! 
! extern char *gg_show_type(tree type);
! extern void gg_leaving_the_source_code_file();
  #endif
diff -Nrcpad gcc-15-20250726/gcc/cobol/genmath.cc gcc-15-20250809/gcc/cobol/genmath.cc
*** gcc-15-20250726/gcc/cobol/genmath.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/genmath.cc	Sat Aug  9 22:32:37 2025
*************** set_up_on_exception_label(cbl_label_t *a
*** 52,58 ****
      if( !arithmetic_label->structs.arith_error )
        {
        arithmetic_label->structs.arith_error
!         = (cbl_arith_error_t *)xmalloc(sizeof(struct cbl_arith_error_t) );
        // Set up the address pairs for this clause
        gg_create_goto_pair(&arithmetic_label->structs.arith_error->over.go_to,
                            &arithmetic_label->structs.arith_error->over.label);
--- 52,59 ----
      if( !arithmetic_label->structs.arith_error )
        {
        arithmetic_label->structs.arith_error
!         = static_cast<cbl_arith_error_t *>
!                                   (xmalloc(sizeof(struct cbl_arith_error_t)));
        // Set up the address pairs for this clause
        gg_create_goto_pair(&arithmetic_label->structs.arith_error->over.go_to,
                            &arithmetic_label->structs.arith_error->over.label);
*************** set_up_compute_error_label(cbl_label_t *
*** 72,79 ****
      if( !compute_label->structs.compute_error )
        {
        compute_label->structs.compute_error
!         = (cbl_compute_error_t *)
!           xmalloc(sizeof(struct cbl_compute_error_t) );
        compute_label->structs.compute_error->compute_error_code
          = gg_define_int(0);
        }
--- 73,80 ----
      if( !compute_label->structs.compute_error )
        {
        compute_label->structs.compute_error
!         = static_cast<cbl_compute_error_t *>
!           (xmalloc(sizeof(struct cbl_compute_error_t)));
        compute_label->structs.compute_error->compute_error_code
          = gg_define_int(0);
        }
*************** arithmetic_operation(size_t nC, cbl_num_
*** 95,102 ****
                        size_t nA, cbl_refer_t *A,
                        size_t nB, cbl_refer_t *B,
                        cbl_arith_format_t format,
!                       cbl_label_t *error,
!                       cbl_label_t *not_error,
                        tree compute_error, // Pointer to int
                        const char *operation,
                        cbl_refer_t *remainder = NULL)
--- 96,103 ----
                        size_t nA, cbl_refer_t *A,
                        size_t nB, cbl_refer_t *B,
                        cbl_arith_format_t format,
!                       const cbl_label_t *error,
!                       const cbl_label_t *not_error,
                        tree compute_error, // Pointer to int
                        const char *operation,
                        cbl_refer_t *remainder = NULL)
*************** arithmetic_operation(size_t nC, cbl_num_
*** 112,118 ****
      {
      TRACE1_HEADER
      TRACE1_TEXT_ABC("calling ", operation, "")
-     TRACE1_END
      for(size_t ii=0; ii<nA; ii++)
        {
        TRACE1_INDENT
--- 113,118 ----
*************** arithmetic_operation(size_t nC, cbl_num_
*** 129,135 ****
                    build_int_cst_type(SIZE_T, ii));
        TRACE1_REFER("", B[ii], "");
        }
-     TRACE1_END
      }
  
    // We need to split up cbl_num_result_t into two arrays, one for the refer_t
--- 129,134 ----
*************** arithmetic_operation(size_t nC, cbl_num_
*** 137,143 ****
  
    // Allocate nC+1 in case this is a divide with a REMAINDER
  
!   cbl_refer_t *results = (cbl_refer_t *)xmalloc((nC+1) * sizeof( cbl_refer_t ));
    int ncount = 0;
  
    if( nC+1 <= MIN_FIELD_BLOCK_SIZE )
--- 136,142 ----
  
    // Allocate nC+1 in case this is a divide with a REMAINDER
  
!   std::vector<cbl_refer_t> results(nC + 1);
    int ncount = 0;
  
    if( nC+1 <= MIN_FIELD_BLOCK_SIZE )
*************** arithmetic_operation(size_t nC, cbl_num_
*** 207,213 ****
  
    build_array_of_treeplets(1, nA, A);
    build_array_of_treeplets(2, nB, B);
!   build_array_of_treeplets(3, ncount, results);
  
    gg_call(VOID,
            operation,
--- 206,212 ----
  
    build_array_of_treeplets(1, nA, A);
    build_array_of_treeplets(2, nB, B);
!   build_array_of_treeplets(3, ncount, results.data());
  
    gg_call(VOID,
            operation,
*************** arithmetic_operation(size_t nC, cbl_num_
*** 223,229 ****
      {
      for(size_t ii=0; ii<nC; ii++)
        {
-       break;  // Breaks on ADD 1 SUB2 GIVING SUB4 both PIC S9(3) COMP
        TRACE1_INDENT
        gg_fprintf( trace_handle,
                    1, "result: C[%ld]: ",
--- 222,227 ----
*************** arithmetic_operation(size_t nC, cbl_num_
*** 253,261 ****
      {
      SHOW_PARSE_END
      }
- 
-   // We need to release all of the refers we allocated:
-   free(results);
    }
  
  static void
--- 251,256 ----
*************** arithmetic_error_handler( cbl_label_t *e
*** 307,313 ****
    }
  
  static bool
! is_somebody_float(size_t nA, cbl_refer_t *A)
    {
    bool retval = false;
    for(size_t i=0; i<nA; i++)
--- 302,308 ----
    }
  
  static bool
! is_somebody_float(size_t nA, const cbl_refer_t *A)
    {
    bool retval = false;
    for(size_t i=0; i<nA; i++)
*************** is_somebody_float(size_t nA, cbl_refer_t
*** 322,328 ****
    }
  
  static bool
! is_somebody_float(size_t nC, cbl_num_result_t *C)
    {
    bool retval = false;
    for(size_t i=0; i<nC; i++)
--- 317,323 ----
    }
  
  static bool
! is_somebody_float(size_t nC, const cbl_num_result_t *C)
    {
    bool retval = false;
    for(size_t i=0; i<nC; i++)
*************** is_somebody_float(size_t nC, cbl_num_res
*** 337,343 ****
    }
  
  static bool
! all_results_binary(size_t nC, cbl_num_result_t *C)
    {
    bool retval = true;
  
--- 332,338 ----
    }
  
  static bool
! all_results_binary(size_t nC, const cbl_num_result_t *C)
    {
    bool retval = true;
  
*************** fast_add( size_t nC, cbl_num_result_t *C
*** 413,419 ****
        get_binary_value( sum,
                          NULL,
                          A[0].field,
!                         refer_offset_source(A[0]));
  
        // Add in the rest of them:
        for(size_t i=1; i<nA; i++)
--- 408,414 ----
        get_binary_value( sum,
                          NULL,
                          A[0].field,
!                         refer_offset(A[0]));
  
        // Add in the rest of them:
        for(size_t i=1; i<nA; i++)
*************** fast_add( size_t nC, cbl_num_result_t *C
*** 421,427 ****
          get_binary_value( addend,
                            NULL,
                            A[i].field,
!                           refer_offset_source(A[i]));
          gg_assign(sum, gg_add(sum, addend));
          }
        //gg_printf("The intermediate sum is %ld\n", gg_cast(LONG, sum), NULL_TREE);
--- 416,422 ----
          get_binary_value( addend,
                            NULL,
                            A[i].field,
!                           refer_offset(A[i]));
          gg_assign(sum, gg_add(sum, addend));
          }
        //gg_printf("The intermediate sum is %ld\n", gg_cast(LONG, sum), NULL_TREE);
*************** fast_add( size_t nC, cbl_num_result_t *C
*** 431,437 ****
          {
          tree dest_type = tree_type_from_size(C[i].refer.field->data.capacity, 0);
          tree dest_addr = gg_add(member(C[i].refer.field->var_decl_node, "data"),
!                                 refer_offset_dest(C[i].refer));
          tree ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
          if( format == giving_e )
            {
--- 426,432 ----
          {
          tree dest_type = tree_type_from_size(C[i].refer.field->data.capacity, 0);
          tree dest_addr = gg_add(member(C[i].refer.field->var_decl_node, "data"),
!                                 refer_offset(C[i].refer));
          tree ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
          if( format == giving_e )
            {
*************** fast_subtract(size_t nC, cbl_num_result_
*** 495,506 ****
  
        tree sum     = gg_define_variable(term_type);
        tree addend  = gg_define_variable(term_type);
!       get_binary_value(sum, NULL, A[0].field, refer_offset_dest(A[0]));
  
        // Add in the rest of them:
        for(size_t i=1; i<nA; i++)
          {
!         get_binary_value(sum, NULL, A[i].field, refer_offset_dest(A[i]));
          gg_assign(sum, gg_add(sum, addend));
          }
        //gg_printf("The intermediate sum is %ld\n", gg_cast(LONG, sum), NULL_TREE);
--- 490,501 ----
  
        tree sum     = gg_define_variable(term_type);
        tree addend  = gg_define_variable(term_type);
!       get_binary_value(sum, NULL, A[0].field, refer_offset(A[0]));
  
        // Add in the rest of them:
        for(size_t i=1; i<nA; i++)
          {
!         get_binary_value(sum, NULL, A[i].field, refer_offset(A[i]));
          gg_assign(sum, gg_add(sum, addend));
          }
        //gg_printf("The intermediate sum is %ld\n", gg_cast(LONG, sum), NULL_TREE);
*************** fast_subtract(size_t nC, cbl_num_result_
*** 508,514 ****
        if( format == giving_e )
          {
          // We now subtract the sum from B[0]
!         get_binary_value(addend, NULL, B[0].field, refer_offset_dest(B[0]));
          gg_assign(sum, gg_subtract(addend, sum));
          }
  
--- 503,509 ----
        if( format == giving_e )
          {
          // We now subtract the sum from B[0]
!         get_binary_value(addend, NULL, B[0].field, refer_offset(B[0]));
          gg_assign(sum, gg_subtract(addend, sum));
          }
  
*************** fast_subtract(size_t nC, cbl_num_result_
*** 517,523 ****
          {
          tree dest_type = tree_type_from_size(C[i].refer.field->data.capacity, 0);
          tree dest_addr = gg_add(member(C[i].refer.field->var_decl_node, "data"),
!                                 refer_offset_dest(C[i].refer));
          tree ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
          if( format == giving_e )
            {
--- 512,518 ----
          {
          tree dest_type = tree_type_from_size(C[i].refer.field->data.capacity, 0);
          tree dest_addr = gg_add(member(C[i].refer.field->var_decl_node, "data"),
!                                 refer_offset(C[i].refer));
          tree ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
          if( format == giving_e )
            {
*************** fast_multiply(size_t nC, cbl_num_result_
*** 575,590 ****
  
        tree valA    = gg_define_variable(term_type);
        tree valB    = gg_define_variable(term_type);
!       get_binary_value(valA, NULL, A[0].field, refer_offset_dest(A[0]));
  
        if( nB )
          {
          // This is a MULTIPLY Format 2
!         get_binary_value(valB, NULL, B[0].field, refer_offset_dest(B[0]));
!         }
! 
!       if(nB)
!         {
          gg_assign(valA, gg_multiply(valA, valB));
          }
  
--- 570,581 ----
  
        tree valA    = gg_define_variable(term_type);
        tree valB    = gg_define_variable(term_type);
!       get_binary_value(valA, NULL, A[0].field, refer_offset(A[0]));
  
        if( nB )
          {
          // This is a MULTIPLY Format 2
!         get_binary_value(valB, NULL, B[0].field, refer_offset(B[0]));
          gg_assign(valA, gg_multiply(valA, valB));
          }
  
*************** fast_multiply(size_t nC, cbl_num_result_
*** 593,599 ****
          {
          tree dest_type = tree_type_from_size(C[i].refer.field->data.capacity, 0);
          tree dest_addr = gg_add(member(C[i].refer.field->var_decl_node, "data"),
!                                 refer_offset_dest(C[i].refer));
          tree ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
          if( nB )
            {
--- 584,590 ----
          {
          tree dest_type = tree_type_from_size(C[i].refer.field->data.capacity, 0);
          tree dest_addr = gg_add(member(C[i].refer.field->var_decl_node, "data"),
!                                 refer_offset(C[i].refer));
          tree ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
          if( nB )
            {
*************** static bool
*** 619,625 ****
  fast_divide(size_t nC, cbl_num_result_t *C,
              size_t nA, cbl_refer_t *A,
              size_t nB, cbl_refer_t *B,
!             cbl_refer_t             remainder)
    {
    bool retval = false;
    if( all_results_binary(nC, C) )
--- 610,616 ----
  fast_divide(size_t nC, cbl_num_result_t *C,
              size_t nA, cbl_refer_t *A,
              size_t nB, cbl_refer_t *B,
!       const cbl_refer_t             &remainder)
    {
    bool retval = false;
    if( all_results_binary(nC, C) )
*************** fast_divide(size_t nC, cbl_num_result_t
*** 653,665 ****
        tree divisor  = gg_define_variable(term_type);
        tree dividend = gg_define_variable(term_type);
        tree quotient = NULL_TREE;
!       get_binary_value(divisor, NULL, A[0].field, refer_offset_dest(A[0]));
  
        if( nB )
          {
          // This is a MULTIPLY Format 2, where we are dividing A into B and
          // assigning that to C
!         get_binary_value(dividend, NULL, B[0].field, refer_offset_dest(B[0]));
  
          quotient = gg_define_variable(term_type);
          // Yes, in this case the divisor and dividend are switched.  Things are
--- 644,656 ----
        tree divisor  = gg_define_variable(term_type);
        tree dividend = gg_define_variable(term_type);
        tree quotient = NULL_TREE;
!       get_binary_value(divisor, NULL, A[0].field, refer_offset(A[0]));
  
        if( nB )
          {
          // This is a MULTIPLY Format 2, where we are dividing A into B and
          // assigning that to C
!         get_binary_value(dividend, NULL, B[0].field, refer_offset(B[0]));
  
          quotient = gg_define_variable(term_type);
          // Yes, in this case the divisor and dividend are switched.  Things are
*************** fast_divide(size_t nC, cbl_num_result_t
*** 670,678 ****
        // We now either divide into C[n] or assign dividend/divisor to C[n]:
        for(size_t i=0; i<nC; i++ )
          {
!         tree dest_type = tree_type_from_size(C[i].refer.field->data.capacity, 0);
!         tree dest_addr = gg_add(member(C[i].refer.field->var_decl_node, "data"),
!                                 refer_offset_dest(C[i].refer));
          tree ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
          if( nB )
            {
--- 661,671 ----
        // We now either divide into C[n] or assign dividend/divisor to C[n]:
        for(size_t i=0; i<nC; i++ )
          {
!         tree dest_type =
!                        tree_type_from_size(C[i].refer.field->data.capacity, 0);
!         tree dest_addr = gg_add(member( C[i].refer.field->var_decl_node,
!                                         "data"),
!                                 refer_offset(C[i].refer));
          tree ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
          if( nB )
            {
*************** fast_divide(size_t nC, cbl_num_result_t
*** 687,702 ****
            }
  
          // This is where we handle any remainder, keeping in mind that for
!         // nB != 0, the actual dividend is in the value we have named "divisor".
!         //
!         // And, yes, I hate comments like that, too.
  
          // We calculate the remainder by calculating
          //    dividend minus quotient * divisor
          if( remainder.field )
            {
!           tree dest_addr = gg_add(member(remainder.field->var_decl_node, "data"),
!                                   refer_offset_dest(remainder));
            dest_type = tree_type_from_size(remainder.field->data.capacity, 0);
            ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
  
--- 680,694 ----
            }
  
          // This is where we handle any remainder, keeping in mind that for
!         // nB != 0, the actual dividend is in the value we have named
!         // "divisor".
  
          // We calculate the remainder by calculating
          //    dividend minus quotient * divisor
          if( remainder.field )
            {
!           dest_addr = gg_add( member(remainder.field->var_decl_node, "data"),
!                               refer_offset(remainder));
            dest_type = tree_type_from_size(remainder.field->data.capacity, 0);
            ptr = gg_cast(build_pointer_type(dest_type), dest_addr);
  
*************** parser_add( size_t nC, cbl_num_result_t
*** 725,731 ****
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
!     fprintf(stderr, " A[%ld]:", nA);
      for(size_t i=0; i<nA; i++)
        {
        if(i > 0)
--- 717,723 ----
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
!     fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA);
      for(size_t i=0; i<nA; i++)
        {
        if(i > 0)
*************** parser_add( size_t nC, cbl_num_result_t
*** 737,743 ****
  
      fprintf(stderr, "%s", format==giving_e? " GIVING" : "");
  
!     fprintf(stderr, " C[%ld]:", nC);
      for(size_t i=0; i<nC; i++)
        {
        if(i > 0)
--- 729,735 ----
  
      fprintf(stderr, "%s", format==giving_e? " GIVING" : "");
  
!     fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC);
      for(size_t i=0; i<nC; i++)
        {
        if(i > 0)
*************** parser_add( size_t nC, cbl_num_result_t
*** 756,767 ****
      TRACE1_END
      }
  
-   tree compute_error = (tree)compute_error_p;
-   if( compute_error == NULL )
-     {
-     gg_assign(var_decl_default_compute_error, integer_zero_node);
-     compute_error = gg_get_address_of(var_decl_default_compute_error);
-     }
    bool handled = false;
  
    if( fast_add( nC, C,
--- 748,753 ----
*************** parser_add( size_t nC, cbl_num_result_t
*** 772,777 ****
--- 758,770 ----
      }
    else
      {
+     tree compute_error = (tree)compute_error_p;
+     if( compute_error == NULL )
+       {
+       gg_assign(var_decl_default_compute_error, integer_zero_node);
+       compute_error = gg_get_address_of(var_decl_default_compute_error);
+       }
+ 
      bool computation_is_float =    is_somebody_float(nA, A)
                                  || is_somebody_float(nC, C);
      // We now start deciding which arithmetic routine we are going to use:
*************** parser_add( size_t nC, cbl_num_result_t
*** 992,1000 ****
    }
  
  void
! parser_add( cbl_refer_t cref,
!             cbl_refer_t aref,
!             cbl_refer_t bref,
              cbl_round_t rounded)
    {
    // This is the simple and innocent C = A + B
--- 985,993 ----
    }
  
  void
! parser_add( const cbl_refer_t& cref,
!             const cbl_refer_t& aref,
!             const cbl_refer_t& bref,
              cbl_round_t rounded)
    {
    // This is the simple and innocent C = A + B
*************** parser_divide(  size_t nC, cbl_num_resul
*** 1214,1222 ****
    }
  
  void
! parser_multiply(cbl_refer_t cref,
!                 cbl_refer_t aref,
!                 cbl_refer_t bref,
                  cbl_round_t rounded )
    {
    cbl_num_result_t C[1];
--- 1207,1215 ----
    }
  
  void
! parser_multiply(const cbl_refer_t& cref,
!                 const cbl_refer_t& aref,
!                 const cbl_refer_t& bref,
                  cbl_round_t rounded )
    {
    cbl_num_result_t C[1];
*************** parser_multiply(cbl_refer_t cref,
*** 1237,1247 ****
    }
  
  void
! parser_divide(  cbl_refer_t cref,
!                 cbl_refer_t aref,
!                 cbl_refer_t bref,
                  cbl_round_t rounded,
!                 cbl_refer_t remainder_ref )
    {
    cbl_num_result_t C[1];
    C[0].rounded = rounded;
--- 1230,1240 ----
    }
  
  void
! parser_divide(  const cbl_refer_t& cref,
!                 const cbl_refer_t& aref,
!                 const cbl_refer_t& bref,
                  cbl_round_t rounded,
!                 const cbl_refer_t& remainder_ref )
    {
    cbl_num_result_t C[1];
    C[0].rounded = rounded;
*************** parser_op( struct cbl_refer_t cref,
*** 1389,1400 ****
        break;
        }
      default:
!       cbl_internal_error( "parser_op() doesn't know how to "
!              "evaluate \"%s = %s %c %s\"\n",
!              cref.field->name,
!              aref.field->name,
!              op,
!              bref.field->name);
        break;
      }
    }
--- 1382,1393 ----
        break;
        }
      default:
!       cbl_internal_error( "%<parser_op()%> doesn%'t know how to "
!                           "evaluate %<%s = %s %c %s%>",
!                           cref.field->name,
!                           aref.field->name,
!                           op,
!                           bref.field->name);
        break;
      }
    }
*************** parser_subtract(size_t nC, cbl_num_resul
*** 1412,1418 ****
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
!     fprintf(stderr, " A[%ld]:", nA);
      for(size_t i=0; i<nA; i++)
        {
        if(i > 0)
--- 1405,1411 ----
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
!     fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA);
      for(size_t i=0; i<nA; i++)
        {
        if(i > 0)
*************** parser_subtract(size_t nC, cbl_num_resul
*** 1422,1428 ****
        fprintf(stderr, "%s", A[i].field->name);
        }
  
!     fprintf(stderr, " B[%ld]:", nB);
      for(size_t i=0; i<nB; i++)
        {
        if(i > 0)
--- 1415,1421 ----
        fprintf(stderr, "%s", A[i].field->name);
        }
  
!     fprintf(stderr, " B[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nB);
      for(size_t i=0; i<nB; i++)
        {
        if(i > 0)
*************** parser_subtract(size_t nC, cbl_num_resul
*** 1432,1438 ****
        fprintf(stderr, "%s", B[i].field->name);
        }
  
!     fprintf(stderr, " C[%ld]:", nC);
      for(size_t i=0; i<nC; i++)
        {
        if(i > 0)
--- 1425,1431 ----
        fprintf(stderr, "%s", B[i].field->name);
        }
  
!     fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC);
      for(size_t i=0; i<nC; i++)
        {
        if(i > 0)
*************** parser_subtract(size_t nC, cbl_num_resul
*** 1452,1464 ****
  
    bool handled = false;
  
-   tree compute_error = (tree)compute_error_p;
-   if( compute_error == NULL )
-     {
-     gg_assign(var_decl_default_compute_error, integer_zero_node);
-     compute_error = gg_get_address_of(var_decl_default_compute_error);
-     }
- 
    if( fast_subtract(nC, C,
                      nA, A,
                      nB, B,
--- 1445,1450 ----
*************** parser_subtract(size_t nC, cbl_num_resul
*** 1468,1473 ****
--- 1454,1465 ----
      }
    else
      {
+     tree compute_error = (tree)compute_error_p;
+     if( compute_error == NULL )
+       {
+       gg_assign(var_decl_default_compute_error, integer_zero_node);
+       compute_error = gg_get_address_of(var_decl_default_compute_error);
+       }
      bool computation_is_float =    is_somebody_float(nA, A)
                                  || is_somebody_float(nC, C);
  
*************** parser_subtract(size_t nC, cbl_num_resul
*** 1704,1712 ****
    }
  
  void
! parser_subtract(cbl_refer_t cref, // cref = aref - bref
!                 cbl_refer_t aref,
!                 cbl_refer_t bref,
                  cbl_round_t rounded )
    {
    cbl_num_result_t C[1];
--- 1696,1704 ----
    }
  
  void
! parser_subtract(const cbl_refer_t& cref, // cref = aref - bref
!                 const cbl_refer_t& aref,
!                 const cbl_refer_t& bref,
                  cbl_round_t rounded )
    {
    cbl_num_result_t C[1];
diff -Nrcpad gcc-15-20250726/gcc/cobol/genutil.cc gcc-15-20250809/gcc/cobol/genutil.cc
*** gcc-15-20250726/gcc/cobol/genutil.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/genutil.cc	Sat Aug  9 22:32:37 2025
*************** bool skip_exception_processing = true;
*** 54,66 ****
  
  bool suppress_dest_depends = false;
  
- #define SET_EXCEPTION_CODE(a) do{set_exception_code((a));}while(0);
- 
  std::vector<std::string>current_filename;
  
  tree var_decl_exception_code;         // int         __gg__exception_code;
- tree var_decl_exception_handled;      // int         __gg__exception_handled;
- tree var_decl_exception_file_number;  // int         __gg__exception_file_number;
  tree var_decl_exception_file_status;  // int         __gg__exception_file_status;
  tree var_decl_exception_file_name;    // const char *__gg__exception_file_name;
  tree var_decl_exception_statement;    // const char *__gg__exception_statement;
--- 54,62 ----
*************** tree var_decl_exception_paragraph;    //
*** 72,78 ****
  
  tree var_decl_default_compute_error;  // int         __gg__default_compute_error;
  tree var_decl_rdigits;                // int         __gg__rdigits;
- tree var_decl_odo_violation;          // int         __gg__odo_violation;
  tree var_decl_unique_prog_id;         // size_t      __gg__unique_prog_id;
  
  tree var_decl_entry_location;         // This is for managing ENTRY statements
--- 68,73 ----
*************** tree var_decl_treeplet_4s; // SIZE_T_P
*** 111,116 ****
--- 106,123 ----
  tree var_decl_nop;                // int         __gg__nop;
  tree var_decl_main_called;        // int         __gg__main_called;
  
+ #if 0
+ #define REFER(a)
+ #else
+ #define REFER(a) do                                \
+   {                                             \
+   if( getenv("REFER") )                         \
+     {                                           \
+     fprintf(stderr, "REFER %s %s\n", __func__, a);    \
+     }                                           \
+   }while(0);
+ #endif
+ 
  int
  get_scaled_rdigits(cbl_field_t *field)
    {
*************** tree_type_from_digits(size_t digits, int
*** 225,235 ****
    }
  
  void
! get_integer_value(tree value,
                    cbl_field_t *field,
                    tree         offset,
                    bool check_for_fractional_digits)
    {
    Analyze();
    // Call this routine when you know the result has to be an integer with no
    // rdigits.  This routine became necessary the first time I saw an
--- 232,248 ----
    }
  
  void
! get_integer_value(tree value, // We know this is a LONG
                    cbl_field_t *field,
                    tree         offset,
                    bool check_for_fractional_digits)
    {
+   if( field->type == FldLiteralN && field->data.rdigits==0 )
+     {
+     gg_assign(value, gg_cast(LONG, field->data_decl_node));
+     return;
+     }
+ 
    Analyze();
    // Call this routine when you know the result has to be an integer with no
    // rdigits.  This routine became necessary the first time I saw an
*************** get_integer_value(tree value,
*** 266,431 ****
    gg_assign(value, gg_cast(TREE_TYPE(value), temp));
    }
  
! static tree
! get_data_offset_dest(cbl_refer_t &refer,
!                 int *pflags = NULL)
    {
!   Analyze();
!   // This routine returns a tree which is the size_t offset to the data in the
!   // refer/field
  
!   // Because this is for destination/receiving variables, OCCURS DEPENDING ON
!   // is not checked.
  
!   tree retval = gg_define_variable(SIZE_T);
!   gg_assign(retval, size_t_zero_node);
  
!   // We have a refer.
!   // At the very least, we have an constant offset
!   int all_flags = 0;
!   int all_flag_bit = 1;
  
!   static tree value64 = gg_define_variable(LONG, ".._gdod_value64", vs_file_static);
  
!   if( refer.nsubscript )
!     {
!     // We have at least one subscript:
  
!     // Figure we have three subscripts, so nsubscript is 3
!     // Figure that the subscripts are {5, 4, 3}
  
!     // We expect that starting from refer.field, that three of our ancestors --
!     // call them A1, A2, and A3 -- have occurs clauses.
  
!     // We need to start with the rightmost subscript, and work our way up through
!     // our parents.  As we find each parent with an OCCURS, we increment qual_data
!     // by (subscript-1)*An->data.capacity
  
!     // Establish the field_t pointer for walking up through our ancestors:
!     cbl_field_t *parent = refer.field;
  
!     // Note the backwards test, because refer->nsubscript is an unsigned value
!     for(size_t i=refer.nsubscript-1; i<refer.nsubscript; i-- )
        {
!       // We need to search upward for an ancestor with occurs_max:
!       while(parent)
!         {
!         if( parent->occurs.ntimes() )
!           {
!           break;
!           }
!         parent = parent_of(parent);
!         }
!       // we might have an error condition at this point:
!       if( !parent )
!         {
!         cbl_internal_error("Too many subscripts");
!         }
!       // Pick up the integer value of the subscript:
!       static tree subscript  = gg_define_variable(LONG, "..gdod_subscript", vs_file_static);
! 
!       if( process_this_exception(ec_bound_subscript_e) )
          {
!         get_integer_value(value64,
!                           refer.subscripts[i].field,
!                           refer_offset_dest(refer.subscripts[i]),
                            CHECK_FOR_FRACTIONAL_DIGITS);
          IF( var_decl_rdigits,
              ne_op,
              integer_zero_node )
            {
!           if( enabled_exceptions.match(ec_bound_subscript_e) )
!             {
!             // The subscript isn't an integer
!             SET_EXCEPTION_CODE(ec_bound_subscript_e);
!             gg_assign(subscript, gg_cast(TREE_TYPE(subscript), integer_zero_node));
!             }
!           else
!             {
!             rt_error("error: a table subscript is not an integer");
!             }
!           }
!         ELSE
!           {
!           gg_assign(subscript, gg_cast(TREE_TYPE(subscript), value64));
!           }
!         ENDIF
!         }
!       else
!         {
!         get_integer_value(subscript,
!                           refer.subscripts[i].field,
!                           refer_offset_dest(refer.subscripts[i]));
!         }
! 
!       // gg_printf("%s(): We have a subscript of %d from %s\n",
!                   // gg_string_literal(__func__),
!                   // subscript,
!                   // gg_string_literal(refer.subscripts[i].field->name),
!                   // NULL_TREE);
! 
!       if( (refer.subscripts[i].field->attr & FIGCONST_MASK) == zero_value_e )
!         {
!         // This refer is a figconst ZERO; we treat it as an ALL ZERO
!         // This is our internal representation for ALL, as in TABLE(ALL)
! 
!         // Set the subscript to 1
!         gg_assign(subscript,
!                   build_int_cst_type( TREE_TYPE(subscript), 1));
!         // Flag this position as ALL
!         all_flags |= all_flag_bit;
!         }
!       all_flag_bit <<= 1;
! 
!       // Subscript is now a one-based integer
!       // Make it zero-based:
! 
!       gg_decrement(subscript);
!       if( process_this_exception(ec_bound_subscript_e) )
!         {
!         // gg_printf("process_this_exception is true\n", NULL_TREE);
!         IF( subscript, lt_op, gg_cast(TREE_TYPE(subscript), integer_zero_node) )
!           {
!           // The subscript is too small
!           SET_EXCEPTION_CODE(ec_bound_subscript_e);
!           gg_assign(subscript, gg_cast(TREE_TYPE(subscript), integer_zero_node));
            }
          ELSE
            {
!           // gg_printf("parent->occurs.ntimes() is %d\n", build_int_cst_type(INT, parent->occurs.ntimes()), NULL_TREE);
!           IF( subscript,
!               ge_op,
!               build_int_cst_type(TREE_TYPE(subscript), parent->occurs.ntimes()) )
              {
!             // The subscript is too large
!             if( enabled_exceptions.match(ec_bound_subscript_e) )
!               {
!               SET_EXCEPTION_CODE(ec_bound_subscript_e);
!               gg_assign(subscript, gg_cast(TREE_TYPE(subscript), integer_zero_node));
!               }
!             else
!               {
!               rt_error("error: table subscript is too large");
!               }
              }
            ELSE
              {
!             // We have a good subscript:
!             // Check for an ODO violation:
!             if( parent->occurs.depending_on )
                {
!               cbl_field_t *depending_on = cbl_field_of(symbol_at(parent->occurs.depending_on));
!               get_integer_value(value64, depending_on);
!               IF( subscript, ge_op, value64 )
!                 {
!                 gg_assign(var_decl_odo_violation, integer_one_node);
!                 }
!               ELSE
!                 ENDIF
!               }
  
!             tree augment = gg_multiply(subscript, build_int_cst_type(INT, parent->data.capacity));
!             gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, augment)));
              }
              ENDIF
            }
--- 279,437 ----
    gg_assign(value, gg_cast(TREE_TYPE(value), temp));
    }
  
! static
! tree  // This is a SIZE_T
! get_any_capacity(cbl_field_t *field)
    {
!   if( field->attr & (any_length_e | intermediate_e) )
!     {
!     return member(field->var_decl_node, "capacity");
!     }
!   else
!     {
!     return build_int_cst_type(SIZE_T, field->data.capacity);
!     }
!   }
  
! /*  This routine, used by both get_data_offset and refer_refmod_length,
!     fetches the refmod_from and refmod_length.  If ec-bound-ref-mod checking
!     is enabled, it does those checks and sets the exception condition when they
!     are violated.
  
!     The return value for refstart is the actual offset, that is val(7:3) returns
!     the value 7-1, that is, 6.
!     */
! static
! void
! get_and_check_refstart_and_reflen(  tree         refstart,// LONG returned value
!                                     tree         reflen,  // LONG returned value
!                               const cbl_refer_t &refer)
!   {
!   const cbl_enabled_exceptions_t&
!                                 enabled_exceptions( cdf_enabled_exceptions() );
  
!   if( !enabled_exceptions.match(ec_bound_ref_mod_e) )
!     {
!     // This is normal operation -- no exception checking.  Thus, we won't
!     // be trying to check for boundaries or integerness.  And the programmer
!     // is accepting the responsibility for bad code:  "If you specify
!     // disaster, disaster is what you get."
  
!     get_integer_value(refstart,
!                       refer.refmod.from->field,
!                       refer_offset(*refer.refmod.from));
!     gg_decrement(refstart);
  
!     if( refer.refmod.len )
!       {
!       // The length was specified, so that's what we return:
!       get_integer_value(reflen,
!                         refer.refmod.len->field,
!                         refer_offset(*refer.refmod.len));
!       }
!     else
!       {
!       // The length was not specified, so we need to return the distance
!       // between refmod.from and the end of the field:
!       gg_assign(reflen, gg_subtract( get_any_capacity(refer.field), refstart) );
!       }
!     return;
!     }
  
!   // ec_bound_ref_mode_e checking is enabled:
  
!   get_integer_value(refstart,
!                     refer.refmod.from->field,
!                     refer_offset(*refer.refmod.from),
!                     CHECK_FOR_FRACTIONAL_DIGITS);
  
!   IF( var_decl_rdigits,
!       ne_op,
!       integer_zero_node )
!     {
!     // The value for refstart had non-zero decimal places.  This is an
!     // error condition:
!     set_exception_code(ec_bound_ref_mod_e);
!     gg_assign(refstart, gg_cast(LONG, integer_one_node));
!     gg_assign(var_decl_rdigits, integer_zero_node);
!     }
!   ELSE
!     ENDIF
  
!   // Make refstart zero-based:
!   gg_decrement(refstart);
  
!   IF( refstart, lt_op, build_int_cst_type(LONG, 0 ) )
!     {
!     // A negative value for refstart is an error condition:
!     set_exception_code(ec_bound_ref_mod_e);
!     gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!     // Set reflen to one here, because otherwise it won't be established.
!     gg_assign(reflen, gg_cast(TREE_TYPE(reflen), integer_one_node));
!     }
!   ELSE
!     {
!     IF( refstart, gt_op, gg_cast(TREE_TYPE(refstart), get_any_capacity(refer.field)) )
        {
!       // refstart greater than zero is an error condition:
!       set_exception_code(ec_bound_ref_mod_e);
!       gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!       // Set reflen to one here, because otherwise it won't be established.
!       gg_assign(reflen, gg_cast(TREE_TYPE(reflen), integer_one_node));
!       }
!     ELSE
!       {
!       if( refer.refmod.len )
          {
!         get_integer_value(reflen,
!                           refer.refmod.len->field,
!                           refer_offset(*refer.refmod.len),
                            CHECK_FOR_FRACTIONAL_DIGITS);
          IF( var_decl_rdigits,
              ne_op,
              integer_zero_node )
            {
!           // length is not an integer, which is an error condition
!           set_exception_code(ec_bound_ref_mod_e);
!           gg_assign(reflen, gg_cast(LONG, integer_one_node));
!           gg_assign(var_decl_rdigits, integer_zero_node);
            }
          ELSE
            {
!           // The length is an integer, so we can keep going.
!           IF( reflen, lt_op, gg_cast(LONG, integer_one_node) )
              {
!             // length is too small, which is an error condition.
!             set_exception_code(ec_bound_ref_mod_e);
!             gg_assign(reflen, gg_cast(LONG, integer_one_node));
              }
            ELSE
              {
!             IF( gg_add(refstart, reflen),
!                 gt_op,
!                 gg_cast(TREE_TYPE(refstart), get_any_capacity(refer.field)) )
                {
!               // Start + Length is too large, which yet again is an error
!               // condition
!               set_exception_code(ec_bound_ref_mod_e);
  
!               // Our intentions are honorable.  But at this point, where
!               // we notice that start + length is too long, the
!               // get_data_offset routine has already been run and
!               // it's too late to actually change the refstart.  There are
!               // theoretical solutions to this -- mainly,
!               // get_data_offset needs to check the start + len for
!               // validity.  But I am not going to do it now.  Think of this
!               // as the TODO item.
!               gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!               gg_assign(reflen, gg_cast(LONG, integer_one_node));
!               }
!             ELSE
!               {
!               // There are no problems, so there is no error condition, and
!               // refstart and reflen are correct.
!               }
!               ENDIF
              }
              ENDIF
            }
*************** get_data_offset_dest(cbl_refer_t &refer,
*** 433,553 ****
          }
        else
          {
!         // Assume a good subscript:
!         // Check for an ODO violation:
!         if( parent->occurs.depending_on )
!           {
!           cbl_field_t *depending_on = cbl_field_of(symbol_at(parent->occurs.depending_on));
!           get_integer_value(value64, depending_on);
!           IF( subscript, ge_op, value64 )
!             {
!             gg_assign(var_decl_odo_violation, integer_one_node);
!             }
!           ELSE
!             ENDIF
!           }
!         tree augment = gg_multiply(subscript, build_int_cst_type(INT, parent->data.capacity));
!         gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, augment)));
          }
-       parent = parent_of(parent);
        }
      }
  
!   if( refer.refmod.from )
!     {
!     // We have a refmod to deal with
!     static tree refstart = gg_define_variable(LONG, "..gdos_refstart", vs_file_static);
  
!     if( process_this_exception(ec_bound_ref_mod_e) )
!       {
!       get_integer_value(value64,
!                         refer.refmod.from->field,
!                         refer_offset_source(*refer.refmod.from),
!                         CHECK_FOR_FRACTIONAL_DIGITS);
!       IF( var_decl_rdigits,
!           ne_op,
!           integer_zero_node )
!         {
!         // refmod offset is not an integer, and has to be
!         if( enabled_exceptions.match(ec_bound_ref_mod_e) )
!           {
!           SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
!           gg_assign(refstart, gg_cast(LONG, integer_one_node));
!           }
!         else
!           {
!           rt_error("error: a refmod FROM is not an integer");
!           }
!         }
!       ELSE
!         gg_assign(refstart, value64);
!         ENDIF
!       }
!     else
!       {
!       get_integer_value(value64,
!                         refer.refmod.from->field,
!                         refer_offset_source(*refer.refmod.from)
!                         );
!       gg_assign(refstart, value64);
!       }
  
!     // Make refstart zero-based:
!     gg_decrement(refstart);
  
!     if( process_this_exception(ec_bound_ref_mod_e) )
!       {
!       IF( refstart, lt_op, gg_cast(LONG, integer_zero_node) )
!         {
!         if( enabled_exceptions.match(ec_bound_ref_mod_e) )
!           {
!           SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
!           gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!           }
!         else
!           {
!           rt_error("error: refmod FROM is less than one");
!           }
!         }
!       ELSE
!         {
!         IF( refstart, gt_op, build_int_cst_type(LONG, refer.field->data.capacity) )
!           {
!           if( enabled_exceptions.match(ec_bound_ref_mod_e) )
!             {
!             SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
!             gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!             }
!           else
!             {
!             rt_error("error: refmod FROM is too large");
!             }
!           }
!         ELSE
!           ENDIF
!         }
!         ENDIF
!       }
  
!     // We have a good refstart
!     gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, refstart)));
      }
  
!   if( pflags )
      {
!     *pflags = all_flags;
      }
  
! //  gg_printf("*****>>>>> %s(): returning %p\n",
! //            gg_string_literal(__func__),
! //            retval,
! //            NULL_TREE);
!   return retval;
    }
  
! static tree
! get_data_offset_source(cbl_refer_t &refer,
!                 int *pflags = NULL)
    {
    Analyze();
    // This routine returns a tree which is the size_t offset to the data in the
--- 439,549 ----
          }
        else
          {
!         // There is no refmod length, so we default to the remaining characters
!         gg_assign(reflen, gg_subtract(get_any_capacity(refer.field),
!                                       refstart));
          }
        }
+       ENDIF
      }
+     ENDIF
+   }
  
! void
! get_depending_on_value_from_odo(tree retval, cbl_field_t *odo)
!   {
!   /*  This routine, called only when we know there is an OCCURS DEPENDING ON
!       clause, returns the current value of the DEPENDING ON variable.  When
!       ec_bound_odo_e is turned on, and there is any kind of ec-bound-odo
!       error condition, the value returned is occurs.bounds.lower.
  
!       This should ensure that there is no memory violation in the event of a
!       declarative with a RESUME NEXT STATEMENT, or before the default_condition
!       processing can do a controlled exit.
!       */
!   const cbl_enabled_exceptions_t&
!                                 enabled_exceptions( cdf_enabled_exceptions() );
!   cbl_field_t *depending_on;
!   depending_on = cbl_field_of(symbol_at(odo->occurs.depending_on));
  
!   if( !enabled_exceptions.match(ec_bound_odo_e) )
!     {
!     // With no exception testing, just pick up the value.  If there is a
!     // the programmer will simply have to live with the consequences.
!     get_integer_value(retval,
!                       depending_on,
!                       NULL);
!     return;
!     }
  
!   // Bounds checking is enabled, so we test the DEPENDING ON value to be
!   // between the lower and upper OCCURS limits:
!   get_integer_value(retval,
!                     depending_on,
!                     NULL,
!                     CHECK_FOR_FRACTIONAL_DIGITS);
  
!   IF( var_decl_rdigits, ne_op, integer_zero_node )
!     {
!     // This needs to evaluate to an integer
!     set_exception_code(ec_bound_odo_e);
!     gg_assign(retval, build_int_cst_type( TREE_TYPE(retval),
!                                           odo->occurs.bounds.lower));
!     gg_assign(var_decl_rdigits, integer_zero_node);
      }
+   ELSE
+     ENDIF
  
!   IF( retval, gt_op, build_int_cst_type(TREE_TYPE(retval),
!                                         odo->occurs.bounds.upper) )
      {
!     set_exception_code(ec_bound_odo_e);
!     gg_assign(retval, build_int_cst_type( TREE_TYPE(retval),
!                                           odo->occurs.bounds.lower));
!     }
!   ELSE
!     {
!     IF( retval, lt_op, build_int_cst_type(TREE_TYPE(retval),
!                                           odo->occurs.bounds.lower) )
!       {
!       set_exception_code(ec_bound_odo_e);
!       gg_assign(retval, build_int_cst_type( TREE_TYPE(retval),
!                                             odo->occurs.bounds.lower));
!       }
!     ELSE
!       ENDIF
!     IF( retval, lt_op, gg_cast(TREE_TYPE(retval), integer_zero_node) )
!       {
!       set_exception_code(ec_bound_odo_e);
!       gg_assign(retval, gg_cast(TREE_TYPE(retval), integer_zero_node));
!       }
!     ELSE
!       ENDIF
      }
+     ENDIF
+   }
  
! static
! void
! get_depending_on_value(tree retval, const cbl_refer_t &refer)
!   {
!   /*  This routine, called only when we know there is an OCCURS DEPENDING ON
!       clause, returns the current value of the DEPENDING ON variable.  When
!       ec_bound_odo_e is turned on, and there is any kind of ec-bound-odo
!       error condition, the value returned is occurs.bounds.lower.
! 
!       This should ensure that there is no memory violation in the event of a
!       declarative with a RESUME NEXT STATEMENT, or before the default_condition
!       processing can do a controlled exit.
!       */
!   cbl_field_t *odo = symbol_find_odo(refer.field);
!   get_depending_on_value_from_odo(retval, odo);
    }
  
! static
! tree
! get_data_offset(const cbl_refer_t &refer,
!                       int *pflags = NULL)
    {
    Analyze();
    // This routine returns a tree which is the size_t offset to the data in the
*************** get_data_offset_source(cbl_refer_t &refe
*** 562,573 ****
    // We have a refer.
    // At the very least, we have an constant offset
    int all_flags = 0;
-   int all_flag_bit = 1;
- 
-   static tree value64 = gg_define_variable(LONG, ".._gdos_value64", vs_file_static);
  
!   if( refer.nsubscript )
      {
      // We have at least one subscript:
  
      // Figure we have three subscripts, so nsubscript is 3
--- 558,567 ----
    // We have a refer.
    // At the very least, we have an constant offset
    int all_flags = 0;
  
!   if( refer.nsubscript() )
      {
+     REFER("subscript");
      // We have at least one subscript:
  
      // Figure we have three subscripts, so nsubscript is 3
*************** get_data_offset_source(cbl_refer_t &refe
*** 583,590 ****
      // Establish the field_t pointer for walking up through our ancestors:
      cbl_field_t *parent = refer.field;
  
      // Note the backwards test, because refer->nsubscript is an unsigned value
!     for(size_t i=refer.nsubscript-1; i<refer.nsubscript; i-- )
        {
        // We need to search upward for an ancestor with occurs_max:
        while(parent)
--- 577,585 ----
      // Establish the field_t pointer for walking up through our ancestors:
      cbl_field_t *parent = refer.field;
  
+     int all_flag_bit = 1;
      // Note the backwards test, because refer->nsubscript is an unsigned value
!     for(size_t i=refer.nsubscript()-1; i<refer.nsubscript(); i-- )
        {
        // We need to search upward for an ancestor with occurs_max:
        while(parent)
*************** get_data_offset_source(cbl_refer_t &refe
*** 601,649 ****
          cbl_internal_error("Too many subscripts");
          }
        // Pick up the integer value of the subscript:
- //      static tree subscript  = gg_define_variable(LONG, "..gdos_subscript", vs_file_static);
        tree subscript  = gg_define_variable(LONG);
  
-       if( process_this_exception(ec_bound_subscript_e) )
-         {
-         get_integer_value(value64,
-                           refer.subscripts[i].field,
-                           refer_offset_source(refer.subscripts[i]),
-                           CHECK_FOR_FRACTIONAL_DIGITS);
-         IF( var_decl_rdigits,
-             ne_op,
-             integer_zero_node )
-           {
-           if( enabled_exceptions.match(ec_bound_subscript_e) )
-             {
-             // The subscript isn't an integer
-             SET_EXCEPTION_CODE(ec_bound_subscript_e);
-             gg_assign(subscript, gg_cast(TREE_TYPE(subscript), integer_zero_node));
-             }
-           else
-             {
-             rt_error("error: a table subscript is not an integer");
-             }
-           }
-         ELSE
-           {
-           gg_assign(subscript, gg_cast(TREE_TYPE(subscript), value64));
-           }
-         ENDIF
-         }
-       else
-         {
-         get_integer_value(subscript,
-                           refer.subscripts[i].field,
-                           refer_offset_source(refer.subscripts[i]));
-         }
- 
-       // gg_printf("%s(): We have a subscript of %d from %s\n",
-                   // gg_string_literal(__func__),
-                   // subscript,
-                   // gg_string_literal(refer.subscripts[i].field->name),
-                   // NULL_TREE);
- 
        if( (refer.subscripts[i].field->attr & FIGCONST_MASK) == zero_value_e )
          {
          // This refer is a figconst ZERO; we treat it as an ALL ZERO
--- 596,603 ----
*************** get_data_offset_source(cbl_refer_t &refe
*** 655,815 ****
          // Flag this position as ALL
          all_flags |= all_flag_bit;
          }
!       all_flag_bit <<= 1;
! 
!       // Subscript is now a one-based integer
!       // Make it zero-based:
! 
!       gg_decrement(subscript);
!       if( process_this_exception(ec_bound_subscript_e) )
          {
!         // gg_printf("process_this_exception is true\n", NULL_TREE);
!         IF( subscript, lt_op, gg_cast(TREE_TYPE(subscript), integer_zero_node) )
            {
!           // The subscript is too small
!           SET_EXCEPTION_CODE(ec_bound_subscript_e);
!           gg_assign(subscript, gg_cast(TREE_TYPE(subscript), integer_zero_node));
            }
!         ELSE
            {
!           // gg_printf("parent->occurs.ntimes() is %d\n", build_int_cst_type(INT, parent->occurs.ntimes()), NULL_TREE);
!           IF( subscript,
!               ge_op,
!               build_int_cst_type(TREE_TYPE(subscript), parent->occurs.ntimes()) )
              {
!             // The subscript is too large
!             if( enabled_exceptions.match(ec_bound_subscript_e) )
!               {
!               SET_EXCEPTION_CODE(ec_bound_subscript_e);
!               gg_assign(subscript, gg_cast(TREE_TYPE(subscript), integer_zero_node));
!               }
!             else
!               {
!               rt_error("error: table subscript is too large");
!               }
              }
            ELSE
              {
!             // We have a good subscript:
!             // Check for an ODO violation:
!             if( parent->occurs.depending_on )
                {
!               cbl_field_t *depending_on = cbl_field_of(symbol_at(parent->occurs.depending_on));
!               get_integer_value(value64, depending_on);
!               IF( subscript, ge_op, value64 )
                  {
!                 gg_assign(var_decl_odo_violation, integer_one_node);
                  }
                ELSE
                  ENDIF
                }
! 
!             tree augment = gg_multiply(subscript, build_int_cst_type(INT, parent->data.capacity));
!             gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, augment)));
              }
-             ENDIF
-           }
            ENDIF
          }
!       else
          {
-         // Assume a good subscript:
-         // Check for an ODO violation:
          if( parent->occurs.depending_on )
            {
!           cbl_field_t *depending_on = cbl_field_of(symbol_at(parent->occurs.depending_on));
!           get_integer_value(value64, depending_on);
!           IF( subscript, ge_op, value64 )
!             {
!             gg_assign(var_decl_odo_violation, integer_one_node);
!             }
!           ELSE
!             ENDIF
            }
-         tree augment = gg_multiply(subscript, build_int_cst_type(INT, parent->data.capacity));
-         gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, augment)));
          }
        parent = parent_of(parent);
        }
      }
  
    if( refer.refmod.from )
      {
      // We have a refmod to deal with
      static tree refstart = gg_define_variable(LONG, "..gdo_refstart", vs_file_static);
  
-     if( process_this_exception(ec_bound_ref_mod_e) )
-       {
-       get_integer_value(value64,
-                         refer.refmod.from->field,
-                         refer_offset_source(*refer.refmod.from),
-                         CHECK_FOR_FRACTIONAL_DIGITS);
-       IF( var_decl_rdigits,
-           ne_op,
-           integer_zero_node )
-         {
-         // refmod offset is not an integer, and has to be
-         if( enabled_exceptions.match(ec_bound_ref_mod_e) )
-           {
-           SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
-           gg_assign(refstart, gg_cast(LONG, integer_one_node));
-           }
-         else
-           {
-           rt_error("error: a refmod FROM is not an integer");
-           }
-         }
-       ELSE
-         gg_assign(refstart, value64);
-         ENDIF
-       }
-     else
-       {
-       get_integer_value(value64,
-                         refer.refmod.from->field,
-                         refer_offset_source(*refer.refmod.from)
-                         );
-       gg_assign(refstart, value64);
-       }
- 
-     // Make refstart zero-based:
-     gg_decrement(refstart);
- 
-     if( process_this_exception(ec_bound_ref_mod_e) )
-       {
-       IF( refstart, lt_op, gg_cast(LONG, integer_zero_node) )
-         {
-         if( enabled_exceptions.match(ec_bound_ref_mod_e) )
-           {
-           SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
-           gg_assign(refstart, gg_cast(LONG, integer_zero_node));
-           }
-         else
-           {
-           rt_error("error: refmod FROM is less than one");
-           }
-         }
-       ELSE
-         {
-         IF( refstart, gt_op, build_int_cst_type(LONG, refer.field->data.capacity) )
-           {
-           if( enabled_exceptions.match(ec_bound_ref_mod_e) )
-             {
-             SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
-             gg_assign(refstart, gg_cast(LONG, integer_zero_node));
-             }
-           else
-             {
-             rt_error("error: refmod FROM is too large");
-             }
-           }
-         ELSE
-           ENDIF
-         }
-         ENDIF
-       }
- 
-     // We have a good refstart
      gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, refstart)));
      }
  
--- 609,713 ----
          // Flag this position as ALL
          all_flags |= all_flag_bit;
          }
!       else
          {
!         const cbl_enabled_exceptions_t&
!                                 enabled_exceptions( cdf_enabled_exceptions() );
!         if( !enabled_exceptions.match(ec_bound_subscript_e) )
            {
!           // With no exception testing, just pick up the value
!           get_integer_value(subscript,
!                             refer.subscripts[i].field,
!                             refer_offset(refer.subscripts[i]));
            }
!         else
            {
!           get_integer_value(subscript,
!                             refer.subscripts[i].field,
!                             refer_offset(refer.subscripts[i]),
!                             CHECK_FOR_FRACTIONAL_DIGITS);
!           IF( var_decl_rdigits,
!               ne_op,
!               integer_zero_node )
              {
!             // The subscript isn't an integer
!             set_exception_code(ec_bound_subscript_e);
!             gg_assign(subscript, build_int_cst_type(TREE_TYPE(subscript), 1));
!             gg_assign(var_decl_rdigits, integer_zero_node);
              }
            ELSE
              {
!             IF( subscript, lt_op, gg_cast(TREE_TYPE(subscript),
!                                           integer_one_node) )
                {
!               // The subscript is too small
!               set_exception_code(ec_bound_subscript_e);
!               gg_assign(subscript, build_int_cst_type(TREE_TYPE(subscript),
!                                                       1));
!               }
!             ELSE
!               {
!               IF( subscript,
!                   ge_op,
!                   build_int_cst_type( TREE_TYPE(subscript),
!                                       parent->occurs.ntimes()) )
                  {
!                 // The subscript is too large
!                 set_exception_code(ec_bound_subscript_e);
!                 gg_assign(subscript, build_int_cst_type(TREE_TYPE(subscript),
!                                                         1));
                  }
                ELSE
+                 {
+                 }
                  ENDIF
                }
!               ENDIF
              }
            ENDIF
+           }
          }
! 
!       all_flag_bit <<= 1;
! 
!       // Although we strictly don't need to look at the ODO value at this
!       // point, we do want it checked for the purposes of ec-bound-odo
! 
!       const cbl_enabled_exceptions_t&
!                                 enabled_exceptions( cdf_enabled_exceptions() );
! 
!       if( enabled_exceptions.match(ec_bound_odo_e) )
          {
          if( parent->occurs.depending_on )
            {
!           static tree value64 = gg_define_variable( LONG,
!                                                     ".._gdos_value64",
!                                                     vs_file_static);
!           cbl_field_t *odo = symbol_find_odo(parent);
!           get_depending_on_value_from_odo(value64, odo);
            }
          }
+ 
+       // Subscript is now a one-based integer
+       // Make it zero-based:
+ 
+       gg_decrement(subscript);
+ 
+       tree augment = gg_multiply(subscript, get_any_capacity(parent));
+       gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, augment)));
+ 
        parent = parent_of(parent);
        }
      }
  
    if( refer.refmod.from )
      {
+     REFER("refmod refstart");
      // We have a refmod to deal with
      static tree refstart = gg_define_variable(LONG, "..gdo_refstart", vs_file_static);
+     static tree reflen   = gg_define_variable(LONG, "..gdo_reflen", vs_file_static);
+     get_and_check_refstart_and_reflen(refstart, reflen, refer);
  
      gg_assign(retval, gg_add(retval, gg_cast(SIZE_T, refstart)));
      }
  
*************** get_data_offset_source(cbl_refer_t &refe
*** 818,831 ****
      *pflags = all_flags;
      }
  
- 
- //  gg_printf("*****>>>>> %s(): returning %p\n",
- //            gg_string_literal(__func__),
- //            retval,
- //            NULL_TREE);
    return retval;
    }
  
  void
  get_binary_value( tree value,
                    tree rdigits,
--- 716,726 ----
      *pflags = all_flags;
      }
  
    return retval;
    }
  
+ static tree tree_type_from_field(const cbl_field_t *field);
+ 
  void
  get_binary_value( tree value,
                    tree rdigits,
*************** get_binary_value( tree value,
*** 863,869 ****
        {
        if( SCALAR_FLOAT_TYPE_P(value) )
          {
!         gg_assign(value, gg_cast(TREE_TYPE(value), field->literal_decl_node));
          }
        else
          {
--- 758,764 ----
        {
        if( SCALAR_FLOAT_TYPE_P(value) )
          {
!         cbl_internal_error("cannot get %<float%> value from %s", field->name);
          }
        else
          {
*************** get_binary_value( tree value,
*** 933,939 ****
  
            // This is the we-are-done pointer
            gg_assign(pend, gg_add( pointer,
!                                   build_int_cst_type(SIZE_T, field->data.capacity)));
  
            static tree signbyte = gg_define_variable(UCHAR, "..gbv_signbyte", vs_file_static);
  
--- 828,834 ----
  
            // This is the we-are-done pointer
            gg_assign(pend, gg_add( pointer,
!                                   get_any_capacity(field)));
  
            static tree signbyte = gg_define_variable(UCHAR, "..gbv_signbyte", vs_file_static);
  
*************** get_binary_value( tree value,
*** 1364,1383 ****
        break;
        }
  
-     case FldAlphanumeric:
-       {
- 
-       }
- 
- 
      default:
        {
!       fprintf(stderr, "%s(): We know not how to"
!                       " get a binary value from %s\n",
!                       __func__,
!                       cbl_field_type_str(field->type) );
        abort();
!       break;
        }
      }
  
--- 1259,1273 ----
        break;
        }
  
      default:
        {
!       char *err = xasprintf("%s(): We know not how to"
!                             " get a binary value from %s\n",
!                             __func__,
!                             cbl_field_type_str(field->type) );
!       cbl_internal_error("%s", err);
        abort();
!       // break; // break not needed after abort();
        }
      }
  
*************** get_binary_value( tree value,
*** 1393,1400 ****
      }
    }
  
! tree
! tree_type_from_field(cbl_field_t *field)
    {
    gcc_assert(field);
    return tree_type_from_size(field->data.capacity, field->attr & signable_e);
--- 1283,1290 ----
      }
    }
  
! static tree
! tree_type_from_field(const cbl_field_t *field)
    {
    gcc_assert(field);
    return tree_type_from_size(field->data.capacity, field->attr & signable_e);
*************** scale_by_power_of_ten_N(tree value,
*** 1484,1500 ****
    Analyzer.Message("takes int N");
    if( N == 0 )
      {
-     if( check_for_fractional )
-       {
-       gg_assign(var_decl_rdigits, integer_zero_node);
-       }
      }
    else if( N > 0 )
      {
-     if( check_for_fractional )
-       {
-       gg_assign(var_decl_rdigits, integer_zero_node);
-       }
      tree value_type = TREE_TYPE(value);
      FIXED_WIDE_INT(128) power_of_ten = get_power_of_ten(N);
      gg_assign(value, gg_multiply(value, wide_int_to_tree( value_type,
--- 1374,1382 ----
*************** scale_by_power_of_ten_N(tree value,
*** 1514,1520 ****
          gg_assign(var_decl_rdigits, integer_one_node);
          }
        ELSE
-         gg_assign(var_decl_rdigits, integer_zero_node);
          ENDIF
        }
      gg_assign(value, gg_divide(value, wide_int_to_tree( value_type,
--- 1396,1401 ----
*************** tree_type_from_size(size_t bytes, int si
*** 1696,1702 ****
  
  static
  bool
! refer_has_depends(cbl_refer_t &refer, refer_type_t refer_type)
    {
    if( suppress_dest_depends )
      {
--- 1577,1583 ----
  
  static
  bool
! refer_has_depends(const cbl_refer_t &refer, refer_type_t refer_type)
    {
    if( suppress_dest_depends )
      {
*************** refer_has_depends(cbl_refer_t &refer, re
*** 1714,1720 ****
  
    // Check if there there is an occurs with a depending_on in the hierarchy
    bool proceed = false;
!   cbl_field_t *odo = symbol_find_odo(refer.field);
    cbl_field_t *depending_on;
    if( odo && odo != refer.field )
      {
--- 1595,1601 ----
  
    // Check if there there is an occurs with a depending_on in the hierarchy
    bool proceed = false;
!   const cbl_field_t *odo = symbol_find_odo(refer.field);
    cbl_field_t *depending_on;
    if( odo && odo != refer.field )
      {
*************** refer_has_depends(cbl_refer_t &refer, re
*** 1740,1746 ****
            {
            parent1 = p;
            }
!         cbl_field_t *parent2 = depending_on;
          while( (p = parent_of(parent2)) )
            {
            parent2 = p;
--- 1621,1627 ----
            {
            parent1 = p;
            }
!         const cbl_field_t *parent2 = depending_on;
          while( (p = parent_of(parent2)) )
            {
            parent2 = p;
*************** set_exception_code_func(ec_type_t ec, in
*** 1802,1809 ****
    }
  
  bool
! process_this_exception(ec_type_t ec)
    {
    bool retval;
    if( enabled_exceptions.match(ec) || !skip_exception_processing )
      {
--- 1683,1691 ----
    }
  
  bool
! process_this_exception(const ec_type_t ec)
    {
+   const cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() );
    bool retval;
    if( enabled_exceptions.match(ec) || !skip_exception_processing )
      {
*************** copy_little_endian_into_place(cbl_field_
*** 1835,1841 ****
                                tree value,
                                int rhs_rdigits,
                                bool check_for_error,
!                               tree &size_error)
    {
    if( check_for_error )
      {
--- 1717,1723 ----
                                tree value,
                                int rhs_rdigits,
                                bool check_for_error,
!                         const tree &size_error)
    {
    if( check_for_error )
      {
*************** build_array_of_treeplets( int ngroup,
*** 1911,1917 ****
                      refers[i].field ? gg_get_address_of(refers[i].field->var_decl_node)
                                      : gg_cast(cblc_field_p_type_node, null_pointer_node));
            gg_assign(gg_array_value(var_decl_treeplet_1o, i),
!                     refer_offset_source(refers[i]));
            gg_assign(gg_array_value(var_decl_treeplet_1s, i),
                      refer_size_source(refers[i]));
            }
--- 1793,1799 ----
                      refers[i].field ? gg_get_address_of(refers[i].field->var_decl_node)
                                      : gg_cast(cblc_field_p_type_node, null_pointer_node));
            gg_assign(gg_array_value(var_decl_treeplet_1o, i),
!                     refer_offset(refers[i]));
            gg_assign(gg_array_value(var_decl_treeplet_1s, i),
                      refer_size_source(refers[i]));
            }
*************** build_array_of_treeplets( int ngroup,
*** 1923,1929 ****
                      refers[i].field ? gg_get_address_of(refers[i].field->var_decl_node)
                                      : gg_cast(cblc_field_p_type_node, null_pointer_node));
            gg_assign(gg_array_value(var_decl_treeplet_2o, i),
!                     refer_offset_source(refers[i]));
            gg_assign(gg_array_value(var_decl_treeplet_2s, i),
                      refer_size_source(refers[i]));
            }
--- 1805,1811 ----
                      refers[i].field ? gg_get_address_of(refers[i].field->var_decl_node)
                                      : gg_cast(cblc_field_p_type_node, null_pointer_node));
            gg_assign(gg_array_value(var_decl_treeplet_2o, i),
!                     refer_offset(refers[i]));
            gg_assign(gg_array_value(var_decl_treeplet_2s, i),
                      refer_size_source(refers[i]));
            }
*************** build_array_of_treeplets( int ngroup,
*** 1935,1941 ****
                      refers[i].field ? gg_get_address_of(refers[i].field->var_decl_node)
                                      : gg_cast(cblc_field_p_type_node, null_pointer_node));
            gg_assign(gg_array_value(var_decl_treeplet_3o, i),
!                     refer_offset_source(refers[i]));
            gg_assign(gg_array_value(var_decl_treeplet_3s, i),
                      refer_size_source(refers[i]));
            }
--- 1817,1823 ----
                      refers[i].field ? gg_get_address_of(refers[i].field->var_decl_node)
                                      : gg_cast(cblc_field_p_type_node, null_pointer_node));
            gg_assign(gg_array_value(var_decl_treeplet_3o, i),
!                     refer_offset(refers[i]));
            gg_assign(gg_array_value(var_decl_treeplet_3s, i),
                      refer_size_source(refers[i]));
            }
*************** build_array_of_treeplets( int ngroup,
*** 1947,1953 ****
                      refers[i].field ? gg_get_address_of(refers[i].field->var_decl_node)
                                      : gg_cast(cblc_field_p_type_node, null_pointer_node));
            gg_assign(gg_array_value(var_decl_treeplet_4o, i),
!                     refer_offset_source(refers[i]));
            gg_assign(gg_array_value(var_decl_treeplet_4s, i),
                      refer_size_source(refers[i]));
            }
--- 1829,1835 ----
                      refers[i].field ? gg_get_address_of(refers[i].field->var_decl_node)
                                      : gg_cast(cblc_field_p_type_node, null_pointer_node));
            gg_assign(gg_array_value(var_decl_treeplet_4o, i),
!                     refer_offset(refers[i]));
            gg_assign(gg_array_value(var_decl_treeplet_4s, i),
                      refer_size_source(refers[i]));
            }
*************** build_array_of_fourplets( int ngroup,
*** 1992,1998 ****
        gg_assign(gg_array_value(var_decl_treeplet_1f, i),
                  gg_get_address_of(refers[i].field->var_decl_node));
        gg_assign(gg_array_value(var_decl_treeplet_1o, i),
!                 refer_offset_source(refers[i], &flag_bits));
        gg_assign(gg_array_value(var_decl_treeplet_1s, i),
                  refer_size_source(refers[i]));
        gg_assign(gg_array_value(var_decl_fourplet_flags, i),
--- 1874,1880 ----
        gg_assign(gg_array_value(var_decl_treeplet_1f, i),
                  gg_get_address_of(refers[i].field->var_decl_node));
        gg_assign(gg_array_value(var_decl_treeplet_1o, i),
!                 refer_offset(refers[i], &flag_bits));
        gg_assign(gg_array_value(var_decl_treeplet_1s, i),
                  refer_size_source(refers[i]));
        gg_assign(gg_array_value(var_decl_fourplet_flags, i),
*************** char *
*** 2049,2418 ****
  get_literal_string(cbl_field_t *field)
    {
    assert(field->type == FldLiteralA);
!   char *buffer = NULL;
!   size_t buffer_length = 0;
!   if( buffer_length < field->data.capacity+1 )
!     {
!     buffer_length = field->data.capacity+1;
!     buffer = (char *)xrealloc(buffer, buffer_length);
!     }
    for(size_t i=0; i<field->data.capacity; i++)
      {
      buffer[i] = ascii_to_internal(field->data.initial[i]);
      }
!   buffer[field->data.capacity] = '\0';
    return buffer;
    }
  
  bool
! refer_is_clean(cbl_refer_t &refer)
    {
!   if( !refer.field )
      {
      // It is routine for a refer to have no field.  It happens when the parser
!     // passes us a refer for an optional parameter that has been ommitted, for
      // example.
      return true;
      }
  
    return     !refer.all
            && !refer.addr_of
!           && !refer.nsubscript
            && !refer.refmod.from
            && !refer.refmod.len
            && !refer_has_depends(refer, refer_source)
            ;
    }
  
- void
- REFER_CHECK(const char *func,
-             int         line,
-             cbl_refer_t &refer
-             )
-   {
-   static int counter=1;
- 
-   if( counter == 5 )
-     {
-     fprintf(stderr, "DING! %d\n", counter);
-     }
- 
  
!   fprintf(stderr,
!           "ct REFER_CHECK(%d): %s():%d %s\n",
!           counter,
!           func,
!           line,
!           refer.field->name);
! 
!   gg_printf("rt REFER_CHECK(%d): %s():%d %s (%s)\n",
!             build_int_cst_type(INT, counter),
!             gg_string_literal(func),
!             build_int_cst_type(INT, line),
!             gg_string_literal(refer.field->name),
!             gg_string_literal(cbl_field_type_str(refer.field->type)),
!             NULL_TREE);
!   counter+=1;
!   }
  
  static
  tree  // size_t
! refer_refmod_length(cbl_refer_t &refer)
    {
    Analyze();
!   if( refer.refmod.from || refer.refmod.len )
!     {
!     // First, check for compile-time errors
!     bool any_length = !!(refer.field->attr & any_length_e);
!     tree rt_capacity;
!     static tree value64  = gg_define_variable(LONG, "..rrl_value64", vs_file_static);
!     static tree refstart = gg_define_variable(LONG, "..rrl_refstart", vs_file_static);
!     static tree reflen   = gg_define_variable(LONG, "..rrl_reflen", vs_file_static);
! 
!     if( any_length )
!       {
!       rt_capacity =
!                 gg_cast(LONG,
!                         member(refer.field->var_decl_node, "capacity"));
!       }
!     else
!       {
!       rt_capacity =
!                 build_int_cst_type(LONG, refer.field->data.capacity);
!       }
! 
!     gg_assign(reflen, gg_cast(TREE_TYPE(reflen), integer_one_node));
! 
!     if( process_this_exception(ec_bound_ref_mod_e) )
!       {
!       get_integer_value(value64,
!                         refer.refmod.from->field,
!                         refer_offset_source(*refer.refmod.from),
!                         CHECK_FOR_FRACTIONAL_DIGITS);
!       IF( var_decl_rdigits,
!           ne_op,
!           integer_zero_node )
!         {
!         if( enabled_exceptions.match(ec_bound_ref_mod_e) )
!           {
!           SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
!           gg_assign(refstart, gg_cast(LONG, integer_one_node));
!           }
!         else
!           {
!           rt_error("a refmod FROM value is not an integer");
!           }
!         }
!       ELSE
!         gg_assign(refstart, value64);
!         ENDIF
!       }
!     else
!       {
!       get_integer_value(value64,
!                         refer.refmod.from->field,
!                         refer_offset_source(*refer.refmod.from)
!                         );
!       gg_assign(refstart, value64);
!       }
! 
!     // Make refstart zero-based:
!     gg_decrement(refstart);
! 
!     if( process_this_exception(ec_bound_ref_mod_e) )
!       {
!       IF( refstart, lt_op, build_int_cst_type(LONG, 0 ) )
!         {
!         if( enabled_exceptions.match(ec_bound_ref_mod_e) )
!           {
!           SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
!           gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!           }
!         else
!           {
!           rt_error("a refmod FROM value is less than zero");
!           }
!         }
!       ELSE
!         {
!         IF( refstart, gt_op, rt_capacity )
!           {
!           if( enabled_exceptions.match(ec_bound_ref_mod_e) )
!             {
!             SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
!             gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!             }
!           else
!             {
!             rt_error("a refmod FROM value is too large");
!             }
!           }
!         ELSE
!           {
!           if( refer.refmod.len )
!             {
!             get_integer_value(value64,
!                               refer.refmod.len->field,
!                               refer_offset_source(*refer.refmod.len),
!                               CHECK_FOR_FRACTIONAL_DIGITS);
!             IF( var_decl_rdigits,
!                 ne_op,
!                 integer_zero_node )
!               {
!               // length is not an integer
!               if( enabled_exceptions.match(ec_bound_ref_mod_e) )
!                 {
!                 SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
!                 gg_assign(reflen, gg_cast(LONG, integer_one_node));
!                 }
!               else
!                 {
!                 rt_error("a refmod LENGTH is not an integer");
!                 }
!               }
!             ELSE
!               {
!               gg_assign(reflen, gg_cast(LONG, value64));
!               }
!             ENDIF
! 
!             IF( reflen, lt_op, gg_cast(LONG, integer_one_node) )
!               {
!               // length is too small
!               if( enabled_exceptions.match(ec_bound_ref_mod_e) )
!                 {
!                 SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
!                 gg_assign(reflen, gg_cast(LONG, integer_one_node));
!                 }
!               else
!                 {
!                 rt_error("a refmod LENGTH is less than one");
!                 }
!               }
!             ELSE
!               {
!               IF( gg_add(refstart, reflen),
!                   gt_op,
!                   rt_capacity )
!                 {
!                 // Start + Length is too large
!                 if( enabled_exceptions.match(ec_bound_ref_mod_e) )
!                   {
!                   SET_EXCEPTION_CODE(ec_bound_ref_mod_e);
  
!                   // Our intentions are honorable.  But at this point, where
!                   // we notice that start + length is too long, the
!                   // get_data_offset_source routine has already been run and
!                   // it's too late to actually change the refstart.  There are
!                   // theoretical solutions to this -- mainly,
!                   // get_data_offset_source needs to check the start + len for
!                   // validity.  But I am not going to do it now.  Think of this
!                   // as the TODO item.
!                   gg_assign(refstart, gg_cast(LONG, integer_zero_node));
!                   gg_assign(reflen, gg_cast(LONG, integer_one_node));
!                   }
!                 else
!                   {
!                   rt_error("refmod START + LENGTH is too large");
!                   }
!                 }
!               ELSE
!                 ENDIF
!               }
!               ENDIF
!             }
!           else
!             {
!             // There is no refmod length, so we default to the remaining characters
!             tree subtract_expr = gg_subtract( rt_capacity,
!                                               refstart);
!             gg_assign(reflen, subtract_expr);
!             }
!           }
!           ENDIF
!         }
!         ENDIF
!       }
!     else
!       {
!       if( refer.refmod.len )
!         {
!         get_integer_value(value64,
!                           refer.refmod.len->field,
!                           refer_offset_source(*refer.refmod.len)
!                           );
!         gg_assign(reflen, gg_cast(LONG, value64));
!         }
!       else
!         {
!         // There is no refmod length, so we default to the remaining characters
!         gg_assign(reflen, gg_subtract(rt_capacity,
!                                       refstart));
!         }
!       }
  
!     // Arrive here with valid values for refstart and reflen:
  
!     return gg_cast(SIZE_T, reflen);
!     }
!   else
!     {
!     return size_t_zero_node;
!     }
    }
  
  static
  tree // size_t
! refer_fill_depends(cbl_refer_t &refer)
    {
    // This returns a positive number which is the amount a depends-limited
    // capacity needs to be reduced.
    Analyze();
    cbl_field_t *odo = symbol_find_odo(refer.field);
-   cbl_field_t *depending_on;
-   depending_on = cbl_field_of(symbol_at(odo->occurs.depending_on));
-   // refer.field has a relevant DEPENDING ON clause
- 
-   // gg_printf("var is %s type is %s\n",
-             // gg_string_literal(refer.field->name),
-             // gg_string_literal(cbl_field_type_str(refer.field->type)),
-             // NULL_TREE);
-   // gg_printf("   odo is %s\n", gg_string_literal(odo->name), NULL_TREE);
- 
-   // gg_printf("      depending_on is %s\n", gg_string_literal(depending_on->name), NULL_TREE);
-   // fprintf(stderr,
-           // "symbol_find_odo found %s, with depending_on %s\n",
-           // odo->name,
-           // depending_on->name);
  
    static tree value64 = gg_define_variable(LONG, "..rfd_value64", vs_file_static);
-   if( process_this_exception(ec_bound_odo_e) )
-     {
-     get_integer_value(value64,
-                       depending_on,
-                       NULL,
-                       CHECK_FOR_FRACTIONAL_DIGITS);
-     IF( var_decl_rdigits, ne_op, integer_zero_node )
-       {
-       // This needs to evaluate to an integer
-       if( enabled_exceptions.match(ec_bound_odo_e) )
-         {
-         SET_EXCEPTION_CODE(ec_bound_odo_e);
-         gg_assign(value64, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.upper));
-         }
-       else
-         {
-         rt_error("DEPENDING ON is not an integer");
-         }
-       }
-     ELSE
-       ENDIF
-     }
-   else
-     {
-     get_integer_value(value64, depending_on);
-     }
  
!   if( process_this_exception(ec_bound_odo_e) )
!     {
!     IF( value64, gt_op, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.upper) )
!       {
!       SET_EXCEPTION_CODE(ec_bound_odo_e);
!       gg_assign(value64, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.upper));
!       }
!     ELSE
!       {
!       IF( value64, lt_op, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.lower) )
!         {
!         if( enabled_exceptions.match(ec_bound_odo_e) )
!           {
!           SET_EXCEPTION_CODE(ec_bound_odo_e);
!           gg_assign(value64, build_int_cst_type(TREE_TYPE(value64), odo->occurs.bounds.lower));
!           }
!         else
!           {
!           rt_error("DEPENDING ON is less than OCCURS lower limit");
!           }
!         }
!       ELSE
!         ENDIF
!       IF( value64, lt_op, gg_cast(TREE_TYPE(value64), integer_zero_node) )
!         {
!         if( enabled_exceptions.match(ec_bound_odo_e) )
!           {
!           SET_EXCEPTION_CODE(ec_bound_odo_e);
!           gg_assign(value64, gg_cast(TREE_TYPE(value64), integer_zero_node));
!           }
!         else
!           {
!           rt_error("DEPENDING ON is greater than OCCURS upper limit");
!           }
!         }
!       ELSE
!         ENDIF
!       }
!       ENDIF
!     }
    // value64 is >= zero and < bounds.upper
  
    // We multiply the ODO value by the size of the data capacity to get the
--- 1931,2007 ----
  get_literal_string(cbl_field_t *field)
    {
    assert(field->type == FldLiteralA);
!   size_t buffer_length = field->data.capacity+1;
!   char *buffer = static_cast<char *>(xcalloc(1, buffer_length));
! 
    for(size_t i=0; i<field->data.capacity; i++)
      {
      buffer[i] = ascii_to_internal(field->data.initial[i]);
      }
! 
    return buffer;
    }
  
  bool
! refer_is_clean(const cbl_refer_t &refer)
    {
!   if( !refer.field || refer.field->type == FldLiteralN )
      {
      // It is routine for a refer to have no field.  It happens when the parser
!     // passes us a refer for an optional parameter that has been omitted, for
      // example.
+ 
+     // It is also the case that a FldLiteralN will never have suscripts, or the
+     // like.
      return true;
      }
  
    return     !refer.all
            && !refer.addr_of
!           && !refer.nsubscript()
            && !refer.refmod.from
            && !refer.refmod.len
            && !refer_has_depends(refer, refer_source)
            ;
    }
  
  
! /*  This routine returns the length portion of a refmod(start:length) reference.
!     It extracts both the start and the length so that it can add them together
!     to make sure that result falls within refer.capacity.
  
+     This routine shouldn't be called unless there is refmod involved.
+     */
  static
  tree  // size_t
! refer_refmod_length(const cbl_refer_t &refer)
    {
    Analyze();
!   REFER("refstart and reflen");
!   static tree refstart = gg_define_variable(LONG, "..rrl_refstart", vs_file_static);
!   static tree reflen   = gg_define_variable(LONG, "..rrl_reflen", vs_file_static);
  
!   get_and_check_refstart_and_reflen( refstart, reflen, refer);
  
!   // Arrive here with a valid value for reflen:
  
!   return gg_cast(SIZE_T, reflen);
    }
  
  static
  tree // size_t
! refer_fill_depends(const cbl_refer_t &refer)
    {
+   REFER("");
    // This returns a positive number which is the amount a depends-limited
    // capacity needs to be reduced.
    Analyze();
    cbl_field_t *odo = symbol_find_odo(refer.field);
  
    static tree value64 = gg_define_variable(LONG, "..rfd_value64", vs_file_static);
  
!   get_depending_on_value(value64, refer);
! 
    // value64 is >= zero and < bounds.upper
  
    // We multiply the ODO value by the size of the data capacity to get the
*************** refer_fill_depends(cbl_refer_t &refer)
*** 2428,2517 ****
    }
  
  tree  // size_t
! refer_offset_dest(cbl_refer_t &refer)
    {
!   Analyze();
!   // This has to be on the stack, because there are places where this routine
!   // is called twice before the results are used.
  
    if( !refer.field )
      {
      return size_t_zero_node;
      }
  
!   if( !refer.nsubscript )
      {
!     return get_data_offset_dest(refer);
      }
  
!   gg_assign(var_decl_odo_violation, integer_zero_node);
! 
!   tree retval = gg_define_variable(SIZE_T);
!   gg_assign(retval, get_data_offset_dest(refer));
!   if( process_this_exception(ec_bound_odo_e) )
!     {
!     IF( var_decl_odo_violation, ne_op, integer_zero_node )
!       {
!       if( enabled_exceptions.match(ec_bound_odo_e) )
!         {
!         SET_EXCEPTION_CODE(ec_bound_odo_e);
!         }
!       else
!         {
!         rt_error("receiving item subscript not in DEPENDING ON range");
!         }
!       }
!     ELSE
!       ENDIF
!     }
    return retval;
    }
  
! tree  // size_t
! refer_size_dest(cbl_refer_t &refer)
    {
    Analyze();
!   //static tree retval = gg_define_variable(SIZE_T, "..rsd_retval", vs_file_static);
!   tree retval = gg_define_variable(SIZE_T);
  
    if( !refer.field )
      {
      return size_t_zero_node;
      }
    if( refer_is_clean(refer) )
      {
!     // When the refer has no modifications, we return zero, which is interpreted
!     // as "use the original length"
!     if( refer.field->attr & (intermediate_e | any_length_e) )
!       {
!       return member(refer.field->var_decl_node, "capacity");
!       }
!     else
!       {
!       return build_int_cst_type(SIZE_T, refer.field->data.capacity);
!       }
      }
  
    // Step the first:  Get the actual full length:
-   if( refer.field->attr & (intermediate_e | any_length_e) )
-     {
-     // This is an intermediate; use the length that might have changed
-     // because of a FUNCTION TRIM, or whatnot.
- 
-     // We also pick up capacity for variables that were specified in
-     // linkage as ANY LENGTH
-     gg_assign(retval, member(refer.field->var_decl_node, "capacity"));
-     }
  
!   if( refer_has_depends(refer, refer_dest) )
      {
      // Because there is a depends, we might have to change the length:
      gg_assign(retval, refer_fill_depends(refer));
      }
    else
      {
!     // Use the compile-time value
!     gg_assign(retval, build_int_cst_type(SIZE_T, refer.field->data.capacity));
      }
  
    if( refer.refmod.from || refer.refmod.len )
--- 2017,2075 ----
    }
  
  tree  // size_t
! refer_offset(const cbl_refer_t &refer,
!                    int *pflags)
    {
!   // This routine calculates the effect of a refer offset on the
!   // refer.field->data location.  When there are subscripts, the data location
!   // gets augmented by the (subscript-1)*element_size calculation.  And when
!   // there is a refmod, the data location additionally gets augmented by
!   // (refmod.from-1)
  
    if( !refer.field )
      {
+     // It's common for the field to be missing.  It generally means that an
+     // optional parameter wasn't supplied.
      return size_t_zero_node;
      }
  
!   if( refer.field->type == FldLiteralN || refer.field->type == FldLiteralA )
      {
!     // We know that literals have no offset
!     return size_t_zero_node;
      }
  
!   tree retval = get_data_offset(refer, pflags);
    return retval;
    }
  
! static
! tree   // size_t
! refer_size(const cbl_refer_t &refer, refer_type_t refer_type)
    {
    Analyze();
!   static tree retval = gg_define_variable(SIZE_T, "..rs_retval", vs_file_static);
  
    if( !refer.field )
      {
      return size_t_zero_node;
      }
+ 
    if( refer_is_clean(refer) )
      {
!     return get_any_capacity(refer.field);
      }
  
    // Step the first:  Get the actual full length:
  
!   if( refer_has_depends(refer, refer_type) )
      {
      // Because there is a depends, we might have to change the length:
      gg_assign(retval, refer_fill_depends(refer));
      }
    else
      {
!     gg_assign(retval, get_any_capacity(refer.field));
      }
  
    if( refer.refmod.from || refer.refmod.len )
*************** refer_size_dest(cbl_refer_t &refer)
*** 2520,2526 ****
      // retval is the ODO based total length.
      // refmod is the length resulting from refmod(from:len)
      // We have to reduce retval by the effect of refmod:
!     tree diff = gg_subtract(build_int_cst_type(SIZE_T, refer.field->data.capacity),
                              refmod);
      gg_assign(retval, gg_subtract(retval, diff));
      }
--- 2078,2084 ----
      // retval is the ODO based total length.
      // refmod is the length resulting from refmod(from:len)
      // We have to reduce retval by the effect of refmod:
!     tree diff = gg_subtract(get_any_capacity(refer.field),
                              refmod);
      gg_assign(retval, gg_subtract(retval, diff));
      }
*************** refer_size_dest(cbl_refer_t &refer)
*** 2528,2640 ****
    }
  
  tree  // size_t
! refer_offset_source(cbl_refer_t &refer,
!                     int *pflags)
    {
!   if( !refer.field )
!     {
!     return size_t_zero_node;
!     }
!   if( !refer.nsubscript )
!     {
!     return get_data_offset_source(refer);
!     }
! 
!   Analyze();
! 
!   tree retval = gg_define_variable(SIZE_T);
!   gg_assign(var_decl_odo_violation, integer_zero_node);
! 
!   gg_assign(retval, get_data_offset_source(refer, pflags));
!   if( process_this_exception(ec_bound_odo_e) )
!     {
!     IF( var_decl_odo_violation, ne_op, integer_zero_node )
!       {
!       if( enabled_exceptions.match(ec_bound_odo_e) )
!         {
!         SET_EXCEPTION_CODE(ec_bound_odo_e);
!         }
!       else
!         {
!         rt_error("sending item subscript not in DEPENDING ON range");
!         }
!       }
!     ELSE
!       ENDIF
!     }
!   return retval;
    }
  
  tree  // size_t
! refer_size_source(cbl_refer_t &refer)
    {
!   if( !refer.field )
!     {
!     return size_t_zero_node;
!     }
!   if( refer_is_clean(refer) )
!     {
!     // When the refer has no modifications, we return zero, which is interpreted
!     // as "use the original length"
!     if( refer.field->attr & (intermediate_e | any_length_e) )
!       {
!       return member(refer.field->var_decl_node, "capacity");
!       }
!     else
!       {
!       return build_int_cst_type(SIZE_T, refer.field->data.capacity);
!       }
!     }
  
!   Analyze();
  
!   // Step the first:  Get the actual full length:
!   static tree retval = gg_define_variable(SIZE_T, "..rss_retval", vs_file_static);
!   if( refer.field->attr & (intermediate_e | any_length_e) )
!     {
!     // This is an intermediate; use the length that might have changed
!     // because of a FUNCTION TRIM, or whatnot.
  
!     // We also pick up capacity for variables that were specified in
!     // linkage as ANY LENGTH
!     gg_assign(retval,
!               member(refer.field->var_decl_node, "capacity"));
!     }
  
!   if( refer_has_depends(refer, refer_source) )
!     {
!     // Because there is a depends, we might have to change the length:
!     gg_assign(retval, refer_fill_depends(refer));
!     }
!   else
      {
!     // Use the compile-time value
!     gg_assign(retval, build_int_cst_type(SIZE_T, refer.field->data.capacity));
      }
  
!   if( refer.refmod.from || refer.refmod.len )
      {
!     tree refmod = refer_refmod_length(refer);
!     // retval is the ODO based total length.
!     // refmod is the length resulting from refmod(from:len)
!     // We have to reduce retval by the effect of refmod:
!     tree diff = gg_subtract(build_int_cst_type(SIZE_T, refer.field->data.capacity),
!                             refmod);
!     gg_assign(retval, gg_subtract(retval, diff));
      }
    return retval;
    }
  
  tree
! qualified_data_source(cbl_refer_t &refer)
    {
    return gg_add(member(refer.field->var_decl_node, "data"),
!                 refer_offset_source(refer));
    }
  
! tree
! qualified_data_dest(cbl_refer_t &refer)
!   {
!   return gg_add(member(refer.field->var_decl_node, "data"),
!                 refer_offset_dest(refer));
!   }
--- 2086,2159 ----
    }
  
  tree  // size_t
! refer_size_dest(const cbl_refer_t &refer)
    {
!   return refer_size(refer, refer_dest);
    }
  
  tree  // size_t
! refer_size_source(const cbl_refer_t &refer)
    {
!   /*  There are oddities involved with refer_size_source and refer_size_dest.
!       See the comments in refer_has_depends for some explanation.  There are
!       other considerations, as well.  For example, consider a move, where you
!       have both a source and a dest.  Given that refer_size returns a static,
!       there are ways that the source and dest can trip over each other.
  
!       The logic here avoids all known cases where they might trip over each
!       other.  But there conceivably might be others,.
  
!       You have been warned.
  
!       */
  
!   // This test has to be here, otherwise there are failures in regression
!   // testing.
!   if( !refer.field )
      {
!     return size_t_zero_node;
      }
  
!   // This test has to be here, otherwise there are failures in regression
!   // testing.
!   if( refer_is_clean(refer) )
      {
!     return get_any_capacity(refer.field);
      }
+ 
+   // This assignment has to be here. Simply returning refer_size() results
+   // in regression testing errors.
+   static tree retval = gg_define_variable(SIZE_T, "..rss_retval", vs_file_static);
+   gg_assign(retval, refer_size(refer, refer_source));
    return retval;
    }
  
  tree
! qualified_data_location(const cbl_refer_t &refer)
    {
    return gg_add(member(refer.field->var_decl_node, "data"),
!                 refer_offset(refer));
    }
  
! uint64_t
! get_time_nanoseconds()
! {
!   // This code was unabashedly stolen from gcc/timevar.cc.
!   // It returns the Unix epoch with nine decimal places.
! 
!   uint64_t retval = 0;
! 
! #ifdef HAVE_CLOCK_GETTIME
!   struct timespec ts;
!   clock_gettime (CLOCK_REALTIME, &ts);
!   retval = ts.tv_sec * 1000000000 + ts.tv_nsec;
!   return retval;
! #endif
! #ifdef HAVE_GETTIMEOFDAY
!   struct timeval tv;
!   gettimeofday (&tv, NULL);
!   retval = tv.tv_sec * 1000000000 + tv.tv_usec * 1000;
!   return retval;
! #endif
!   return retval;
! }
diff -Nrcpad gcc-15-20250726/gcc/cobol/genutil.h gcc-15-20250809/gcc/cobol/genutil.h
*** gcc-15-20250726/gcc/cobol/genutil.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/genutil.h	Sat Aug  9 22:32:37 2025
*************** extern bool suppress_dest_depends;
*** 45,52 ****
  extern std::vector<std::string>current_filename;
  
  extern tree var_decl_exception_code;         // int         __gg__exception_code;
- extern tree var_decl_exception_handled;      // int         __gg__exception_handled;
- extern tree var_decl_exception_file_number;  // int         __gg__exception_file_number;
  extern tree var_decl_exception_file_status;  // int         __gg__exception_file_status;
  extern tree var_decl_exception_file_name;    // const char *__gg__exception_file_name;
  extern tree var_decl_exception_statement;    // const char *__gg__exception_statement;
--- 45,50 ----
*************** extern tree var_decl_exception_paragraph
*** 58,64 ****
  
  extern tree var_decl_default_compute_error;  // int         __gg__default_compute_error;
  extern tree var_decl_rdigits;                // int         __gg__rdigits;
- extern tree var_decl_odo_violation;          // int         __gg__odo_violation;
  extern tree var_decl_unique_prog_id;         // size_t      __gg__unique_prog_id;
  
  extern tree var_decl_entry_location;         // This is for managing ENTRY statements
--- 56,61 ----
*************** int       get_scaled_rdigits(cbl_field_t
*** 95,101 ****
  int       get_scaled_digits(cbl_field_t *field);
  tree      tree_type_from_digits(size_t digits, int signable);
  tree      tree_type_from_size(size_t bytes, int signable);
! tree      tree_type_from_field(cbl_field_t *field);
  void      get_binary_value( tree value,
                              tree rdigits,
                              cbl_field_t *field,
--- 92,98 ----
  int       get_scaled_digits(cbl_field_t *field);
  tree      tree_type_from_digits(size_t digits, int signable);
  tree      tree_type_from_size(size_t bytes, int signable);
! 
  void      get_binary_value( tree value,
                              tree rdigits,
                              cbl_field_t *field,
*************** void      set_exception_code_func(ec_typ
*** 121,129 ****
                                    int line,
                                    int from_raise_statement=0);
  #define set_exception_code(ec) set_exception_code_func(ec, __LINE__)
! bool      process_this_exception(ec_type_t ec);
  #define   CHECK_FOR_FRACTIONAL_DIGITS true
! void      get_integer_value(tree value,
                              cbl_field_t *field,
                              tree         offset=NULL,  // size_t
                              bool check_for_fractional_digits=false);
--- 118,126 ----
                                    int line,
                                    int from_raise_statement=0);
  #define set_exception_code(ec) set_exception_code_func(ec, __LINE__)
! bool      process_this_exception(const ec_type_t ec);
  #define   CHECK_FOR_FRACTIONAL_DIGITS true
! void      get_integer_value(tree value,  // This is always a LONG
                              cbl_field_t *field,
                              tree         offset=NULL,  // size_t
                              bool check_for_fractional_digits=false);
*************** void      copy_little_endian_into_place(
*** 133,139 ****
                                          tree value,
                                          int rhs_rdigits,
                                          bool check_for_error,
!                                         tree &size_error);
  tree      build_array_of_size_t( size_t  N,
                                   const size_t *values);
  void      parser_display_internal_field(tree file_descriptor,
--- 130,136 ----
                                          tree value,
                                          int rhs_rdigits,
                                          bool check_for_error,
!                                   const tree &size_error);
  tree      build_array_of_size_t( size_t  N,
                                   const size_t *values);
  void      parser_display_internal_field(tree file_descriptor,
*************** void      parser_display_internal_field(
*** 141,163 ****
                                          bool advance=DISPLAY_NO_ADVANCE);
  char     *get_literal_string(cbl_field_t *field);
  
! bool      refer_is_clean(cbl_refer_t &refer);
! 
! tree      refer_offset_source(cbl_refer_t &refer,
!                               int *pflags=NULL);
! tree      refer_size_source(cbl_refer_t &refer);
! tree      refer_offset_dest(cbl_refer_t &refer);
! tree      refer_size_dest(cbl_refer_t &refer);
! 
! void     REFER_CHECK( const char *func,
!                       int         line,
!                       cbl_refer_t &refer
!                       );
! #define refer_check(a) REFER_CHECK(__func__, __LINE__, a)
  
! tree      qualified_data_source(cbl_refer_t &refer);
  
! tree      qualified_data_dest(cbl_refer_t &refer);
  
  void      build_array_of_treeplets( int ngroup,
                                      size_t N,
--- 138,151 ----
                                          bool advance=DISPLAY_NO_ADVANCE);
  char     *get_literal_string(cbl_field_t *field);
  
! bool      refer_is_clean(const cbl_refer_t &refer);
  
! tree      refer_offset(const cbl_refer_t &refer,
!                        int *pflags=NULL);
! tree      refer_size_source(const cbl_refer_t &refer);
! tree      refer_size_dest(const cbl_refer_t &refer);
  
! tree      qualified_data_location(const cbl_refer_t &refer);
  
  void      build_array_of_treeplets( int ngroup,
                                      size_t N,
*************** void      build_array_of_treeplets( int
*** 166,169 ****
--- 154,161 ----
  void      build_array_of_fourplets( int ngroup,
                                      size_t N,
                                      cbl_refer_t *refers);
+ void      get_depending_on_value_from_odo(tree retval, cbl_field_t *odo);
+ uint64_t  get_time_nanoseconds();
+ 
+ 
  #endif
diff -Nrcpad gcc-15-20250726/gcc/cobol/inspect.h gcc-15-20250809/gcc/cobol/inspect.h
*** gcc-15-20250726/gcc/cobol/inspect.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/inspect.h	Sat Aug  9 22:32:37 2025
***************
*** 53,233 ****
  static inline bool
  is_active( const cbl_refer_t& refer ) { return NULL != refer.field; }
  
! template <typename DATA>
! struct cbx_inspect_qual_t {
    bool initial;
!   DATA identifier_4;
  
!   cbx_inspect_qual_t() : initial(false), identifier_4(DATA()) {}
!   cbx_inspect_qual_t( bool initial, const DATA& identifier_4 )
      : initial(initial), identifier_4(identifier_4)
!     {
!       //if( identifier_4.field ) yywarn("%s:qualifying field is '%s'", __func__, identifier_4.field->name);
!     }
!   cbx_inspect_qual_t( const cbx_inspect_qual_t& that )
      : initial(that.initial)
      , identifier_4(that.identifier_4)
!     {
!       //if( identifier_4.field ) yywarn("%s:qualifying field is '%s'", __func__, identifier_4.field->name);
!     }
  
!   cbx_inspect_qual_t& operator=( const cbx_inspect_qual_t& that ) {
      initial = that.initial;
      identifier_4 = that.identifier_4;
-     //if( identifier_4.field ) yywarn("%s:qualifying field is '%s'", __func__, identifier_4.field->name);
      return *this;
    }
  
    bool active() const { return is_active(identifier_4); }
- 
-   void clear() {
-     initial = false;
-     identifier_4.clear();
-   }
  };
  
- typedef cbx_inspect_qual_t<cbl_refer_t> cbl_inspect_qual_t;
- 
  /*
   * Data for INSPECT X TALLYING Y FOR.  Captures information for operands of
   * CHARACTERS/ALL/LEADING.  The CHARACTERS/ALL/LEADING control is kept at the
   * next higher level, and may be repeated for each tally.
   *
!  * cbx_inspect_match_t::matching is not used with CHARACTERS
   */
- template <typename DATA>
- struct cbx_inspect_match_t {
-   DATA matching;                          // identifier-3/5 or literal-1/3
-   cbx_inspect_qual_t<DATA> before, after; // phrase 1
  
!   cbx_inspect_match_t(
!     const DATA& matching = DATA(),
!     cbx_inspect_qual_t<DATA> before = cbx_inspect_qual_t<DATA>(),
!     cbx_inspect_qual_t<DATA> after = cbx_inspect_qual_t<DATA>()
!     )
!     : matching(matching)
      , before(before)
      , after(after)
    {}
    // match all characters
    bool match_any() const { return !(before.active() || after.active()); }
- };
  
! typedef cbx_inspect_match_t<cbl_refer_t> cbl_inspect_match_t;
  
  /*
   * Data for INSPECT X REPLACING.  The CHARACTERS/ALL/LEADING/FIRST control is
   * kept at the next higher level, and may be repeated.
   */
! template <typename DATA>
! struct cbx_inspect_replace_t : public cbx_inspect_match_t<DATA> {
!   DATA replacement;
  
!   cbx_inspect_replace_t( const DATA& matching = DATA(),
!                          const DATA& replacement = DATA() )
!     : cbx_inspect_match_t<DATA>(matching)
!     , replacement(replacement)
!   {}
!   cbx_inspect_replace_t( const DATA& matching,
!                          const DATA& replacement,
!                          const cbx_inspect_qual_t<DATA>& before,
!                          const cbx_inspect_qual_t<DATA>& after )
!     : cbx_inspect_match_t<DATA>(matching, before, after)
      , replacement(replacement)
    {}
  };
  
- typedef cbx_inspect_replace_t<cbl_refer_t> cbl_inspect_replace_t;
- 
  // One partial tally or substitution.
! template <typename DATA>
! struct cbx_inspect_oper_t {
    cbl_inspect_bound_t bound;  // CHARACTERS/ALL/LEADING/FIRST
!   size_t n_identifier_3;      // N matches/replaces
!   // either tallies or replaces is NULL
!   cbx_inspect_match_t<DATA> *matches;
!   cbx_inspect_replace_t<DATA> *replaces;
  
!   cbx_inspect_oper_t( cbl_inspect_bound_t bound,
!                       std::list<cbx_inspect_match_t<DATA>> matches )
      : bound(bound)
!     , n_identifier_3( matches.size())
!     , matches(NULL)
!     , replaces(NULL)
!     {
!       this->matches = new cbx_inspect_match_t<DATA>[n_identifier_3];
!       std::copy( matches.begin(), matches.end(), this->matches );
!     }
  
!   cbx_inspect_oper_t( cbl_inspect_bound_t bound,
!                       std::list<cbx_inspect_replace_t<DATA>> replaces )
      : bound(bound)
!     , n_identifier_3( replaces.size() )
!     , matches(NULL)
!     , replaces(NULL)
!     {
!       this->replaces = new cbx_inspect_replace_t<DATA>[n_identifier_3];
!       std::copy( replaces.begin(), replaces.end(), this->replaces );
!     }
  
!   cbx_inspect_oper_t()
!     : bound(bound_characters_e)
!     , n_identifier_3(0)
!     , matches(NULL)
!     , replaces(NULL)
!     {
!       assert( is_valid() );
!     }
  
!   bool is_valid() const {
!     if( matches && replaces ) return false;
!     if( matches || replaces ) return n_identifier_3 > 0;
!     return n_identifier_3 == 0;
    }
  };
  
- typedef cbx_inspect_oper_t<cbl_refer_t> cbl_inspect_oper_t;
- 
  // One whole tally or substitution.  For REPLACING, nbound == 1
! template <typename DATA>
! struct cbx_inspect_t {
!   DATA tally;                 // identifier-2: NULL without a tally
!   size_t nbound;              // Each FOR or REPLACING operation starts with a cbl_inspect_bound_t
!   cbx_inspect_oper_t<DATA> *opers;
! 
!   cbx_inspect_t( const DATA& tally = DATA() )
!     : tally(tally)
!     , nbound(0)
!     , opers(NULL)
      {}
-   cbx_inspect_t( const DATA& tally, cbx_inspect_oper_t<DATA> oper )
-     : tally(tally)
-     , nbound(1)
-     , opers(NULL)
-     {
-       this->opers = new cbx_inspect_oper_t<DATA>[1];
-       this->opers[0] = oper;
-     }
-   cbx_inspect_t( const DATA& tally,
-                  const std::list<cbx_inspect_oper_t<DATA>>& opers )
-     : tally(tally)
-     , nbound( opers.size() )
-     , opers(NULL)
-     {
-       this->opers = new cbx_inspect_oper_t<DATA>[nbound];
-       std::copy( opers.begin(), opers.end(), this->opers );
-     }
- };
  
! typedef cbx_inspect_t<cbl_refer_t> cbl_inspect_t;
  
  
  /*
   * Runtime
   */
  
! void parser_inspect( cbl_refer_t input, bool backward,
!                      size_t ninspect, cbl_inspect_t *inspects );
  void parser_inspect_conv( cbl_refer_t input, bool backward,
                            cbl_refer_t original,
                            cbl_refer_t replacement,
--- 53,214 ----
  static inline bool
  is_active( const cbl_refer_t& refer ) { return NULL != refer.field; }
  
! struct cbl_inspect_qual_t {
    bool initial;
!   cbl_refer_t identifier_4;
  
!   cbl_inspect_qual_t() : initial(false), identifier_4(cbl_refer_t()) {}
!   cbl_inspect_qual_t( bool initial, const cbl_refer_t& identifier_4 )
      : initial(initial), identifier_4(identifier_4)
!     {}
!   cbl_inspect_qual_t( const cbl_inspect_qual_t& that )
      : initial(that.initial)
      , identifier_4(that.identifier_4)
!     {}
  
!   cbl_inspect_qual_t& operator=( const cbl_inspect_qual_t& that ) {
      initial = that.initial;
      identifier_4 = that.identifier_4;
      return *this;
    }
  
    bool active() const { return is_active(identifier_4); }
  };
  
  /*
   * Data for INSPECT X TALLYING Y FOR.  Captures information for operands of
   * CHARACTERS/ALL/LEADING.  The CHARACTERS/ALL/LEADING control is kept at the
   * next higher level, and may be repeated for each tally.
   *
!  * cbl_inspect_match_t::matching is not used with CHARACTERS
   */
  
! class cbl_inspect_match_t {
!   friend void dump_inspect_match( const cbl_inspect_match_t& M );
!   cbl_refer_t match;  // identifier-3/5 or literal-1/3
!   cbl_refer_t tally;  // collected too soon, belongs to next phrase 
!  public:
!   cbl_inspect_qual_t before, after; // phrase 1
! 
!   cbl_inspect_match_t() {}
!   explicit 
!   cbl_inspect_match_t( const cbl_refer_t& matching,
!                        const cbl_inspect_qual_t& before = cbl_inspect_qual_t(),
!                        const cbl_inspect_qual_t& after  = cbl_inspect_qual_t() )
!     : match(matching)
      , before(before)
      , after(after)
    {}
    // match all characters
    bool match_any() const { return !(before.active() || after.active()); }
  
!   void save_premature_tally( const cbl_refer_t& tally ) {
!     this->tally = tally; // put it here temporarily
!   }
!   cbl_refer_t premature_tally() {
!     if( !tally.field ) { std::swap(match, tally); }
!     return tally;
!   }
!   
!   const cbl_refer_t& matching( const cbl_refer_t& match ) {
!     return this->match = match;
!   }
!   const cbl_refer_t& matching() const { return match; }
! 
!   bool empty() const {
!     return !is_active(match) && !before.active() && !after.active();
!   }
! };
  
  /*
   * Data for INSPECT X REPLACING.  The CHARACTERS/ALL/LEADING/FIRST control is
   * kept at the next higher level, and may be repeated.
   */
! struct cbl_inspect_replace_t : public cbl_inspect_match_t {
!   cbl_refer_t replacement;
  
!   cbl_inspect_replace_t() {}
!   cbl_inspect_replace_t( const cbl_refer_t& matching,
!                          const cbl_refer_t& replacement,
!                          const cbl_inspect_qual_t& before,
!                          const cbl_inspect_qual_t& after )
!     : cbl_inspect_match_t(matching, before, after)
      , replacement(replacement)
    {}
  };
  
  // One partial tally or substitution.
! struct cbl_inspect_oper_t {
    cbl_inspect_bound_t bound;  // CHARACTERS/ALL/LEADING/FIRST
!   // either tallies or replaces is empty
!   std::vector<cbl_inspect_match_t> matches;
!   std::vector<cbl_inspect_replace_t> replaces;
  
!   cbl_inspect_oper_t() : bound(bound_characters_e) {}
! 
!   explicit cbl_inspect_oper_t( const cbl_inspect_match_t& match,
!                                cbl_inspect_bound_t bound = bound_characters_e )
      : bound(bound)
!   {
!     matches.push_back(match);
!   }
!   explicit cbl_inspect_oper_t( const cbl_inspect_replace_t& replace,
!                                cbl_inspect_bound_t bound = bound_characters_e )
!     : bound(bound)
!   {
!     replaces.push_back(replace);
!   }
  
!   cbl_inspect_oper_t( cbl_inspect_bound_t bound,
!                       const std::vector<cbl_inspect_match_t>& matches )
      : bound(bound)
!     , matches(matches)
!     {}
  
!   cbl_inspect_oper_t( cbl_inspect_bound_t bound,
!                       const std::vector<cbl_inspect_replace_t>& replaces )
!     : bound(bound)
!     , replaces(replaces)
!     {}
  
!   // N matches/replaces
!   size_t n_identifier_3() const {
!     return std::max( matches.size(), replaces.size() );
!   } 
! 
!   bool is_valid() const { // only one or the other, never both
!     bool invalid = !matches.empty() && !replaces.empty();
!     return ! invalid;
    }
  };
  
  // One whole tally or substitution.  For REPLACING, nbound == 1
! // FOR and REPLACING start with a cbl_inspect_bound_t
! struct cbl_inspect_t : public std::vector<cbl_inspect_oper_t> {
!   cbl_refer_t tally; // field is NULL for REPLACING
!   cbl_inspect_t() {}
!   cbl_inspect_t( size_t n, const cbl_inspect_oper_t& oper )
!     : std::vector<cbl_inspect_oper_t>(n, oper)
!   {}
!   cbl_inspect_t( const cbl_refer_t& tally,
!                  const std::vector<cbl_inspect_oper_t>& opers )
!     : std::vector<cbl_inspect_oper_t>(opers)
!     , tally(tally)
      {}
  
!   size_t nbound() const { return size(); }
! };
  
+ typedef std::vector<cbl_inspect_t> cbl_inspect_opers_t;
  
  /*
   * Runtime
   */
  
! void parser_inspect( const cbl_refer_t& input,
!                      bool backward,
!                      cbl_inspect_opers_t& inspects );
! 
  void parser_inspect_conv( cbl_refer_t input, bool backward,
                            cbl_refer_t original,
                            cbl_refer_t replacement,
diff -Nrcpad gcc-15-20250726/gcc/cobol/lang-specs.h gcc-15-20250809/gcc/cobol/lang-specs.h
*** gcc-15-20250726/gcc/cobol/lang-specs.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/lang-specs.h	Sat Aug  9 22:32:37 2025
***************
*** 34,40 ****
      {".CBL", "@cobol", 0, 0, 0},
      {"@cobol",
          "cobol1 %i %(cc1_options) "
!         "%{D*} %{E} %{I*} %{fmax-errors*} %{fsyntax-only*} "
          "%{fcobol-exceptions*} "
          "%{copyext} "
          "%{fstatic-call} %{fdefaultbyte} "
--- 34,40 ----
      {".CBL", "@cobol", 0, 0, 0},
      {"@cobol",
          "cobol1 %i %(cc1_options) "
!         "%{D*} %{E} %{I*} %{M} %{fmax-errors*} %{fsyntax-only*} "
          "%{fcobol-exceptions*} "
          "%{copyext} "
          "%{fstatic-call} %{fdefaultbyte} "
diff -Nrcpad gcc-15-20250726/gcc/cobol/lang.opt gcc-15-20250809/gcc/cobol/lang.opt
*** gcc-15-20250726/gcc/cobol/lang.opt	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/lang.opt	Sat Aug  9 22:32:37 2025
*************** Cobol Joined Separate
*** 38,43 ****
--- 38,48 ----
  ;;  -I <dir>	Add copybook search directory
  ; Documented in c.opt
  
+ M
+ Cobol
+ ; Documented in c.opt
+ 
+ 
  dialect
  Cobol Joined Separate Enum(dialect_type) EnumBitSet Var(cobol_dialect)
  Accept COBOL constructs used by non-ISO compilers
diff -Nrcpad gcc-15-20250726/gcc/cobol/lang.opt.urls gcc-15-20250809/gcc/cobol/lang.opt.urls
*** gcc-15-20250726/gcc/cobol/lang.opt.urls	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/lang.opt.urls	Sat Aug  9 22:32:37 2025
*************** UrlSuffix(gcc/Preprocessor-Options.html#
*** 10,15 ****
--- 10,18 ----
  I
  UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
  
+ M
+ UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+ 
  ffixed-form
  LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-ffixed-form)
  
diff -Nrcpad gcc-15-20250726/gcc/cobol/lexio.cc gcc-15-20250809/gcc/cobol/lexio.cc
*** gcc-15-20250726/gcc/cobol/lexio.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/lexio.cc	Sat Aug  9 22:32:37 2025
***************
*** 28,33 ****
--- 28,34 ----
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
+ #include "config.h"
  #include <ext/stdio_filebuf.h>
  #include "cobol-system.h"
  #include "cbldiag.h"
***************
*** 37,51 ****
  
  extern int yy_flex_debug;
  
! static struct {
!   bool first_file, explicitly;
!   int column, right_margin;
!   bool inference_pending() {
!     bool tf = first_file && !explicitly;
!     first_file = false;
!     return tf;
    }
! } indicator = { true, false, 0, 0 };
  
  static bool debug_mode = false;
  
--- 38,61 ----
  
  extern int yy_flex_debug;
  
! source_format_t& cdf_source_format();
! 
! void
! source_format_t::infer( const char *bol, bool want_reference_format ) {
!   if( bol ) {
!     left = 7;
!     if( want_reference_format ) {
!       right = 73;
!     }
    }
!   dbgmsg("%s:%d: %s format detected", __func__, __LINE__,
!          description());
! }
! 
! 
! // public source format test functions
! bool is_fixed_format() { return cdf_source_format().is_fixed(); }
! bool is_reference_format() { return cdf_source_format().is_reffmt(); }
  
  static bool debug_mode = false;
  
*************** static bool debug_mode = false;
*** 61,71 ****
  */
  
  static inline int left_margin() {
!   return indicator.column == 0? indicator.column : indicator.column - 1;
  }
  static inline int right_margin() {
!   return indicator.right_margin == 0?
!     indicator.right_margin : indicator.right_margin - 1;
  }
  
  /*
--- 71,80 ----
  */
  
  static inline int left_margin() {
!   return cdf_source_format().left_margin();
  }
  static inline int right_margin() {
!   return cdf_source_format().right_margin();
  }
  
  /*
*************** static inline int right_margin() {
*** 74,95 ****
   *   When setting back to 0 (free), the right margin is also reset to 0.
   */
  void
! cobol_set_indicator_column( int column )
! {
!   indicator.explicitly = true;
!   if( column == 0 ) indicator.right_margin = 0;
!   if( column < 0 ) {
!     column = -column;
!     indicator.right_margin = 73;
!   }
!   indicator.column = column;
! }
  
! bool is_fixed_format() { return indicator.column == 7; }
! bool is_reference_format() {
!   return indicator.column == 7 && indicator.right_margin == 73;
! }
! bool include_debug()      { return indicator.column == 7 && debug_mode; }
  bool set_debug( bool tf ) { return debug_mode = tf && is_fixed_format(); }
  
  static bool nonblank( const char ch ) { return !isblank(ch); }
--- 83,91 ----
   *   When setting back to 0 (free), the right margin is also reset to 0.
   */
  void
! cobol_set_indicator_column( int column );
  
! bool include_debug()      { return is_fixed_format() && debug_mode; }
  bool set_debug( bool tf ) { return debug_mode = tf && is_fixed_format(); }
  
  static bool nonblank( const char ch ) { return !isblank(ch); }
*************** start_of_line( char *bol, char *eol ) {
*** 103,109 ****
  
  static inline char *
  continues_at( char *bol, char *eol ) {
!   if( indicator.column == 0 ) return NULL;  // cannot continue in free format
    bol += left_margin();
    if( *bol != '-' ) return NULL; // not a continuation line
    return start_of_line(++bol, eol);
--- 99,105 ----
  
  static inline char *
  continues_at( char *bol, char *eol ) {
!   if( cdf_source_format().is_free() ) return NULL;  // cannot continue in free format
    bol += left_margin();
    if( *bol != '-' ) return NULL; // not a continuation line
    return start_of_line(++bol, eol);
*************** continues_at( char *bol, char *eol ) {
*** 112,119 ****
  // Return pointer to indicator column. Test ch if provided.
  // NULL means no indicator column or tested value not present.
  static inline char *
! indicated( char *bol, char *eol, char ch = '\0' ) {
!   if( indicator.column == 0 && *bol != '*' ) {
      return NULL;  // no indicator column in free format, except for comments
    }
    gcc_assert(bol != NULL);
--- 108,115 ----
  // Return pointer to indicator column. Test ch if provided.
  // NULL means no indicator column or tested value not present.
  static inline char *
! indicated( char *bol, const char *eol, char ch = '\0' ) {
!   if( cdf_source_format().left_margin() == 0 && *bol != '*' ) {
      return NULL;  // no indicator column in free format, except for comments
    }
    gcc_assert(bol != NULL);
*************** indicated( char *bol, char *eol, char ch
*** 129,138 ****
  
  static char *
  remove_inline_comment( char *bol, char *eol ) {
-   static char ends = '\0';
    char *nl = std::find(bol, eol, '\n');
  
    if( bol < nl ) {
      std::swap(*nl, ends);
      char *comment = strstr(bol, "*>");
      if( comment ) {
--- 125,134 ----
  
  static char *
  remove_inline_comment( char *bol, char *eol ) {
    char *nl = std::find(bol, eol, '\n');
  
    if( bol < nl ) {
+     static char ends = '\0';
      std::swap(*nl, ends);
      char *comment = strstr(bol, "*>");
      if( comment ) {
*************** maybe_add_space(const span_t& pattern, r
*** 197,206 ****
    }
  
    if( befter[0] == blank || befter[1] == blank ) {
!     char *s = xasprintf( "%s%.*s%s",
!                          befter[0],
!                          recognized.after.size(), recognized.after.p,
!                          befter[1] );
      recognized.after = span_t(s, s + strlen(s));
    }
  }
--- 193,202 ----
    }
  
    if( befter[0] == blank || befter[1] == blank ) {
!     const char *s = xasprintf( "%s%.*s%s",
!                                befter[0],
!                                recognized.after.size(), recognized.after.p,
!                                befter[1] );
      recognized.after = span_t(s, s + strlen(s));
    }
  }
*************** recognize_replacements( filespan_t mfile
*** 255,268 ****
  
        span_t found(mfile.eodata, mfile.eodata);
  
!       if( regex_search( mfile.ccur(), (const char *)mfile.eodata, cm, re) ) {
          gcc_assert(cm[1].matched);
          found = span_t( cm[1].first, cm[1].second );
          if( yy_flex_debug ) {
            size_t n = count_newlines(mfile.data, found.p);
!           dbgmsg("%s:%d first '%.*s' is on line %zu (offset %zu)", __func__, __LINE__,
                   directive.before.size(), directive.before.p,
!                  ++n, found.p - mfile.data);
          }
        } else {
          dbgmsg("%s:%d not found: '%s' in \n'%.*s'", __func__, __LINE__,
--- 251,267 ----
  
        span_t found(mfile.eodata, mfile.eodata);
  
!       if( regex_search( mfile.ccur(),
!                         const_cast<const char *>(mfile.eodata),
!                         cm, re) ) {
          gcc_assert(cm[1].matched);
          found = span_t( cm[1].first, cm[1].second );
          if( yy_flex_debug ) {
            size_t n = count_newlines(mfile.data, found.p);
!           dbgmsg("%s:%d first '%.*s' is on line " HOST_SIZE_T_PRINT_UNSIGNED
!                  " (offset " HOST_SIZE_T_PRINT_UNSIGNED ")", __func__, __LINE__,
                   directive.before.size(), directive.before.p,
!                  (fmt_size_t)++n, (fmt_size_t)(found.p - mfile.data));
          }
        } else {
          dbgmsg("%s:%d not found: '%s' in \n'%.*s'", __func__, __LINE__,
*************** recognize_replacements( filespan_t mfile
*** 289,297 ****
      bol = next.found.pend;
  
      if( yy_flex_debug ) {
!       size_t n = std::count((const char *)mfile.data, recognized.before.p, '\n');
!       dbgmsg( "%s:%d: line %zu @ %zu: '%s'\n/%.*s/%.*s/", __func__, __LINE__,
!               ++n, next.found.p - mfile.data,
                next.directive.before.p,
                int(recognized.before.size()), recognized.before.p,
                int(recognized.after.size()), recognized.after.p );
--- 288,299 ----
      bol = next.found.pend;
  
      if( yy_flex_debug ) {
!       size_t n = std::count(const_cast<const char *>(mfile.data),
!                             recognized.before.p, '\n');
!       dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED
!               " @ " HOST_SIZE_T_PRINT_UNSIGNED ": '%s'\n/%.*s/%.*s/",
!               __func__, __LINE__,
!               (fmt_size_t)++n, (fmt_size_t)(next.found.p - mfile.data),
                next.directive.before.p,
                int(recognized.before.size()), recognized.before.p,
                int(recognized.after.size()), recognized.after.p );
*************** recognize_replacements( filespan_t mfile
*** 303,323 ****
      next.found = span_t(mfile.eodata, mfile.eodata);
  
      regex re(next.directive.before.p, extended_icase);
!     if( regex_search(bol, (const char *)mfile.eodata, cm, re) ) {
        gcc_assert(cm[1].matched);
        next.found = span_t( cm[1].first, cm[1].second );
!       size_t n = std::count((const char *)mfile.data, next.found.p, '\n');
        if( false )
!         dbgmsg("%s:%d next '%.*s' will be on line %zu (offset %zu)", __func__, __LINE__,
                 next.directive.before.size(), next.directive.before.p,
!                ++n, next.found.p - mfile.data);
      }
      pnext = std::min_element(futures.begin(), futures.end());
    }
  }
  
  static void
  check_source_format_directive( filespan_t& mfile ) {
    const char *p = std::find(mfile.cur, mfile.eol, '>');
    if( ! (p < mfile.eol && p[1] == *p ) ) return;
  
--- 305,389 ----
      next.found = span_t(mfile.eodata, mfile.eodata);
  
      regex re(next.directive.before.p, extended_icase);
!     if( regex_search(bol, const_cast<const char *>(mfile.eodata), cm, re) ) {
        gcc_assert(cm[1].matched);
        next.found = span_t( cm[1].first, cm[1].second );
!       size_t n = std::count(const_cast<const char *>(mfile.data),
!                             next.found.p, '\n');
        if( false )
!         dbgmsg("%s:%d next '%.*s' will be on line " HOST_SIZE_T_PRINT_UNSIGNED
!                " (offset " HOST_SIZE_T_PRINT_UNSIGNED ")", __func__, __LINE__,
                 next.directive.before.size(), next.directive.before.p,
!                (fmt_size_t)++n, (fmt_size_t)(next.found.p - mfile.data));
      }
      pnext = std::min_element(futures.begin(), futures.end());
    }
  }
  
  static void
+ check_push_pop_directive( filespan_t& mfile ) {
+   char eol = '\0';
+   const char *p = std::find(mfile.cur, mfile.eol, '>');
+   if( ! (p < mfile.eol && p[1] == *p ) ) return;
+ 
+   const char pattern[] =
+     ">>[[:blank:]]*(push|pop)[[:blank:]]+"
+     "("
+       "all|"
+       "call-convention|"
+       "cobol-words|"
+       "define|"
+       "source[[:blank:]]+format|"
+       "turn"
+     ")";
+   static regex re(pattern, extended_icase);
+ 
+   // show contents of marked subexpressions within each match
+   cmatch cm;
+ 
+   std::swap(*mfile.eol, eol); // see implementation for excuses
+   bool ok = regex_search(p, const_cast<const char *>(mfile.eol), cm, re);
+   std::swap(*mfile.eol, eol);
+ 
+   if( ok ) {
+     gcc_assert(cm.size() > 1);
+     bool push = TOUPPER(cm[1].first[1]) == 'U';
+     switch( TOUPPER(cm[2].first[0]) ) {
+     case 'A': // ALL
+       push? cdf_push() : cdf_pop();
+       break;
+     case 'C':
+       switch( TOUPPER(cm[2].first[1]) ) {
+       case 'A': // CALL-CONVENTION
+         push? cdf_push_call_convention() : cdf_pop_call_convention();
+         break;
+       case 'O': // COBOL-WORDS
+         push? cdf_push_current_tokens() : cdf_pop_current_tokens();
+         break;
+       default:
+         gcc_unreachable();
+       }
+       break;
+     case 'D': // DEFINE
+       push? cdf_push_dictionary() : cdf_pop_dictionary();
+       break;
+     case 'S': // SOURCE FORMAT
+       push? cdf_push_source_format() : cdf_pop_source_format();
+       break;
+     case 'T': // TURN
+       push? cdf_push_enabled_exceptions() : cdf_pop_enabled_exceptions();
+       break;
+     default:
+       gcc_unreachable();
+     }
+     erase_line(const_cast<char*>(cm[0].first),
+                const_cast<char*>(cm[0].second));
+   }
+ }
+ 
+ static void
  check_source_format_directive( filespan_t& mfile ) {
+   char eol = '\0';
    const char *p = std::find(mfile.cur, mfile.eol, '>');
    if( ! (p < mfile.eol && p[1] == *p ) ) return;
  
*************** check_source_format_directive( filespan_
*** 330,336 ****
  
    // show contents of marked subexpressions within each match
    cmatch cm;
!   if( regex_search(p, (const char *)mfile.eol, cm, re) ) {
      gcc_assert(cm.size() > 1);
      switch( cm[3].length() ) {
      case 4:
--- 396,407 ----
  
    // show contents of marked subexpressions within each match
    cmatch cm;
! 
!   std::swap(*mfile.eol, eol); // see implementation for excuses
!   bool ok = regex_search(p, const_cast<const char *>(mfile.eol), cm, re);
!   std::swap(*mfile.eol, eol);
! 
!   if( ok ) {
      gcc_assert(cm.size() > 1);
      switch( cm[3].length() ) {
      case 4:
*************** check_source_format_directive( filespan_
*** 343,353 ****
        gcc_assert(cm[3].length() == 4 || cm[3].length() == 5);
        break;
      }
!     mfile.cur = const_cast<char*>(cm[0].second);
!     dbgmsg( "%s:%d: %s format set, on line %zu", __func__, __LINE__,
!             indicator.column == 7? "FIXED" : "FREE", mfile.lineno() );
!     erase_line(const_cast<char*>(cm[0].first),
!                const_cast<char*>(cm[0].second));
    }
  }
  
--- 414,427 ----
        gcc_assert(cm[3].length() == 4 || cm[3].length() == 5);
        break;
      }
! 
!     dbgmsg( "%s:%d: %s format set, on line " HOST_SIZE_T_PRINT_UNSIGNED,
!             __func__, __LINE__,
!             cdf_source_format().description(),
!             (fmt_size_t)mfile.lineno() );
!     char *bol = cdf_source_format().is_fixed()? mfile.cur : const_cast<char*>(cm[0].first);
!     gcc_assert(cm[0].second <= mfile.eol);
!     erase_line(bol, const_cast<char*>(cm[0].second));
    }
  }
  
*************** struct buffer_t : public bytespan_t {
*** 386,402 ****
    }
  };
  
! static bool
! valid_sequence_area( const char *p, const char *eodata ) {
!   const char *pend = p + 6;
!   if ( eodata < pend ) return false;
  
!   for( ; p < pend; p++ ) {
!     if( ! (ISDIGIT(*p) || *p == SPACE) ) {
!       return false;
      }
    }
!   return true; // characters either digits or blanks
  }
  
  const char * esc( size_t len, const char input[] );
--- 460,481 ----
    }
  };
  
! static inline bool is_p( char ch ) { return TOUPPER(ch) == 'P'; }
  
! static bool
! is_program_id( const char *p, const char *eol ) {
!   static const std::string program_id("PROGRAM-ID");
!   auto eop = p + program_id.size();
!   if( eop < eol ) {
!     // PROGRAM-ID must be followed by a dot, perhaps with intervening whitespace.
!     for( const char *dot=eop; dot < eol && *dot != '.'; dot++ ) {
!       if( !ISSPACE(*dot) ) return false;
      }
+     std::string line (p, eop);
+     std::transform(line.begin(), line.end(), line.begin(), ::toupper);
+     return line == program_id;
    }
!   return false;
  }
  
  const char * esc( size_t len, const char input[] );
*************** struct replacing_term_t {
*** 436,444 ****
    bool matched, done;
    span_t leading_trailing, term, stmt;
  
!   replacing_term_t(const char input[]) : matched(false), done(false) {
!     stmt = span_t(input, input);
!   }
  };
  
  extern YYLTYPE yylloc;
--- 515,523 ----
    bool matched, done;
    span_t leading_trailing, term, stmt;
  
!   explicit replacing_term_t(const char input[])
!     : matched(false), done(false), stmt(span_t(input, input))
!     {}
  };
  
  extern YYLTYPE yylloc;
*************** update_yylloc( const csub_match& stmt, c
*** 508,514 ****
  
  static replacing_term_t
  parse_replacing_term( const char *stmt, const char *estmt ) {
!   gcc_assert(stmt); gcc_assert(estmt); gcc_assert(stmt < estmt);
    replacing_term_t output(stmt);
  
    static const char pattern[] =
--- 587,593 ----
  
  static replacing_term_t
  parse_replacing_term( const char *stmt, const char *estmt ) {
!   gcc_assert(stmt); gcc_assert(estmt); gcc_assert(stmt <= estmt);
    replacing_term_t output(stmt);
  
    static const char pattern[] =
*************** parse_replacing_pair( const char *stmt,
*** 718,730 ****
        }
      }
      if( pair.stmt.p ) {
!       yywarn("CDF syntax error '%*s'", (int)pair.stmt.size(), pair.stmt.p);
      }
      else {
        // This eliminated a compiler warning about "format-overflow"
        yywarn("CDF syntax error");
      }
!     pair.stmt = span_t(0UL, stmt);
      pair.replace = replace_t();
    }
    return pair;
--- 797,809 ----
        }
      }
      if( pair.stmt.p ) {
!       yywarn("CDF syntax error '%.*s'", (int)pair.stmt.size(), pair.stmt.p);
      }
      else {
        // This eliminated a compiler warning about "format-overflow"
        yywarn("CDF syntax error");
      }
!     pair.stmt = span_t(size_t(0), stmt);
      pair.replace = replace_t();
    }
    return pair;
*************** parse_replace_pairs( const char *stmt, c
*** 764,772 ****
        // Report findings.
        if( false && yy_flex_debug ) {
          for( size_t i=0; i < cm.size(); i++ ) {
!           dbgmsg("%s: %s %zu: '%.*s'", __func__,
                   cm[i].matched? "Pair" : "pair",
!                  i,
                   cm[i].matched? int(cm[i].length()) : 0,
                   cm[i].matched? cm[i].first : "");
          }
--- 843,851 ----
        // Report findings.
        if( false && yy_flex_debug ) {
          for( size_t i=0; i < cm.size(); i++ ) {
!           dbgmsg("%s: %s " HOST_SIZE_T_PRINT_UNSIGNED ": '%.*s'", __func__,
                   cm[i].matched? "Pair" : "pair",
!                  (fmt_size_t)i,
                   cm[i].matched? int(cm[i].length()) : 0,
                   cm[i].matched? cm[i].first : "");
          }
*************** parse_replace_pairs( const char *stmt, c
*** 786,792 ****
      }
  
      span_t& before(parsed.replace.before);
!     span_t& after(parsed.replace.after);
  
      const char *befter[2] = { nonword_ch, nonword_ch };
      gcc_assert(before.p < before.pend);
--- 865,871 ----
      }
  
      span_t& before(parsed.replace.before);
!     const span_t& after(parsed.replace.after);
  
      const char *befter[2] = { nonword_ch, nonword_ch };
      gcc_assert(before.p < before.pend);
*************** parse_replace_pairs( const char *stmt, c
*** 825,833 ****
    }
  
    if( yy_flex_debug ) {
!     dbgmsg( "%s:%d: %s: %zu pairs parsed from  '%.*s'", __func__, __LINE__,
!             parsed.done()? "done" : "not done",
!             pairs.size(), parsed.stmt.size(), parsed.stmt.p );
      int i = 0;
      for( const auto& replace : pairs ) {
        dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__,
--- 904,913 ----
    }
  
    if( yy_flex_debug ) {
!     dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed from  '%.*s'",
!             __func__, __LINE__,
!             parsed.done() ? "done" : "not done",
!             (fmt_size_t)pairs.size(), parsed.stmt.size(), parsed.stmt.p );
      int i = 0;
      for( const auto& replace : pairs ) {
        dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__,
*************** struct copy_descr_t {
*** 853,859 ****
  };
  
  static YYLTYPE
! location_in( const filespan_t& mfile, const csub_match cm ) {
    YYLTYPE loc {
      int(mfile.lineno() + 1), int(mfile.colno() + 1),
      int(mfile.lineno() + 1), int(mfile.colno() + 1)
--- 933,939 ----
  };
  
  static YYLTYPE
! location_in( const filespan_t& mfile, const csub_match& cm ) {
    YYLTYPE loc {
      int(mfile.lineno() + 1), int(mfile.colno() + 1),
      int(mfile.lineno() + 1), int(mfile.colno() + 1)
*************** location_in( const filespan_t& mfile, co
*** 861,867 ****
    gcc_assert(mfile.cur <= cm.first && cm.second <= mfile.eodata);
    auto nline = std::count(cm.first, cm.second, '\n');
    if( nline ) {
!     gcc_assert(loc.first_line < nline);
      loc.first_line -= nline;
      auto p = static_cast<const char*>(memrchr(cm.first, '\n', cm.length()));
      loc.last_column = (cm.second) - p;
--- 941,947 ----
    gcc_assert(mfile.cur <= cm.first && cm.second <= mfile.eodata);
    auto nline = std::count(cm.first, cm.second, '\n');
    if( nline ) {
!     gcc_assert(nline < loc.first_line);
      loc.first_line -= nline;
      auto p = static_cast<const char*>(memrchr(cm.first, '\n', cm.length()));
      loc.last_column = (cm.second) - p;
*************** parse_copy_directive( filespan_t& mfile
*** 904,917 ****
      copy_stmt.p = mfile.eodata;
  
      if( regex_search(mfile.ccur(),
!                           (const char *)mfile.eodata, cm, re) ) {
        copy_stmt = span_t( cm[0].first, cm[0].second );
        if( yy_flex_debug ) {
          size_t nnl = 1 + count_newlines(mfile.data, copy_stmt.p);
          size_t nst = 1 + count_newlines(copy_stmt.p, copy_stmt.pend);
!         dbgmsg("%s:%d: line %zu: COPY directive is %zu lines '%.*s'",
                 __func__, __LINE__,
!                nnl, nst, copy_stmt.size(), copy_stmt.p);
        }
      }
    }
--- 984,998 ----
      copy_stmt.p = mfile.eodata;
  
      if( regex_search(mfile.ccur(),
!                      const_cast<const char *>(mfile.eodata), cm, re) ) {
        copy_stmt = span_t( cm[0].first, cm[0].second );
        if( yy_flex_debug ) {
          size_t nnl = 1 + count_newlines(mfile.data, copy_stmt.p);
          size_t nst = 1 + count_newlines(copy_stmt.p, copy_stmt.pend);
!         dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED
!                ": COPY directive is " HOST_SIZE_T_PRINT_UNSIGNED " lines '%.*s'",
                 __func__, __LINE__,
!                (fmt_size_t)nnl, (fmt_size_t)nst, copy_stmt.size(), copy_stmt.p);
        }
      }
    }
*************** parse_copy_directive( filespan_t& mfile
*** 924,930 ****
      outcome.partial_line = span_t(mfile.cur, copy_stmt.p);
  
      if( yy_flex_debug ) {
!       dbgmsg("%zu expressions", std::count(pattern, pattern + sizeof(pattern), '('));
        int i = 0;
        for( const auto& m : cm ) {
          if( m.matched )
--- 1005,1012 ----
      outcome.partial_line = span_t(mfile.cur, copy_stmt.p);
  
      if( yy_flex_debug ) {
!       dbgmsg(HOST_SIZE_T_PRINT_UNSIGNED " expressions",
!              (fmt_size_t)std::count(pattern, pattern + sizeof(pattern), '('));
        int i = 0;
        for( const auto& m : cm ) {
          if( m.matched )
*************** parse_copy_directive( filespan_t& mfile
*** 955,961 ****
        std::pair<std::list<replace_t>, char*>
          result = parse_replace_pairs( cm[0].second, mfile.eodata, true );
  
!       std::list<replace_t>& replacements(result.first);
        outcome.parsed = (outcome.nreplace = replacements.size()) > 0;
        if( outcome.parsed ) {
          replace_directives.push(replacements);
--- 1037,1043 ----
        std::pair<std::list<replace_t>, char*>
          result = parse_replace_pairs( cm[0].second, mfile.eodata, true );
  
!       const std::list<replace_t>& replacements(result.first);
        outcome.parsed = (outcome.nreplace = replacements.size()) > 0;
        if( outcome.parsed ) {
          replace_directives.push(replacements);
*************** parse_copy_directive( filespan_t& mfile
*** 982,988 ****
  }
  
  static char *
! parse_replace_last_off( filespan_t& mfile ) {
    static const char pattern[] =
      "REPLACE" "[[:space:]]+"
      "(LAST[[:space:]]+)?OFF[[:space:]]*[.]"
--- 1064,1070 ----
  }
  
  static char *
! parse_replace_last_off( const filespan_t& mfile ) {
    static const char pattern[] =
      "REPLACE" "[[:space:]]+"
      "(LAST[[:space:]]+)?OFF[[:space:]]*[.]"
*************** parse_replace_last_off( filespan_t& mfil
*** 992,998 ****
  
    // REPLACE [LAST] OFF?
    bool found = regex_search(mfile.ccur(),
!                                  (const char *)mfile.eodata, cm, re);
    gcc_assert(found); // caller ensures
  
    gcc_assert(cm.size() == 2);
--- 1074,1080 ----
  
    // REPLACE [LAST] OFF?
    bool found = regex_search(mfile.ccur(),
!                             const_cast<const char *>(mfile.eodata), cm, re);
    gcc_assert(found); // caller ensures
  
    gcc_assert(cm.size() == 2);
*************** parse_replace_last_off( filespan_t& mfil
*** 1008,1015 ****
      }
    }
  
!   dbgmsg( "%s:%d: line %zu: parsed '%.*s', ", __func__, __LINE__,
!           mfile.lineno(), int(cm[0].length()), cm[0].first );
  
    // Remove statement from input
    erase_line(const_cast<char*>(cm[0].first),
--- 1090,1098 ----
      }
    }
  
!   dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": parsed '%.*s', ",
!           __func__, __LINE__,
!           (fmt_size_t)mfile.lineno(), int(cm[0].length()), cm[0].first );
  
    // Remove statement from input
    erase_line(const_cast<char*>(cm[0].first),
*************** parse_replace_text( filespan_t& mfile )
*** 1041,1060 ****
      gcc_assert(mfile.line_length() > 2);
      if( pend[-1] == '\n' ) pend -= 2;
      auto len = int(pend - mfile.cur);
!     dbgmsg("%s:%d: line %zu: parsing '%.*s", __func__, __LINE__,
!           current_lineno, len, mfile.cur);
    }
  
!   if( ! regex_search(mfile.ccur(), (const char *)mfile.eodata, cm, re) ) {
!     dbgmsg( "%s:%d: line %zu: not a REPLACE statement:\n'%.*s'",
!             __func__, __LINE__, current_lineno,
              int(mfile.line_length()), mfile.cur );
      return span_t();
    }
  
    // Report findings.
      if( yy_flex_debug ) {
!       dbgmsg("%zu expressions", std::count(pattern, pattern + sizeof(pattern), '('));
        int i = 0;
        for( const auto& m : cm ) {
          if( m.matched )
--- 1124,1146 ----
      gcc_assert(mfile.line_length() > 2);
      if( pend[-1] == '\n' ) pend -= 2;
      auto len = int(pend - mfile.cur);
!     dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": parsing '%.*s",
!            __func__, __LINE__,
!            (fmt_size_t)current_lineno, len, mfile.cur);
    }
  
!   if( ! regex_search(mfile.ccur(), mfile.eodata, cm, re) ) {
!     dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED
!             ": not a REPLACE statement:\n'%.*s'",
!             __func__, __LINE__, (fmt_size_t)current_lineno,
              int(mfile.line_length()), mfile.cur );
      return span_t();
    }
  
    // Report findings.
      if( yy_flex_debug ) {
!       dbgmsg(HOST_SIZE_T_PRINT_UNSIGNED " expressions",
!              (fmt_size_t)std::count(pattern, pattern + sizeof(pattern), '('));
        int i = 0;
        for( const auto& m : cm ) {
          if( m.matched )
*************** parse_replace_text( filespan_t& mfile )
*** 1079,1090 ****
  
    std::pair<std::list<replace_t>, char*>
          result = parse_replace_pairs(replace_stmt.p, replace_stmt.pend, false);
!   std::list<replace_t>& replacements(result.first);
    replace_directives.push( replacements );
  
    if( yy_flex_debug ) {
!     dbgmsg( "%s:%d: line %zu: %zu pairs parsed from  '%.*s'", __func__, __LINE__,
!            current_lineno, replacements.size(), int(replace_stmt.size()), replace_stmt.p );
      for( const auto& replace : replacements ) {
        int i = 0;
        dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__,
--- 1165,1178 ----
  
    std::pair<std::list<replace_t>, char*>
          result = parse_replace_pairs(replace_stmt.p, replace_stmt.pend, false);
!   const std::list<replace_t>& replacements(result.first);
    replace_directives.push( replacements );
  
    if( yy_flex_debug ) {
!     dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": " HOST_SIZE_T_PRINT_UNSIGNED
!             " pairs parsed from  '%.*s'", __func__, __LINE__,
!             (fmt_size_t)current_lineno, (fmt_size_t)replacements.size(),
!             int(replace_stmt.size()), replace_stmt.p );
      for( const auto& replace : replacements ) {
        int i = 0;
        dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__,
*************** parse_replace_directive( filespan_t& mfi
*** 1115,1121 ****
      next_directive = mfile.eodata;
  
      if( regex_search(mfile.ccur(),
!                           (const char *)mfile.eodata, cm, re) ) {
        gcc_assert(cm[1].matched);
        next_directive = cm[0].first;
  
--- 1203,1209 ----
      next_directive = mfile.eodata;
  
      if( regex_search(mfile.ccur(),
!                      const_cast<const char *>(mfile.eodata), cm, re) ) {
        gcc_assert(cm[1].matched);
        next_directive = cm[0].first;
  
*************** bytespan_t::append( const char *input, c
*** 1164,1171 ****
  #if LEXIO
    auto nq = std::count_if(data, eodata, isquote);
    dbgmsg("%s:%3d:  input ------ '%.*s'", __func__, __LINE__, int(eoinput - input), input);
!   dbgmsg("%s:%3d:  precondition '%.*s' (%zu: %s)", __func__, __LINE__,
!         int(size()), data, nq, in_string()? "in string" : "not in string");
  #endif
    if( !in_string() ) { // Remove trailing space unless it's part of a literal.
      while(data < eodata && ISSPACE(eodata[-1])) eodata--;
--- 1252,1260 ----
  #if LEXIO
    auto nq = std::count_if(data, eodata, isquote);
    dbgmsg("%s:%3d:  input ------ '%.*s'", __func__, __LINE__, int(eoinput - input), input);
!   dbgmsg("%s:%3d:  precondition '%.*s' (" HOST_SIZE_T_PRINT_UNSIGNED ": %s)",
!          __func__, __LINE__,
!          int(size()), data, (fmt_size_t)nq, in_string()? "in string" : "not in string");
  #endif
    if( !in_string() ) { // Remove trailing space unless it's part of a literal.
      while(data < eodata && ISSPACE(eodata[-1])) eodata--;
*************** lexer_input( char buf[], int max_size, F
*** 1290,1302 ****
    for( auto p = mfile.cur; p < next; *output.pos++ = *p++ ) {
      static bool at_bol = false;
      if( at_bol ) {
!       auto nonblank = std::find_if( p, next,
                                      []( char ch ) {
                                        return !isblank(ch); } );
!       if( nonblank + 1 < next ) {
!         if( *nonblank == '\r' ) nonblank++; // Windows
!         if( *nonblank == '\n' ) {
!           p = nonblank;
            continue;
          }
        }
--- 1379,1391 ----
    for( auto p = mfile.cur; p < next; *output.pos++ = *p++ ) {
      static bool at_bol = false;
      if( at_bol ) {
!       auto nonblank_l = std::find_if( p, next,
                                      []( char ch ) {
                                        return !isblank(ch); } );
!       if( nonblank_l + 1 < next ) {
!         if( *nonblank_l == '\r' ) nonblank_l++; // Windows
!         if( *nonblank_l == '\n' ) {
!           p = nonblank_l;
            continue;
          }
        }
*************** preprocess_filter_add( const char input[
*** 1376,1382 ****
  
    auto filename = find_filter(filter.c_str());
    if( !filename ) {
!     yywarn("preprocessor '%s/%s' not found", getcwd(NULL, 0), filter);
      return false;
    }
    preprocessor_filters.push_back( std::make_pair(xstrdup(filename), options) );
--- 1465,1471 ----
  
    auto filename = find_filter(filter.c_str());
    if( !filename ) {
!     yywarn("preprocessor '%s/%s' not found", getcwd(NULL, 0), filter.c_str());
      return false;
    }
    preprocessor_filters.push_back( std::make_pair(xstrdup(filename), options) );
*************** cdftext::lex_open( const char filename[]
*** 1422,1430 ****
  
    int output = open_output();
  
!   // Process any files supplied by the -include comamnd-line option.
    for( auto name : included_files ) {
-     int input;
      if( -1 == (input = open(name, O_RDONLY)) ) {
        yyerrorvl(1, "", "cannot open -include file %s", name);
        continue;
--- 1511,1518 ----
  
    int output = open_output();
  
!   // Process any files supplied by the -include command-line option.
    for( auto name : included_files ) {
      if( -1 == (input = open(name, O_RDONLY)) ) {
        yyerrorvl(1, "", "cannot open -include file %s", name);
        continue;
*************** cdftext::lex_open( const char filename[]
*** 1433,1439 ****
--- 1521,1530 ----
      filespan_t mfile( free_form_reference_format( input ) );
  
      process_file( mfile, output );
+ 
+     cobol_filename_restore(); // process_file restores only for COPY
    }
+   included_files.clear();
  
    cobol_filename(filename, inode_of(input));
    filespan_t mfile( free_form_reference_format( input ) );
*************** cdftext::lex_open( const char filename[]
*** 1455,1461 ****
      argv[0] = filter;
  
      auto last_argv = std::transform( options.begin(), options.end(), argv.begin() + 1,
!                                      []( std::string& opt ) {
                                         return xstrdup(opt.c_str());
                                       } );
      *last_argv = NULL;
--- 1546,1552 ----
      argv[0] = filter;
  
      auto last_argv = std::transform( options.begin(), options.end(), argv.begin() + 1,
!                                      []( const std::string& opt ) {
                                         return xstrdup(opt.c_str());
                                       } );
      *last_argv = NULL;
*************** cdftext::lex_open( const char filename[]
*** 1484,1494 ****
      int status;
      auto kid = wait(&status);
      gcc_assert(pid == kid);
!     if( kid == -1 ) cbl_err( "failed waiting for pid %d", pid);
  
      if( WIFSIGNALED(status) ) {
!       cbl_errx( "%s pid %d terminated by %s",
!            filter, kid, strsignal(WTERMSIG(status)) );
      }
      if( WIFEXITED(status) ) {
        if( (status = WEXITSTATUS(status)) != 0 ) {
--- 1575,1585 ----
      int status;
      auto kid = wait(&status);
      gcc_assert(pid == kid);
!     if( kid == -1 ) cbl_err( "failed waiting for pid %ld", static_cast<long>(pid));
  
      if( WIFSIGNALED(status) ) {
!       cbl_errx( "%s pid %ld terminated by %s",
!                 filter, static_cast<long>(kid), strsignal(WTERMSIG(status)) );
      }
      if( WIFEXITED(status) ) {
        if( (status = WEXITSTATUS(status)) != 0 ) {
*************** int
*** 1506,1512 ****
  cdftext::open_input( const char filename[] ) {
    int fd = open(filename, O_RDONLY);
    if( fd == -1 ) {
!     dbgmsg( "could not open '%s': %m", filename );
    }
  
    verbose_file_reader = NULL != getenv("GCOBOL_TEMPDIR");
--- 1597,1603 ----
  cdftext::open_input( const char filename[] ) {
    int fd = open(filename, O_RDONLY);
    if( fd == -1 ) {
!     dbgmsg( "could not open '%s': %s", filename, xstrerror(errno) );
    }
  
    verbose_file_reader = NULL != getenv("GCOBOL_TEMPDIR");
*************** cdftext::open_input( const char filename
*** 1520,1528 ****
  int
  cdftext::open_output() {
    char *name = getenv("GCOBOL_TEMPDIR");
-   int fd;
  
    if( name && 0 != strcmp(name, "/") ) {
      char * stem = xasprintf("%sXXXXXX", name);
      if( -1 == (fd = mkstemp(stem)) ) {
        cbl_err( "could not open temporary file '%s' (%s)",
--- 1611,1619 ----
  int
  cdftext::open_output() {
    char *name = getenv("GCOBOL_TEMPDIR");
  
    if( name && 0 != strcmp(name, "/") ) {
+     int fd;
      char * stem = xasprintf("%sXXXXXX", name);
      if( -1 == (fd = mkstemp(stem)) ) {
        cbl_err( "could not open temporary file '%s' (%s)",
*************** cdftext::map_file( int fd ) {
*** 1563,1570 ****
            cbl_err( "%s: could not prepare map file from FIFO %d",
                __func__, input);
          }
!         if( false ) dbgmsg("%s: copied %ld bytes from FIFO",
!                                 __func__, nout);
        }
      }
    } while( S_ISFIFO(sb.st_mode) );
--- 1654,1661 ----
            cbl_err( "%s: could not prepare map file from FIFO %d",
                __func__, input);
          }
!         if( false ) dbgmsg("%s: copied " HOST_SIZE_T_PRINT_DEC " bytes from FIFO",
!                                 __func__, (fmt_size_t)nout);
        }
      }
    } while( S_ISFIFO(sb.st_mode) );
*************** cdftext::map_file( int fd ) {
*** 1587,1592 ****
--- 1678,1731 ----
  
  bool lexio_dialect_mf();
  
+ /*
+  * A valid sequence area is 6 digits or blanks at the begining of the line that
+  * contains PROGRAM-ID. Return NULL if no valid sequence area, else return
+  * pointer to BOL.
+  */
+ static const char *
+ valid_sequence_area( const char *data, const char *eodata ) {
+ 
+   for( const char *p = data;
+        (p = std::find_if(p, eodata, is_p)) != eodata;
+        p++ )
+   {
+     auto eol = std::find(p, eodata, '\n');
+     if( p == data || ISSPACE(p[-1]) ) {
+       if( is_program_id(p, eol) ) {  // found program-id token
+ 	const char *bol = p;
+ 	for( ; data <= bol-1 && bol[-1] != '\n'; --bol )
+ 	  ;
+ 	if( 6 < p - bol ) {
+ 	  if( std::all_of(bol, bol+6, ::isdigit) ) {
+ 	    return bol;
+ 	  }
+ 	  if( std::all_of(bol, bol+6, ::isblank) ) {
+ 	    return bol;
+ 	  }
+ 	  break;
+ 	}
+       }
+     }
+   }
+   return nullptr;
+ }
+ 
+ /*
+  * Reference Format -- valid COBOL between columns 8 and 72 -- has data after
+  * column 72 on the PROGRAM-ID line. Extended Reference Format (that allows
+  * longer lines) has no reason to follow the PROGRAM-ID with more stuff.
+  */
+ static bool
+ infer_reference_format( const char *bol, const char *eodata ) {
+   assert(bol);
+   auto eol = std::find(bol, eodata, '\n');
+   if( 72 < eol - bol ) {
+     return ! std::all_of(bol + 72, eol, ::isspace);
+   }
+   return false;
+ }
+ 
  filespan_t
  cdftext::free_form_reference_format( int input ) {
    filespan_t source_buffer = map_file(input);
*************** cdftext::free_form_reference_format( int
*** 1601,1632 ****
      size_t lineno;
      bytespan_t line;
      // construct with length zero
!     current_line_t( char data[] ) : lineno(0), line(data, data) {}
    } current( mfile.data );
  
    /*
!    * If the format is not explicitly set on the command line, test the
!    * first 6 bytes of the first file to determine the format
!    * heuristically. If the first 6 characters are only digits or
!    * blanks, then the file is in fixed format.
     */
! 
!   if( indicator.inference_pending()  ) {
!     const char *p = mfile.data;
!     while( p < mfile.eodata ) {
!       const char * pend =
!         std::find(p, const_cast<const char *>(mfile.eodata), '\n');
!       if( 6 < pend - p ) break;
!       p = pend;
!       if( p < mfile.eodata) p++;
      }
-     if( valid_sequence_area(p, mfile.eodata) ) indicator.column = 7;
- 
-     dbgmsg("%s:%d: %s format detected", __func__, __LINE__,
-            indicator.column == 7? "FIXED" : "FREE");
    }
  
    while( mfile.next_line() ) {
      check_source_format_directive(mfile);
      remove_inline_comment(mfile.cur, mfile.eol);
  
--- 1740,1760 ----
      size_t lineno;
      bytespan_t line;
      // construct with length zero
!     explicit current_line_t( char data[] ) : lineno(0), line(data, data) {}
    } current( mfile.data );
  
    /*
!    * Infer source code format.
     */
!   if( cdf_source_format().inference_pending()  ) {
!     const char *bol = valid_sequence_area(mfile.data, mfile.eodata);
!     if( bol ) {
!       cdf_source_format().infer( bol, infer_reference_format(bol, mfile.eodata) );
      }
    }
  
    while( mfile.next_line() ) {
+     check_push_pop_directive(mfile);
      check_source_format_directive(mfile);
      remove_inline_comment(mfile.cur, mfile.eol);
  
*************** cdftext::free_form_reference_format( int
*** 1747,1761 ****
  void
  cdftext::process_file( filespan_t mfile, int output, bool second_pass ) {
    static size_t nfiles = 0;
-   std::list<replace_t> replacements;
  
!   __gnu_cxx::stdio_filebuf<char> outbuf(fdopen(output, "w"), std::ios::out);
    std::ostream out(&outbuf);
    std::ostream_iterator<char> ofs(out);
  
    // indicate current file
    static const char file_push[] = "\f#FILE PUSH ", file_pop[] = "\f#FILE POP\f";
  
    if( !second_pass && nfiles++ ) {
      static const char delimiter[] = "\f";
      const char *filename = cobol_filename();
--- 1875,1889 ----
  void
  cdftext::process_file( filespan_t mfile, int output, bool second_pass ) {
    static size_t nfiles = 0;
  
!   __gnu_cxx::stdio_filebuf<char> outbuf(fdopen(output, "a"), std::ios::out);
    std::ostream out(&outbuf);
    std::ostream_iterator<char> ofs(out);
  
    // indicate current file
    static const char file_push[] = "\f#FILE PUSH ", file_pop[] = "\f#FILE POP\f";
  
+   if( !included_files.empty() ) { ++nfiles; }; // force push/pop of included filename
    if( !second_pass && nfiles++ ) {
      static const char delimiter[] = "\f";
      const char *filename = cobol_filename();
*************** cdftext::process_file( filespan_t mfile,
*** 1774,1781 ****
        std::copy_if(copied.erased_lines.p, copied.erased_lines.pend, ofs,
                     []( char ch ) { return ch == '\n'; } );
        struct { int in, out; filespan_t mfile; } copy;
!       dbgmsg("%s:%d: line %zu, opening %s on fd %d", __func__, __LINE__,
!              mfile.lineno(),
               copybook.source(), copybook.current()->fd);
        copy.in = copybook.current()->fd;
        copy.mfile = free_form_reference_format( copy.in );
--- 1902,1909 ----
        std::copy_if(copied.erased_lines.p, copied.erased_lines.pend, ofs,
                     []( char ch ) { return ch == '\n'; } );
        struct { int in, out; filespan_t mfile; } copy;
!       dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ", opening %s on fd %d",
!              __func__, __LINE__, (fmt_size_t)mfile.lineno(),
               copybook.source(), copybook.current()->fd);
        copy.in = copybook.current()->fd;
        copy.mfile = free_form_reference_format( copy.in );
*************** cdftext::process_file( filespan_t mfile,
*** 1811,1841 ****
        continue; // No active REPLACE directive.
      }
  
!     std::list<span_t> segments = segment_line(mfile); // no replace yields
!     //                                                // 1 segment
  
      for( const auto& segment : segments ) {
        std::copy(segment.p, segment.pend, ofs);
      }
  
-     if( segments.size() == 2 ) {
-       struct {
-         size_t before, after;
-         int delta() const { return before - after; } } nlines;
-       nlines.before = std::count(segments.front().p,
-                                  segments.front().pend, '\n');
-       nlines.after  = std::count(segments.back().p, segments.back().pend, '\n');
-       if( nlines.delta() < 0 ) {
-         yywarn("line %zu: REPLACED %zu lines with %zu lines, "
-               "line count off by %d", mfile.lineno(),
-               nlines.before, nlines.after, nlines.delta());
-       }
-       int nnl = nlines.delta();
-       while( nnl-- > 0 ) {
-         static const char nl[] = "\n";
-         std::copy(nl, nl + 1, ofs);
-       }
-     }
      out.flush();
    }
    // end of file
--- 1939,1950 ----
        continue; // No active REPLACE directive.
      }
  
!     std::list<span_t> segments = segment_line(mfile);
  
      for( const auto& segment : segments ) {
        std::copy(segment.p, segment.pend, ofs);
      }
  
      out.flush();
    }
    // end of file
*************** cdftext::process_file( filespan_t mfile,
*** 1843,1848 ****
--- 1952,1958 ----
      std::copy(file_pop, file_pop + strlen(file_pop), ofs);
      out.flush();
    }
+   if( !included_files.empty() ) { --nfiles; };
  }
  
  std::list<span_t>
*************** cdftext::segment_line( filespan_t& mfile
*** 1858,1869 ****
--- 1968,1997 ----
      return output;
    }
  
+   /*
+    * If the replacement changes the number of lines in the replaced text, we
+    * need to reset the line number, because the next statement is on a
+    * different line in the manipulated text than in the original.  Before each
+    * replacement, set the original line number.  After each replacement, set
+    * the line number after the elided text on the next line.
+    */
    for( const replace_t& segment : pending ) {
      gcc_assert(mfile.cur <= segment.before.p);
      gcc_assert(segment.before.pend <= mfile.eodata);
  
+     struct { unsigned long ante, post; } lineno = {
+       gb4(mfile.lineno()), gb4(mfile.lineno() + segment.after.nlines())
+     };
+     const char *directive = lineno.ante == lineno.post?
+       nullptr : xasprintf("\n#line %lu \"%s\"\n",
+                           lineno.ante, cobol_filename());
+ 
+     if( directive )
+       output.push_back( span_t(strlen(directive), directive) );
      output.push_back( span_t(mfile.cur, segment.before.p) );
      output.push_back( span_t(segment.after.p, segment.after.pend ) );
+     if( directive )
+       output.push_back( span_t(strlen(directive), directive) );
  
      mfile.cur = const_cast<char*>(segment.before.pend);
    }
*************** cdftext::segment_line( filespan_t& mfile
*** 1879,1883 ****
  
    return output;
  }
- 
- //////// End of the cdf_text.h file
--- 2007,2009 ----
diff -Nrcpad gcc-15-20250726/gcc/cobol/lexio.h gcc-15-20250809/gcc/cobol/lexio.h
*** gcc-15-20250726/gcc/cobol/lexio.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/lexio.h	Sat Aug  9 22:32:37 2025
***************
*** 43,49 ****
  #define SPACE ' '
  
  bool lexer_echo();
- 
  bool is_reference_format();
  
  static inline bool isquote( char ch ) {
--- 43,48 ----
*************** erase_source( char *src, char *esrc ) {
*** 70,76 ****
  struct bytespan_t {
    char *data, *eodata;
  
!   bytespan_t( char *data = NULL, char *eodata = NULL )
      : data(data), eodata(eodata)
    {
      if( eodata < data ) {
--- 69,77 ----
  struct bytespan_t {
    char *data, *eodata;
  
!   bytespan_t() : data( nullptr), eodata(nullptr) {}
!   
!   bytespan_t( char *data, char *eodata )
      : data(data), eodata(eodata)
    {
      if( eodata < data ) {
*************** struct bytespan_t {
*** 111,129 ****
    }
  };
  
! /* Location type.  Borrowed from parse.h as generated by Bison. */
! #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
! typedef struct YYLTYPE YYLTYPE;
! struct YYLTYPE
! {
!   int first_line;
!   int first_column;
!   int last_line;
!   int last_column;
! };
! # define YYLTYPE_IS_DECLARED 1
! # define YYLTYPE_IS_TRIVIAL 1
! #endif
  
  struct filespan_t : public bytespan_t {
    char *cur, *eol, *quote;
--- 112,118 ----
    }
  };
  
! // YYLTYPE supplied by cbldiag.h.  Borrowed from parse.h as generated by Bison.
  
  struct filespan_t : public bytespan_t {
    char *cur, *eol, *quote;
*************** struct filespan_t : public bytespan_t {
*** 137,143 ****
    {}
    filespan_t(void *p, size_t len)
      : bytespan_t( static_cast<char*>(p), static_cast<char*>(p) + len )
!     , cur(data), eol(data), quote(NULL), iline(0), line_quote72(0)
    {}
  
    size_t lineno() const { return iline; }
--- 126,132 ----
    {}
    filespan_t(void *p, size_t len)
      : bytespan_t( static_cast<char*>(p), static_cast<char*>(p) + len )
!     , cur(data), eol(data), quote(NULL), iline(0), icol(0), line_quote72(0)
    {}
  
    size_t lineno() const { return iline; }
*************** struct span_t {
*** 237,242 ****
--- 226,232 ----
    span_t( const char *data, const char *eodata ) : p(data), pend(eodata) {
      verify();
    }
+   // cppcheck-suppress operatorEqRetRefThis
    span_t& operator=( const csub_match& cm ) {
      p = cm.first;
      pend = cm.second;
*************** struct span_t {
*** 245,250 ****
--- 235,242 ----
  
    int size() const { return pend - p; }
  
+   size_t nlines() const { return p && pend? std::count(p, pend, '\n') : 0; }
+ 
    span_t dup() const {
      auto  output = new char[size() + 1];
      auto eout = std::copy(p, pend, output);
*************** struct span_t {
*** 252,266 ****
      return span_t(output, eout);
    }
    const char * has_nul() const {
!     auto p = std::find(this->p, pend, '\0');
!     return p != pend? p : NULL;
    }
  };
  
  struct replace_t {
    struct span_t before, after;
!   replace_t( span_t before = span_t(),
!              span_t after  = span_t() )
      : before(before), after(after)
    {}
    replace_t& reset() {
--- 244,265 ----
      return span_t(output, eout);
    }
    const char * has_nul() const {
!     auto p_l = std::find(this->p, pend, '\0');
!     return p_l != pend? p_l : NULL;
!   }
! 
!   bool at_eol() const {
!     return p < pend && '\n' == pend[-1];
!   }
!   const char * optional_eol() const {
!     return at_eol() ? "" : "\n";
    }
  };
  
  struct replace_t {
    struct span_t before, after;
!   replace_t() : before(span_t()), after(span_t()) {}
!   replace_t( span_t before, span_t after )
      : before(before), after(after)
    {}
    replace_t& reset() {
diff -Nrcpad gcc-15-20250726/gcc/cobol/parse.y gcc-15-20250809/gcc/cobol/parse.y
*** gcc-15-20250726/gcc/cobol/parse.y	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/parse.y	Sat Aug  9 22:32:37 2025
***************
*** 28,33 ****
--- 28,34 ----
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  %code requires {
+   #include "config.h"
    #include <fstream>  // Before cobol-system because it uses poisoned functions
    #include "cobol-system.h"
    #include "coretypes.h"
***************
*** 44,49 ****
--- 45,51 ----
    };
  
    enum accept_func_t {
+     accept_e,
      accept_done_e,
      accept_command_line_e,
      accept_envar_e,
***************
*** 187,200 ****
      data_category_t category;
      category_map_t replacement;
  
!     init_statement_t( category_map_t replacement )
        : to_value(false)
        , category(data_category_none)
        , replacement(replacement)
  
      {}
  
!     init_statement_t( bool to_value = false )
        : to_value(to_value)
        , category(data_category_none)
        , replacement(category_map_t())
--- 189,202 ----
      data_category_t category;
      category_map_t replacement;
  
!     explicit init_statement_t( const category_map_t& replacement )
        : to_value(false)
        , category(data_category_none)
        , replacement(replacement)
  
      {}
  
!     explicit init_statement_t( bool to_value = false )
        : to_value(to_value)
        , category(data_category_none)
        , replacement(category_map_t())
***************
*** 241,247 ****
    struct Elem_list_t {
      std::list<E> elems;
      Elem_list_t() {}
!     Elem_list_t( E elem ) {
        elems.push_back(elem);
      }
      Elem_list_t * push_back( E elem ) {
--- 243,249 ----
    struct Elem_list_t {
      std::list<E> elems;
      Elem_list_t() {}
!     explicit Elem_list_t( E elem ) {
        elems.push_back(elem);
      }
      Elem_list_t * push_back( E elem ) {
***************
*** 279,284 ****
--- 281,287 ----
  }
  
  %{
+ #include "config.h"
  #include <fstream>  // Before cobol-system because it uses poisoned functions
  #include "cobol-system.h"
  #include "coretypes.h"
***************
*** 330,336 ****
  			NUMED     "NUMERIC-EDITED picture"
  			NUMED_CR  "NUMERIC-EDITED CR picture"
  			NUMED_DB  "NUMERIC-EDITED DB picture"
! %token  <number>        NINEDOT NINES NINEV PIC_P
  %token  <string>        SPACES
  %token  <literal>       LITERAL
  %token  <number>        END EOP
--- 333,339 ----
  			NUMED     "NUMERIC-EDITED picture"
  			NUMED_CR  "NUMERIC-EDITED CR picture"
  			NUMED_DB  "NUMERIC-EDITED DB picture"
! %token  <number>        NINEDOT NINES NINEV PIC_P ONES
  %token  <string>        SPACES
  %token  <literal>       LITERAL
  %token  <number>        END EOP
***************
*** 339,345 ****
  %token  <number>        NUMBER NEGATIVE
  %token  <numstr>        NUMSTR    "numeric literal"
  %token  <number>        OVERFLOW_kw "OVERFLOW"
! %token  <computational> COMPUTATIONAL
  
  %token  <boolean>       PERFORM BACKWARD
  %token  <number>        POSITIVE
--- 342,348 ----
  %token  <number>        NUMBER NEGATIVE
  %token  <numstr>        NUMSTR    "numeric literal"
  %token  <number>        OVERFLOW_kw "OVERFLOW"
! %token  <computational> BINARY_INTEGER COMPUTATIONAL
  
  %token  <boolean>       PERFORM BACKWARD
  %token  <number>        POSITIVE
***************
*** 347,353 ****
  %token  <string>        SECTION
  %token  <number>        STANDARD_ALPHABET "STANDARD ALPHABET"
  %token  <string>        SWITCH
! %token  <string>        UPSI
  %token  <number>        ZERO
  
                           /* environment names */
--- 350,356 ----
  %token  <string>        SECTION
  %token  <number>        STANDARD_ALPHABET "STANDARD ALPHABET"
  %token  <string>        SWITCH
! %token  <string>        UPSI 
  %token  <number>        ZERO
  
                           /* environment names */
***************
*** 373,379 ****
  			LSUB "("
  			PARAMETER_kw "PARAMETER"
  			OVERRIDE READY RESET
! 			RSUB ")"
  			SERVICE_RELOAD "SERVICE RELOAD" STAR_CBL "*CBL"
  			SUBSCRIPT SUPPRESS TITLE TRACE USE
  
--- 376,382 ----
  			LSUB "("
  			PARAMETER_kw "PARAMETER"
  			OVERRIDE READY RESET
! 			RSUB")"
  			SERVICE_RELOAD "SERVICE RELOAD" STAR_CBL "*CBL"
  			SUBSCRIPT SUPPRESS TITLE TRACE USE
  
***************
*** 383,389 ****
--- 386,395 ----
  			CDF_EVALUATE ">>EVALUATE"
  			CDF_WHEN ">>WHEN"
  			CDF_END_EVALUATE ">>END-EVALUATE"
+                         CALL_CONVENTION ">>CALL-CONVENTION"
  			CALL_COBOL "CALL" CALL_VERBATIM "CALL (as C)"
+                         CDF_PUSH ">>PUSH" CDF_POP ">>POP"
+                         SOURCE_FORMAT ">>SOURCE FORMAT"
  
  			IF THEN ELSE
  			SENTENCE
***************
*** 397,403 ****
  			STRING_kw "STRING" STOP SUBTRACT START
  			UNSTRING WRITE WHEN
  
! 			   ABS ACCESS ACOS ACTUAL ADVANCING AFTER ALL
  			ALLOCATE
  			ALPHABET ALPHABETIC ALPHABETIC_LOWER "ALPHABETIC-LOWER"
  			ALPHABETIC_UPPER "ALPHABETIC-UPPER"
--- 403,412 ----
  			STRING_kw "STRING" STOP SUBTRACT START
  			UNSTRING WRITE WHEN
  
! 			ARGUMENT_NUMBER  ARGUMENT_VALUE
! 			ENVIRONMENT_NAME ENVIRONMENT_VALUE
! 
! 			ABS ACCESS ACOS ACTUAL ADVANCING AFTER ALL
  			ALLOCATE
  			ALPHABET ALPHABETIC ALPHABETIC_LOWER "ALPHABETIC-LOWER"
  			ALPHABETIC_UPPER "ALPHABETIC-UPPER"
***************
*** 571,582 ****
  			THAN TIME TIMES
  			TO TOP
  			TOP_LEVEL
! 			TRACKS TRACK_AREA TRAILING TRANSFORM TRIM TRUE_kw "True" TRY
! 			TURN TYPE TYPEDEF
  
! 			ULENGTH UNBOUNDED UNIT UNITS UNIT_RECORD UNTIL UP UPON
! 			UPOS UPPER_CASE USAGE USING USUBSTR USUPPLEMENTARY
! 			UTILITY UUID4 UVALID UWIDTH
  
  			VALUE VARIANCE VARYING VOLATILE
  
--- 580,591 ----
  			THAN TIME TIMES
  			TO TOP
  			TOP_LEVEL
! 			TRACKS TRACK_AREA TRAILING TRANSFORM TRIM TRUE_kw "True"
! 			TRY TURN TYPE TYPEDEF
  
! 			ULENGTH UNBOUNDED UNIT UNITS UNIT_RECORD UNTIL
! 			UP UPON UPOS UPPER_CASE USAGE USING 
! 			USUBSTR USUPPLEMENTARY UTILITY UUID4 UVALID UWIDTH
  
  			VALUE VARIANCE VARYING VOLATILE
  
***************
*** 657,666 ****
  %type   <number>        star_cbl_opt close_how
  
  %type   <number>        test_before usage_clause1 might_be
! %type   <boolean>       all optional sign_leading on_off initialized strong
  %type   <number>        count data_clauses data_clause
  %type   <number>        nine nines nps relop spaces_etc reserved_value signed
! %type   <number>        variable_type
  %type   <number>        true_false posneg eval_posneg
  %type   <number>        open_io alphabet_etc
  %type   <special_type>  device_name
--- 666,675 ----
  %type   <number>        star_cbl_opt close_how
  
  %type   <number>        test_before usage_clause1 might_be
! %type   <boolean>       all optional sign_leading on_off initialized strong is_signed
  %type   <number>        count data_clauses data_clause
  %type   <number>        nine nines nps relop spaces_etc reserved_value signed
! %type   <number>        variable_type binary_type
  %type   <number>        true_false posneg eval_posneg
  %type   <number>        open_io alphabet_etc
  %type   <special_type>  device_name
***************
*** 690,696 ****
  %type   <string>        fd_name picture_sym name66 paragraph_name
  %type   <literal>       literalism
  %type   <number>        bound advance_when org_clause1 read_next
! %type   <number>        access_mode multiple lock_how lock_mode
  %type   <select_clauses> select_clauses
  %type   <select_clause> select_clause  access_clause alt_key_clause
                          assign_clause collate_clause status_clause
--- 699,705 ----
  %type   <string>        fd_name picture_sym name66 paragraph_name
  %type   <literal>       literalism
  %type   <number>        bound advance_when org_clause1 read_next
! %type   <number>        access_mode multiple lock_how lock_mode org_is
  %type   <select_clauses> select_clauses
  %type   <select_clause> select_clause  access_clause alt_key_clause
                          assign_clause collate_clause status_clause
***************
*** 699,704 ****
--- 708,714 ----
                          relative_key_clause reserve_clause sharing_clause
  
  %type   <file>          filename read_body write_body delete_body
+ %type   <file>		start_impl start_cond start_body
  %type   <rewrite_t>     rewrite_body
  %type   <min_max>       record_vary rec_contains from_to record_desc
  %type   <file_op>       read_file rewrite1 write_file
***************
*** 712,718 ****
  %type   <refer>         move_tgt selected_name read_key read_into vary_by
  %type   <refer>         accept_refer num_operand envar search_expr any_arg
  %type   <accept_func>	accept_body
! %type   <refers>        expr_list subscripts arg_list free_tgts
  %type   <targets>       move_tgts set_tgts
  %type   <field>         search_varying
  %type   <field>         search_term search_terms
--- 722,728 ----
  %type   <refer>         move_tgt selected_name read_key read_into vary_by
  %type   <refer>         accept_refer num_operand envar search_expr any_arg
  %type   <accept_func>	accept_body
! %type   <refers>        subscript_exprs subscripts arg_list free_tgts
  %type   <targets>       move_tgts set_tgts
  %type   <field>         search_varying
  %type   <field>         search_term search_terms
***************
*** 729,735 ****
  
  %type   <refer>         inspected
  %type   <insp_qual>     insp_qual
! %type   <insp_match>    insp_quals insp_mtquals tally_match
  %type   <insp_replace>  x_by_y
  %type   <insp_oper>     replace_oper x_by_ys
  %type   <insp_oper>     tally_forth tally_matches
--- 739,745 ----
  
  %type   <refer>         inspected
  %type   <insp_qual>     insp_qual
! %type   <insp_match>    insp_quals insp_mtqual tally_match
  %type   <insp_replace>  x_by_y
  %type   <insp_oper>     replace_oper x_by_ys
  %type   <insp_oper>     tally_forth tally_matches
***************
*** 790,795 ****
--- 800,807 ----
  %type   <error_clauses> io_invalids read_eofs write_eops
  %type   <boolean>       io_invalid  read_eof  write_eop
                          global is_global anycase backward
+                         end_display
+                         exh_changed exh_named
  %type   <number>        mistake globally first_last
  %type   <io_mode>   io_mode
  
***************
*** 798,804 ****
  
  %type   <switches>      upsi_entry
  
! %type   <special>       acceptable disp_target
  %type   <display>       disp_body
  
  %type   <false_domain>  domains domain
--- 810,816 ----
  
  %type   <switches>      upsi_entry
  
! %type   <special>       acceptable disp_upon
  %type   <display>       disp_body
  
  %type   <false_domain>  domains domain
***************
*** 828,833 ****
--- 840,848 ----
  %type	<opt_arith>	opt_arith_type
  %type	<module_type>	module_type
  
+ %type   <nameloc>       repo_func_name                        
+ %type   <namelocs>      repo_func_names
+ 
  %union {
      bool boolean;
      int number;
***************
*** 837,846 ****
      cbl_field_attr_t field_attr;
      ec_type_t ec_type;
      ec_list_t* ec_list;
             declarative_list_t* dcl_list_t;
             isym_list_t* isym_list;
      struct { radix_t radix; char *string; } numstr;
!     struct { int token; literal_t name; } prog_end;
      struct { int token; special_name_t id; } special_type;
      struct { cbl_field_type_t type;
               uint32_t capacity; bool signable; } computational;
--- 852,863 ----
      cbl_field_attr_t field_attr;
      ec_type_t ec_type;
      ec_list_t* ec_list;
+     cbl_nameloc_t  *nameloc;
+     cbl_namelocs_t *namelocs;
             declarative_list_t* dcl_list_t;
             isym_list_t* isym_list;
      struct { radix_t radix; char *string; } numstr;
!     struct { YYLTYPE loc; int token; literal_t name; } prog_end;
      struct { int token; special_name_t id; } special_type;
      struct { cbl_field_type_t type;
               uint32_t capacity; bool signable; } computational;
***************
*** 877,885 ****
      struct arith_t *arith;
      struct { size_t ntgt; cbl_num_result_t *tgts;
               cbl_refer_t *expr; } compute_body_t;
!     struct ast_inspect_t *insp_one;
!     struct ast_inspect_list_t *insp_all;
!     struct ast_inspect_oper_t *insp_oper;
      struct { bool before; cbl_inspect_qual_t *qual; } insp_qual;
             cbl_inspect_t *inspect;
             cbl_inspect_match_t *insp_match;
--- 894,902 ----
      struct arith_t *arith;
      struct { size_t ntgt; cbl_num_result_t *tgts;
               cbl_refer_t *expr; } compute_body_t;
!     struct cbl_inspect_t *insp_one;
!            cbl_inspect_opers_t *insp_all;
!     struct cbl_inspect_oper_t *insp_oper;
      struct { bool before; cbl_inspect_qual_t *qual; } insp_qual;
             cbl_inspect_t *inspect;
             cbl_inspect_match_t *insp_match;
***************
*** 894,900 ****
      struct refer_pair_t { cbl_refer_t *first, *second; } refer2;
      struct { refer_collection_t *inputs; refer_pair_t into; } str_body;
  
!     struct { accept_func_t func; cbl_refer_t *into, *from; } accept_func;
      struct unstring_into_t *uns_into;
      struct unstring_tgt_list_t *uns_tgts;
      struct unstring_tgt_t *uns_tgt;
--- 911,917 ----
      struct refer_pair_t { cbl_refer_t *first, *second; } refer2;
      struct { refer_collection_t *inputs; refer_pair_t into; } str_body;
  
!     struct { accept_func_t func; cbl_refer_t *into, *from; special_name_t special;} accept_func;
      struct unstring_into_t *uns_into;
      struct unstring_tgt_list_t *uns_tgts;
      struct unstring_tgt_t *uns_tgt;
***************
*** 945,962 ****
  
  %printer { fprintf(yyo, "%s (token %d)", keyword_str($$), $$ ); } relop
  %printer { fprintf(yyo, "'%s'", $$? $$ : "" ); } NAME <string>
! %printer { fprintf(yyo, "%s'%.*s'{%zu} %s", $$.prefix, int($$.len), $$.data, $$.len,
                          $$.symbol_name()); } <literal>
! %printer { fprintf(yyo, "%s (1st of %zu)",
                          $$->targets.empty()? "" : $$->targets.front().refer.field->name,
!                         $$->targets.size() ); } <targets>
! %printer { fprintf(yyo, "#%zu: %s",
!                         is_temporary($$)? 0 : field_index($$),
                          $$? name_of($$) : "<nil>" ); } name
! %printer { fprintf(yyo, "{%zu-%zu}", $$.min, $$.max ); } <min_max>
  %printer { fprintf(yyo, "{%s}", $$? "+/-" : "" ); } signed
! %printer { fprintf(yyo, "{%s of %zu}",
! 		         teed_up_names().front(), teed_up_names().size() ); } qname
  %printer { fprintf(yyo, "{%d}", $$ ); } <number>
  %printer { fprintf(yyo, "'%s'", $$.string ); } <numstr>
  %printer { const char *s = string_of($$);
--- 962,981 ----
  
  %printer { fprintf(yyo, "%s (token %d)", keyword_str($$), $$ ); } relop
  %printer { fprintf(yyo, "'%s'", $$? $$ : "" ); } NAME <string>
! %printer { fprintf(yyo, "%s'%.*s'{" HOST_SIZE_T_PRINT_UNSIGNED "} %s",
!                         $$.prefix, int($$.len), $$.data, (fmt_size_t)$$.len,
                          $$.symbol_name()); } <literal>
! %printer { fprintf(yyo,"%s (1st of" HOST_SIZE_T_PRINT_UNSIGNED")",
                          $$->targets.empty()? "" : $$->targets.front().refer.field->name,
!                         (fmt_size_t)$$->targets.size() ); } <targets>
! %printer { fprintf(yyo, "#" HOST_SIZE_T_PRINT_UNSIGNED ": %s",
!                         is_temporary($$)? 0 : (fmt_size_t)field_index($$),
                          $$? name_of($$) : "<nil>" ); } name
! %printer { fprintf(yyo, "{" HOST_SIZE_T_PRINT_UNSIGNED "-" HOST_SIZE_T_PRINT_UNSIGNED "}",
!                         (fmt_size_t)$$.min, (fmt_size_t)$$.max ); } <min_max>
  %printer { fprintf(yyo, "{%s}", $$? "+/-" : "" ); } signed
! %printer { fprintf(yyo, "{%s of " HOST_SIZE_T_PRINT_UNSIGNED "}",
! 		         teed_up_names().front(), (fmt_size_t) teed_up_names().size() ); } qname
  %printer { fprintf(yyo, "{%d}", $$ ); } <number>
  %printer { fprintf(yyo, "'%s'", $$.string ); } <numstr>
  %printer { const char *s = string_of($$);
***************
*** 968,976 ****
                          $$.low?  (const char*) $$.low : "",
                          $$.high? (const char*) $$.high : "",
                          $$.also? "+" : "" ); } <colseq>
! %printer { fprintf(yyo, "{%s, %zu parameters}",
                          name_of($$.ffi_name->field), !$$.using_params? 0 :
!                         $$.using_params->elems.size()); } call_body
  %printer { fprintf(yyo, "%s <- %s", data_category_str($$.category),
                                      name_of($$.replacement->field)); } init_by
  
--- 987,995 ----
                          $$.low?  (const char*) $$.low : "",
                          $$.high? (const char*) $$.high : "",
                          $$.also? "+" : "" ); } <colseq>
! %printer { fprintf(yyo, "{%s, " HOST_SIZE_T_PRINT_UNSIGNED " parameters}",
                          name_of($$.ffi_name->field), !$$.using_params? 0 :
!                         (fmt_size_t)$$.using_params->elems.size()); } call_body
  %printer { fprintf(yyo, "%s <- %s", data_category_str($$.category),
                                      name_of($$.replacement->field)); } init_by
  
***************
*** 994,1000 ****
  %right                  IF THEN ELSE
                          SENTENCE
                          ACCEPT ADD ALTER CALL CANCEL CLOSE COMPUTE CONTINUE
!                         DELETE DISPLAY DIVIDE EVALUATE END EOP EXIT FILLER_kw
                          GOBACK GOTO
                          INITIALIZE INSPECT
                          MERGE MOVE MULTIPLY OPEN OVERFLOW_kw PARAGRAPH PERFORM
--- 1013,1021 ----
  %right                  IF THEN ELSE
                          SENTENCE
                          ACCEPT ADD ALTER CALL CANCEL CLOSE COMPUTE CONTINUE
!                         DELETE DISPLAY DIVIDE
!                         EVALUATE END EOP EXIT
!                         FILLER_kw
                          GOBACK GOTO
                          INITIALIZE INSPECT
                          MERGE MOVE MULTIPLY OPEN OVERFLOW_kw PARAGRAPH PERFORM
***************
*** 1315,1321 ****
      return ok;
    }
  
!   static void initialize_allocated( cbl_refer_t input );
    static void
    initialize_statement( std::list<cbl_num_result_t>& tgts,
                          bool with_filler,
--- 1336,1342 ----
      return ok;
    }
  
!   static void initialize_allocated( const cbl_refer_t& input );
    static void
    initialize_statement( std::list<cbl_num_result_t>& tgts,
                          bool with_filler,
***************
*** 1334,1343 ****
        return strlen(lit.data) == lit.len? lit.data : NULL;
    }
  
    static inline char * string_of( const REAL_VALUE_TYPE &cce ) {
        char output[64];
        real_to_decimal( output, &cce, sizeof(output), 32, 0 );
! 
        char decimal = symbol_decimal_point();
        std::replace(output, output + strlen(output), '.', decimal);
        return xstrdup(output);
--- 1355,1417 ----
        return strlen(lit.data) == lit.len? lit.data : NULL;
    }
  
+   static inline void strip_trailing_zeroes(char * const psz)
+     {
+     if( yydebug) return;
+     // The idea here is to take the output of real_to_decimal and make it
+     // more integer friendly.  Any integer value that can be expressed in 1
+     // to MAX_FIXED_POINT_DIGITS digits is converted to a string without a
+     // decimal point and no exponent.
+ 
+     char *pdot = strchr(psz, '.');
+     gcc_assert(pdot);
+     char *pe = strchr(psz, 'e');
+     if( !pe )
+       {
+       // The most likely cause of this is a "0.0" result.
+       strcpy(psz, "0");
+       return;
+       }
+     char *pnz = pe-1;
+     while(*pnz == '0')
+       {
+       pnz--;
+       }
+     // pdot points to the decimal point.
+     // pe points to the 'e'.
+     // pnz points to the rightmost non-zero significand digit.
+ 
+     // Put the exponent on top of the trailing zeroes:
+     memmove(pnz+1, pe, strlen(pe)+1);
+     pe = pnz+1;
+     int exp = atoi(pe+1);
+     // Compute the number digits to the right of the decimal point:
+     int non_zero_digits = pe - (pdot+1);
+     if( exp >= 1 && exp <= MAX_FIXED_POINT_DIGITS && non_zero_digits <= exp)
+       {
+       // Further simplification is possible, because the value does not actually
+       // need a decimal point.  That's because we are dealing with something
+       // like 1.e+0, or 1.23e2 or 1.23e3
+ 
+       // Terminate the value where the 'e' is now:
+       *pe = '\0';
+       // Figure out where the extra zeroes will go:
+       pe -= 1;
+       // Get rid of the decimal place:
+       memmove(pdot, pdot+1, strlen(pdot)+1);
+       // Tack on the additional zeroes:
+       for(int i=0; i<exp - non_zero_digits; i++)
+         {
+         *pe++ = '0';
+         }
+       *pe++ = '\0';
+       }
+     }
+ 
    static inline char * string_of( const REAL_VALUE_TYPE &cce ) {
        char output[64];
        real_to_decimal( output, &cce, sizeof(output), 32, 0 );
!       strip_trailing_zeroes(output);
        char decimal = symbol_decimal_point();
        std::replace(output, output + strlen(output), '.', decimal);
        return xstrdup(output);
*************** id_div:         cdf_words IDENTIFICATION
*** 1395,1415 ****
  
  cdf_words:	%empty
  	|	cobol_words
  		;
  cobol_words:	cobol_words1
  	|	cobol_words cobol_words1
  		;
  cobol_words1:	COBOL_WORDS EQUATE NAME[keyword] WITH NAME[name] {
! 		  if( ! tokens.equate(@keyword, $keyword, $name) ) { YYERROR; }
  		}
  	|	COBOL_WORDS UNDEFINE NAME[keyword] {
! 		  if( ! tokens.undefine(@keyword, $keyword) ) { YYERROR; }
  		}
  	|	COBOL_WORDS SUBSTITUTE NAME[keyword] BY NAME[name] {
! 		  if( ! tokens.substitute(@keyword, $keyword, $name) ) { YYERROR; }
  		}
  	|	COBOL_WORDS RESERVE NAME[name] {
! 		  if( ! tokens.reserve(@name, $name) ) { YYERROR; }
  		}
  		;
  
--- 1469,1490 ----
  
  cdf_words:	%empty
  	|	cobol_words
+ 	/* |	error { error_msg(@1, "not a COBOL-WORD"); } */
  		;
  cobol_words:	cobol_words1
  	|	cobol_words cobol_words1
  		;
  cobol_words1:	COBOL_WORDS EQUATE NAME[keyword] WITH NAME[name] {
! 		  if( ! cdf_tokens.equate(@keyword, $keyword, $name) ) { YYERROR; }
  		}
  	|	COBOL_WORDS UNDEFINE NAME[keyword] {
! 		  if( ! cdf_tokens.undefine(@keyword, $keyword) ) { YYERROR; }
  		}
  	|	COBOL_WORDS SUBSTITUTE NAME[keyword] BY NAME[name] {
! 		  if( ! cdf_tokens.substitute(@keyword, $keyword, $name) ) { YYERROR; }
  		}
  	|	COBOL_WORDS RESERVE NAME[name] {
! 		  if( ! cdf_tokens.reserve(@name, $name) ) { YYERROR; }
  		}
  		;
  
*************** program_id:     PROGRAM_ID dot namestr[n
*** 1423,1429 ****
                    const char *name = string_of($name);
                    parser_enter_program( name, false, &main_error );
                    if( main_error ) {
!                     error_msg(@name, "PROGRAM-ID 'main' is invalid with -main option");
                      YYERROR;
                    }
  
--- 1498,1504 ----
                    const char *name = string_of($name);
                    parser_enter_program( name, false, &main_error );
                    if( main_error ) {
!                     error_msg(@name, "PROGRAM-ID 'main' is invalid with %<-main%> option");
                      YYERROR;
                    }
  
*************** program_as:     %empty     { static cons
*** 1449,1455 ****
          |       AS LITERAL { $$ = $2; }
                  ;
  
! function_id:    FUNCTION '.' NAME program_as program_attrs[attr] '.'
                  {
                    internal_ebcdic_lock();
                    current_division = identification_div_e;
--- 1524,1530 ----
          |       AS LITERAL { $$ = $2; }
                  ;
  
! function_id:    FUNCTION NAME program_as program_attrs[attr] '.'
                  {
                    internal_ebcdic_lock();
                    current_division = identification_div_e;
*************** function_id:    FUNCTION '.' NAME progra
*** 1459,1465 ****
                    int main_error = 0;
                    parser_enter_program( $NAME, true, &main_error );
                    if( main_error ) {
!                     error_msg(@NAME, "FUNCTION-ID 'main' is invalid with -main option");
                      YYERROR;
                    }
                    if( symbols_begin() == symbols_end() ) {
--- 1534,1541 ----
                    int main_error = 0;
                    parser_enter_program( $NAME, true, &main_error );
                    if( main_error ) {
!                     error_msg(@NAME, "FUNCTION-ID %<main%> is invalid "
!                               "with %<-main%> option");
                      YYERROR;
                    }
                    if( symbols_begin() == symbols_end() ) {
*************** function_id:    FUNCTION '.' NAME progra
*** 1482,1488 ****
                    current.udf_add(current_program_index());
                    if( nparse_error > 0 ) YYABORT;
                  }
!         |       FUNCTION '.' NAME program_as is PROTOTYPE '.'
                  {
                    cbl_unimplemented("FUNCTION PROTOTYPE");
                  }
--- 1558,1564 ----
                    current.udf_add(current_program_index());
                    if( nparse_error > 0 ) YYABORT;
                  }
!         |       FUNCTION NAME program_as is PROTOTYPE '.'
                  {
                    cbl_unimplemented("FUNCTION PROTOTYPE");
                  }
*************** opt_clause:     opt_arith
*** 1501,1507 ****
          |       opt_entry
          |       opt_binary
          |       opt_decimal {
! 		  cbl_unimplementedw("type FLOAT-DECIMAL was ignored");
  		}
          |       opt_intermediate
          |       opt_init
--- 1577,1583 ----
          |       opt_entry
          |       opt_binary
          |       opt_decimal {
! 		  cbl_unimplemented("type FLOAT-DECIMAL");
  		}
          |       opt_intermediate
          |       opt_init
*************** opt_binary:     FLOAT_BINARY default_kw
*** 1530,1536 ****
  		{
  		  cbl_unimplementedw("HIGH-ORDER-LEFT was ignored");
  		  if( ! current.option_binary(cbl_options_t::high_order_left_e) ) {
! 		    error_msg(@3, "unable to set HIGH_ORDER_LEFT");
  		  }
  		}
          |       FLOAT_BINARY default_kw is HIGH_ORDER_RIGHT[opt]
--- 1606,1612 ----
  		{
  		  cbl_unimplementedw("HIGH-ORDER-LEFT was ignored");
  		  if( ! current.option_binary(cbl_options_t::high_order_left_e) ) {
! 		    error_msg(@3, "unable to set %<HIGH_ORDER_LEFT%>");
  		  }
  		}
          |       FLOAT_BINARY default_kw is HIGH_ORDER_RIGHT[opt]
*************** namestr:        ctx_name {
*** 1658,1666 ****
                                $$.prefix);
                      YYERROR;
                    }
!                   if( !is_cobol_word($$.data) ) {
  		    error_msg(@1, "literal '%s' must be a COBOL or C identifier",
!                               $$.data);
                    }
                  }
                  ;
--- 1734,1742 ----
                                $$.prefix);
                      YYERROR;
                    }
! 		  if( !is_cobol_charset($$.data) ) {
  		    error_msg(@1, "literal '%s' must be a COBOL or C identifier",
! 			      $$.data);
                    }
                  }
                  ;
*************** select:         SELECT optional NAME[nam
*** 1773,1779 ****
                    cbl_file_t *file = $clauses.file;
  
                    file->optional = $optional;
!                   file->line = yylineno;
                    if( !namcpy(@clauses, file->name, $name) ) YYERROR;
  
                    if( ! ($clauses.clauses & assign_clause_e) ) {
--- 1849,1855 ----
                    cbl_file_t *file = $clauses.file;
  
                    file->optional = $optional;
!                   file->line = @name.first_line;
                    if( !namcpy(@clauses, file->name, $name) ) YYERROR;
  
                    if( ! ($clauses.clauses & assign_clause_e) ) {
*************** select:         SELECT optional NAME[nam
*** 1846,1852 ****
                    cbl_file_t file = protofile;
  
                    file.optional = $optional;
!                   file.line = yylineno;
                    if( !namcpy(@name, file.name, $name) ) YYERROR;
  
                    if( file_add(@name, &file) == NULL ) YYERROR;
--- 1922,1928 ----
                    cbl_file_t file = protofile;
  
                    file.optional = $optional;
!                   file.line = @name.first_line;
                    if( !namcpy(@name, file.name, $name) ) YYERROR;
  
                    if( file_add(@name, &file) == NULL ) YYERROR;
*************** select_clauses: select_clause { $$.claus
*** 1890,1896 ****
                      if( $$.file->nkey++ == 0 ) {
                        // If no key yet exists, create room for it and the
                        // present alternate.
!                       assert($$.file->keys == &cbl_file_t::no_key);
                        $$.file->keys = new cbl_file_key_t[++$$.file->nkey];
                      }
                      {
--- 1966,1972 ----
                      if( $$.file->nkey++ == 0 ) {
                        // If no key yet exists, create room for it and the
                        // present alternate.
!                       assert($$.file->keys == nullptr);
                        $$.file->keys = new cbl_file_key_t[++$$.file->nkey];
                      }
                      {
*************** select_clauses: select_clause { $$.claus
*** 1902,1909 ****
                        // Assign the alternate key to the last element,
                        // and update the pointer.
                        *alt = $part.file->keys[0];
!                       delete[] $$.file->keys;
!                       $$.file->keys = keys;
                      }
                      break;
                    case assign_clause_e:
--- 1978,1984 ----
                        // Assign the alternate key to the last element,
                        // and update the pointer.
                        *alt = $part.file->keys[0];
!                       $$.file->keys_update(keys);
                      }
                      break;
                    case assign_clause_e:
*************** select_clauses: select_clause { $$.claus
*** 1972,1982 ****
                        YYERROR;
                      }
                      if( $$.file->nkey == 0 ) {
                        $$.file->nkey = $part.file->nkey;
!                       $$.file->keys = $part.file->keys;
!                     } else {
!                       $$.file->keys[0] = $part.file->keys[0];
!                     }
                      break;
                    /* case password_clause_e: */
                    case file_status_clause_e:
--- 2047,2057 ----
                        YYERROR;
                      }
                      if( $$.file->nkey == 0 ) {
+                       assert( 1 == $part.file->nkey );
                        $$.file->nkey = $part.file->nkey;
!                       $$.file->keys = new cbl_file_key_t[1];
!                     } 
!                     $$.file->keys[0] = $part.file->keys[0];
                      break;
                    /* case password_clause_e: */
                    case file_status_clause_e:
*************** org_clause:     org_clause1[org]
*** 2134,2147 ****
                    $$.file->org = static_cast<cbl_file_org_t>($org);
                  }
                  ;
! org_is:         %empty
!         |       ORGANIZATION is
                  ;
                  // file_sequential is the proper default
! org_clause1:    org_is      SEQUENTIAL { $$ = file_sequential_e; }
!         |       org_is LINE SEQUENTIAL { $$ = file_line_sequential_e; }
!         |       org_is      RELATIVE   { $$ = file_relative_e; }
!         |       org_is      INDEXED    { $$ = file_indexed_e; }
                  ;
  
                  /*
--- 2209,2236 ----
                    $$.file->org = static_cast<cbl_file_org_t>($org);
                  }
                  ;
! org_is:         %empty                 { $$ = 0; }
!         |       ORGANIZATION is        { $$ = 0; }
!         |       ORGANIZATION is RECORD { $$ = RECORD; }
!         |                       RECORD { $$ = RECORD; }
                  ;
                  // file_sequential is the proper default
! org_clause1:    org_is      SEQUENTIAL {
!                   $$ = $1 == RECORD? file_line_sequential_e : file_sequential_e;
!                 }
!         |       org_is LINE SEQUENTIAL
!                 {
!                   if( $1 ) error_msg(@2, "syntax error: invalid %<RECORD%>");
!                   $$ = file_line_sequential_e;
!                 }
!         |       org_is      RELATIVE {
!                   if( $1 ) error_msg(@2, "syntax error: invalid %<RECORD%>");
!                   $$ = file_relative_e;
!                 }
!         |       org_is      INDEXED    { 
!                   if( $1 ) error_msg(@2, "syntax error: invalid %<RECORD%>");
!                   $$ = file_indexed_e;
!                 }
                  ;
  
                  /*
*************** config_paragraphs: config_paragraph
*** 2227,2233 ****
--- 2316,2324 ----
  config_paragraph:
                  SPECIAL_NAMES '.'
          |       SPECIAL_NAMES '.' specials '.'
+         |       SOURCE_COMPUTER  '.' 
          |       SOURCE_COMPUTER  '.' NAME with_debug '.'
+         |       OBJECT_COMPUTER  '.' 
          |       OBJECT_COMPUTER  '.' NAME collating_sequence[name] '.'
                  {
                    if( $name ) {
*************** config_paragraph:
*** 2238,2245 ****
                      }
                    }
                  }
!         |       REPOSITORY '.'
!         |       REPOSITORY '.' repo_members '.'
                  ;
  
  repo_members:   repo_member
--- 2329,2336 ----
                      }
                    }
                  }
!         |       REPOSITORY dot
!         |       REPOSITORY dot repo_members '.'
                  ;
  
  repo_members:   repo_member
*************** repo_expands:   %empty
*** 2267,2304 ****
  repo_interface: INTERFACE NAME repo_as repo_expands
                  ;
  
! repo_func:      FUNCTION repo_func_names INTRINSIC
!                 {
! 		  auto namelocs( name_queue.pop() );
!                   for( const auto& nameloc : namelocs ) {
!                       current.repository_add(nameloc.name);
                    }
                  }
          |       FUNCTION ALL INTRINSIC
                  {
                    current.repository_add_all();
                  }
!         |       FUNCTION repo_func_names
!                 ;
! repo_func_names:
!                 repo_func_name
!         |       repo_func_names repo_func_name
!                 ;
! repo_func_name: NAME {
!                   if( ! current.repository_add($NAME) ) { // add intrinsic by name
!                     auto token = current.udf_in($NAME);
                      if( !token ) {
!                       error_msg(@NAME, "%s is not defined here as a user-defined function",
!                                 $NAME);
!                       current.udf_dump();
!                       YYERROR;
                      }
!                     auto e = symbol_function(0, $NAME);
                      assert(e);
                      current.repository_add(symbol_index(e)); // add UDF to repository
                    }
                  }
                  ;
  
  repo_program:   PROGRAM_kw NAME repo_as
                  {
--- 2358,2418 ----
  repo_interface: INTERFACE NAME repo_as repo_expands
                  ;
  
! repo_func:      FUNCTION repo_func_names[namelocs] INTRINSIC {
!                   for( const auto& nameloc : *$namelocs ) {
!                     if( 0 == intrinsic_token_of(nameloc.name) ) {
!                       error_msg(nameloc.loc,
!                                 "no such intrinsic function: %qs",
!                                 nameloc.name);
!                       continue;
!                     }
!                     current.repository_add(nameloc.name);
                    }
                  }
          |       FUNCTION ALL INTRINSIC
                  {
                    current.repository_add_all();
                  }
!         |       FUNCTION repo_func_names[namelocs] {
! 		  // We allow multiple names because GnuCOBOL does.  ISO says 1.
!                   for( const auto& nameloc : *$namelocs ) {
!                     if( 0 != intrinsic_token_of(nameloc.name) ) {
!                       error_msg(nameloc.loc,
!                                 "intrinsic function %qs requires INTRINSIC",
!                                 nameloc.name);
!                       continue;
!                     }
!                     auto token = current.udf_in(nameloc.name);
                      if( !token ) {
!                       error_msg(nameloc.loc, 
!                                 "%s is not defined here as a user-defined function",
!                                 nameloc.name);
!                       continue;
                      }
!                     auto e = symbol_function(0, nameloc.name);
                      assert(e);
                      current.repository_add(symbol_index(e)); // add UDF to repository
                    }
                  }
                  ;
+ repo_func_names:
+                 repo_func_name[name] {
+                   $$ = new cbl_namelocs_t(1, *$name);
+                   delete $name;
+                 }
+         |       repo_func_names repo_func_name[name] {
+                   $$ = $1;
+                   $$->push_back(*$name);
+                   delete $name;
+                 }
+                 ;
+ repo_func_name: NAME repo_as {
+                   if( ! $repo_as.empty() ) {
+                     cbl_unimplemented_at(@repo_as, "%qs", $repo_as.data);
+                   }
+                   $$ = new cbl_nameloc_t(@NAME, $NAME);
+                 }
+                 ;
  
  repo_program:   PROGRAM_kw NAME repo_as
                  {
*************** repo_program:   PROGRAM_kw NAME repo_as
*** 2330,2336 ****
                      assert(program);
                      prog.data.initial = program->name;
                    }
!                   auto e = symbol_field_add(PROGRAM, &prog);
                    symbol_field_location(symbol_index(e), @NAME);
                  }
                  ;
--- 2444,2450 ----
                      assert(program);
                      prog.data.initial = program->name;
                    }
!                   const auto e = symbol_field_add(PROGRAM, &prog);
                    symbol_field_location(symbol_index(e), @NAME);
                  }
                  ;
*************** special_name:   dev_mnemonic
*** 2370,2376 ****
          |       CLASS NAME is domains
                  {
                    struct cbl_field_t field = { 0,
!                     FldClass, FldInvalid, 0, 0, 0, 0, nonarray, yylineno, "",
                      0, cbl_field_t::linkage_t(),
  		    {}, NULL };
                    if( !namcpy(@NAME, field.name, $2) ) YYERROR;
--- 2484,2490 ----
          |       CLASS NAME is domains
                  {
                    struct cbl_field_t field = { 0,
!                     FldClass, FldInvalid, 0, 0, 0, 0, nonarray, @NAME.first_line, "",
                      0, cbl_field_t::linkage_t(),
  		    {}, NULL };
                    if( !namcpy(@NAME, field.name, $2) ) YYERROR;
*************** dev_mnemonic:	device_name is NAME
*** 2458,2480 ****
                  }
  	|	NAME[device] is NAME[name]
  		{
! 		  static const std::map< std::string, special_name_t > fujitsus
! 		  { // Fujitsu calls these "function names", not device names
! 		    { "ARGUMENT-NUMBER", ARG_NUM_e },
! 		    { "ARGUMENT-VALUE", ARG_VALUE_e } ,
! 		    { "ENVIRONMENT-NAME", ENV_NAME_e },
! 		    { "ENVIRONMENT-VALUE", ENV_VALUE_e },
! 		  };
! 		  std::string device($device);
! 		  std::transform($device, $device + strlen($device),
! 		                 device.begin(), toupper);
! 		  auto p = fujitsus.find(device.c_str());
! 		  if( p == fujitsus.end() ) {
! 		    error_msg(@device, "%s is not a device name");
  		  }
  
!                   cbl_special_name_t special = { 0, p->second };
!                   if( !namcpy(@name, special.name, $name) ) YYERROR;
  
                    symbol_special_add(PROGRAM, &special);
  		}
--- 2572,2585 ----
                  }
  	|	NAME[device] is NAME[name]
  		{
! 		  auto p = cmd_or_env_special_of($device);
! 		  if( !p ) {
! 		    error_msg(@device, "%s is not a device name", $device);
! 		    YYERROR;
  		  }
  
!                   cbl_special_name_t special = { 0, *p };
!                   namcpy(@name, special.name, $name);
  
                    symbol_special_add(PROGRAM, &special);
  		}
*************** device_name:	SYSIN           { $$.token
*** 2510,2515 ****
--- 2615,2624 ----
          |       STDIN           { $$.token = STDIN; $$.id = STDIN_e; }
          |       STDOUT          { $$.token = STDOUT; $$.id = STDOUT_e; }
          |       STDERR          { $$.token = STDERR; $$.id = STDERR_e; }
+                 /* These cannot be both ctx_name and here. *
+         /*      ARGUMENT_NUMBER   { $$.token=0; $$.id = ARG_NUM_e; } */
+         /*      ENVIRONMENT_NAME  { $$.token=0; $$.id = ENV_NAME_e; } */
+         /*      ENVIRONMENT_VALUE { $$.token=0; $$.id = ENV_VALUE_e; } */
                  ;
  
  alphabet_name:  STANDARD_ALPHABET  { $$ = alphabet_add(@1, ASCII_e); }
*************** alphabet_seqs:  alphabet_seq[seq]
*** 2541,2547 ****
                      YYERROR;
                    }
                    $$->add_sequence(@seq, $seq.low);
!                   size_t len = $seq.low == nul_string()? 1 : strlen((const char*)$seq.low);
                    assert(len > 0);
                    $$->add_interval(@seq, $seq.low[--len], $seq.high[0]);
                    $$->add_sequence(@seq, $seq.high);
--- 2650,2657 ----
                      YYERROR;
                    }
                    $$->add_sequence(@seq, $seq.low);
!                   size_t len = $seq.low == nul_string()?
!                     1 : strlen((const char*)$seq.low);
                    assert(len > 0);
                    $$->add_interval(@seq, $seq.low[--len], $seq.high[0]);
                    $$->add_sequence(@seq, $seq.high);
*************** alphabet_seq:   alphabet_lit[low]
*** 2594,2610 ****
  alphabet_etc:   alphabet_lit
                  {
                    if( $1.len > 1 ) {
!                     error_msg(@1, "'%c' can be only a single letter", $1.data);
                      YYERROR;
                    }
                    $$ = (unsigned char)$1.data[0];
                  }
          |       spaces_etc {
!                   // For figurative constants, pass the synmbol table index,
                    // marked with the high bit.
                    static const auto bits = sizeof($$) * 8 - 1;
!                   $$ = 1;
!                   $$ = $$ << bits;
                    $$ |= constant_index($1);
                  }
                  ;
--- 2704,2722 ----
  alphabet_etc:   alphabet_lit
                  {
                    if( $1.len > 1 ) {
!                     error_msg(@1, "%qs can be only a single letter", $1.data);
                      YYERROR;
                    }
                    $$ = (unsigned char)$1.data[0];
                  }
          |       spaces_etc {
!                   // For figurative constants, pass the symbol table index,
                    // marked with the high bit.
                    static const auto bits = sizeof($$) * 8 - 1;
!                   unsigned int high_bit = 1L << bits;
!                   static_assert(sizeof($$) == sizeof(high_bit),
!                                 "adjust high_bit to match size of nonterminal target");
!                   memcpy(&$$, &high_bit, sizeof($$));
                    $$ |= constant_index($1);
                  }
                  ;
*************** domain:         all LITERAL[a]
*** 2778,2784 ****
                    if( ! string_of($value) ) {
                      yywarn("'%s' has embedded NUL", $value.data);
                    }
!                   char *dom = $value.data;
                    $$ = new cbl_domain_t(@value, false, $value.len, dom);
                  }
          |       when_set_to FALSE_kw is reserved_value
--- 2890,2896 ----
                    if( ! string_of($value) ) {
                      yywarn("'%s' has embedded NUL", $value.data);
                    }
!                   const char *dom = $value.data;
                    $$ = new cbl_domain_t(@value, false, $value.len, dom);
                  }
          |       when_set_to FALSE_kw is reserved_value
*************** fd_clause:      record_desc
*** 2858,2864 ****
                    f->varying_size.explicitly = f->varies();
                    if( f->varying_size.max != 0 ) {
                      if( !(f->varying_size.min <= f->varying_size.max) ) {
!                       error_msg(@1, "%zu must be <= %zu",
                                  f->varying_size.min, f->varying_size.max);
                        YYERROR;
                      }
--- 2970,2976 ----
                    f->varying_size.explicitly = f->varies();
                    if( f->varying_size.max != 0 ) {
                      if( !(f->varying_size.min <= f->varying_size.max) ) {
!                       error_msg(@1, "%zu must be less than or equal to %zu",
                                  f->varying_size.min, f->varying_size.max);
                        YYERROR;
                      }
*************** fd_clause:      record_desc
*** 2897,2905 ****
                  {
                    auto f = cbl_file_of(symbol_at(file_section_fd));
                    f->attr |= external_e;
!                   cbl_unimplemented("AS LITERAL ");
                  }
!         |       fd_linage
          |       fd_report {
                    cbl_unimplemented("REPORT WRITER");
                    YYERROR;
--- 3009,3017 ----
                  {
                    auto f = cbl_file_of(symbol_at(file_section_fd));
                    f->attr |= external_e;
!                   cbl_unimplemented("AS LITERAL");
                  }
!         |       fd_linage { cbl_unimplemented("LINAGE"); }
          |       fd_report {
                    cbl_unimplemented("REPORT WRITER");
                    YYERROR;
*************** rec_contains:   NUMSTR[min] {
*** 2934,2940 ****
                    }
                    $$.max = n;
                    if( !($$.min < $$.max) ) {
!                     error_msg(@max, "FROM (%xz) must be less than TO (%zu)",
                                $$.min, $$.max);
                      YYERROR;
                    }
--- 3046,3052 ----
                    }
                    $$.max = n;
                    if( !($$.min < $$.max) ) {
!                     error_msg(@max, "FROM (%zu) must be less than TO (%zu)",
                                $$.min, $$.max);
                      YYERROR;
                    }
*************** depending:      %empty
*** 3067,3073 ****
                      assert(e->type == SymField);
                      odo = symbol_index(e);
                    } else {
! 		    e = symbol_field_forward_add(PROGRAM, 0, $NAME, yylineno);
                      if( !e ) YYERROR;
  		    symbol_field_location( symbol_index(e), @NAME );
                      odo = field_index(cbl_field_of(e));
--- 3179,3185 ----
                      assert(e->type == SymField);
                      odo = symbol_index(e);
                    } else {
! 		    e = symbol_field_forward_add(PROGRAM, 0, $NAME, @NAME.first_line);
                      if( !e ) YYERROR;
  		    symbol_field_location( symbol_index(e), @NAME );
                      odo = field_index(cbl_field_of(e));
*************** field:          cdf
*** 3130,3136 ****
                        }
                        initial = string_of(field.data.value_of());
                        if( !initial ) {
!                         error_msg(@1, xstrerror(errno));
                          YYERROR;
                        }
                        char decimal = symbol_decimal_point();
--- 3242,3248 ----
                        }
                        initial = string_of(field.data.value_of());
                        if( !initial ) {
!                         error_msg(@1, "could not convert value to string");
                          YYERROR;
                        }
                        char decimal = symbol_decimal_point();
*************** index_field1:   ctx_name[name]
*** 3236,3246 ****
  		  field.data = data;
                    if( !namcpy(@name, field.name, $name) ) YYERROR;
  
!                   auto symbol = symbol_field(PROGRAM, 0, $name);
                    if( symbol ) {
!                     auto field( cbl_field_of(symbol) );
                      error_msg(@name,  "'%s' already defined on line %d",
!                               field->name, field->line );
                      YYERROR;
                    }
  
--- 3348,3358 ----
  		  field.data = data;
                    if( !namcpy(@name, field.name, $name) ) YYERROR;
  
!                   auto symbol = symbol_field(PROGRAM, field.parent, $name);
                    if( symbol ) {
!                     auto f( cbl_field_of(symbol) );
                      error_msg(@name,  "'%s' already defined on line %d",
!                               f->name, f->line );
                      YYERROR;
                    }
  
*************** level_name:     LEVEL ctx_name
*** 3267,3273 ****
                    }
                    struct cbl_field_t field = { 0,
                      FldInvalid, FldInvalid, 0, 0, 0, capacity_cast($1),
! 		    nonarray, yylineno, "",
                      0, cbl_field_t::linkage_t(),
  		    {}, NULL };
                    if( !namcpy(@ctx_name, field.name, $2) ) YYERROR;
--- 3379,3385 ----
                    }
                    struct cbl_field_t field = { 0,
                      FldInvalid, FldInvalid, 0, 0, 0, capacity_cast($1),
! 		    nonarray, @ctx_name.first_line, "",
                      0, cbl_field_t::linkage_t(),
  		    {}, NULL };
                    if( !namcpy(@ctx_name, field.name, $2) ) YYERROR;
*************** level_name:     LEVEL ctx_name
*** 3292,3298 ****
                    }
                    struct cbl_field_t field = { 0,
                      FldInvalid, FldInvalid, 0, 0, 0, capacity_cast($1),
! 		    nonarray, yylineno, "",
                      0, {}, {}, NULL };
  
                    $$ = field_add(@1, &field);
--- 3404,3410 ----
                    }
                    struct cbl_field_t field = { 0,
                      FldInvalid, FldInvalid, 0, 0, 0, capacity_cast($1),
! 		    nonarray, @LEVEL.first_line, "",
                      0, {}, {}, NULL };
  
                    $$ = field_add(@1, &field);
*************** data_descr:     data_descr1
*** 3311,3319 ****
                  ;
  
  const_value:    cce_expr
!         |       BYTE_LENGTH of name { $name->data.set_real_from_capacity(&$$); }
!         |       LENGTH      of name { $name->data.set_real_from_capacity(&$$); }
!         |       LENGTH_OF   of name { $name->data.set_real_from_capacity(&$$); }
                  ;
  
  value78:        literalism
--- 3423,3433 ----
                  ;
  
  const_value:    cce_expr
!         |       BYTE_LENGTH of name { set_real_from_capacity(@name, $name, &$$); }
!         |       LENGTH      of name { set_real_from_capacity(@name, $name, &$$); }
!         |       LENGTH_OF   of name { set_real_from_capacity(@name, $name, &$$); }
!         |       LENGTH_OF   of binary_type[type] {
! 		                real_from_integer(&$$, VOIDmode, $type, SIGNED); }
                  ;
  
  value78:        literalism
*************** value78:        literalism
*** 3329,3334 ****
--- 3443,3454 ----
  		  data = build_real (float128_type_node, $1);
                    $$ = new cbl_field_data_t(data);
                  }
+         |       reserved_value[value]
+                 {
+ 		  const auto field = constant_of(constant_index($value));
+                   $$ = new cbl_field_data_t(field->data);
+                 }
+ 
          |       true_false
                  {
                    cbl_unimplemented("Boolean constant");
*************** data_descr1:    level_name
*** 3362,3367 ****
--- 3482,3502 ----
                      error_msg(@1, "%s was defined by CDF", field.name);
                    }
                  }
+ 
+         |       level_name CONSTANT is_global as reserved_value[value]
+                 {
+                   cbl_field_t& field = *$1;
+                   if( field.level != 1 ) {
+                     error_msg(@1, "%s must be an 01-level data item", field.name);
+                     YYERROR;
+                   }
+                   field.attr |= constant_e;
+                   if( $is_global ) field.attr |= global_e;
+                   field.type = FldLiteralA;
+ 		  auto fig = constant_of(constant_index($value));
+                   field.data = fig->data;
+                 }
+ 
          |       level_name CONSTANT is_global as literalism[lit]
                  {
                    cbl_field_t& field = *$1;
*************** data_descr1:    level_name
*** 3401,3413 ****
  
          |       LEVEL78 NAME[name] VALUE is value78[data]
                  {
!                   if( ! dialect_mf() ) {
!                     dialect_error(@1, "level 78", "mf");
                      YYERROR;
                    }
                    struct cbl_field_t field = { 0, FldLiteralA, FldInvalid,
                                                 constant_e, 0, 0, 78, nonarray,
!                                                yylineno, "", 0, {}, *$data, NULL };
                    if( !namcpy(@name, field.name, $name) ) YYERROR;
                    if( field.data.initial ) {
                      field.attr |= quoted_e;
--- 3536,3548 ----
  
          |       LEVEL78 NAME[name] VALUE is value78[data]
                  {
!                   if( ! (dialect_mf() || dialect_gnu()) ) {
!                     dialect_error(@1, "level 78", "mf or gnu");
                      YYERROR;
                    }
                    struct cbl_field_t field = { 0, FldLiteralA, FldInvalid,
                                                 constant_e, 0, 0, 78, nonarray,
!                                                @name.first_line, "", 0, {}, *$data, NULL };
                    if( !namcpy(@name, field.name, $name) ) YYERROR;
                    if( field.data.initial ) {
                      field.attr |= quoted_e;
*************** data_descr1:    level_name
*** 3430,3436 ****
          |       LEVEL88 NAME /* VALUE */ NULLPTR
                  {
                    struct cbl_field_t field = { 0,
!                     FldClass, FldInvalid, 0, 0, 0, 88, nonarray, yylineno, "",
                      0, cbl_field_t::linkage_t(),
  		    {}, NULL };
                    if( !namcpy(@NAME, field.name, $2) ) YYERROR;
--- 3565,3571 ----
          |       LEVEL88 NAME /* VALUE */ NULLPTR
                  {
                    struct cbl_field_t field = { 0,
!                     FldClass, FldInvalid, 0, 0, 0, 88, nonarray, @NAME.first_line, "",
                      0, cbl_field_t::linkage_t(),
  		    {}, NULL };
                    if( !namcpy(@NAME, field.name, $2) ) YYERROR;
*************** data_descr1:    level_name
*** 3456,3462 ****
          |       LEVEL88 NAME VALUE domains
                  {
                    struct cbl_field_t field = { 0,
!                     FldClass, FldInvalid, 0, 0, 0, 88, nonarray, yylineno, "",
                      0, cbl_field_t::linkage_t(),
  		    {}, NULL };
                    if( !namcpy(@NAME, field.name, $2) ) YYERROR;
--- 3591,3597 ----
          |       LEVEL88 NAME VALUE domains
                  {
                    struct cbl_field_t field = { 0,
!                     FldClass, FldInvalid, 0, 0, 0, 88, nonarray, @NAME.first_line, "",
                      0, cbl_field_t::linkage_t(),
  		    {}, NULL };
                    if( !namcpy(@NAME, field.name, $2) ) YYERROR;
*************** data_descr1:    level_name
*** 3561,3567 ****
                    }
                    if( field_index($thru) <= field_index($orig) ) {
                      error_msg(@orig, "cannot RENAME %s %s THRU %s %s "
!                              "because they're in the wrong order",
  			      $orig->level_str(), name_of($orig),
  			      $thru->level_str(), name_of($thru));
                      YYERROR;
--- 3696,3702 ----
                    }
                    if( field_index($thru) <= field_index($orig) ) {
                      error_msg(@orig, "cannot RENAME %s %s THRU %s %s "
!                              "because they are in the wrong order",
  			      $orig->level_str(), name_of($orig),
  			      $thru->level_str(), name_of($thru));
                      YYERROR;
*************** data_descr1:    level_name
*** 3603,3609 ****
                      case FldNumericEdited:
                        if( $field->has_attr(signable_e) ) {
                          error_msg(@2,  "%s has 'S' in PICTURE, cannot be BLANK WHEN ZERO",
!                                   $field->name, cbl_field_type_str($field->type) );
                        }
                        break;
                      default:
--- 3738,3744 ----
                      case FldNumericEdited:
                        if( $field->has_attr(signable_e) ) {
                          error_msg(@2,  "%s has 'S' in PICTURE, cannot be BLANK WHEN ZERO",
!                                   $field->name );
                        }
                        break;
                      default:
*************** data_descr1:    level_name
*** 3616,3627 ****
  
                    // SIGN clause valid only with "S" in picture
                    if( $field->type == FldNumericDisplay && !is_signable($field) ) {
!                     static const size_t sign_attrs = leading_e | separate_e;
                      static_assert(sizeof(sign_attrs) == sizeof($field->attr),
                                    "size matters");
  
                      // remove inapplicable inherited sign attributes
!                     size_t group_sign = group_attr($field) & sign_attrs;
                      $field->attr &= ~group_sign;
  
                      if( $field->attr & sign_attrs ) {
--- 3751,3762 ----
  
                    // SIGN clause valid only with "S" in picture
                    if( $field->type == FldNumericDisplay && !is_signable($field) ) {
!                     static const uint64_t sign_attrs = leading_e | separate_e;
                      static_assert(sizeof(sign_attrs) == sizeof($field->attr),
                                    "size matters");
  
                      // remove inapplicable inherited sign attributes
!                     uint64_t group_sign = group_attr($field) & sign_attrs;
                      $field->attr &= ~group_sign;
  
                      if( $field->attr & sign_attrs ) {
*************** data_descr1:    level_name
*** 3681,3687 ****
                    $field->report_invalid_initial_value(@data_clauses);
  
                    // verify REDEFINES
!                   auto parent = parent_of($field);
                    if( parent && $field->level == parent->level ) {
                      valid_redefine(@field, $field, parent); // calls yyerror
                    }
--- 3816,3822 ----
                    $field->report_invalid_initial_value(@data_clauses);
  
                    // verify REDEFINES
!                   const auto parent = parent_of($field);
                    if( parent && $field->level == parent->level ) {
                      valid_redefine(@field, $field, parent); // calls yyerror
                    }
*************** data_clauses:   data_clause
*** 3777,3783 ****
  
                    // If any implied TYPE bits are on in addition to
                    // type_clause_e, they're in conflict.
!                   static const size_t type_implies =
                      // ALIGNED clause not implemented
                      blank_zero_clause_e | justified_clause_e | picture_clause_e
                      | sign_clause_e | synched_clause_e | usage_clause_e;
--- 3912,3918 ----
  
                    // If any implied TYPE bits are on in addition to
                    // type_clause_e, they're in conflict.
!                   static const uint64_t type_implies =
                      // ALIGNED clause not implemented
                      blank_zero_clause_e | justified_clause_e | picture_clause_e
                      | sign_clause_e | synched_clause_e | usage_clause_e;
*************** data_clauses:   data_clause
*** 3814,3823 ****
                        auto redefined = symbol_redefines(field);
                        if( redefined && redefined->type == FldPointer ) {
                          if( yydebug ) {
!                           yywarn("expanding %s size from %u bytes to %zu "
!                                 "because it redefines %s with USAGE POINTER",
                                  field->name, field->size(),
!                                 (size_t)int_size_in_bytes(ptr_type_node),
                                  redefined->name);
                          }
                          field->embiggen();
--- 3949,3958 ----
                        auto redefined = symbol_redefines(field);
                        if( redefined && redefined->type == FldPointer ) {
                          if( yydebug ) {
!                           yywarn("expanding %s size from %u bytes to %wd "
! 				 "because it redefines %s with %<USAGE POINTER%>",
                                  field->name, field->size(),
!                                 int_size_in_bytes(ptr_type_node),
                                  redefined->name);
                          }
                          field->embiggen();
*************** picture_clause: PIC signed nps[fore] nin
*** 3908,3914 ****
                    field->data.capacity = type_capacity(field->type, $4);
                    field->data.digits = $4;
                    if( long(field->data.digits) != $4 ) {
!                     error_msg(@2, "indicated size would be %ld bytes, "
                               "maximum data item size is %u",
                               $4, UINT32_MAX);
                    }
--- 4043,4049 ----
                    field->data.capacity = type_capacity(field->type, $4);
                    field->data.digits = $4;
                    if( long(field->data.digits) != $4 ) {
!                     error_msg(@2, "indicated size would be %d bytes, "
                               "maximum data item size is %u",
                               $4, UINT32_MAX);
                    }
*************** picture_clause: PIC signed nps[fore] nin
*** 3974,3988 ****
                    cbl_field_t *field = current_field();
  
  		  if( field->type == FldNumericBin5 &&
! 		      field->data.capacity == 0  &&
! 		      dialect_mf() )
  		  { // PIC X COMP-X or COMP-9
  		    if( ! field->has_attr(all_x_e) ) {
! 		      error_msg(@2, "COMP PICTURE requires all X's or all 9's");
                        YYERROR;
  		    }
  		  } else {
                      if( !field_type_update(field, FldAlphanumeric, @$) ) {
                        YYERROR;
                      }
  		  }
--- 4109,4124 ----
                    cbl_field_t *field = current_field();
  
  		  if( field->type == FldNumericBin5 &&
! 		      field->data.capacity == 0xFF  &&
! 		      (dialect_gnu() || dialect_mf()) )
  		  { // PIC X COMP-X or COMP-9
  		    if( ! field->has_attr(all_x_e) ) {
! 		      error_msg(@2, "COMP PICTURE requires all X%'s or all 9%'s");
                        YYERROR;
  		    }
  		  } else {
                      if( !field_type_update(field, FldAlphanumeric, @$) ) {
+ 		      dbgmsg("alnum_pic: %s", field_str(field));
                        YYERROR;
                      }
  		  }
*************** picture_clause: PIC signed nps[fore] nin
*** 4012,4018 ****
                    }
                    ERROR_IF_CAPACITY(@PIC, field);
                    if( !is_numeric_edited($picture) ) {
!                     error_msg(@picture, numed_message);
                      YYERROR;
                    }
                    field->data.picture = $picture;
--- 4148,4154 ----
                    }
                    ERROR_IF_CAPACITY(@PIC, field);
                    if( !is_numeric_edited($picture) ) {
!                     error_msg(@picture, "%s", numed_message);
                      YYERROR;
                    }
                    field->data.picture = $picture;
*************** picture_clause: PIC signed nps[fore] nin
*** 4054,4060 ****
--- 4190,4202 ----
                      gcc_unreachable();
                    }
                  }
+ 	|	PIC ones
                  ;
+ ones:		ONES
+ 		{
+ 		  cbl_unimplemented("Boolean type not implemented");
+ 		}
+ 		;
  
  alphanum_pic:   alphanum_part {
                    current_field()->set_attr($1.attr);
*************** alphanum_part:  ALNUM[picture] count
*** 4085,4091 ****
                      $$.nbyte += count; // AX9(3) has count 5
                    }
  		  if( count < 0 ) {
! 		    error_msg(@2, "PICTURE count '(%d)' is negative", count );
  		    YYERROR;
  		  }
                  }
--- 4227,4233 ----
                      $$.nbyte += count; // AX9(3) has count 5
                    }
  		  if( count < 0 ) {
! 		    error_msg(@2, "PICTURE count %<(%d)%> is negative", count );
  		    YYERROR;
  		  }
                  }
*************** nine:           %empty           { $$ =
*** 4104,4110 ****
                  {
                    $$ = $1;
  		  if( $$ == 0 ) {
! 		    error_msg(@1, "'(0)' invalid in PICTURE (ISO 2023 13.18.40.3)");
  		  }
                  }
                  ;
--- 4246,4252 ----
                  {
                    $$ = $1;
  		  if( $$ == 0 ) {
! 		    error_msg(@1, "%<(0)%> invalid in PICTURE (ISO 2023 13.18.40.3)");
  		  }
                  }
                  ;
*************** count:          %empty           { $$ =
*** 4118,4131 ****
                    REAL_VALUE_TYPE rn = numstr2i($NUMSTR.string, $NUMSTR.radix);
                    $$ = real_to_integer (&rn);
  		  if( $$ == 0 ) {
! 		    error_msg(@2, "'(0)' invalid in PICTURE (ISO 2023 13.18.40.3)");
  		  }
                  }
  	|	'(' NAME ')'
                  {
  		  auto value = cdf_value($NAME);
  		  if( ! (value && value->is_numeric()) ) {
! 		    error_msg(@NAME, "PICTURE '(%s)' requires a CONSTANT value", $NAME );
  		    YYERROR;
  		  }
  		  int nmsg = 0;
--- 4260,4273 ----
                    REAL_VALUE_TYPE rn = numstr2i($NUMSTR.string, $NUMSTR.radix);
                    $$ = real_to_integer (&rn);
  		  if( $$ == 0 ) {
! 		    error_msg(@2, "%<0%> invalid in PICTURE (ISO 2023 13.18.40.3)");
  		  }
                  }
  	|	'(' NAME ')'
                  {
  		  auto value = cdf_value($NAME);
  		  if( ! (value && value->is_numeric()) ) {
! 		    error_msg(@NAME, "PICTURE %qs requires a CONSTANT value", $NAME );
  		    YYERROR;
  		  }
  		  int nmsg = 0;
*************** count:          %empty           { $$ =
*** 4138,4150 ****
  		    if( !real_identical (TREE_REAL_CST_PTR (field->data.value_of()),
  				         &vi) ) {
  		      nmsg++;
! 		      error_msg(@NAME, "invalid PICTURE count '(%s)'",
  				field->data.initial );
  		    }
  		  }
  		  $$ = value->as_number();
  		  if( $$ <= 0 && !nmsg) {
! 		    error_msg(@NAME, "invalid PICTURE count '(%s)'", $NAME );
  		  }
                  }
                  ;
--- 4280,4292 ----
  		    if( !real_identical (TREE_REAL_CST_PTR (field->data.value_of()),
  				         &vi) ) {
  		      nmsg++;
! 		      error_msg(@NAME, "invalid PICTURE count %<(%s)%>",
  				field->data.initial );
  		    }
  		  }
  		  $$ = value->as_number();
  		  if( $$ <= 0 && !nmsg) {
! 		    error_msg(@NAME, "invalid PICTURE count %<(%s)%>", $NAME );
  		  }
                  }
                  ;
*************** usage_clause:   usage_clause1[type]
*** 4163,4173 ****
                    }
                  }
                  ;
! usage_clause1:  usage COMPUTATIONAL[comp]   native
                  {
                    bool infer = true;
                    cbl_field_t *field = current_field();
  
                    // Some binary types have defined capacity;
                    switch($comp.type) {
                    // COMPUTATIONAL and COMP-5 rely on PICTURE.
--- 4305,4325 ----
                    }
                  }
                  ;
! usage_clause1:  usage BIT
! 		{
! 		  cbl_unimplemented("Boolean type not implemented");
! 		}
! |		usage BINARY_INTEGER [comp] is_signed
                  {
+ 		  // action for BINARY_INTEGER is repeated for COMPUTATIONAL, below. 
+ 		  // If it changes, consolidate in a function. 
                    bool infer = true;
                    cbl_field_t *field = current_field();
  
+ 		  if( ! $is_signed ) {
+ 		    $comp.signable = false;
+ 		  }
+ 
                    // Some binary types have defined capacity;
                    switch($comp.type) {
                    // COMPUTATIONAL and COMP-5 rely on PICTURE.
*************** usage_clause1:  usage COMPUTATIONAL[comp
*** 4183,4202 ****
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        if( dialect_mf() ) {
                            field->type = $comp.type;
  			  field->clear_attr(signable_e);
  		        } else {
  			  error_msg(@comp, "numeric USAGE invalid "
! 				   "with Alpnanumeric PICTURE");
  			  YYERROR;
  		        }
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
! 		          if( ! dialect_mf() ) {
! 				  dialect_error(@1, "COMP-X", "mf");
  		          }
  			}
                          field->type = $comp.type;
--- 4335,4436 ----
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        if( (dialect_mf() || dialect_gnu()) ) {
                            field->type = $comp.type;
  			  field->clear_attr(signable_e);
  		        } else {
  			  error_msg(@comp, "numeric USAGE invalid "
! 				           "with Alpnanumeric PICTURE");
! 			  dialect_error(@1, "Alpnanumeric COMP-5 or COMP-X", "mf or gnu");
  			  YYERROR;
  		        }
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
! 		          if( ! (dialect_mf() || dialect_gnu()) ) {
! 				  dialect_error(@1, "COMP-X", "mf or gnu");
! 		          }
! 			}
!                         field->type = $comp.type;
!                         field->data.capacity = type_capacity(field->type,
!                                                              field->data.digits);
! 		        break;
! 		      default: break;
!                       }
! 		    }
!                     break;
! 		  case FldPacked: // comp-6 is unsigned comp-3
! 		    assert(! $comp.signable);  // else PACKED_DECIMAL from scanner
! 		    field->attr |= separate_e;
! 		    if( ! dialect_mf() ) {
! 		      dialect_error(@1, "COMP-6", "mf");
! 		    }
!                     if( field->type == FldNumericDisplay ) {// PICTURE before USAGE
!                       infer = false;
!                       assert(field->data.capacity > 0);
!                       field->type = $comp.type;
!                       field->data.capacity = type_capacity(field->type,
!                                                            field->data.digits);
!                     }
! 		    break;
!                   default:
!                     break;
!                   }
! 
!                   if( infer ) {
!                     if( $comp.capacity > 0 ) {
!                       if( field->data.capacity > 0 ) {
!                         error_msg(@comp, "%s is BINARY type, incompatible with PICTURE",
!                                field->name);
!                         YYERROR;
!                       }
!                       field->data.capacity = $comp.capacity;
!                       field->type = $comp.type;
!                       if( $comp.signable ) {
!                         field->attr = (field->attr | signable_e);
!                       }
!                     }
!                   }
!                   $$ = $comp.type;
!                 }
! 	|	usage COMPUTATIONAL[comp] native
!                 { 
! 		  // logic below duplicates BINARY_INTEGER, above.
! 		  // If it changes, consolidate in a function. 
!                   bool infer = true;
!                   cbl_field_t *field = current_field();
! 
!                   // Some binary types have defined capacity;
!                   switch($comp.type) {
!                   // COMPUTATIONAL and COMP-5 rely on PICTURE.
!                   case FldNumericBinary:
!                     field->attr |= big_endian_e;
!                     __attribute__((fallthrough));
!                   case FldNumericBin5:
! 		    // If no capacity yet, then no picture, infer $comp.capacity.
! 		    // If field has capacity, ensure USAGE is compatible.
! 		    if( field->data.capacity > 0 ) { // PICTURE before USAGE
! 		      infer = false;
! 		      switch( field->type ) {
! 		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
! 			assert( field->data.digits == 0 );
! 			assert( field->data.rdigits == 0 );
! 		        if( (dialect_mf() || dialect_gnu()) ) {
!                           field->type = $comp.type;
! 			  field->clear_attr(signable_e);
! 		        } else {
! 			  error_msg(@comp, "numeric USAGE invalid "
! 				           "with Alpnanumeric PICTURE");
! 			  dialect_error(@1, "Alpnanumeric COMP-5 or COMP-X", "mf or gnu");
! 			  YYERROR;
! 		        }
!                         break;
! 		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
! 		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
! 			  assert( field->data.digits == field->data.capacity );
! 		          if( ! (dialect_mf() || dialect_gnu()) ) {
! 				  dialect_error(@1, "COMP-X", "mf or gnu");
  		          }
  			}
                          field->type = $comp.type;
*************** usage_clause1:  usage COMPUTATIONAL[comp
*** 4278,4285 ****
                        is_numeric(redefined->type) && redefined->size() == 4) {
                      // For now, we allow POINTER to expand a 32-bit item to 64 bits.
                      field->data.capacity = int_size_in_bytes(ptr_type_node);
!                     dbgmsg("%s: expanding #%zu %s capacity %u => %u", __func__,
!                           field_index(redefined), redefined->name,
                            redefined->data.capacity, field->data.capacity);
  
                      redefined->embiggen();
--- 4512,4520 ----
                        is_numeric(redefined->type) && redefined->size() == 4) {
                      // For now, we allow POINTER to expand a 32-bit item to 64 bits.
                      field->data.capacity = int_size_in_bytes(ptr_type_node);
!                     dbgmsg("%s: expanding #" HOST_SIZE_T_PRINT_UNSIGNED
!                           " %s capacity %u => %u", __func__,
!                           (fmt_size_t)field_index(redefined), redefined->name,
                            redefined->data.capacity, field->data.capacity);
  
                      redefined->embiggen();
*************** justified_clause: is JUSTIFIED
*** 4386,4392 ****
  
  redefines_clause: REDEFINES NAME[orig]
                  {
!                   struct symbol_elem_t *e = field_of($orig);
                    if( !e ) {
                      error_msg(@2, "REDEFINES target not defined");
                      YYERROR;
--- 4621,4627 ----
  
  redefines_clause: REDEFINES NAME[orig]
                  {
!                   struct symbol_elem_t *e = symbol_field(PROGRAM, 0, $orig);
                    if( !e ) {
                      error_msg(@2, "REDEFINES target not defined");
                      YYERROR;
*************** same_clause:    SAME AS name
*** 4522,4528 ****
                      YYERROR;
                    }
  
!                   auto e = symbol_field_same_as( field, other );
                    symbol_field_location( symbol_index(e), @name );
                  }
                  ;
--- 4757,4763 ----
                      YYERROR;
                    }
  
!                   const auto e = symbol_field_same_as( field, other );
                    symbol_field_location( symbol_index(e), @name );
                  }
                  ;
*************** sign_clause:    sign_is sign_leading sig
*** 4533,4539 ****
                    if( $sign_leading ) {
                      field->attr |= leading_e;
                    } else {
!                     field->attr &= ~size_t(leading_e); // turn off in case inherited
                      field->attr |= signable_e;
                    }
                    if( $sign_separate ) field->attr |= separate_e;
--- 4768,4774 ----
                    if( $sign_leading ) {
                      field->attr |= leading_e;
                    } else {
!                     field->attr &= ~uint64_t(leading_e); // turn off in case inherited
                      field->attr |= signable_e;
                    }
                    if( $sign_separate ) field->attr |= separate_e;
*************** type_clause: TYPE to typename
*** 4571,4577 ****
                  {
                    cbl_field_t *field = current_field();
                    if( $typename ) {
!                     auto e = symbol_field_same_as(field, $typename);
  		    symbol_field_location( symbol_index(e), @typename );
                    }
                  }
--- 4806,4812 ----
                  {
                    cbl_field_t *field = current_field();
                    if( $typename ) {
!                     const auto e = symbol_field_same_as(field, $typename);
  		    symbol_field_location( symbol_index(e), @typename );
                    }
                  }
*************** type_clause: TYPE to typename
*** 4583,4589 ****
                    }
                    cbl_field_t *field = current_field();
                    if( $typename ) {
!                     auto e = symbol_field_same_as(field, $typename);
  		    symbol_field_location( symbol_index(e), @typename );
                    }
                  }
--- 4818,4824 ----
                    }
                    cbl_field_t *field = current_field();
                    if( $typename ) {
!                     const auto e = symbol_field_same_as(field, $typename);
  		    symbol_field_location( symbol_index(e), @typename );
                    }
                  }
*************** by_value_arg:   scalar
*** 4686,4691 ****
--- 4921,4927 ----
  declaratives:   %empty
          |       DECLARATIVES '.'
                  <label>{
+ 		  cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() );
                    current.enabled_exception_cache = enabled_exceptions;
                    enabled_exceptions.clear();
                    current.doing_declaratives(true);
*************** declaratives:   %empty
*** 4704,4709 ****
--- 4940,4946 ----
                     * forward reference, because we haven't yet begun to parse
                     * nondeclarative procedures.
                     */
+ 		  cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() );
                    parser_label_label($label);
                    enabled_exceptions = current.enabled_exception_cache;
                    current.enabled_exception_cache.clear();
*************** statements:                statement { $
*** 4796,4807 ****
  
  statement:      error {
                    if( current.declarative_section_name() ) {
! 		    error_msg(@1, "missing END DECLARATIVES or SECTION name",
! 			      nparse_error);
                      YYABORT;
                    }
                    if( max_errors_exceeded(nparse_error) ) {
!                     error_msg(@1, "max errors %d reached", nparse_error);
                      YYABORT;
                    }
                  }
--- 5033,5043 ----
  
  statement:      error {
                    if( current.declarative_section_name() ) {
! 		    error_msg(@1, "missing END DECLARATIVES or SECTION name");
                      YYABORT;
                    }
                    if( max_errors_exceeded(nparse_error) ) {
!                     error_msg(@1, "max errors %zu reached", nparse_error);
                      YYABORT;
                    }
                  }
*************** statement:      error {
*** 4819,4824 ****
--- 5055,5061 ----
          |       divide          { $$ =  DIVIDE; }
          |       entry           { $$ =  ENTRY; }
          |       evaluate        { $$ =  EVALUATE; }
+         |       exhibit_stmt    { $$ =  EXHIBIT; }
          |       exit            { $$ =  EXIT; }
          |       free            { $$ =  FREE; }
          |       go_to           { $$ =  GOTO; }
*************** statement:      error {
*** 4849,4857 ****
  
  		/*
  		 * ISO defines ON EXCEPTION only for Format 3 (screen). We
! 		 * implement extensions defined by MF and Fujitsu (and us) to
! 		 * use ACCEPT to interact with the command line and the
! 		 * environment.
  		 *
  		 * ISO ACCEPT and some others are implemented in accept_body,
  		 * before the parser sees any ON EXCEPTION.  In those cases
--- 5086,5093 ----
  
  		/*
  		 * ISO defines ON EXCEPTION only for Format 3 (screen). We
! 		 * implement extensions defined by MF and Fujitsu to use ACCEPT
! 		 * to interact with the command line and the environment.
  		 *
  		 * ISO ACCEPT and some others are implemented in accept_body,
  		 * before the parser sees any ON EXCEPTION.  In those cases
*************** accept:         accept_body end_accept {
*** 4866,4871 ****
--- 5102,5110 ----
  		  switch( $accept_body.func ) {
  		  case accept_done_e:
  		    break;
+ 		  case accept_e:
+                     parser_accept(*$1.into, $1.special, nullptr, nullptr);
+ 		    break;
  		  case accept_command_line_e:
  		    if( $1.from->field == NULL ) { // take next command-line arg
  		      parser_accept_command_line(*$1.into, argi, NULL, NULL);
*************** accept:         accept_body end_accept {
*** 4887,4893 ****
  		  switch( $accept_body.func ) {
  		  case accept_done_e:
  		    error_msg(@ec, "ON EXCEPTION valid only "
! 			    "with ENVIRONMENT or COMAMND-LINE(n)");
  		    break;
  		  case accept_command_line_e:
  		    if( $1.from->field == NULL ) { // take next command-line arg
--- 5126,5135 ----
  		  switch( $accept_body.func ) {
  		  case accept_done_e:
  		    error_msg(@ec, "ON EXCEPTION valid only "
! 			    "with ENVIRONMENT or COMMAND-LINE(n)");
! 		    break;
! 		  case accept_e:
!                     parser_accept(*$1.into, $1.special, $ec.on_error, $ec.not_error);
  		    break;
  		  case accept_command_line_e:
  		    if( $1.from->field == NULL ) { // take next command-line arg
*************** accept:         accept_body end_accept {
*** 4899,4905 ****
  		      parser_move(*$1.into, *$1.from);
  		      if( $ec.on_error || $ec.not_error ) {
  			error_msg(@ec, "ON EXCEPTION valid only "
! 				"with ENVIRONMENT or COMAMND-LINE(n)");
  		      }
  		    } else {
  		      parser_accept_command_line(*$1.into, *$1.from,
--- 5141,5147 ----
  		      parser_move(*$1.into, *$1.from);
  		      if( $ec.on_error || $ec.not_error ) {
  			error_msg(@ec, "ON EXCEPTION valid only "
! 				"with ENVIRONMENT or COMMAND-LINE(n)");
  		      }
  		    } else {
  		      parser_accept_command_line(*$1.into, *$1.from,
*************** end_accept:     %empty %prec ACCEPT
*** 4920,4926 ****
  accept_body:    accept_refer
                  {
  		  $$.func = accept_done_e;
!                   parser_accept(*$1, CONSOLE_e);
                  }
          |       accept_refer FROM DATE
                  {
--- 5162,5168 ----
  accept_body:    accept_refer
                  {
  		  $$.func = accept_done_e;
!                   parser_accept(*$1, CONSOLE_e, nullptr, nullptr);
                  }
          |       accept_refer FROM DATE
                  {
*************** accept_body:    accept_refer
*** 4979,5007 ****
                  }
          |       accept_refer FROM acceptable
                  {
! 		  cbl_field_t *argc = register_find("_ARGI");
! 		  switch( $acceptable->id ) {
! 		  case ARG_NUM_e:
! 		    $$.func = accept_command_line_e;
! 		    $$.into = $1;
! 		    $$.from = new_reference(argc);
! 		    break;
! 		  case ARG_VALUE_e:
! 		    $$.func = accept_command_line_e;
! 		    $$.into = $1;
! 		    $$.from = cbl_refer_t::empty();
! 		    break;
! 		  default:
! 		    $$.func = accept_done_e;
! 		    parser_accept( *$1, $acceptable->id );
! 		  }
                  }
          |       accept_refer FROM ENVIRONMENT envar
                  {
  		  $$.func = accept_envar_e;
  		  $$.into = $1;
  		  $$.from = $envar;
-                   ////  parser_accept_envar( *$1, *$envar );
                  }
          |       accept_refer FROM COMMAND_LINE
                  {
--- 5221,5235 ----
                  }
          |       accept_refer FROM acceptable
                  {
! 		  $$.func = accept_e;
!                   $$.into = $1;
!                   $$.special = $acceptable->id;
                  }
          |       accept_refer FROM ENVIRONMENT envar
                  {
  		  $$.func = accept_envar_e;
  		  $$.into = $1;
  		  $$.from = $envar;
                  }
          |       accept_refer FROM COMMAND_LINE
                  {
*************** accept_body:    accept_refer
*** 5013,5019 ****
  		  $$.func = accept_command_line_e;
  		  $$.into = $1;
  		  $$.from = $expr;
-                   //// parser_accept_command_line(*$1, $expr->field );
                  }
          |       accept_refer FROM COMMAND_LINE_COUNT {
  		  $$.func = accept_done_e;
--- 5241,5246 ----
*************** accept_except:	EXCEPTION
*** 5066,5072 ****
                  {
                    $$.not_error = NULL;
                    $$.on_error = label_add(LblArith,
!                                           uniq_label("accept"), yylineno);
                    if( !$$.on_error ) YYERROR;
                    parser_accept_exception( $$.on_error );
  
--- 5293,5299 ----
                  {
                    $$.not_error = NULL;
                    $$.on_error = label_add(LblArith,
!                                           uniq_label("accept"), @1.first_line);
                    if( !$$.on_error ) YYERROR;
                    parser_accept_exception( $$.on_error );
  
*************** acceptable:     device_name
*** 5096,5104 ****
                  {
                    $$ = special_of($1);
                    if( !$$ ) {
!                     error_msg(@NAME, "no such environment mnemonic name: %s", $NAME);
!                     YYERROR;
!                   }
                  }
                  ;
  
--- 5323,5380 ----
                  {
                    $$ = special_of($1);
                    if( !$$ ) {
! 		    const special_name_t *special_type = cmd_or_env_special_of($NAME);
! 		    if( !special_type ) {
!                       error_msg(@NAME, "no such special name '%s'", $NAME);
!                       YYERROR;
! 		    }
!                     if( ENV_NAME_e == *special_type ) { 
!                       error_msg(@NAME, "cannot ACCEPT FROM %qs", $NAME);
!                       YYERROR;
!                     }
! 		    // Add the name now, as a convenience. 
!                     int token = 0;
!                     switch(*special_type) {
!                     case ARG_NUM_e:    token = ARGUMENT_NUMBER; break;
!                     case ARG_VALUE_e:  token = ARGUMENT_VALUE; break;
!                     case ENV_VALUE_e:  token = ENVIRONMENT_VALUE; break;
! 
!                     case ENV_NAME_e:
!                     default:
!                       error_msg(@NAME, "cannot ACCEPT FROM %qs", $NAME);
!                       YYERROR;
!                       break;
!                     }
! 		    cbl_special_name_t special = { token, *special_type };
! 		    namcpy(@NAME, special.name, $NAME);
! 
! 		    symbol_elem_t *e = symbol_special_add(PROGRAM, &special);
! 		    $$ = cbl_special_name_of(e);
!                     cbl_special_name_t& unused(*$$);
!                     assert(unused.id);
! 		  }
! 		  assert($$);
!                 }
!         |       ENVIRONMENT_VALUE {
! 		    // Add the name now, as a convenience. 
! 		    cbl_special_name_t special =
!                       { ENVIRONMENT_VALUE, ENV_VALUE_e, "ENVIRONMENT-VALUE" };
! 		    symbol_elem_t *e = symbol_special_add(PROGRAM, &special);
! 		    $$ = cbl_special_name_of(e);
!                 }
!         |       ARGUMENT_NUMBER {
! 		    // Add the name now, as a convenience. 
! 		    cbl_special_name_t special =
!                       { ARGUMENT_NUMBER, ARG_NUM_e, "ARGUMENT-NUMBER" };
! 		    symbol_elem_t *e = symbol_special_add(PROGRAM, &special);
! 		    $$ = cbl_special_name_of(e);
!                 }
!         |       ARGUMENT_VALUE {
! 		    // Add the name now, as a convenience. 
! 		    cbl_special_name_t special =
!                       { ARGUMENT_VALUE, ARG_VALUE_e, "ARGUMENT-VALUE" };
! 		    symbol_elem_t *e = symbol_special_add(PROGRAM, &special);
! 		    $$ = cbl_special_name_of(e);
                  }
                  ;
  
*************** name88:		NAME88 {
*** 5215,5230 ****
  
  scalar88:	name88 subscripts[subs] refmod[ref]
                  {
-                   size_t n = $subs->size();
-                   auto subscripts = new cbl_refer_t[n];
-                   $subs->use_list(subscripts);
                    if( $ref.from->is_reference() || $ref.len->is_reference() ) {
                      error_msg(@subs, "subscripts on start:len refmod "
                              "parameters are unsupported");
                      YYERROR;
                    }
                    cbl_span_t span( $ref.from, $ref.len );
!                   $$ = new cbl_refer_t($1, n, subscripts, span);
                  }
          |       name88 refmod[ref]
                  {
--- 5491,5503 ----
  
  scalar88:	name88 subscripts[subs] refmod[ref]
                  {
                    if( $ref.from->is_reference() || $ref.len->is_reference() ) {
                      error_msg(@subs, "subscripts on start:len refmod "
                              "parameters are unsupported");
                      YYERROR;
                    }
                    cbl_span_t span( $ref.from, $ref.len );
!                   $$ = new cbl_refer_t($1, $subs->vectorize(), span);
                  }
          |       name88 refmod[ref]
                  {
*************** allocate:       ALLOCATE expr[size] CHAR
*** 5253,5260 ****
                  {
                    statement_begin(@1, ALLOCATE);
                    if( $size->field->type == FldLiteralN ) {
! 		    auto size = TREE_REAL_CST_PTR ($size->field->data.value_of());
!                     if( real_isneg(size) || real_iszero(size) ) { 
                        error_msg(@size, "size must be greater than 0");
                        YYERROR;
                      }
--- 5526,5533 ----
                  {
                    statement_begin(@1, ALLOCATE);
                    if( $size->field->type == FldLiteralN ) {
! 		    const auto size = TREE_REAL_CST_PTR ($size->field->data.value_of());
!                     if( real_isneg(size) || real_iszero(size) ) {
                        error_msg(@size, "size must be greater than 0");
                        YYERROR;
                      }
*************** compute_impl:   COMPUTE compute_body[bod
*** 5294,5300 ****
                  {
                    parser_assign( $body.ntgt, $body.tgts, *$body.expr,
                                   NULL, NULL, current.compute_label() );
!                   current.declaratives_evaluate(ec_none_e);
                  }
                  ;
  compute_cond:   COMPUTE compute_body[body] arith_errs[err]
--- 5567,5573 ----
                  {
                    parser_assign( $body.ntgt, $body.tgts, *$body.expr,
                                   NULL, NULL, current.compute_label() );
!                   current.declaratives_evaluate();
                  }
                  ;
  compute_cond:   COMPUTE compute_body[body] arith_errs[err]
*************** compute_cond:   COMPUTE compute_body[bod
*** 5302,5308 ****
                    parser_assign( $body.ntgt, $body.tgts, *$body.expr,
                                   $err.on_error, $err.not_error,
                                   current.compute_label() );
!                   current.declaratives_evaluate(ec_size_e);
                  }
                  ;
  end_compute:    %empty %prec COMPUTE
--- 5575,5581 ----
                    parser_assign( $body.ntgt, $body.tgts, *$body.expr,
                                   $err.on_error, $err.not_error,
                                   current.compute_label() );
!                   current.declaratives_evaluate();
                  }
                  ;
  end_compute:    %empty %prec COMPUTE
*************** compute_expr:   '=' {
*** 5332,5384 ****
                  }
                  ;
  
! display:        disp_body end_display
!                 {
! 		  std::vector <cbl_refer_t> args($1.vargs->args.size());
! 		  std::copy( $1.vargs->args.begin(), $1.vargs->args.end(), args.begin() );
! 		  if( $1.special && $1.special->id == ARG_NUM_e ) {
! 		    if( $1.vargs->args.size() != 1 ) {
! 		      error_msg(@1, "ARGUMENT-NUMBER can be set to only one value");
! 		    }
! 		    cbl_refer_t& src( $1.vargs->args.front() );
! 		    cbl_field_t *dst = register_find("_ARGI");
! 		    parser_move( dst, src );
! 		  } else {
! 		    parser_display($1.special,
! 				   args.empty()? NULL : args.data(), args.size(),
! 				   DISPLAY_ADVANCE);
! 		  }
! 		  current.declaratives_evaluate(ec_none_e);
!                 }
!         |       disp_body NO ADVANCING end_display
                  {
!                   std::vector <cbl_refer_t> args($1.vargs->args.size());
! 		  std::copy( $1.vargs->args.begin(), $1.vargs->args.end(), args.begin() );
! 
! 		  if( $1.special && $1.special->id == ARG_NUM_e ) {
! 		    if( $1.vargs->args.size() != 1 ) {
! 		      error_msg(@1, "ARGUMENT-NUMBER can be set to only one value");
! 		    }
! 		    cbl_refer_t& src( $1.vargs->args.front() );
! 		    cbl_field_t *dst = register_find("_ARGI");
! 		    parser_move( dst, src );
! 		  } else {
! 		    parser_display($1.special,
! 				   args.empty()? NULL : args.data(), args.size(), 
! 				   DISPLAY_NO_ADVANCE);
! 		  }
! 		  current.declaratives_evaluate(ec_none_e);
                  }
                  ;
! end_display:    %empty
!         |       END_DISPLAY
                  ;
  disp_body:      disp_vargs[vargs]
                  {
                    $$.special = NULL;
                    $$.vargs = $vargs;
                  }
!         |       disp_vargs[vargs] UPON disp_target[special]
                  {
                    $$.special = $special;
                    $$.vargs = $vargs;
--- 5605,5629 ----
                  }
                  ;
  
! display:        disp_body end_display[advance]
                  {
! 		  std::vector <cbl_refer_t> args($1.vargs->args.begin(),
!                                                  $1.vargs->args.end());
!                   parser_display($1.special, args, $advance);
! 		  current.declaratives_evaluate();
                  }
                  ;
! end_display:    %empty				{ $$ = DISPLAY_ADVANCE; }
!         |                    END_DISPLAY	{ $$ = DISPLAY_ADVANCE; }
!         |       NO ADVANCING			{ $$ = DISPLAY_NO_ADVANCE; }
!         |       NO ADVANCING END_DISPLAY	{ $$ = DISPLAY_NO_ADVANCE; }
                  ;
  disp_body:      disp_vargs[vargs]
                  {
                    $$.special = NULL;
                    $$.vargs = $vargs;
                  }
!         |       disp_vargs[vargs] UPON disp_upon[special]
                  {
                    $$.special = $special;
                    $$.vargs = $vargs;
*************** disp_vargs:     DISPLAY vargs {
*** 5390,5409 ****
                  }
                  ;
  
! disp_target:    device_name {
                    $$ = symbol_special($1.id);
                  }
          |       NAME
                  {
!                   symbol_elem_t *e = symbol_special(PROGRAM, $1);
                    if( !e ) {
!                     error_msg(@NAME, "no such special name '%s'", $NAME);
!                     YYERROR;
!                   }
!                   $$ = cbl_special_name_of(e);
                  }
                  ;
  
  divide:         divide_impl end_divide { ast_divide($1); }
          |       divide_cond end_divide { ast_divide($1); }
                  ;
--- 5635,5710 ----
                  }
                  ;
  
! disp_upon:    	device_name {
                    $$ = symbol_special($1.id);
                  }
          |       NAME
                  {
!                   symbol_elem_t *e = symbol_special(PROGRAM, $NAME);
                    if( !e ) {
! 		    const special_name_t *special_type = cmd_or_env_special_of($NAME);
! 		    if( !special_type ) {
!                       error_msg(@NAME, "no such special name '%s'", $NAME);
!                       YYERROR;
! 		    }
! 		    // Add the name now, as a convenience.
!                     // These may come through as a NAME, depending on how scanned. 
!                     int token = 0;
!                     switch(*special_type) {
!                     case ARG_NUM_e:    token = ARGUMENT_NUMBER; break;
!                     case ENV_NAME_e:   token = ENVIRONMENT_NAME; break;
!                     case ENV_VALUE_e:  token = ENVIRONMENT_VALUE; break;
! 
!                     case ARG_VALUE_e:
!                     default:
!                       error_msg(@NAME, "cannot DISPLAY UPON %qs", $NAME);
!                       YYERROR;
!                       break;
!                     }
! 		    cbl_special_name_t special = { token, *special_type };
! 		    namcpy(@NAME, special.name, $NAME);
! 
!                     e = symbol_special_add(PROGRAM, &special);
! 		  }
! 		  $$ = cbl_special_name_of(e);
!                 }
!         |       ARGUMENT_NUMBER {
! 		    // Add the name now, as a convenience. 
! 		    cbl_special_name_t special =
!                       { ARGUMENT_NUMBER, ARG_NUM_e, "ARGUMENT-NUMBER" };
! 		    symbol_elem_t *e = symbol_special_add(PROGRAM, &special);
! 		    $$ = cbl_special_name_of(e);
!                 }
!         |       ENVIRONMENT_NAME {
! 		    // Add the name now, as a convenience. 
! 		    cbl_special_name_t special =
!                       { ENVIRONMENT_NAME, ENV_NAME_e, "ENVIRONMENT-NAME" };
! 		    symbol_elem_t *e = symbol_special_add(PROGRAM, &special);
! 		    $$ = cbl_special_name_of(e);
!                 }
!         |       ENVIRONMENT_VALUE {
! 		    // Add the name now, as a convenience. 
! 		    cbl_special_name_t special =
!                       { ENVIRONMENT_VALUE, ENV_VALUE_e, "ENVIRONMENT-VALUE" };
! 		    symbol_elem_t *e = symbol_special_add(PROGRAM, &special);
! 		    $$ = cbl_special_name_of(e);
                  }
                  ;
  
+ exhibit_stmt:   EXHIBIT exh_changed exh_named vargs {
+                   statement_begin(@1, EXHIBIT);
+                   std::vector<cbl_refer_t> args( $vargs->args.begin(),
+                                                  $vargs->args.end() );
+                   parser_exhibit( $exh_changed, $exh_named, args );
+                 }
+                 ;
+ exh_changed:    %empty  { $$ = false; }
+         |       CHANGED { $$ = true; }
+                 ;
+ exh_named:      %empty  { $$ = false; }
+         |       NAMED   { $$ = true; }
+                 ;
+ 
  divide:         divide_impl end_divide { ast_divide($1); }
          |       divide_cond end_divide { ast_divide($1); }
                  ;
*************** end_program:    end_program1[end] '.'
*** 5499,5517 ****
                      gcc_unreachable();
                    }
                    if( !matches ) {
!                     error_msg(@end, "END %s %s' does not match IDENTIFICATION DIVISION '%s'",
                                token_name, name, prog->name);
                      YYERROR;
                    }
  
                    if( 0 != strcasecmp(prog->name, name) ) {
!                     error_msg(@end, "END PROGRAM '%s' does not match PROGRAM-ID '%s'",
                                name, prog->name);
                      YYERROR;
                    }
                    std::set<std::string> externals = current.end_program();
                    if( !externals.empty() ) {
! 		    for( auto name : externals ) {
  		      yywarn("%s calls external symbol '%s'", prog->name, name.c_str());
  		    }
                      YYERROR;
--- 5800,5819 ----
                      gcc_unreachable();
                    }
                    if( !matches ) {
!                     error_msg($end.loc, "END %s %s does not match "
!                                     "%<IDENTIFICATION DIVISION %s%>",
                                token_name, name, prog->name);
                      YYERROR;
                    }
  
                    if( 0 != strcasecmp(prog->name, name) ) {
!                     error_msg($end.loc, "END PROGRAM '%s' does not match PROGRAM-ID '%s'",
                                name, prog->name);
                      YYERROR;
                    }
                    std::set<std::string> externals = current.end_program();
                    if( !externals.empty() ) {
! 		    for( const auto& name : externals ) {
  		      yywarn("%s calls external symbol '%s'", prog->name, name.c_str());
  		    }
                      YYERROR;
*************** end_program:    end_program1[end] '.'
*** 5530,5557 ****
  		    token_name = "FUNCTION";
                      break;
                    default:
!                     cbl_internal_error( "END token invalid");
                    }
! 		  error_msg(@end, "END %s requires NAME before '.'", token_name);
  		  YYERROR;
  		}
                  ;
  end_program1:   END_PROGRAM  namestr[name]
                  {
                    $$.token = END_PROGRAM;
                    $$.name = $name;
                  }
          |       END_FUNCTION namestr[name]
                  {
                    $$.token = END_FUNCTION;
                    $$.name = $name;
                  }
  	|	END_PROGRAM  '.' // error
                  {
                    $$.token = END_PROGRAM;
                  }
          |       END_FUNCTION '.' // error
                  {
                    $$.token = END_FUNCTION;
                  }
                  ;
--- 5832,5863 ----
  		    token_name = "FUNCTION";
                      break;
                    default:
!                     cbl_internal_error( "%<END%> token invalid");
                    }
! 		  error_msg(@end, "%<END%> %s requires %<NAME%> before %<.%>", token_name);
  		  YYERROR;
  		}
                  ;
  end_program1:   END_PROGRAM  namestr[name]
                  {
+                   $$.loc = @name;
                    $$.token = END_PROGRAM;
                    $$.name = $name;
                  }
          |       END_FUNCTION namestr[name]
                  {
+                   $$.loc = @name;
                    $$.token = END_FUNCTION;
                    $$.name = $name;
                  }
  	|	END_PROGRAM  '.' // error
                  {
+                   $$.loc = @1;
                    $$.token = END_PROGRAM;
                  }
          |       END_FUNCTION '.' // error
                  {
+                   $$.loc = @1;
                    $$.token = END_FUNCTION;
                  }
                  ;
*************** exit_with:      %empty
*** 5606,5612 ****
  		    static cbl_refer_t status(rt);
  		    $$ = &status;
  		  }
! 		  auto prog = cbl_label_of(symbol_at(current_program_index()));
  		  if( prog->returning ) {
  		    $$ = new cbl_refer_t( cbl_field_of(symbol_at(prog->returning)) );
  		  }
--- 5912,5918 ----
  		    static cbl_refer_t status(rt);
  		    $$ = &status;
  		  }
! 		  const auto prog = cbl_label_of(symbol_at(current_program_index()));
  		  if( prog->returning ) {
  		    $$ = new cbl_refer_t( cbl_field_of(symbol_at(prog->returning)) );
  		  }
*************** eval_abbrs:	rel_term[a] {
*** 6190,6206 ****
  		  auto& ev( eval_stack.current() );
  		  auto subj( ev.subject() );
  		  if( !subj ) {
! 		    error_msg(@1, "WHEN %s phrase exceeds "
  			     "subject set count of %zu",
! 			     $a.term->name(), ev.subject_count());
  		    YYERROR;
  		  }
  		  if( ! ev.compatible($a.term->field) ) {
  		    auto obj($a.term->field);
  		    error_msg(@1, "subject %s, type %s, "
! 			     "cannot be compared %s, type %s",
! 			     subj->name, 3 + cbl_field_type_str(subj->type),
! 			     obj->name,	 3 + cbl_field_type_str(obj->type) );
  		  }
  		  auto result = ev.compare(*$a.term);
  		  if( ! result ) YYERROR;
--- 6496,6512 ----
  		  auto& ev( eval_stack.current() );
  		  auto subj( ev.subject() );
  		  if( !subj ) {
! 		    error_msg(@1, "WHEN %qs phrase exceeds "
  			     "subject set count of %zu",
!                               nice_name_of($a.term->field), ev.subject_count());
  		    YYERROR;
  		  }
  		  if( ! ev.compatible($a.term->field) ) {
  		    auto obj($a.term->field);
  		    error_msg(@1, "subject %s, type %s, "
!                               "cannot be compared %s, type %s",
!                               subj->name, 3 + cbl_field_type_str(subj->type),
! 			      obj->name,  3 + cbl_field_type_str(obj->type) );
  		  }
  		  auto result = ev.compare(*$a.term);
  		  if( ! result ) YYERROR;
*************** true_false:     TRUE_kw  { $$ = TRUE_kw;
*** 6295,6301 ****
  
  scalar:         tableref {
  		  // Check for missing subscript; others already checked.
!                   if( $1->nsubscript == 0 && 0 < dimensions($1->field) ) {
                      subscript_dimension_error(@1, 0, $$);
                    }
  		}
--- 6601,6607 ----
  
  scalar:         tableref {
  		  // Check for missing subscript; others already checked.
!                   if( $1->nsubscript() == 0 && 0 < dimensions($1->field) ) {
                      subscript_dimension_error(@1, 0, $$);
                    }
  		}
*************** tableref:	tableish {
*** 6306,6313 ****
  		  $$ = $1;
  		  $$->loc = @1;
  		  if( $$->is_table_reference() ) {
!                     if( $$->nsubscript != dimensions($$->field) ) {
!                       subscript_dimension_error(@1, $$->nsubscript, $$);
  		      YYERROR;
  		    }
  		  }
--- 6612,6619 ----
  		  $$ = $1;
  		  $$->loc = @1;
  		  if( $$->is_table_reference() ) {
!                     if( $$->nsubscript() != dimensions($$->field) ) {
!                       subscript_dimension_error(@1, $$->nsubscript(), $$);
  		      YYERROR;
  		    }
  		  }
*************** tableish:	name subscripts[subs] refmod[r
*** 6343,6356 ****
  
  refmod:         LPAREN expr[from] ':' expr[len] ')' %prec NAME
                  {
! 		  if( ! require_numeric(@from, *$from) ) YYERROR;
! 		  if( ! require_numeric(@len, *$len) ) YYERROR;
                    $$.from = $from;
                    $$.len = $len;
                  }
          |       LPAREN expr[from] ':'           ')' %prec NAME
                  {
! 		  if( ! require_numeric(@from, *$from) ) YYERROR;
                    $$.from = $from;
                    $$.len = nullptr;
                  }
--- 6649,6662 ----
  
  refmod:         LPAREN expr[from] ':' expr[len] ')' %prec NAME
                  {
! 		  if( ! require_integer(@from, *$from) ) YYERROR;
! 		  if( ! require_integer(@len, *$len) ) YYERROR;
                    $$.from = $from;
                    $$.len = $len;
                  }
          |       LPAREN expr[from] ':'           ')' %prec NAME
                  {
! 		  if( ! require_integer(@from, *$from) ) YYERROR;
                    $$.from = $from;
                    $$.len = nullptr;
                  }
*************** name:           qname
*** 6387,6393 ****
                        auto name = names.front();
                        names.pop_front();
                        auto e = symbol_field_forward_add(PROGRAM, parent,
!                                                         name, yylineno);
                        if( !e ) YYERROR;
  		      symbol_field_location( symbol_index(e), @qname );
                        parent = symbol_index(e);
--- 6693,6699 ----
                        auto name = names.front();
                        names.pop_front();
                        auto e = symbol_field_forward_add(PROGRAM, parent,
!                                                         name, @1.first_line);
                        if( !e ) YYERROR;
  		      symbol_field_location( symbol_index(e), @qname );
                        parent = symbol_index(e);
*************** ctx_name:       NAME
*** 6417,6422 ****
--- 6723,6732 ----
  
  context_word:   APPLY                   { static char s[] ="APPLY";
                                           $$ = s; } // screen description entry
+         |       ARGUMENT_NUMBER         { static char s[] ="ARGUMENT-NUMBER";
+                                          $$ = s; } // Display Upon / Accept From
+         |       ARGUMENT_VALUE         { static char s[] ="ARGUMENT-VALUE";
+                                          $$ = s; } // Accept From
          |       ARITHMETIC             { static char s[] ="ARITHMETIC";
                                           $$ = s; } // OPTIONS paragraph
          |       ATTRIBUTE              { static char s[] ="ATTRIBUTE";
*************** context_word:   APPLY
*** 6453,6458 ****
--- 6763,6772 ----
                                           $$ = s; } // ERASE clause in a screen description entry
          |       ENTRY_CONVENTION       { static char s[] ="ENTRY-CONVENTION";
                                           $$ = s; } // OPTIONS paragraph
+ 	|       ENVIRONMENT_NAME         { static char s[] ="ENVIRONMENT-NAME";
+                                          $$ = s; } // Display Upon
+         |       ENVIRONMENT_VALUE         { static char s[] ="ENVIRONMENT-VALUE";
+                                          $$ = s; } // Display Upon / Accept From
          |       ERASE                  { static char s[] ="ERASE";
                                           $$ = s; } // screen description entry
          |       EXPANDS                { static char s[] ="EXPANDS";
*************** move:           MOVE scalar TO move_tgts
*** 6583,6589 ****
                  {
                    statement_begin(@1, MOVE);
                    if( $scalar->field->type == FldIndex ) {
!                     error_msg(@1, "'%s' cannot be MOVEd because it's an INDEX",
  			     name_of($scalar->field) );
                      YYERROR;
                    }
--- 6897,6903 ----
                  {
                    statement_begin(@1, MOVE);
                    if( $scalar->field->type == FldIndex ) {
!                     error_msg(@1, "%qs cannot be MOVEd because it is an %<INDEX%>",
  			     name_of($scalar->field) );
                      YYERROR;
                    }
*************** arith_err:      SIZE_ERROR
*** 6801,6809 ****
                      *ptgt = $1 == NOT?
                        current.compute_not_error() : current.compute_on_error();
                    } else {
!                     *ptgt = label_add(LblArith, uniq_label("arith"), yylineno);
                    }
! 		  (*ptgt)->lain = yylineno;
                    parser_arith_error( *ptgt );
                  }
                  ;
--- 7115,7123 ----
                      *ptgt = $1 == NOT?
                        current.compute_not_error() : current.compute_on_error();
                    } else {
!                     *ptgt = label_add(LblArith, uniq_label("arith"), @1.first_line);
                    }
! 		  (*ptgt)->lain = @1.first_line;
                    parser_arith_error( *ptgt );
                  }
                  ;
*************** num_value:      scalar // might actually
*** 6856,6861 ****
--- 7170,7184 ----
          |       num_literal { $$ = new_reference($1); }
          |       ADDRESS OF scalar {$$ = $scalar; $$->addr_of = true; }
          |       DETAIL OF scalar {$$ = $scalar; }
+         |       LENGTH_OF binary_type[size] {
+                   location_set(@1);
+                   $$ = new cbl_refer_t( new_tempnumeric() );
+ 		  $$->field->clear_attr(signable_e);
+                   if( dialect_gcc() ) {
+ 		    dialect_error(@1, "LENGTH OF", "ibm");
+                   }
+ 		  parser_set_numeric($$->field, $size);
+ 		}
          |       LENGTH_OF name[val] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric() );
*************** section_kw:     SECTION
*** 6966,6974 ****
                  {
                    if( $1 ) {
  		    if( *$1 == '-' ) {
! 		      error_msg(@1, "SECTION segment %s is negative", $1);
                      } else {
!                       cbl_unimplementedw("SECTION segment %s was ignored", $1);
                      }
  		  }
                  }
--- 7289,7309 ----
                  {
                    if( $1 ) {
  		    if( *$1 == '-' ) {
! 		      error_msg(@1, "SECTION segment %qs is negative", $1);
                      } else {
! 		      if( dialect_ibm() ) {
! 			int sectno;
! 			sscanf($1, "%d", &sectno);
! 			if( ! (0 <= sectno && sectno <= 99) ) {
! 			  error_msg(@1, "SECTION segment %qs must be 0-99", $1);
! 			} else {
! 			  if(false) { // stand-in for warning, someday.
! 			    yywarn("SECTION segment %qs was ignored", $1);
! 			  }
! 			}
! 		      } else {
! 			cbl_unimplemented("SECTION segment %qs is not ISO syntax", $1);
! 		      }
                      }
  		  }
                  }
*************** stop_status:    status         { $$ = NU
*** 7011,7017 ****
                  }
                  ;
  
! subscripts:     LPAREN expr_list ')' {
  		  $$ = $2;
  		  const auto& exprs( $$->refers );
  		  bool ok = std::all_of( exprs.begin(), exprs.end(),
--- 7346,7352 ----
                  }
                  ;
  
! subscripts:     LPAREN subscript_exprs ')' {
  		  $$ = $2;
  		  const auto& exprs( $$->refers );
  		  bool ok = std::all_of( exprs.begin(), exprs.end(),
*************** subscripts:     LPAREN expr_list ')' {
*** 7031,7048 ****
  		  }
  		}
                  ;
! expr_list:	expr
  		{
! 		  if( ! require_numeric(@expr, *$expr) ) YYERROR;
  		  $$ = new refer_list_t($expr);
  		}
!         |       expr_list expr {
                    if( $1->size() == MAXIMUM_TABLE_DIMENSIONS ) {
                      error_msg(@1, "table dimensions limited to %d",
                               MAXIMUM_TABLE_DIMENSIONS);
                      YYERROR;
                    }
! 		  if( ! require_numeric(@expr, *$expr) ) YYERROR;
                    $1->push_back($2); $$ = $1;
                  }
          |       ALL {
--- 7366,7383 ----
  		  }
  		}
                  ;
! subscript_exprs:	expr
  		{
! 		  if( ! require_integer(@expr, *$expr) ) YYERROR;
  		  $$ = new refer_list_t($expr);
  		}
!         |       subscript_exprs expr {
                    if( $1->size() == MAXIMUM_TABLE_DIMENSIONS ) {
                      error_msg(@1, "table dimensions limited to %d",
                               MAXIMUM_TABLE_DIMENSIONS);
                      YYERROR;
                    }
! 		  if( ! require_integer(@expr, *$expr) ) YYERROR;
                    $1->push_back($2); $$ = $1;
                  }
          |       ALL {
*************** signed_literal:     num_literal
*** 7070,7075 ****
--- 7405,7419 ----
                    struct cbl_field_t *zero = constant_of(constant_index(ZERO));
                    parser_subtract( $$, zero, $2, current_rounded_mode() );
                  }
+         |       LENGTH_OF binary_type[size] {
+                   location_set(@1);
+                   $$ = new_tempnumeric();
+ 		  $$->clear_attr(signable_e);
+                   if( dialect_gcc() ) {
+ 		    dialect_error(@1, "LENGTH OF", "ibm");
+                   }
+                   parser_set_numeric($$, $size);
+ 		}
          |       LENGTH_OF name[val] {
                    location_set(@1);
                    $$ = new_tempnumeric();
*************** perform_cond:   UNTIL { parser_perform_c
*** 7310,7315 ****
--- 7654,7660 ----
  perform_inline: perform_start statements END_PERFORM
                  {
  		  location_set(@END_PERFORM);
+ 		  parser_sleep(*cbl_refer_t::empty());
  		  $$ = perform_current();
  		  if( $perform_start == LOCATION ) {
  		    error_msg(@1, "LOCATION not valid with PERFORM Format 2");
*************** perform_inline: perform_start statements
*** 7318,7329 ****
--- 7663,7676 ----
          |       perform_start END_PERFORM
                  {
  		  location_set(@END_PERFORM);
+ 		  parser_sleep(*cbl_refer_t::empty());
  		  $$ = perform_current();
  		  if( $perform_start == LOCATION ) {
  		    error_msg(@1, "LOCATION not valid with PERFORM Format 2");
  		  }
                  }
                  ;
+ 
  perform_start:	%empty %prec LOCATION {
  		  perform_ec_setup();
  		  $$ = 0;
*************** perform_except:	perform_start
*** 7350,7367 ****
  		perform_ec_finally
  		END_PERFORM
                  {
! 		  auto perf = perform_current();
! 		  // produce blob, jumped over by FINALLY paragraph
! 		  size_t iblob = symbol_declaratives_add( PROGRAM, perf->dcls );
! 		  auto lave = perf->ec_labels.new_label(LblParagraph, "lave");
! 		  auto handlers = cbl_field_of(symbol_at(iblob));
! 
! 		  // install blob
! 		  parser_label_label(perf->ec_labels.init);
! 		  declarative_runtime_match(handlers, lave);
! 
! 		  // uninstall blob
! 		  parser_label_label(perf->ec_labels.fini);
                  }
  		;
  
--- 7697,7703 ----
  		perform_ec_finally
  		END_PERFORM
                  {
! 		  cbl_unimplemented("PERFORM Format 3");
                  }
  		;
  
*************** perform_when1:	WHEN perform_ec {
*** 7379,7385 ****
  		  std::transform( $perform_ec->elems.begin(),
  				  $perform_ec->elems.end(),
  				  std::back_inserter(perf->dcls),
! 				  []( cbl_declarative_t *p ) {
  				    return *p;
  				  } );
  		  ast_enter_paragraph(when);
--- 7715,7721 ----
  		  std::transform( $perform_ec->elems.begin(),
  				  $perform_ec->elems.end(),
  				  std::back_inserter(perf->dcls),
! 				  []( const cbl_declarative_t *p ) {
  				    return *p;
  				  } );
  		  ast_enter_paragraph(when);
*************** except_files:	except_name[ec] FILE_KW fi
*** 7469,7480 ****
  
  perform_ec_other:
  		%empty %prec WHEN {
! 		  auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.other);
  		  parser_exit_paragraph();
  		}
  	|	WHEN OTHER {
! 		  auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.other);
  		}
  		exception statements %prec WHEN {
--- 7805,7816 ----
  
  perform_ec_other:
  		%empty %prec WHEN {
!                   const auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.other);
  		  parser_exit_paragraph();
  		}
  	|	WHEN OTHER {
!                   const auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.other);
  		}
  		exception statements %prec WHEN {
*************** perform_ec_other:
*** 7483,7494 ****
  		;
  perform_ec_common:
  		%empty {
! 		  auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.common);
  		  parser_exit_paragraph();
  		}
  	|	WHEN COMMON {
! 		  auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.common);
  		}
  		exception statements {
--- 7819,7830 ----
  		;
  perform_ec_common:
  		%empty {
! 		  const auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.common);
  		  parser_exit_paragraph();
  		}
  	|	WHEN COMMON {
! 		  const auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.common);
  		}
  		exception statements {
*************** perform_ec_common:
*** 7497,7514 ****
  		;
  perform_ec_finally:
  		%empty {
! 		  auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.finally);
  		  parser_exit_paragraph();
  		  parser_label_goto(ec_labels.fini);
  		}
  	|	FINALLY {
! 		  auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.finally);
  		}
  		exception statements {
  		  parser_exit_paragraph();
! 		  auto& ec_labels( perform_current()->ec_labels );
  		  parser_label_goto(ec_labels.fini);
  		}
  		;
--- 7833,7850 ----
  		;
  perform_ec_finally:
  		%empty {
! 		  const auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.finally);
  		  parser_exit_paragraph();
  		  parser_label_goto(ec_labels.fini);
  		}
  	|	FINALLY {
! 		  const auto& ec_labels( perform_current()->ec_labels );
  		  ast_enter_paragraph(ec_labels.finally);
  		}
  		exception statements {
  		  parser_exit_paragraph();
! 		  const auto& ec_labels( perform_current()->ec_labels );
  		  parser_label_goto(ec_labels.fini);
  		}
  		;
*************** varg1a:         ADDRESS OF scalar {
*** 7639,7644 ****
--- 7975,7989 ----
                  {
                    $$ = new_reference(constant_of(constant_index($1)));
                  }
+         |       LENGTH_OF binary_type[size] {
+                   location_set(@1);
+                   $$ = new cbl_refer_t( new_tempnumeric() );
+ 		  $$->field->clear_attr(signable_e);
+                   if( dialect_gcc() ) {
+ 		    dialect_error(@1, "LENGTH OF", "ibm");
+                   }
+ 		  parser_set_numeric($$->field, $size);
+ 		}
          |       LENGTH_OF name[val] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric() );
*************** varg1a:         ADDRESS OF scalar {
*** 7663,7668 ****
--- 8008,8017 ----
                  }
                  ;
  
+ binary_type:	BINARY_INTEGER { $$ = $1.capacity; }
+ 	|	COMPUTATIONAL  { $$ = $1.capacity; }
+ 		;
+ 
  literal:        literalism
                  {
                    $$ = $1.isymbol()?
*************** raise:          RAISE EXCEPTION NAME
*** 7706,7719 ****
  			    "EXCEPTION CONDITION: %s", $NAME);
                      YYERROR;
                    }
!                   cbl_unimplemented("RAISE <EXCEPTION OBJECT>");
                    YYERROR;
                  }
                  ;
  
  read:           read_file
                  {
!                   current.declaratives_evaluate($1.file, $1.handled);
                  }
                  ;
  
--- 8055,8068 ----
  			    "EXCEPTION CONDITION: %s", $NAME);
                      YYERROR;
                    }
!                   cbl_unimplemented("RAISE %<EXCEPTION OBJECT%>");
                    YYERROR;
                  }
                  ;
  
  read:           read_file
                  {
!                   current.declaratives_evaluate($1.file);
                  }
                  ;
  
*************** read_body:      NAME read_next read_into
*** 7773,7782 ****
                      error_msg(@1, "syntax error? invalid file record name");
                      YYERROR;
                    }
-                   if( 0 && $$->access == file_access_dyn_e && $read_next >= 0 ) {
-                     error_msg(@1, "sequential DYNAMIC access requires NEXT RECORD");
-                     YYERROR;
-                   }
                    if( $read_key->field && is_sequential($$) ) {
                      error_msg(@1, "SEQUENTIAL file %s has no KEY", $$->name);
                      YYERROR;
--- 8122,8127 ----
*************** read_body:      NAME read_next read_into
*** 7787,7793 ****
                      YYERROR;
                    }
                    if( $read_key->field && $read_next < 0 ) {
!                     error_msg(@1, "cannot read NEXT with KEY", $$->name);
                      YYERROR;
                    }
  
--- 8132,8138 ----
                      YYERROR;
                    }
                    if( $read_key->field && $read_next < 0 ) {
!                     error_msg(@1, "cannot read NEXT with KEY %qs", $$->name);
                      YYERROR;
                    }
  
*************** read_key:       %empty      { $$ = new c
*** 7900,7906 ****
  
  write:          write_file
                  {
!                   current.declaratives_evaluate( $1.file, $1.handled );
                  }
                  ;
  
--- 8245,8251 ----
  
  write:          write_file
                  {
!                   current.declaratives_evaluate($1.file );
                  }
                  ;
  
*************** end_delete:     %empty %prec DELETE
*** 8116,8122 ****
  
  rewrite:        rewrite1
                  {
!                   current.declaratives_evaluate($1.file, $1.handled);
                  }
                  ;
  
--- 8461,8467 ----
  
  rewrite:        rewrite1
                  {
!                   current.declaratives_evaluate($1.file);
                  }
                  ;
  
*************** end_rewrite:    %empty %prec REWRITE
*** 8157,8168 ****
                  ;
  
  start:          start_impl end_start
          |       start_cond end_start
                  ;
! start_impl:     START start_body
                  ;
  start_cond:     START start_body io_invalids {
                    parser_fi();
                  }
                  ;
  end_start:      %empty %prec START
--- 8502,8522 ----
                  ;
  
  start:          start_impl end_start
+                 {
+                   current.declaratives_evaluate($1);
+                 }
          |       start_cond end_start
+                 {
+                   current.declaratives_evaluate($1);
+                 }
                  ;
! start_impl:     START start_body {
! 		  $$ = $2;
! 		}
                  ;
  start_cond:     START start_body io_invalids {
                    parser_fi();
+ 		  $$ = $2;
                  }
                  ;
  end_start:      %empty %prec START
*************** end_start:      %empty %prec START
*** 8172,8178 ****
  start_body:     filename[file]
                  {
                    statement_begin(@$, START);
!                   file_start_args.init(@file, $file);
                    parser_file_start( $file, lt_op, 0 );
                  }
          |       filename[file] KEY relop name[key]
--- 8526,8532 ----
  start_body:     filename[file]
                  {
                    statement_begin(@$, START);
!                   $$ = file_start_args.init(@file, $file);
                    parser_file_start( $file, lt_op, 0 );
                  }
          |       filename[file] KEY relop name[key]
*************** start_body:     filename[file]
*** 8186,8211 ****
                      yywarn("START: key #%d '%s' has size %d",
                            key, $key->name, size);
                    }
!                   file_start_args.init(@file, $file);
                    parser_file_start( $file, relop_of($relop), key, ksize );
                  }
          |       filename[file] KEY relop name[key] with LENGTH expr
                  { // lexer swallows IS, although relop allows it.
                    statement_begin(@$, START);
                    int key = $file->key_one($key);
!                   file_start_args.init(@file, $file);
                    parser_file_start( $file, relop_of($relop), key, *$expr );
                  }
          |       filename[file] FIRST
                  {
                    statement_begin(@$, START);
!                   file_start_args.init(@file, $file);
                    parser_file_start( $file, lt_op, -1 );
                  }
          |       filename[file] LAST
                  {
                    statement_begin(@$, START);
!                   file_start_args.init(@file, $file);
                    parser_file_start( $file, gt_op, -2 );
                  }
                  ;
--- 8540,8565 ----
                      yywarn("START: key #%d '%s' has size %d",
                            key, $key->name, size);
                    }
!                   $$ = file_start_args.init(@file, $file);
                    parser_file_start( $file, relop_of($relop), key, ksize );
                  }
          |       filename[file] KEY relop name[key] with LENGTH expr
                  { // lexer swallows IS, although relop allows it.
                    statement_begin(@$, START);
                    int key = $file->key_one($key);
!                   $$ = file_start_args.init(@file, $file);
                    parser_file_start( $file, relop_of($relop), key, *$expr );
                  }
          |       filename[file] FIRST
                  {
                    statement_begin(@$, START);
!                   $$ = file_start_args.init(@file, $file);
                    parser_file_start( $file, lt_op, -1 );
                  }
          |       filename[file] LAST
                  {
                    statement_begin(@$, START);
!                   $$ = file_start_args.init(@file, $file);
                    parser_file_start( $file, gt_op, -2 );
                  }
                  ;
*************** merge:          MERGE { statement_begin(
*** 8215,8222 ****
                    USING filenames[inputs] sort_output
                  {
                    std::vector <cbl_key_t> keys($sort_keys->key_list.size());
! 		  std::copy( $sort_keys->key_list.begin(),
! 			     $sort_keys->key_list.end(), keys.begin() );
  
                    size_t ninput = $inputs->files.size();
                    size_t noutput = $sort_output->nfile();
--- 8569,8576 ----
                    USING filenames[inputs] sort_output
                  {
                    std::vector <cbl_key_t> keys($sort_keys->key_list.size());
!                   std::copy( $sort_keys->key_list.begin(),
!                              $sort_keys->key_list.end(), keys.begin() );
  
                    size_t ninput = $inputs->files.size();
                    size_t noutput = $sort_output->nfile();
*************** merge:          MERGE { statement_begin(
*** 8235,8242 ****
                      out_proc = &$sort_output->tgt;
                    }
  
!                   parser_file_merge( $file, $sort_seq,
!                                      keys.size(), keys.empty()? NULL : keys.data(),
                                       ninput, inputs,
                                       noutput, outputs,
                                       out_proc );
--- 8589,8595 ----
                      out_proc = &$sort_output->tgt;
                    }
  
!                   parser_file_merge( $file, $sort_seq, keys, 
                                       ninput, inputs,
                                       noutput, outputs,
                                       out_proc );
*************** set:            SET set_tgts[tgts] TO se
*** 8402,8408 ****
                    class set_conditional {
                      bool tf;
                     public:
!                     set_conditional( int token ) : tf(token == TRUE_kw) {}
                      void operator()(cbl_refer_t& refer) {
                        if( refer.field->data.false_value_of() == NULL && !tf ) {
  			auto loc = symbol_field_location(field_index(refer.field));
--- 8755,8761 ----
                    class set_conditional {
                      bool tf;
                     public:
!                     explicit set_conditional( int token ) : tf(token == TRUE_kw) {}
                      void operator()(cbl_refer_t& refer) {
                        if( refer.field->data.false_value_of() == NULL && !tf ) {
  			auto loc = symbol_field_location(field_index(refer.field));
*************** set_switches:   switches TO on_off
*** 8427,8433 ****
                  {
                    struct switcheroo {
                      bitop_t op;
!                     switcheroo( bool tf ) : op( tf? bit_set_op : bit_clear_op ) {}
                      switcheroo& operator()(cbl_field_t* sw) {
                        assert(sw->type == FldSwitch);
                        assert(sw->data.initial); // not a switch condition
--- 8780,8786 ----
                  {
                    struct switcheroo {
                      bitop_t op;
!                     explicit switcheroo( bool tf ) : op( tf? bit_set_op : bit_clear_op ) {}
                      switcheroo& operator()(cbl_field_t* sw) {
                        assert(sw->type == FldSwitch);
                        assert(sw->data.initial); // not a switch condition
*************** search_1_body:  name[table] search_varyi
*** 8482,8493 ****
  
                    cbl_name_t label_name;
  		  auto len = snprintf(label_name, sizeof(label_name),
! 				     "linear_search_%d", yylineno);
  		  if( ! (0 < len && len < int(sizeof(label_name))) ) {
  		    gcc_unreachable();
  		  }
                    cbl_label_t *name = label_add( LblSearch,
!                                                  label_name, yylineno );
  		  auto varying($varying);
                    if( index == varying ) varying = NULL;
                    parser_lsearch_start( name, $table, index, varying );
--- 8835,8846 ----
  
                    cbl_name_t label_name;
  		  auto len = snprintf(label_name, sizeof(label_name),
! 				     "linear_search_%d", @1.first_line);
  		  if( ! (0 < len && len < int(sizeof(label_name))) ) {
  		    gcc_unreachable();
  		  }
                    cbl_label_t *name = label_add( LblSearch,
!                                                  label_name, @1.first_line );
  		  auto varying($varying);
                    if( index == varying ) varying = NULL;
                    parser_lsearch_start( name, $table, index, varying );
*************** search_binary:  SEARCH ALL search_2_body
*** 8540,8548 ****
  search_2_body:  name[table]
                  {
                    statement_begin(@$, SEARCH);
!                   char *label_name = xasprintf("binary_search_%d", yylineno);
                    cbl_label_t *name = label_add( LblSearch,
!                                                  label_name, yylineno );
                    parser_bsearch_start( name, $table );
                    search_alloc(name);
                  }
--- 8893,8901 ----
  search_2_body:  name[table]
                  {
                    statement_begin(@$, SEARCH);
!                   char *label_name = xasprintf("binary_search_%d", @1.first_line);
                    cbl_label_t *name = label_add( LblSearch,
!                                                  label_name, @1.first_line );
                    parser_bsearch_start( name, $table );
                    search_alloc(name);
                  }
*************** search_terms:   search_term
*** 8567,8580 ****
                  ;
  search_term:    scalar[key] '=' search_expr[sarg]
                  {
!                   if( $key->nsubscript == 0 ) {
                      error_msg(@1, "no index for key");
                      YYERROR;
                    }
!                   if( dimensions($key->field) < $key->nsubscript ) {
                      error_msg(@1, "too many subscripts: "
!                               "%zu for table of %zu dimensions",
!                               $key->nsubscript, dimensions($key->field) );
                      YYERROR;
                    }
  
--- 8920,8933 ----
                  ;
  search_term:    scalar[key] '=' search_expr[sarg]
                  {
!                   if( $key->nsubscript() == 0 ) {
                      error_msg(@1, "no index for key");
                      YYERROR;
                    }
!                   if( dimensions($key->field) < $key->nsubscript() ) {
                      error_msg(@1, "too many subscripts: "
!                               "%u for table of %zu dimensions",
!                               $key->nsubscript(), dimensions($key->field) );
                      YYERROR;
                    }
  
*************** sort_table:     SORT tableref[table] sor
*** 8613,8620 ****
                      keys.at(i++) = cbl_key_t(k);
                    }
  
!                   parser_sort( *$table, $sort_dup, $sort_seq,
! 			       keys.size(), keys.empty()? NULL : keys.data() );
                  }
          |       SORT tableref[table] sort_dup sort_seq {
                    statement_begin(@1, SORT);
--- 8966,8972 ----
                      keys.at(i++) = cbl_key_t(k);
                    }
  
!                   parser_sort( *$table, $sort_dup, $sort_seq, keys );
                  }
          |       SORT tableref[table] sort_dup sort_seq {
                    statement_begin(@1, SORT);
*************** sort_table:     SORT tableref[table] sor
*** 8624,8632 ****
                    cbl_key_t
                      key = cbl_key_t($table->field->occurs.keys[0]),
                      guess(1, &$table->field);
!                   ;
!                   if( key.nfield == 0 ) key = guess;
!                   parser_sort( *$table, $sort_dup, $sort_seq, 1, &key );
                  }
                  ;
  
--- 8976,8985 ----
                    cbl_key_t
                      key = cbl_key_t($table->field->occurs.keys[0]),
                      guess(1, &$table->field);
!                   
!                   if( key.fields.empty() ) key = guess;
!                   std::vector<cbl_key_t> keys(1, key);
!                   parser_sort( *$table, $sort_dup, $sort_seq, keys );
                  }
                  ;
  
*************** sort_file:      SORT FILENAME[file] sort
*** 8667,8673 ****
                    parser_file_sort( file,
                                      $sort_dup,
                                      $sort_seq,
!                                     keys.size(), keys.empty()? NULL : keys.data(),
                                      ninput, inputs,
                                      noutput, outputs,
                                      in_proc, out_proc );
--- 9020,9026 ----
                    parser_file_sort( file,
                                      $sort_dup,
                                      $sort_seq,
!                                     keys, 
                                      ninput, inputs,
                                      noutput, outputs,
                                      in_proc, out_proc );
*************** backward:	%empty   { $$ = false; }
*** 8859,8865 ****
  inspect:        INSPECT backward inspected TALLYING tallies
                  {
                    statement_begin(@1, INSPECT);
!                   ast_inspect( *$inspected, $backward, *$tallies );
                  }
          |       INSPECT backward inspected TALLYING tallies REPLACING replacements
                  {
--- 9212,9218 ----
  inspect:        INSPECT backward inspected TALLYING tallies
                  {
                    statement_begin(@1, INSPECT);
!                   ast_inspect( @$, *$inspected, $backward, *$tallies );
                  }
          |       INSPECT backward inspected TALLYING tallies REPLACING replacements
                  {
*************** inspect:        INSPECT backward inspect
*** 8871,8878 ****
                    }
                    statement_begin(@1, INSPECT);
                    // All tallying is done before any replacing
!                   ast_inspect( *$inspected, $backward, *$tallies );
!                   ast_inspect( *$inspected, $backward, *$replacements );
                  }
          |       INSPECT backward inspected                  REPLACING replacements
                  {
--- 9224,9231 ----
                    }
                    statement_begin(@1, INSPECT);
                    // All tallying is done before any replacing
!                   ast_inspect( @$, *$inspected, $backward, *$tallies );
!                   ast_inspect( @$, *$inspected, $backward, *$replacements );
                  }
          |       INSPECT backward inspected                  REPLACING replacements
                  {
*************** inspect:        INSPECT backward inspect
*** 8883,8893 ****
                      YYERROR;
                    }
                    statement_begin(@1, INSPECT);
!                   ast_inspect( *$inspected, $backward, *$replacements );
                  }
          |       INSPECT backward inspected CONVERTING alpha_val[match]
                                    TO  all    alpha_val[replace_oper]
!                                              insp_mtquals[qual]
                  {
  		  if( $all ) {
  		    $replace_oper->all = true;
--- 9236,9246 ----
                      YYERROR;
                    }
                    statement_begin(@1, INSPECT);
!                   ast_inspect( @$, *$inspected, $backward, *$replacements );
                  }
          |       INSPECT backward inspected CONVERTING alpha_val[match]
                                    TO  all    alpha_val[replace_oper]
!                                              insp_mtqual[qual]
                  {
  		  if( $all ) {
  		    $replace_oper->all = true;
*************** inspect:        INSPECT backward inspect
*** 8901,8906 ****
--- 9254,9272 ----
  		      error_msg(@all, "ALL must be part of a figurative constant");
  		      YYERROR;
  		    }
+ 		  } else {
+ 		    cbl_field_t *match = $match->field,
+ 		                *replace = $replace_oper->field;
+ 		    if( is_literal(match) && is_literal(replace) ) {
+ 		      if( !$match->all && !$replace_oper->all) {
+ 			if( match->data.capacity != replace->data.capacity ) {
+ 			  error_msg(@match, "%qs, size %u NOT EQUAL %qs, size %u",
+ 				    nice_name_of(match), match->data.capacity, 
+ 				    nice_name_of(replace), replace->data.capacity);
+ 			  YYERROR;
+ 			}
+ 		      }
+ 		    }
  		  }
                    if( is_constant($inspected->field) ) {
                      auto name = nice_name_of($inspected->field);
*************** inspect:        INSPECT backward inspect
*** 8920,8926 ****
  
  tallies:        { need_nume_set(); } tally
                  {
!                   $$ = new ast_inspect_list_t( *$tally );
                  }
          |       tallies { need_nume_set(); } tally
                  {
--- 9286,9292 ----
  
  tallies:        { need_nume_set(); } tally
                  {
!                   $$ = new cbl_inspect_opers_t( 1, *$tally );
                  }
          |       tallies { need_nume_set(); } tally
                  {
*************** tallies:        { need_nume_set(); } tal
*** 8930,8941 ****
                    if( !next.tally.field ) {
                      // prior tally swallowed one too many
                      cbl_inspect_t& prior = $$->back();
!                     assert(prior.nbound > 0);
!                     assert(prior.opers);
!                     cbl_inspect_oper_t& prior_op = prior.opers[prior.nbound - 1];
! 
!                     assert(prior_op.n_identifier_3 > 0 );
!                     next.tally = prior_op.matches[--prior_op.n_identifier_3].matching;
                    }
                    if( !next.tally.field ) {
                      error_msg(@$, "missing summation field before FOR");
--- 9296,9312 ----
                    if( !next.tally.field ) {
                      // prior tally swallowed one too many
                      cbl_inspect_t& prior = $$->back();
!                     assert(prior.nbound() > 0);
!                     cbl_inspect_oper_t& prior_op = prior.back();
!                     assert(! prior_op.matches.empty() );
!                     assert(prior_op.n_identifier_3() > 0 );
!                     cbl_inspect_match_t wrong_match = prior_op.matches.back();
!                     dbgmsg("moving overeager tally to next clause");
!                     dump_inspect_match(wrong_match);
!                     next.tally = wrong_match.premature_tally();
!                     if( wrong_match.empty() ) {
!                       prior_op.matches.pop_back();
!                     }
                    }
                    if( !next.tally.field ) {
                      error_msg(@$, "missing summation field before FOR");
*************** tallies:        { need_nume_set(); } tal
*** 8947,8990 ****
  
                  /*
                   * numref might be "empty" only because it was consumed by a
!                  * prior insp_mtquals, which can end in a scalar. If that
                   * happens, the tallies target, above, takes back the borrowed
                   * scalar and assigns it to be the tally total, as the user
                   * intended.
                   */
  tally:          numeref[total] FOR tally_fors[fors]
!                 { // reduce ast_inspect_t to cbl_inspect_t
                    if( yydebug && !$total ) {
!                     error_msg(@FOR, "caution: missing summation field before FOR");
                    }
!                   cbl_refer_t total( $total? *$total : cbl_refer_t() );
!                   $$ = new cbl_inspect_t( total, $fors->opers() );
                  }
                  ;
  
! tally_fors:     tally_forth
!                 { // reduce ast_inspect_oper_t to cbl_inspect_oper_t
!                   cbl_inspect_oper_t oper( $1->bound, $1->matches );
!                   $$ = new ast_inspect_t;
!                   $$ ->push_back(oper);
!                 }
!         |       tally_fors tally_forth
!                 {
!                   cbl_inspect_oper_t oper( $2->bound, $2->matches );
!                   $1 ->push_back(oper);
!                 }
                  ;
  
! tally_forth:    CHARACTERS insp_mtquals[q] scalar[next_tally]
                  {
                    // Add ensuing scalar as if it were an argument to CHARACTERS.
                    // It will be moved to the succeeding FOR as its tally.
!                   $q->matching = *$next_tally;
!                   $$ = new ast_inspect_oper_t(*$q);
                  }
!         |       CHARACTERS insp_mtquals[q]
                  {
!                   $$ = new ast_inspect_oper_t(*$q);
                  }
          |       ALL tally_matches[q]
                  { $q->bound = bound_all_e;
--- 9318,9354 ----
  
                  /*
                   * numref might be "empty" only because it was consumed by a
!                  * prior insp_mtqual, which can end in a scalar. If that
                   * happens, the tallies target, above, takes back the borrowed
                   * scalar and assigns it to be the tally total, as the user
                   * intended.
                   */
  tally:          numeref[total] FOR tally_fors[fors]
!                 { 
                    if( yydebug && !$total ) {
!                     dbgmsg("tally: caution: missing summation field before FOR");
                    }
!                   $$ = $fors;
!                   if( $total ) $$->tally = *$total;
                  }
                  ;
  
! tally_fors:     tally_forth { $$ = new cbl_inspect_t(1, *$1); }
!         |       tally_fors tally_forth { $$->push_back(*$2); $$ = $1; }
                  ;
  
! tally_forth:    CHARACTERS insp_mtqual[q] scalar[next_tally]
                  {
                    // Add ensuing scalar as if it were an argument to CHARACTERS.
                    // It will be moved to the succeeding FOR as its tally.
!                   dbgmsg("saving overeager tally for next clause");
!                   $q->save_premature_tally(*$next_tally);
!                   $$ = new cbl_inspect_oper_t(*$q);
!                   dump_inspect_match($$->matches.back());
                  }
!         |       CHARACTERS insp_mtqual[q]
                  {
!                   $$ = new cbl_inspect_oper_t(*$q);
                  }
          |       ALL tally_matches[q]
                  { $q->bound = bound_all_e;
*************** tally_forth:    CHARACTERS insp_mtquals[
*** 9003,9028 ****
                  }
                  ;
  
! tally_matches:  tally_match { $$ = new ast_inspect_oper_t(*$1); }
          |       tally_matches tally_match
                  { // add to the list of matches for an operand
                    $1->matches.push_back(*$2);
                  }
                  ;
! tally_match:    alpha_val[matching] insp_mtquals[q]
                  { // include the matching field with the qualifiers
                    $$ = $q;
!                   $$->matching = *$matching;
                  }
                  ;
  
  numeref:        %empty { $$ = NULL; need_nume_set(false); }
          |       nume[name] subscripts[subs]
                  {
!                   size_t n = $subs->size();
!                   auto offsets = new cbl_refer_t[n];
!                   std::copy( $subs->begin(), $subs->end(), offsets );
!                   $$ = new cbl_refer_t($name, n, offsets);
                  }
          |       nume { $$ = new cbl_refer_t($nume); }
                  ;
--- 9367,9389 ----
                  }
                  ;
  
! tally_matches:  tally_match { $$ = new cbl_inspect_oper_t(*$1); }
          |       tally_matches tally_match
                  { // add to the list of matches for an operand
                    $1->matches.push_back(*$2);
                  }
                  ;
! tally_match:    alpha_val[matching] insp_mtqual[q]
                  { // include the matching field with the qualifiers
                    $$ = $q;
!                   $$->matching(*$matching);
                  }
                  ;
  
  numeref:        %empty { $$ = NULL; need_nume_set(false); }
          |       nume[name] subscripts[subs]
                  {
!                   $$ = new cbl_refer_t($name, $subs->vectorize());
                  }
          |       nume { $$ = new cbl_refer_t($nume); }
                  ;
*************** qnume:          NUME            { name_q
*** 9052,9064 ****
  
  replacements:   replacement
                  {
!                   cbl_inspect_t inspect( cbl_refer_t(), $1->opers() );
!                   $$ = new ast_inspect_list_t(inspect);
                  }
                  ;
  replacement:    replace_oper
                  {
!                   $$ = new ast_inspect_t;
                    $$->push_back( cbl_inspect_oper_t($1->bound, $1->replaces) );
                  }
          |       replacement replace_oper
--- 9413,9425 ----
  
  replacements:   replacement
                  {
!                   cbl_inspect_t inspect( cbl_refer_t(), *$1 );
!                   $$ = new cbl_inspect_opers_t(1, inspect);
                  }
                  ;
  replacement:    replace_oper
                  {
!                   $$ = new cbl_inspect_t;
                    $$->push_back( cbl_inspect_oper_t($1->bound, $1->replaces) );
                  }
          |       replacement replace_oper
*************** replacement:    replace_oper
*** 9066,9074 ****
                    $$->push_back( cbl_inspect_oper_t($2->bound, $2->replaces)  );
                  }
                  ;
! replace_oper:   CHARACTERS BY alpha_val[replace] insp_mtquals[q]
                  {
!                   $$ = new ast_inspect_oper_t( cbl_inspect_replace_t(NULL,
                                                                       *$replace,
                                                                       $q->before,
                                                                       $q->after) );
--- 9427,9435 ----
                    $$->push_back( cbl_inspect_oper_t($2->bound, $2->replaces)  );
                  }
                  ;
! replace_oper:   CHARACTERS BY alpha_val[replace] insp_mtqual[q]
                  {
!                   $$ = new cbl_inspect_oper_t( cbl_inspect_replace_t(NULL,
                                                                       *$replace,
                                                                       $q->before,
                                                                       $q->after) );
*************** replace_oper:   CHARACTERS BY alpha_val[
*** 9082,9102 ****
  
  x_by_ys:        x_by_y
                  {
!                   $$ = new ast_inspect_oper_t(*$1);
                  }
          |       x_by_ys x_by_y
                  {
                    $$->replaces.push_back(*$2);
                  }
                  ;
! x_by_y:         alpha_val[matching] BY alpha_val[replace] insp_mtquals[q]
                  {
                    $$ = new cbl_inspect_replace_t(*$matching, *$replace,
                                                     $q->before, $q->after);
                  }
                  ;
  
! insp_mtquals:   %empty     { $$ = new cbl_inspect_match_t; }
          |       insp_quals
                  ;
  insp_quals:     insp_qual  {
--- 9443,9464 ----
  
  x_by_ys:        x_by_y
                  {
!                   $$ = new cbl_inspect_oper_t(*$1);
                  }
          |       x_by_ys x_by_y
                  {
                    $$->replaces.push_back(*$2);
                  }
                  ;
! x_by_y:         alpha_val[matching] BY alpha_val[replace] insp_mtqual[q]
                  {
                    $$ = new cbl_inspect_replace_t(*$matching, *$replace,
                                                     $q->before, $q->after);
                  }
                  ;
  
! 		/* mt may be "empty": match may have no qualifiers */
! insp_mtqual:	%empty { $$ = new cbl_inspect_match_t; }
          |       insp_quals
                  ;
  insp_quals:     insp_qual  {
*************** insp_quals:     insp_qual  {
*** 9106,9111 ****
--- 9468,9474 ----
                    } else {
                      $$->after = *$insp_qual.qual;
                    }
+                   dump_inspect_match(*$$);
                  }
          |       insp_quals insp_qual
                  {
*************** call_impl:      CALL call_body[body]
*** 9265,9271 ****
  		  cbl_ffi_arg_t *pargs = NULL;
                    if( narg > 0 ) {
  		    std::copy( params->elems.begin(),
! 			       params->elems.end(), args.begin() );	 
                      pargs = args.data();
                    }
                    ast_call( $body.loc, *$body.ffi_name,
--- 9628,9634 ----
  		  cbl_ffi_arg_t *pargs = NULL;
                    if( narg > 0 ) {
  		    std::copy( params->elems.begin(),
! 			       params->elems.end(), args.begin() );
                      pargs = args.data();
                    }
                    ast_call( $body.loc, *$body.ffi_name,
*************** call_cond:      CALL call_body[body] cal
*** 9282,9296 ****
  		  cbl_ffi_arg_t *pargs = NULL;
                    if( narg > 0 ) {
  		    std::copy( params->elems.begin(),
! 			       params->elems.end(), args.begin() );	 
                      pargs = args.data();
                    }
                    ast_call( $body.loc, *$body.ffi_name,
                                 *$body.ffi_returning, narg, pargs,
                                 $except.on_error, $except.not_error, false );
!                   auto handled = ec_type_t( static_cast<size_t>(ec_program_e) |
!                                             static_cast<size_t>(ec_external_e));
!                   current.declaratives_evaluate(handled);
                  }
                  ;
  end_call:       %empty %prec CALL
--- 9645,9657 ----
  		  cbl_ffi_arg_t *pargs = NULL;
                    if( narg > 0 ) {
  		    std::copy( params->elems.begin(),
! 			       params->elems.end(), args.begin() );
                      pargs = args.data();
                    }
                    ast_call( $body.loc, *$body.ffi_name,
                                 *$body.ffi_returning, narg, pargs,
                                 $except.on_error, $except.not_error, false );
!                   current.declaratives_evaluate();
                  }
                  ;
  end_call:       %empty %prec CALL
*************** call_except:    EXCEPTION
*** 9479,9485 ****
                  {
                    $$.not_error = NULL;
                    $$.on_error = label_add(LblArith,
!                                           uniq_label("call"), yylineno);
                    if( !$$.on_error ) YYERROR;
                    parser_call_exception( $$.on_error );
  
--- 9840,9846 ----
                  {
                    $$.not_error = NULL;
                    $$.on_error = label_add(LblArith,
!                                           uniq_label("call"), @1.first_line);
                    if( !$$.on_error ) YYERROR;
                    parser_call_exception( $$.on_error );
  
*************** call_except:    EXCEPTION
*** 9492,9498 ****
                  {
                    $$.not_error = NULL;
                    $$.on_error = label_add(LblArith,
!                                           uniq_label("call"), yylineno);
                    if( !$$.on_error ) YYERROR;
                    parser_call_exception( $$.on_error );
  
--- 9853,9859 ----
                  {
                    $$.not_error = NULL;
                    $$.on_error = label_add(LblArith,
!                                           uniq_label("call"), @1.first_line);
                    if( !$$.on_error ) YYERROR;
                    parser_call_exception( $$.on_error );
  
*************** alter_tgt:      label_1[old] alter_to la
*** 9527,9533 ****
                    cbl_perform_tgt_t tgt( $old, $new );
                    parser_alter(&tgt);
  
!                   auto prog = cbl_label_of( symbol_at(symbol_elem_of($old)->program));
                    if( prog->initial ) {
                      cbl_unimplemented("ALTER %s", $old->name);
                    }
--- 9888,9894 ----
                    cbl_perform_tgt_t tgt( $old, $new );
                    parser_alter(&tgt);
  
!                   const auto prog = cbl_label_of( symbol_at(symbol_elem_of($old)->program));
                    if( prog->initial ) {
                      cbl_unimplemented("ALTER %s", $old->name);
                    }
*************** go_to:          GOTO labels[args]
*** 9548,9554 ****
                    }
  
  		  for( auto& label : $args->elems ) {
! 		    label->used = yylineno;
  		  }
                    cbl_label_t *arg = $args->elems.front();
                    parser_goto( cbl_refer_t(), 1, &arg );
--- 9909,9915 ----
                    }
  
  		  for( auto& label : $args->elems ) {
! 		    label->used = @2.first_line;
  		  }
                    cbl_label_t *arg = $args->elems.front();
                    parser_goto( cbl_refer_t(), 1, &arg );
*************** go_to:          GOTO labels[args]
*** 9560,9566 ****
                    std::vector <cbl_label_t *> args($args->elems.size());
  		  std::copy($args->elems.begin(), $args->elems.end(), args.begin());
  		  for( auto& label : $args->elems ) {
! 		    label->used = yylineno;
  		  }
                    parser_goto( *$value, args.size(), args.data() );
                  }
--- 9921,9927 ----
                    std::vector <cbl_label_t *> args($args->elems.size());
  		  std::copy($args->elems.begin(), $args->elems.end(), args.begin());
  		  for( auto& label : $args->elems ) {
! 		    label->used = @2.first_line;
  		  }
                    parser_goto( *$value, args.size(), args.data() );
                  }
*************** resume:         RESUME NEXT STATEMENT
*** 9580,9586 ****
                  {
                    statement_begin(@1, RESUME);
                    parser_clear_exception();
! 		  $tgt->used = yylineno;
                    parser_goto( cbl_refer_t(), 1, &$tgt );
                  }
                  ;
--- 9941,9947 ----
                  {
                    statement_begin(@1, RESUME);
                    parser_clear_exception();
! 		  $tgt->used = @1.first_line;
                    parser_goto( cbl_refer_t(), 1, &$tgt );
                  }
                  ;
*************** string:         string_impl end_string
*** 9630,9643 ****
  string_impl:    STRING_kw string_body[body]
                  {
                    stringify($body.inputs, *$body.into.first, *$body.into.second);
!                   current.declaratives_evaluate(ec_none_e);
                  }
                  ;
  string_cond:    STRING_kw string_body[body] on_overflows[over]
                  {
                    stringify($body.inputs, *$body.into.first, *$body.into.second,
                              $over.on_error, $over.not_error);
!                   current.declaratives_evaluate(ec_overflow_e);
                  }
                  ;
  end_string:     %empty %prec LITERAL
--- 9991,10004 ----
  string_impl:    STRING_kw string_body[body]
                  {
                    stringify($body.inputs, *$body.into.first, *$body.into.second);
!                   current.declaratives_evaluate();
                  }
                  ;
  string_cond:    STRING_kw string_body[body] on_overflows[over]
                  {
                    stringify($body.inputs, *$body.into.first, *$body.into.second,
                              $over.on_error, $over.not_error);
!                   current.declaratives_evaluate();
                  }
                  ;
  end_string:     %empty %prec LITERAL
*************** on_overflow:    OVERFLOW_kw
*** 9755,9761 ****
                  {
                    $$.not_error = NULL;
                    $$.on_error = label_add(LblString,
!                                           uniq_label("string"), yylineno);
                    if( !$$.on_error ) YYERROR;
                    parser_string_overflow( $$.on_error );
  
--- 10116,10122 ----
                  {
                    $$.not_error = NULL;
                    $$.on_error = label_add(LblString,
!                                           uniq_label("string"), @1.first_line);
                    if( !$$.on_error ) YYERROR;
                    parser_string_overflow( $$.on_error );
  
*************** end_unstring:   %empty %prec UNSTRING
*** 9776,9789 ****
  unstring_impl:  UNSTRING unstring_body[body]
                  {
                    unstringify( *$body.input, $body.delimited, $body.into );
!                   current.declaratives_evaluate(ec_none_e);
                  }
                  ;
  unstring_cond:  UNSTRING unstring_body[body] on_overflows[over]
                  {
                    unstringify( *$body.input, $body.delimited, $body.into,
                                 $over.on_error, $over.not_error );
!                   current.declaratives_evaluate(ec_overflow_e);
                  }
                  ;
  
--- 10137,10150 ----
  unstring_impl:  UNSTRING unstring_body[body]
                  {
                    unstringify( *$body.input, $body.delimited, $body.into );
!                   current.declaratives_evaluate();
                  }
                  ;
  unstring_cond:  UNSTRING unstring_body[body] on_overflows[over]
                  {
                    unstringify( *$body.input, $body.delimited, $body.into,
                                 $over.on_error, $over.not_error );
!                   current.declaratives_evaluate();
                  }
                  ;
  
*************** function_udf:   FUNCTION_UDF '(' arg_lis
*** 9918,9929 ****
  		  if( ! current.udf_args_valid(L, $args->refers, params) ) {
  		    YYERROR;
  		  }
!                   $$ = new_temporary_clone(cbl_field_of(symbol_at(L->returning)));
                    std::vector <cbl_ffi_arg_t> args($args->refers.size());
  		  size_t i = 0;
  		  // Pass parameters as defined by the function.
                    std::transform( $args->refers.begin(), $args->refers.end(), args.begin(),
! 				  [params, &i]( cbl_refer_t& arg ) {
  				    function_descr_arg_t param = params.at(i++);
  				    auto ar = new cbl_refer_t(arg);
  				    cbl_ffi_arg_t actual(param.crv, ar);
--- 10279,10292 ----
  		  if( ! current.udf_args_valid(L, $args->refers, params) ) {
  		    YYERROR;
  		  }
! 		  const auto returning = cbl_field_of(symbol_at(L->returning));
!                   $$ = new_temporary_clone(returning);
! 		  $$->data.initial = returning->name; // user's name for the field
                    std::vector <cbl_ffi_arg_t> args($args->refers.size());
  		  size_t i = 0;
  		  // Pass parameters as defined by the function.
                    std::transform( $args->refers.begin(), $args->refers.end(), args.begin(),
! 				  [params, &i]( const cbl_refer_t& arg ) {
  				    function_descr_arg_t param = params.at(i++);
  				    auto ar = new cbl_refer_t(arg);
  				    cbl_ffi_arg_t actual(param.crv, ar);
*************** function_udf:   FUNCTION_UDF '(' arg_lis
*** 9937,9943 ****
                    static cbl_ffi_arg_t *args = NULL;
  
                    auto L = cbl_label_of(symbol_at($1));
!                   $$ = new_temporary_clone(cbl_field_of(symbol_at(L->returning)));
  
                    auto name = new_literal(strlen(L->name), L->name, quoted_e);
                    ast_call( @1, name, $$, narg, args, NULL, NULL, true );
--- 10300,10308 ----
                    static cbl_ffi_arg_t *args = NULL;
  
                    auto L = cbl_label_of(symbol_at($1));
! 		  const auto returning = cbl_field_of(symbol_at(L->returning));
!                   $$ = new_temporary_clone(returning);
! 		  $$->data.initial = returning->name; // user's name for the field
  
                    auto name = new_literal(strlen(L->name), L->name, quoted_e);
                    ast_call( @1, name, $$, narg, args, NULL, NULL, true );
*************** function_udf:   FUNCTION_UDF '(' arg_lis
*** 9958,9964 ****
                   *  var: [ALL] LITERAL, NUMSTR, instrinsic, or scalar
                   *  num_operand: signed NUMSTR/ZERO, instrinsic, or scalar
                   *  alpahaval: LITERAL, reserved_value, instrinsic, or scalar
-                  * Probably any numeric argument could be an expression.
                   */
  intrinsic:      function_udf
          |       intrinsic0
--- 10323,10328 ----
*************** intrinsic:      function_udf
*** 9971,10057 ****
  								    args.data());
                    if( p != NULL ) {
  		    auto loc = symbol_field_location(field_index(p->field));
!                     error_msg(loc, "FUNCTION %s has "
!                               "inconsistent parameter type %zu ('%s')",
!                               keyword_str($1), p - args.data(), name_of(p->field) );
                      YYERROR;
                    }
                    $$ = is_numeric(args[0].field)?
                           new_tempnumeric_float() :
                           new_alphanumeric();
! 
                    parser_intrinsic_callv( $$, intrinsic_cname($1),
  					  args.size(), args.data() );
                  }
  
!         |       PRESENT_VALUE '(' expr_list[args] ')'
                  {
                    static char s[] = "__gg__present_value";
                    location_set(@1);
!                   $$ = new_tempnumeric_float();
                    size_t n = $args->size();
                    assert(n > 0);
                    if( n < 2 ) {
!                     error_msg(@args, "PRESENT VALUE requires 2 parameters");
                      YYERROR;
                    }
                    std::vector <cbl_refer_t> args(n);
  		  std::copy( $args->begin(), $args->end(), args.begin() );
                    parser_intrinsic_callv( $$, s, args.size(), args.data() );
                  }
  
  	|       BASECONVERT  '(' varg[r1] varg[r2] varg[r3] ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric();
  		  cbl_unimplemented("BASECONVERT");
                    if( ! intrinsic_call_3($$, BASECONVERT, $r1, $r2, $r3 )) YYERROR;
                  }
          |       BIT_OF  '(' expr[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    if( ! intrinsic_call_1($$, BIT_OF, $r1, @r1)) YYERROR;
                  }
          |       CHAR  '(' expr[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(1);
                    if( ! intrinsic_call_1($$, CHAR, $r1, @r1)) YYERROR;
                  }
  
  	|       CONVERT  '(' varg[r1] convert_src[src] convert_dst[dst] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(1);
  		  cbl_unimplemented("CONVERT");
                    /* if( ! intrinsic_call_3($$, CONVERT, $r1, $src, $dst) ) YYERROR; */
                  }
  
          |       DISPLAY_OF  '(' varg[r1]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    if( ! intrinsic_call_2($$, DISPLAY_OF, $r1, NULL) ) YYERROR;
                  }
          |       DISPLAY_OF  '(' varg[r1] varg[r2]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    if( ! intrinsic_call_2($$, DISPLAY_OF, $r1, $r2) ) YYERROR;
                  }
  
          |       EXCEPTION_FILE filename {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    parser_exception_file( $$, $filename );
                  }
  
          |       FIND_STRING '(' varg[r1] last start_after anycase ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    /* auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e)); */
! 		  cbl_unimplemented("FIND_STRING");
                    /* if( ! intrinsic_call_4($$, FIND_STRING, r1, $r2) ) YYERROR; */
                  }
  
          |       FORMATTED_DATE '(' DATE_FMT[r1] expr[r2] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_DATE);
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, FORMATTED_DATE, r1, $r2) ) YYERROR;
                  }
--- 10335,10425 ----
  								    args.data());
                    if( p != NULL ) {
  		    auto loc = symbol_field_location(field_index(p->field));
!                     error_msg(loc, "FUNCTION %qs has "
!                               "inconsistent parameter type %ld (%qs)",
!                               keyword_str($1), (long)(p - args.data()), name_of(p->field) );
                      YYERROR;
                    }
                    $$ = is_numeric(args[0].field)?
                           new_tempnumeric_float() :
                           new_alphanumeric();
! 		  $$->data.initial = keyword_str($1);
                    parser_intrinsic_callv( $$, intrinsic_cname($1),
  					  args.size(), args.data() );
                  }
  
!         |       PRESENT_VALUE '(' arg_list[args] ')'
                  {
                    static char s[] = "__gg__present_value";
                    location_set(@1);
!                   $$ = new_tempnumeric_float("PRESENT-VALUE");
                    size_t n = $args->size();
                    assert(n > 0);
                    if( n < 2 ) {
!                     error_msg(@args, "PRESENT-VALUE requires 2 parameters");
                      YYERROR;
                    }
                    std::vector <cbl_refer_t> args(n);
  		  std::copy( $args->begin(), $args->end(), args.begin() );
+ 		  bool ok = std::all_of( args.begin(),
+ 					 args.end(), [loc = @1]( auto r ) {
+ 					     return require_numeric(loc, r); } );
+ 		  if( ! ok ) YYERROR;
                    parser_intrinsic_callv( $$, s, args.size(), args.data() );
                  }
  
  	|       BASECONVERT  '(' varg[r1] varg[r2] varg[r3] ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric("BASECONVERT");
  		  cbl_unimplemented("BASECONVERT");
                    if( ! intrinsic_call_3($$, BASECONVERT, $r1, $r2, $r3 )) YYERROR;
                  }
          |       BIT_OF  '(' expr[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric("BIT-OF");
                    if( ! intrinsic_call_1($$, BIT_OF, $r1, @r1)) YYERROR;
                  }
          |       CHAR  '(' expr[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(1,"CHAR");
                    if( ! intrinsic_call_1($$, CHAR, $r1, @r1)) YYERROR;
                  }
  
  	|       CONVERT  '(' varg[r1] convert_src[src] convert_dst[dst] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(1,"CONVERT");
  		  cbl_unimplemented("CONVERT");
                    /* if( ! intrinsic_call_3($$, CONVERT, $r1, $src, $dst) ) YYERROR; */
                  }
  
          |       DISPLAY_OF  '(' varg[r1]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric("DISPLAY-OF");
                    if( ! intrinsic_call_2($$, DISPLAY_OF, $r1, NULL) ) YYERROR;
                  }
          |       DISPLAY_OF  '(' varg[r1] varg[r2]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric("DISPLAY-OF");
                    if( ! intrinsic_call_2($$, DISPLAY_OF, $r1, $r2) ) YYERROR;
                  }
  
          |       EXCEPTION_FILE filename {
                    location_set(@1);
!                   $$ = new_alphanumeric("EXCEPTION-FILE");
                    parser_exception_file( $$, $filename );
                  }
  
          |       FIND_STRING '(' varg[r1] last start_after anycase ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric("FIND-STRING");
                    /* auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e)); */
! 		  cbl_unimplemented("%<FIND_STRING%>");
                    /* if( ! intrinsic_call_4($$, FIND_STRING, r1, $r2) ) YYERROR; */
                  }
  
          |       FORMATTED_DATE '(' DATE_FMT[r1] expr[r2] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_DATE, "FORMATTED-DATE");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, FORMATTED_DATE, r1, $r2) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10060,10066 ****
          |       FORMATTED_DATETIME '(' DATETIME_FMT[r1] expr[r2]
                                                          expr[r3] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_DATETIME);
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    static cbl_refer_t r3(literally_zero);
                    if( ! intrinsic_call_4($$, FORMATTED_DATETIME,
--- 10428,10434 ----
          |       FORMATTED_DATETIME '(' DATETIME_FMT[r1] expr[r2]
                                                          expr[r3] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_DATETIME, "FORMATTED-DATETIME");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    static cbl_refer_t r3(literally_zero);
                    if( ! intrinsic_call_4($$, FORMATTED_DATETIME,
*************** intrinsic:      function_udf
*** 10069,10075 ****
          |       FORMATTED_DATETIME '(' DATETIME_FMT[r1] expr[r2]
                                          expr[r3] expr[r4] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_DATETIME);
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_4($$, FORMATTED_DATETIME,
                                               r1, $r2, $r3, $r4) ) YYERROR;
--- 10437,10443 ----
          |       FORMATTED_DATETIME '(' DATETIME_FMT[r1] expr[r2]
                                          expr[r3] expr[r4] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_DATETIME, "FORMATTED-DATETIME");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_4($$, FORMATTED_DATETIME,
                                               r1, $r2, $r3, $r4) ) YYERROR;
*************** intrinsic:      function_udf
*** 10080,10093 ****
          |       FORMATTED_TIME '(' TIME_FMT[r1] expr[r2]
                                                  expr[r3]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_TIME);
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_3($$, FORMATTED_TIME,
                                               r1, $r2, $r3) ) YYERROR;
                  }
          |       FORMATTED_TIME '(' TIME_FMT[r1] expr[r2]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_TIME);
                    auto r3 = new_reference(new_literal("0"));
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_3($$, FORMATTED_TIME,
--- 10448,10461 ----
          |       FORMATTED_TIME '(' TIME_FMT[r1] expr[r2]
                                                  expr[r3]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_TIME, "FORMATTED-DATETIME");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_3($$, FORMATTED_TIME,
                                               r1, $r2, $r3) ) YYERROR;
                  }
          |       FORMATTED_TIME '(' TIME_FMT[r1] expr[r2]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_TIME, "FORMATTED-TIME");
                    auto r3 = new_reference(new_literal("0"));
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_3($$, FORMATTED_TIME,
*************** intrinsic:      function_udf
*** 10095,10115 ****
                  }
          |       FORMATTED_CURRENT_DATE '(' DATETIME_FMT[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_DATETIME);
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_1($$, FORMATTED_CURRENT_DATE, r1, @r1) )
                                           YYERROR;
                  }
          |       TEST_FORMATTED_DATETIME '(' DATE_FMT[r1] varg[r2] ')' {
                  location_set(@1);
!                   $$ = new_tempnumeric();
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, TEST_FORMATTED_DATETIME,
                                                r1, $r2) ) YYERROR;
                  }
          |       TEST_FORMATTED_DATETIME '(' TIME_FMT[r1] varg[r2] ')' {
                  location_set(@1);
!                   $$ = new_tempnumeric();
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, TEST_FORMATTED_DATETIME,
                                                r1, $r2) ) YYERROR;
--- 10463,10483 ----
                  }
          |       FORMATTED_CURRENT_DATE '(' DATETIME_FMT[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_FORMATTED_DATETIME, "FORMATTED-CURRENT_DATE");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_1($$, FORMATTED_CURRENT_DATE, r1, @r1) )
                                           YYERROR;
                  }
          |       TEST_FORMATTED_DATETIME '(' DATE_FMT[r1] varg[r2] ')' {
                  location_set(@1);
! 		$$ = new_tempnumeric("TEST-FORMATTED-DATETIME");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, TEST_FORMATTED_DATETIME,
                                                r1, $r2) ) YYERROR;
                  }
          |       TEST_FORMATTED_DATETIME '(' TIME_FMT[r1] varg[r2] ')' {
                  location_set(@1);
! 		$$ = new_tempnumeric("TEST-FORMATTED-DATETIME");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, TEST_FORMATTED_DATETIME,
                                                r1, $r2) ) YYERROR;
*************** intrinsic:      function_udf
*** 10117,10130 ****
          |       TEST_FORMATTED_DATETIME '(' DATETIME_FMT[r1] varg[r2] ')'
                  {
                  location_set(@1);
!                   $$ = new_tempnumeric();
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, TEST_FORMATTED_DATETIME,
                                                r1, $r2) ) YYERROR;
                  }
          |       INTEGER_OF_FORMATTED_DATE '(' DATE_FMT[r1] varg[r2] ')' {
                  location_set(@1);
!                   $$ = new_tempnumeric();
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, INTEGER_OF_FORMATTED_DATE,
                                                r1, $r2) ) YYERROR;
--- 10485,10498 ----
          |       TEST_FORMATTED_DATETIME '(' DATETIME_FMT[r1] varg[r2] ')'
                  {
                  location_set(@1);
! 		$$ = new_tempnumeric("TEST-FORMATTED-DATETIME");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, TEST_FORMATTED_DATETIME,
                                                r1, $r2) ) YYERROR;
                  }
          |       INTEGER_OF_FORMATTED_DATE '(' DATE_FMT[r1] varg[r2] ')' {
                  location_set(@1);
! 		$$ = new_tempnumeric("INTEGER-OF-FORMATTED-DATE");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, INTEGER_OF_FORMATTED_DATE,
                                                r1, $r2) ) YYERROR;
*************** intrinsic:      function_udf
*** 10132,10145 ****
          |       INTEGER_OF_FORMATTED_DATE '(' DATETIME_FMT[r1] varg[r2] ')'
                  {
                  location_set(@1);
!                   $$ = new_tempnumeric();
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, INTEGER_OF_FORMATTED_DATE,
                                                r1, $r2) ) YYERROR;
                  }
          |       SECONDS_FROM_FORMATTED_TIME '(' TIME_FMT[r1] varg[r2] ')' {
                  location_set(@1);
!                   $$ = new_tempnumeric();
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, SECONDS_FROM_FORMATTED_TIME,
                                                r1, $r2) ) YYERROR;
--- 10500,10513 ----
          |       INTEGER_OF_FORMATTED_DATE '(' DATETIME_FMT[r1] varg[r2] ')'
                  {
                  location_set(@1);
! 		$$ = new_tempnumeric("INTEGER-OF-FORMATTED-DATE");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, INTEGER_OF_FORMATTED_DATE,
                                                r1, $r2) ) YYERROR;
                  }
          |       SECONDS_FROM_FORMATTED_TIME '(' TIME_FMT[r1] varg[r2] ')' {
                  location_set(@1);
! 		$$ = new_tempnumeric("SECONDS-FROM-FORMATTED-TIME");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, SECONDS_FROM_FORMATTED_TIME,
                                                r1, $r2) ) YYERROR;
*************** intrinsic:      function_udf
*** 10147,10153 ****
          |       SECONDS_FROM_FORMATTED_TIME '(' DATETIME_FMT[r1] varg[r2] ')'
                  {
                  location_set(@1);
!                   $$ = new_tempnumeric();
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, SECONDS_FROM_FORMATTED_TIME,
                                                r1, $r2) ) YYERROR;
--- 10515,10521 ----
          |       SECONDS_FROM_FORMATTED_TIME '(' DATETIME_FMT[r1] varg[r2] ')'
                  {
                  location_set(@1);
! 		$$ = new_tempnumeric("SECONDS-FROM-FORMATTED-TIME");
                    auto r1 = new_reference(new_literal(strlen($r1), $r1, quoted_e));
                    if( ! intrinsic_call_2($$, SECONDS_FROM_FORMATTED_TIME,
                                                r1, $r2) ) YYERROR;
*************** intrinsic:      function_udf
*** 10155,10239 ****
  
          |       HEX_OF  '(' varg[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    if( ! intrinsic_call_1($$, HEX_OF, $r1, @r1)) YYERROR;
                  }
  	|	LENGTH '(' tableish[val] ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric();
  		  $$->clear_attr(signable_e);
  		  parser_set_numeric($$, $val->field->size());
  		  if( ! intrinsic_call_1($$, LENGTH, $val, @val)) YYERROR;
  		}
  	|	LENGTH '(' varg1a[val] ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric();
  		  $$->clear_attr(signable_e);
  		  parser_set_numeric($$, $val->field->data.capacity);
  		  if( ! intrinsic_call_1($$, LENGTH, $val, @val)) YYERROR;
  		}
          |       lopper_case[func] '(' alpha_val[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric($r1->field->data.capacity);
                    if( ! intrinsic_call_1($$, $func, $r1, @r1)) YYERROR;
                  }
  
  	|	MODULE_NAME '(' module_type[type] ')'
  		{
! 		  $$ = new_alphanumeric(sizeof(cbl_name_t));
  		  parser_module_name( $$, $type );
  		}
  
          |       NUMVAL_C '(' varg[r1] numval_locale[r2] anycase ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                    parser_intrinsic_numval_c( $$, *$r1, $r2.is_locale,
                                                        *$r2.arg2, $anycase );
                  }
          |       ORD  '(' alpha_val[r1] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_1($$, ORD, $r1, @r1)) YYERROR;
                  }
          |       RANDOM
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric_float();
                    parser_intrinsic_call_0( $$, intrinsic_cname(RANDOM) );
                  }
          |       RANDOM_SEED expr[r1] ')'
                  { // left parenthesis consumed by lexer
                    location_set(@1);
!                   $$ = new_tempnumeric_float();
                    if( ! intrinsic_call_1($$, RANDOM, $r1, @r1)) YYERROR;
                  }
  
          |       STANDARD_COMPARE  '(' varg[r1] varg[r2] varg[r3] varg[r4] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric();
  		  cbl_unimplemented("STANDARD-COMPARE");
                    /* if( ! intrinsic_call_4($$, STANDARD_COMPARE, $r1) ) YYERROR; */
                  }
          |       STANDARD_COMPARE  '(' varg[r1] varg[r2] varg[r3]  ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric();
  		  cbl_unimplemented("STANDARD-COMPARE");
                    /* if( ! intrinsic_call_4($$, STANDARD_COMPARE, $r1) ) YYERROR; */
                  }
          |       STANDARD_COMPARE  '(' varg[r1] varg[r2] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric();
  		  cbl_unimplemented("STANDARD-COMPARE");
                    /* if( ! intrinsic_call_4($$, STANDARD_COMPARE, $r1) ) YYERROR; */
                  }
  
          |       SUBSTITUTE '(' varg[r1] subst_inputs[inputs] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    std::vector <cbl_substitute_t> args($inputs->size());
                    std::transform( $inputs->begin(), $inputs->end(), args.begin(),
                                    []( const substitution_t& arg ) {
--- 10523,10607 ----
  
          |       HEX_OF  '(' varg[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric("HEX-OF");
                    if( ! intrinsic_call_1($$, HEX_OF, $r1, @r1)) YYERROR;
                  }
  	|	LENGTH '(' tableish[val] ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric("LENGTH");
  		  $$->clear_attr(signable_e);
  		  parser_set_numeric($$, $val->field->size());
  		  if( ! intrinsic_call_1($$, LENGTH, $val, @val)) YYERROR;
  		}
  	|	LENGTH '(' varg1a[val] ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric("LENGTH");
  		  $$->clear_attr(signable_e);
  		  parser_set_numeric($$, $val->field->data.capacity);
  		  if( ! intrinsic_call_1($$, LENGTH, $val, @val)) YYERROR;
  		}
          |       lopper_case[func] '(' alpha_val[r1] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric($r1->field->data.capacity, "lopper_case[func]");
                    if( ! intrinsic_call_1($$, $func, $r1, @r1)) YYERROR;
                  }
  
  	|	MODULE_NAME '(' module_type[type] ')'
  		{
! 		  $$ = new_alphanumeric(sizeof(cbl_name_t), "MODULE-NAME");
  		  parser_module_name( $$, $type );
  		}
  
          |       NUMVAL_C '(' varg[r1] numval_locale[r2] anycase ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric("NUMVAL-C");
                    parser_intrinsic_numval_c( $$, *$r1, $r2.is_locale,
                                                        *$r2.arg2, $anycase );
                  }
          |       ORD  '(' alpha_val[r1] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric("ORD");
                    if( ! intrinsic_call_1($$, ORD, $r1, @r1)) YYERROR;
                  }
          |       RANDOM
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric_float("RANDOM");
                    parser_intrinsic_call_0( $$, intrinsic_cname(RANDOM) );
                  }
          |       RANDOM_SEED expr[r1] ')'
                  { // left parenthesis consumed by lexer
                    location_set(@1);
!                   $$ = new_tempnumeric_float("RANDOM-SEED");
                    if( ! intrinsic_call_1($$, RANDOM, $r1, @r1)) YYERROR;
                  }
  
          |       STANDARD_COMPARE  '(' varg[r1] varg[r2] varg[r3] varg[r4] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric("STANDARD-COMPARE");
  		  cbl_unimplemented("STANDARD-COMPARE");
                    /* if( ! intrinsic_call_4($$, STANDARD_COMPARE, $r1) ) YYERROR; */
                  }
          |       STANDARD_COMPARE  '(' varg[r1] varg[r2] varg[r3]  ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric("STANDARD-COMPARE");
  		  cbl_unimplemented("STANDARD-COMPARE");
                    /* if( ! intrinsic_call_4($$, STANDARD_COMPARE, $r1) ) YYERROR; */
                  }
          |       STANDARD_COMPARE  '(' varg[r1] varg[r2] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric("STANDARD-COMPARE");
  		  cbl_unimplemented("STANDARD-COMPARE");
                    /* if( ! intrinsic_call_4($$, STANDARD_COMPARE, $r1) ) YYERROR; */
                  }
  
          |       SUBSTITUTE '(' varg[r1] subst_inputs[inputs] ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric("SUBSTITUTE");
                    std::vector <cbl_substitute_t> args($inputs->size());
                    std::transform( $inputs->begin(), $inputs->end(), args.begin(),
                                    []( const substitution_t& arg ) {
*************** intrinsic:      function_udf
*** 10249,10255 ****
  
          |       TEST_NUMVAL_C '(' varg[r1] numval_locale[r2] anycase ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                    parser_intrinsic_numval_c( $$, *$r1, $r2.is_locale,
                                                   *$r2.arg2, $anycase, true );
                  }
--- 10617,10623 ----
  
          |       TEST_NUMVAL_C '(' varg[r1] numval_locale[r2] anycase ')' {
                    location_set(@1);
!                   $$ = new_tempnumeric("parser_intrinsic_subst($$,");
                    parser_intrinsic_numval_c( $$, *$r1, $r2.is_locale,
                                                   *$r2.arg2, $anycase, true );
                  }
*************** intrinsic:      function_udf
*** 10276,10289 ****
                       YYERROR;
                       break;
                    }
!                   $$ = new_alphanumeric();
                    cbl_refer_t * how = new_reference($trim_trailing);
                    if( ! intrinsic_call_2($$, TRIM, $r1, how) ) YYERROR;
                  }
  
          |       USUBSTR '(' alpha_val[r1] expr[r2] expr[r3]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    if( ! intrinsic_call_3($$, FORMATTED_DATETIME,
                                               $r1, $r2, $r3) ) YYERROR;
                  }
--- 10644,10657 ----
                       YYERROR;
                       break;
                    }
! 		   $$ = new_alphanumeric("TRIM");
                    cbl_refer_t * how = new_reference($trim_trailing);
                    if( ! intrinsic_call_2($$, TRIM, $r1, how) ) YYERROR;
                  }
  
          |       USUBSTR '(' alpha_val[r1] expr[r2] expr[r3]  ')' {
                    location_set(@1);
!                   $$ = new_alphanumeric("USUBSTR");
                    if( ! intrinsic_call_3($$, FORMATTED_DATETIME,
                                               $r1, $r2, $r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10291,10304 ****
          |       intrinsic_I  '(' expr[r1] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_1($$, $1, $r1, @r1)) YYERROR;
                  }
  
          |       intrinsic_N  '(' expr[r1] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric_float();
                    if( ! intrinsic_call_1($$, $1, $r1, @r1)) YYERROR;
                  }
  
--- 10659,10672 ----
          |       intrinsic_I  '(' expr[r1] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric(keyword_str($1));
                    if( ! intrinsic_call_1($$, $1, $r1, @r1)) YYERROR;
                  }
  
          |       intrinsic_N  '(' expr[r1] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric_float(keyword_str($1));
                    if( ! intrinsic_call_1($$, $1, $r1, @r1)) YYERROR;
                  }
  
*************** intrinsic:      function_udf
*** 10308,10324 ****
                    auto type = intrinsic_return_type($1);
                    switch(type) {
                    case FldAlphanumeric:
!                     $$ = new_alphanumeric();
                      break;
                    default:
!                     if( $1 == NUMVAL || $1 == NUMVAL_F )
!                       {
!                       $$ = new_temporary(FldFloat);
!                       }
!                     else
!                       {
!                       $$ = new_temporary(type);
!                       }
                    }
                    if( $1 == NUMVAL_F ) {
  		    if( is_literal($r1->field) && ! is_numeric($r1->field->type) ) {
--- 10676,10689 ----
                    auto type = intrinsic_return_type($1);
                    switch(type) {
                    case FldAlphanumeric:
!                     $$ = new_alphanumeric(keyword_str($1));
                      break;
                    default:
!                     if( $1 == NUMVAL || $1 == NUMVAL_F ) {
! 			$$ = new_temporary(FldFloat, keyword_str($1));
! 		    } else {
!                       $$ = new_temporary(type, keyword_str($1));
! 		    }
                    }
                    if( $1 == NUMVAL_F ) {
  		    if( is_literal($r1->field) && ! is_numeric($r1->field->type) ) {
*************** intrinsic:      function_udf
*** 10333,10339 ****
          |       intrinsic_I2 '(' expr[r1] expr[r2] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_2($$, $1, $r1, $r2) ) YYERROR;
                  }
  
--- 10698,10704 ----
          |       intrinsic_I2 '(' expr[r1] expr[r2] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric("intrinsic_I2");
                    if( ! intrinsic_call_2($$, $1, $r1, $r2) ) YYERROR;
                  }
  
*************** intrinsic:      function_udf
*** 10349,10355 ****
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_3($$, DATE_TO_YYYYMMDD,
                                           $r1, r2, r3) ) YYERROR;
                  }
--- 10714,10720 ----
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric("DATE_TO_YYYYMMDD");
                    if( ! intrinsic_call_3($$, DATE_TO_YYYYMMDD,
                                           $r1, r2, r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10365,10371 ****
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_3($$, DATE_TO_YYYYMMDD,
                                           $r1, $r2, r3) ) YYERROR;
                  }
--- 10730,10736 ----
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric("DATE_TO_YYYYMMDD");
                    if( ! intrinsic_call_3($$, DATE_TO_YYYYMMDD,
                                           $r1, $r2, r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10374,10380 ****
                                       expr[r2] expr[r3] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_3($$, DATE_TO_YYYYMMDD,
                                           $r1, $r2, $r3) ) YYERROR;
                  }
--- 10739,10745 ----
                                       expr[r2] expr[r3] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric("DATE_TO_YYYYMMDD");
                    if( ! intrinsic_call_3($$, DATE_TO_YYYYMMDD,
                                           $r1, $r2, $r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10391,10397 ****
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_3($$, DAY_TO_YYYYDDD,
                                           $r1, r2, r3) ) YYERROR;
                  }
--- 10756,10762 ----
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric("DAY_TO_YYYYDDD");
                    if( ! intrinsic_call_3($$, DAY_TO_YYYYDDD,
                                           $r1, r2, r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10407,10413 ****
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_3($$, DAY_TO_YYYYDDD,
                                           $r1, $r2, r3) ) YYERROR;
                  }
--- 10772,10778 ----
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric("DAY_TO_YYYYDDD");
                    if( ! intrinsic_call_3($$, DAY_TO_YYYYDDD,
                                           $r1, $r2, r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10416,10422 ****
                                       expr[r2] expr[r3] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_3($$, DAY_TO_YYYYDDD,
                                           $r1, $r2, $r3) ) YYERROR;
                  }
--- 10781,10787 ----
                                       expr[r2] expr[r3] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric("DAY_TO_YYYYDDD");
                    if( ! intrinsic_call_3($$, DAY_TO_YYYYDDD,
                                           $r1, $r2, $r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10433,10439 ****
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_3($$, YEAR_TO_YYYY,
                                           $r1, r2, r3) ) YYERROR;
                  }
--- 10798,10804 ----
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric("YEAR_TO_YYYY");
                    if( ! intrinsic_call_3($$, YEAR_TO_YYYY,
                                           $r1, r2, r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10449,10455 ****
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_3($$, YEAR_TO_YYYY,
                                           $r1, $r2, r3) ) YYERROR;
                  }
--- 10814,10820 ----
  
                    parser_intrinsic_call_0( r3->field, "__gg__current_date" );
  
!                   $$ = new_tempnumeric("YEAR_TO_YYYY");
                    if( ! intrinsic_call_3($$, YEAR_TO_YYYY,
                                           $r1, $r2, r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10458,10464 ****
                                       expr[r2] expr[r3] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                    if( ! intrinsic_call_3($$, YEAR_TO_YYYY,
                                           $r1, $r2, $r3) ) YYERROR;
                  }
--- 10823,10829 ----
                                       expr[r2] expr[r3] ')'
                  {
                    location_set(@1);
!                   $$ = new_tempnumeric("YEAR_TO_YYYY");
                    if( ! intrinsic_call_3($$, YEAR_TO_YYYY,
                                           $r1, $r2, $r3) ) YYERROR;
                  }
*************** intrinsic:      function_udf
*** 10466,10490 ****
          |       intrinsic_N2 '(' expr[r1] expr[r2] ')'
                  {
                    location_set(@1);
!                   switch($1)
!                     {
!                     case ANNUITY:
!                       $$ = new_tempnumeric_float();
!                       break;
!                     case COMBINED_DATETIME:
!                       $$ = new_tempnumeric();
!                       break;
!                     case REM:
!                       $$ = new_tempnumeric_float();
!                       break;
!                     }
                    if( ! intrinsic_call_2($$, $1, $r1, $r2) ) YYERROR;
                  }
  
          |       intrinsic_X2 '(' varg[r1] varg[r2] ')'
                  {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    if( ! intrinsic_call_2($$, $1, $r1, $r2) ) YYERROR;
                  }
          |       intrinsic_locale
--- 10831,10855 ----
          |       intrinsic_N2 '(' expr[r1] expr[r2] ')'
                  {
                    location_set(@1);
!                   switch($1) {
! 		  case ANNUITY:
! 		    $$ = new_tempnumeric_float();
! 		    break;
! 		  case COMBINED_DATETIME:
! 		    $$ = new_tempnumeric();
! 		    break;
! 		  case REM:
! 		    $$ = new_tempnumeric_float();
! 		    break;
! 		  }
! 		  $$->data.initial = keyword_str($1); // function name
                    if( ! intrinsic_call_2($$, $1, $r1, $r2) ) YYERROR;
                  }
  
          |       intrinsic_X2 '(' varg[r1] varg[r2] ')'
                  {
                    location_set(@1);
!                   $$ = new_alphanumeric(keyword_str($1));
                    if( ! intrinsic_call_2($$, $1, $r1, $r2) ) YYERROR;
                  }
          |       intrinsic_locale
*************** numval_locale:  %empty {
*** 10515,10521 ****
                    $$.arg2 = cbl_refer_t::empty();
                  }
          |       LOCALE NAME  { $$.is_locale = true;  $$.arg2 = NULL;
!                   cbl_unimplemented("NUMVAL_C LOCALE"); YYERROR;
                  }
          |       varg         { $$.is_locale = false; $$.arg2 = $1; }
                  ;
--- 10880,10886 ----
                    $$.arg2 = cbl_refer_t::empty();
                  }
          |       LOCALE NAME  { $$.is_locale = true;  $$.arg2 = NULL;
!                   cbl_unimplemented("%<NUMVAL_C LOCALE%>"); YYERROR;
                  }
          |       varg         { $$.is_locale = false; $$.arg2 = $1; }
                  ;
*************** trim_trailing:  %empty          { $$ = n
*** 10595,10659 ****
  
  intrinsic0:     CURRENT_DATE {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_CALENDAR_DATE);
                    parser_intrinsic_call_0( $$, "__gg__current_date" );
                  }
          |       E {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                   parser_intrinsic_call_0( $$, "__gg__e" );
                  }
  
          |       EXCEPTION_FILE_N {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    intrinsic_call_0( $$, EXCEPTION_FILE_N );
                  }
  
          |       EXCEPTION_FILE {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    parser_exception_file( $$ );
                  }
          |       EXCEPTION_LOCATION_N {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    intrinsic_call_0( $$, EXCEPTION_LOCATION_N );
                  }
          |       EXCEPTION_LOCATION {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    intrinsic_call_0( $$, EXCEPTION_LOCATION );
                  }
          |       EXCEPTION_STATEMENT {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    intrinsic_call_0( $$, EXCEPTION_STATEMENT );
                  }
          |       EXCEPTION_STATUS {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                    intrinsic_call_0( $$, EXCEPTION_STATUS );
                  }
  
          |       PI {
                    location_set(@1);
!                   $$ = new_tempnumeric_float();
                   parser_intrinsic_call_0( $$, "__gg__pi" );
                  }
          |       SECONDS_PAST_MIDNIGHT {
                    location_set(@1);
!                   $$ = new_tempnumeric();
                   intrinsic_call_0( $$, SECONDS_PAST_MIDNIGHT );
                  }
          |       UUID4 {
                    location_set(@1);
!                   $$ = new_alphanumeric();
                   parser_intrinsic_call_0( $$, "__gg__uuid4" );
                  }
          |       WHEN_COMPILED {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_CALENDAR_DATE); // Returns YYYYMMDDhhmmssss-0500
                   parser_intrinsic_call_0( $$, "__gg__when_compiled" );
                  }
                  ;
--- 10960,11025 ----
  
  intrinsic0:     CURRENT_DATE {
                    location_set(@1);
!                   $$ = new_alphanumeric(MAXLENGTH_CALENDAR_DATE, "CURRENT-DATE");
                    parser_intrinsic_call_0( $$, "__gg__current_date" );
                  }
          |       E {
                    location_set(@1);
!                   $$ = new_tempnumeric("E");
                   parser_intrinsic_call_0( $$, "__gg__e" );
                  }
  
          |       EXCEPTION_FILE_N {
                    location_set(@1);
!                   $$ = new_alphanumeric("EXCEPTION-FILE-N");
                    intrinsic_call_0( $$, EXCEPTION_FILE_N );
                  }
  
          |       EXCEPTION_FILE {
                    location_set(@1);
!                   $$ = new_alphanumeric("EXCEPTION-FILE");
                    parser_exception_file( $$ );
                  }
          |       EXCEPTION_LOCATION_N {
                    location_set(@1);
!                   $$ = new_alphanumeric("EXCEPTION-LOCATION-N");
                    intrinsic_call_0( $$, EXCEPTION_LOCATION_N );
                  }
          |       EXCEPTION_LOCATION {
                    location_set(@1);
!                   $$ = new_alphanumeric("EXCEPTION-LOCATION");
                    intrinsic_call_0( $$, EXCEPTION_LOCATION );
                  }
          |       EXCEPTION_STATEMENT {
                    location_set(@1);
!                   $$ = new_alphanumeric("EXCEPTION-STATEMENT");
                    intrinsic_call_0( $$, EXCEPTION_STATEMENT );
                  }
          |       EXCEPTION_STATUS {
                    location_set(@1);
!                   $$ = new_alphanumeric("EXCEPTION-STATUS");
                    intrinsic_call_0( $$, EXCEPTION_STATUS );
                  }
  
          |       PI {
                    location_set(@1);
!                   $$ = new_tempnumeric_float("PI");
                   parser_intrinsic_call_0( $$, "__gg__pi" );
                  }
          |       SECONDS_PAST_MIDNIGHT {
                    location_set(@1);
!                   $$ = new_tempnumeric("SECONDS-PAST-MIDNIGHT");
                   intrinsic_call_0( $$, SECONDS_PAST_MIDNIGHT );
                  }
          |       UUID4 {
                    location_set(@1);
!                   $$ = new_alphanumeric("UUID4");
                   parser_intrinsic_call_0( $$, "__gg__uuid4" );
                  }
          |       WHEN_COMPILED {
                    location_set(@1);
! 		  // Returns YYYYMMDDhhmmssss-0500)
!                   $$ = new_alphanumeric(MAXLENGTH_CALENDAR_DATE, "WHEN-COMPILED"); 
                   parser_intrinsic_call_0( $$, "__gg__when_compiled" );
                  }
                  ;
*************** sign:           %empty
*** 10857,10862 ****
--- 11223,11233 ----
          |       SIGN
                  ;
  
+ is_signed:	%empty      { $$ = true; }
+ 	|	SIGNED_kw   { $$ = true; }
+ 	|	UNSIGNED_kw { $$ = false; }
+ 		;
+ 
  start_after:	%empty %prec AFTER
  	|	START AFTER varg
  		;
*************** cdf_basis:      BASIS NAME /* BASIS is n
*** 10905,10911 ****
          |       BASIS LITERAL
                  ;
  
! cdf_use:        USE DEBUGGING on labels
                  {
                    if( ! current.declarative_section_name() ) {
                      error_msg(@1, "USE valid only in DECLARATIVES");
--- 11276,11287 ----
          |       BASIS LITERAL
                  ;
  
! cdf_use:        cdf_use_when {
! 		  statement_cleanup = false;
! 		}
! 		;
! 
! cdf_use_when:	USE DEBUGGING on labels
                  {
                    if( ! current.declarative_section_name() ) {
                      error_msg(@1, "USE valid only in DECLARATIVES");
*************** cdf_use:        USE DEBUGGING on labels
*** 10923,10934 ****
                    }
                    static const cbl_label_t all = {
  		    LblNone, 0, 0,0,0, false, false, false, 0,0, ":all:" };
- 		      ////.name = { ':', 'a', 'l', 'l', ':',  } // workaround for gcc < 11.3
                    add_debugging_declarative(&all);
                   }
  
          |       USE globally mistake procedure on filenames
! 		{
                    if( ! current.declarative_section_name() ) {
  		    error_msg(@1, "USE valid only in DECLARATIVES");
                      YYERROR;
--- 11299,11309 ----
                    }
                    static const cbl_label_t all = {
  		    LblNone, 0, 0,0,0, false, false, false, 0,0, ":all:" };
                    add_debugging_declarative(&all);
                   }
  
          |       USE globally mistake procedure on filenames
! 		{ // Format 1
                    if( ! current.declarative_section_name() ) {
  		    error_msg(@1, "USE valid only in DECLARATIVES");
                      YYERROR;
*************** cdf_use:        USE DEBUGGING on labels
*** 10940,10947 ****
                                      std::back_inserter(files),
                                      file_list_t::symbol_index );
                    cbl_declarative_t declarative(current.declarative_section(),
!                                                 ec_all_e, files,
!                                                 file_mode_none_e, global);
                    current.declaratives.add(declarative);
  		}
  
--- 11315,11322 ----
                                      std::back_inserter(files),
                                      file_list_t::symbol_index );
                    cbl_declarative_t declarative(current.declarative_section(),
!                                                 ec_io_e, files,
!                                                 file_mode_any_e, global);
                    current.declaratives.add(declarative);
  		}
  
*************** cdf_use:        USE DEBUGGING on labels
*** 10954,10965 ****
                    bool global = $globally == GLOBAL;
                    std::list<size_t> files;
                    cbl_declarative_t declarative(current.declarative_section(),
!                                                 ec_all_e, files,
                                                  $io_mode, global);
                    current.declaratives.add(declarative);
                  }
!         |       USE cdf_use_excepts // Format 3: AFTER swallowed by lexer
!                 {
                    if( ! current.declarative_section_name() ) {
                      error_msg(@1, "USE valid only in DECLARATIVES");
                      YYERROR;
--- 11329,11340 ----
                    bool global = $globally == GLOBAL;
                    std::list<size_t> files;
                    cbl_declarative_t declarative(current.declarative_section(),
!                                                 ec_io_e, files,
                                                  $io_mode, global);
                    current.declaratives.add(declarative);
                  }
!         |       USE cdf_use_excepts
!                 { // Format 3 (AFTER swallowed by lexer)
                    if( ! current.declarative_section_name() ) {
                      error_msg(@1, "USE valid only in DECLARATIVES");
                      YYERROR;
*************** first_line_of( YYLTYPE loc ) {
*** 11054,11060 ****
      return loc;
  }
  
! void ast_call( const YYLTYPE& loc, cbl_refer_t name, cbl_refer_t returning,
                    size_t narg, cbl_ffi_arg_t args[],
                    cbl_label_t *except,
                    cbl_label_t *not_except,
--- 11429,11435 ----
      return loc;
  }
  
! void ast_call( const YYLTYPE& loc, cbl_refer_t name, const cbl_refer_t& returning,
                    size_t narg, cbl_ffi_arg_t args[],
                    cbl_label_t *except,
                    cbl_label_t *not_except,
*************** void ast_call( const YYLTYPE& loc, cbl_r
*** 11074,11096 ****
    parser_call( name, returning, narg, args, except, not_except, is_function );
  }
  
! static size_t
! statement_begin( const YYLTYPE& loc, int token ) {
!   // The following statement generates a message at run-time
!   // parser_print_string("statement_begin()\n");
!   location_set(loc);
!   prior_statement = token;
! 
!   parser_statement_begin();
  
!   if( token != CONTINUE ) {
      if( enabled_exceptions.size() ) {
!       current.declaratives_evaluate(ec_none_e);
!       cbl_enabled_exceptions_array_t enabled(enabled_exceptions);
!       parser_exception_prepare( keyword_str(token), &enabled );
      }
    }
!   return 0;
  }
  
  #include "parse_util.h"
--- 11449,11521 ----
    parser_call( name, returning, narg, args, except, not_except, is_function );
  }
  
! /*
!  * Check if any EC *could* be raised that would be handled by a declarative. If
!  * so, the generated statement epilog will ask the runtime library to attempt
!  * to match any raised EC with a declarative.  If not, the statement epilog
!  * will be limited to calling the default EC handler, which logs unhandled ECs
!  * [todo] and calls abort(3) for fatal ECs.
!  */
! static bool
! possible_ec() {
!   cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() );
!   bool format_1 = current.declaratives.has_format_1();
!       
!   bool enabled = 0xFF < (current.declaratives.status()
! 			 &
! 			 enabled_exceptions.status());
!   bool epilog = enabled || format_1;
!   
!   dbgmsg("%sEC handling for DCL %08x && EC %08x with %s Format 1",
! 	 epilog? "" : "no ", 
! 	 current.declaratives.status(),
! 	 enabled_exceptions.status(), format_1? "a" : "no");
!   
!   return epilog;
! }
  
! /*
!  * If there's potential overlap between enabled ECs and Declaratives, generate
!  * a PERFORM of the _DECLARATIVES_EVAL "ladder" that matches a section number
!  * to its name, and executes the Declarative.
!  */
! static void
! statement_epilog( int token ) {
!   cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() );
!   if( possible_ec() && token != CONTINUE ) { 
      if( enabled_exceptions.size() ) {
!       current.declaratives_evaluate();
      }
    }
!   parser_check_fatal_exception();
! }
! 
! static inline void
! statement_prolog( int token ) {
!   parser_statement_begin( keyword_str(token),
! 			  current.declaratives.runtime.ena,
! 			  current.declaratives.runtime.dcl );
! }
! 
! /*
!  * We check the EC against the Declarative status prior to parsing the
!  * statement because a TURN directive can be embedded in the statement.  An
!  * embedded directive applies to the following statement, not the one being
!  * parsed.
!  */
! static void
! statement_begin( const YYLTYPE& loc, int token ) {
!   static int prior_token = 0;
! 
!   if( statement_cleanup )  {
!     statement_epilog(prior_token);
!   } else {
!     statement_cleanup = true;
!   }
!   location_set(loc);
!   statement_prolog(token);
! 
!   prior_token = token;
  }
  
  #include "parse_util.h"
*************** statement_begin( const YYLTYPE& loc, int
*** 11098,11104 ****
  
  struct string_match {
    const char *name;
!   string_match( const char name[] ) : name(name) {}
    bool operator()( const char input[] ) const {
      return strlen(name) == strlen(input) && 0 == strcasecmp(name, input);
    }
--- 11523,11529 ----
  
  struct string_match {
    const char *name;
!   explicit string_match( const char name[] ) : name(name) {}
    bool operator()( const char input[] ) const {
      return strlen(name) == strlen(input) && 0 == strcasecmp(name, input);
    }
*************** struct string_match {
*** 11106,11123 ****
  
  const char *
  keyword_str( int token ) {
!   if( token == YYEOF )   return "YYEOF";
!   if( token == YYEMPTY ) return "YYEMPTY";
! 
    if( token < 256 ) {
      static char ascii[2];
      ascii[0] = token;
      return ascii;
    }
  
!   return tokens.name_of(token);
  }
  
  /*
   * Return the token for the Cobol name, unless it is a function name.  The
   * lexer uses keyword_tok to determine if what appears to be a NAME is in fact
--- 11531,11554 ----
  
  const char *
  keyword_str( int token ) {
!   switch( token ) {
!   case YYEOF:   return "YYEOF";
!   case YYEMPTY: return "YYEMPTY";
!   case 256:     return "YYerror";
!   case 257:     return "invalid token"; // YYUNDEF
!   }
!   
    if( token < 256 ) {
      static char ascii[2];
      ascii[0] = token;
      return ascii;
    }
  
!   return cdf_tokens.name_of(token);
  }
  
+ bool iso_cobol_word( const std::string& name, bool include_context );
+ 
  /*
   * Return the token for the Cobol name, unless it is a function name.  The
   * lexer uses keyword_tok to determine if what appears to be a NAME is in fact
*************** keyword_str( int token ) {
*** 11128,11140 ****
   */
  
  // tokens.h is generated as needed from parse.h with tokens.h.gen
! tokenset_t::tokenset_t() {
  #include "token_names.h"
  }
  
  // Look up the lowercase form of a keyword, excluding some CDF names.
  int
! tokenset_t::find( const cbl_name_t name, bool include_intrinsics ) {
    static const cbl_name_t non_names[] = { // including CDF NAMES, and "SWITCH"
      "CHECKING", "LIST", "LOCATION", "MAP", "SWITCH",
    }, * const eonames = non_names + COUNT_OF(non_names);
--- 11559,11572 ----
   */
  
  // tokens.h is generated as needed from parse.h with tokens.h.gen
! current_tokens_t::tokenset_t::tokenset_t() {
  #include "token_names.h"
  }
  
+ 
  // Look up the lowercase form of a keyword, excluding some CDF names.
  int
! current_tokens_t::tokenset_t::find( const cbl_name_t name, bool include_intrinsics ) {
    static const cbl_name_t non_names[] = { // including CDF NAMES, and "SWITCH"
      "CHECKING", "LIST", "LOCATION", "MAP", "SWITCH",
    }, * const eonames = non_names + COUNT_OF(non_names);
*************** tokenset_t::find( const cbl_name_t name,
*** 11150,11158 ****
    if( dialect_ibm() ) {
        static const cbl_name_t ibm_non_names[] = {
  	  "RESUME",
!       }, * const eonames = ibm_non_names + COUNT_OF(ibm_non_names);
  
!       if( std::any_of(ibm_non_names, eonames,
  		      [candidate=name](const cbl_name_t non_name) {
  			  return 0 == strcasecmp(non_name, candidate)
  			      && strlen(non_name) == strlen(candidate);
--- 11582,11590 ----
    if( dialect_ibm() ) {
        static const cbl_name_t ibm_non_names[] = {
  	  "RESUME",
!       }, * const eoibm = ibm_non_names + COUNT_OF(ibm_non_names);
  
!       if( std::any_of(ibm_non_names, eoibm,
  		      [candidate=name](const cbl_name_t non_name) {
  			  return 0 == strcasecmp(non_name, candidate)
  			      && strlen(non_name) == strlen(candidate);
*************** tokenset_t::find( const cbl_name_t name,
*** 11161,11187 ****
        }
    }
  
    cbl_name_t lname;
!   std::transform(name, name + strlen(name) + 1, lname, tolower);
    auto p = tokens.find(lname);
    if( p == tokens.end() ) return 0;
    int token = p->second;
  
    if( token == SECTION ) yylval.number = 0;
  
!   if( include_intrinsics ) return token;
! 
!   return intrinsic_cname(token)? 0 : token;
  }
  
  int
  keyword_tok( const char * text, bool include_intrinsics ) {
!   return tokens.find(text, include_intrinsics);
  }
  
  static inline size_t
  verify_figconst( enum cbl_figconst_t figconst , size_t pos ) {
!   cbl_field_t *f = cbl_field_of(symbol_at(pos));
    assert((f->attr & FIGCONST_MASK) == figconst);
    return pos;
  }
--- 11593,11627 ----
        }
    }
  
+   /*
+    * The input name may be one of:
+    *  1. an intrinsic function name (OK if include_intrinsics)
+    *  2. an ISO/GCC reserved word or context-sensitive word (OK)
+    *  3. a token in our token list for convenience, such as BINARY_INTEGER (bzzt)
+    */
+   
    cbl_name_t lname;
!   std::transform(name, name + strlen(name) + 1, lname, ftolower);
    auto p = tokens.find(lname);
    if( p == tokens.end() ) return 0;
    int token = p->second;
  
    if( token == SECTION ) yylval.number = 0;
  
!   if( include_intrinsics && intrinsic_cname(token) ) return token;
!   if( iso_cobol_word(uppercase(name), true) ) return token;
!   
!   return 0;
  }
  
  int
  keyword_tok( const char * text, bool include_intrinsics ) {
!   return cdf_tokens.find(text, include_intrinsics);
  }
  
  static inline size_t
  verify_figconst( enum cbl_figconst_t figconst , size_t pos ) {
!   const cbl_field_t *f = cbl_field_of(symbol_at(pos));
    assert((f->attr & FIGCONST_MASK) == figconst);
    return pos;
  }
*************** relop_invert(relop_t op) {
*** 11227,11233 ****
    case ge_op: return lt_op;
    case gt_op: return le_op;
    }
!   cbl_errx( "%s:%d: invalid relop_t %d", __func__, __LINE__, op);
  
    return relop_t(0); // not reached
  }
--- 11667,11673 ----
    case ge_op: return lt_op;
    case gt_op: return le_op;
    }
!   cbl_internal_error("%s:%d: invalid %<relop_t%> %d", __func__, __LINE__, op);
  
    return relop_t(0); // not reached
  }
*************** label_add( const YYLTYPE& loc,
*** 11368,11374 ****
                  name, cbl_label_of(p)->name, cbl_label_of(p)->line);
      }
    }
!   struct cbl_label_t label = { type, parent, loc.last_line };
  
    if( !namcpy(loc, label.name, name) ) return NULL;
    auto p =  symbol_label_add(PROGRAM, &label);
--- 11808,11814 ----
                  name, cbl_label_of(p)->name, cbl_label_of(p)->line);
      }
    }
!   struct cbl_label_t label = { type, parent, loc.first_line };
  
    if( !namcpy(loc, label.name, name) ) return NULL;
    auto p =  symbol_label_add(PROGRAM, &label);
*************** perform_t::ec_labels_t::new_label( cbl_l
*** 11399,11405 ****
  {
    size_t n = 1 + symbols_end() - symbols_begin();
    cbl_name_t name;
!   sprintf(name, "_perf_%s_%zu", role, n);
    return label_add( type, name, yylineno );
  }
  
--- 11839,11845 ----
  {
    size_t n = 1 + symbols_end() - symbols_begin();
    cbl_name_t name;
!   sprintf(name, "_perf_%s_" HOST_SIZE_T_PRINT_UNSIGNED, role, (fmt_size_t)n);
    return label_add( type, name, yylineno );
  }
  
*************** current_t::udf_update( const ffi_args_t
*** 11473,11479 ****
    if( ! ffi_args ) return;
    assert(ffi_args->elems.size() < sizeof(function_descr_t::types));
  
!   auto returning = cbl_field_of(symbol_at(L->returning));
    auto key = function_descr_t::init(L->name);
    auto func = udfs.find(key);
    assert(func != udfs.end());
--- 11913,11919 ----
    if( ! ffi_args ) return;
    assert(ffi_args->elems.size() < sizeof(function_descr_t::types));
  
!   const auto returning = cbl_field_of(symbol_at(L->returning));
    auto key = function_descr_t::init(L->name);
    auto func = udfs.find(key);
    assert(func != udfs.end());
*************** current_t::udf_args_valid( const cbl_lab
*** 11515,11526 ****
    }
  
    size_t i = 0;
!   for( cbl_refer_t arg : args ) {
      if( arg.field ) { // else omitted
        auto tgt = cbl_field_of(symbol_at(udf.linkage_fields.at(i).isym));
        if( ! valid_move(tgt, arg.field) ) {
  	auto loc = symbol_field_location(field_index(arg.field));
! 	error_msg(loc, "FUNCTION %s arg %zu, '%s' cannot be passed to %s, type %s",
  		  L->name, i, arg.field->pretty_name(),
  		  tgt->pretty_name(), 3 + cbl_field_type_str(tgt->type) );
  	return false;
--- 11955,11966 ----
    }
  
    size_t i = 0;
!   for( const cbl_refer_t& arg : args ) {
      if( arg.field ) { // else omitted
        auto tgt = cbl_field_of(symbol_at(udf.linkage_fields.at(i).isym));
        if( ! valid_move(tgt, arg.field) ) {
  	auto loc = symbol_field_location(field_index(arg.field));
! 	error_msg(loc, "FUNCTION %s argument %zu, '%s' cannot be passed to %s, type %s",
  		  L->name, i, arg.field->pretty_name(),
  		  tgt->pretty_name(), 3 + cbl_field_type_str(tgt->type) );
  	return false;
*************** current_t::repository_add( const char na
*** 11536,11542 ****
    assert( !programs.empty() );
    function_descr_t arg = function_descr_t::init(name);
    auto parg = std::find( function_descrs, function_descrs_end, arg );
!   if( parg == function_descrs_end ) return false;
    auto p = programs.top().function_repository.insert(*parg);
    if( yydebug ) {
      for( auto descr : programs.top().function_repository ) {
--- 11976,11985 ----
    assert( !programs.empty() );
    function_descr_t arg = function_descr_t::init(name);
    auto parg = std::find( function_descrs, function_descrs_end, arg );
!   if( parg == function_descrs_end ) {
!     dbgmsg("%s:%d: no intrinsic %s found", __func__, __LINE__, name);
!     return false;
!   }
    auto p = programs.top().function_repository.insert(*parg);
    if( yydebug ) {
      for( auto descr : programs.top().function_repository ) {
*************** function_descr_t
*** 11572,11578 ****
  function_descr_t::init( int isym ) {
    function_descr_t descr = { FUNCTION_UDF_0 };
    descr.ret_type = FldInvalid;
!   auto L = cbl_label_of(symbol_at(isym));
    bool ok = namcpy(YYLTYPE(), descr.name, L->name);
    gcc_assert(ok);
    return descr;
--- 12015,12021 ----
  function_descr_t::init( int isym ) {
    function_descr_t descr = { FUNCTION_UDF_0 };
    descr.ret_type = FldInvalid;
!   const auto L = cbl_label_of(symbol_at(isym));
    bool ok = namcpy(YYLTYPE(), descr.name, L->name);
    gcc_assert(ok);
    return descr;
*************** arith_t::arith_t( cbl_arith_format_t for
*** 11586,11601 ****
    delete refers;
  }
  
! 
! cbl_key_t::cbl_key_t( const sort_key_t& that )
    : ascending(that.ascending)
!   , nfield(that.fields.size())
!   , fields(NULL)
! {
!   if( nfield > 0 ) {
!     fields = new cbl_field_t* [nfield];
!     std::copy(that.fields.begin(), that.fields.end(), fields);
!   }
  }
  
  static cbl_refer_t *
--- 12029,12044 ----
    delete refers;
  }
  
! cbl_key_t::cbl_key_t( sort_key_t that )
    : ascending(that.ascending)
!   , fields( that.fields.begin(), that.fields.end() )
! {}
! 
! cbl_key_t&
! cbl_key_t::operator=( const sort_key_t& that ) {
!   ascending = that.ascending;
!   fields = that.as_vector();
!   return *this;
  }
  
  static cbl_refer_t *
*************** ast_add( arith_t *arith ) {
*** 11640,11647 ****
  
    parser_add( nC, pC, nA, pA, arith->format, arith->on_error, arith->not_error );
  
!   ec_type_t handled = arith->on_error || arith->not_error ? ec_size_e : ec_none_e;
!   current.declaratives_evaluate(handled);
  }
  
  static bool
--- 12083,12089 ----
  
    parser_add( nC, pC, nA, pA, arith->format, arith->on_error, arith->not_error );
  
!   current.declaratives_evaluate();
  }
  
  static bool
*************** ast_subtract( arith_t *arith ) {
*** 11657,11664 ****
  
    parser_subtract( nC, pC, nA, pA, nB, pB, arith->format, arith->on_error, arith->not_error );
  
!   ec_type_t handled = arith->on_error || arith->not_error ? ec_size_e : ec_none_e;
!   current.declaratives_evaluate(handled);
    return true;
  }
  
--- 12099,12105 ----
  
    parser_subtract( nC, pC, nA, pA, nB, pB, arith->format, arith->on_error, arith->not_error );
  
!   current.declaratives_evaluate();
    return true;
  }
  
*************** ast_multiply( arith_t *arith ) {
*** 11675,11682 ****
  
    parser_multiply( nC, pC, nA, pA, nB, pB, arith->on_error, arith->not_error );
  
!   ec_type_t handled = arith->on_error || arith->not_error ? ec_size_e : ec_none_e;
!   current.declaratives_evaluate(handled);
    return true;
  }
  
--- 12116,12122 ----
  
    parser_multiply( nC, pC, nA, pA, nB, pB, arith->on_error, arith->not_error );
  
!   current.declaratives_evaluate();
    return true;
  }
  
*************** ast_divide( arith_t *arith ) {
*** 11694,11701 ****
    parser_divide( nC, pC, nA, pA, nB, pB,
                   arith->remainder, arith->on_error, arith->not_error );
  
!   ec_type_t handled = arith->on_error || arith->not_error ? ec_size_e : ec_none_e;
!   current.declaratives_evaluate(handled);
    return true;
  }
  
--- 12134,12140 ----
    parser_divide( nC, pC, nA, pA, nB, pB,
                   arith->remainder, arith->on_error, arith->not_error );
  
!   current.declaratives_evaluate();
    return true;
  }
  
*************** ast_divide( arith_t *arith ) {
*** 11705,11734 ****
   * the convenience of the parser.
  */
  struct stringify_src_t : public cbl_string_src_t {
!  stringify_src_t( const refer_marked_list_t& marked = refer_marked_list_t() )
!    : cbl_string_src_t( marked.marker? *marked.marker : null_reference,
!                        marked.refers.size(),
!                        new cbl_refer_t[marked.refers.size()] )
    {
      std::copy( marked.refers.begin(), marked.refers.end(), inputs );
    }
  
    static void dump( const cbl_string_src_t& src ) {
!     dbgmsg( "%s:%d:, %zu inputs delimited by %s:", __func__, __LINE__,
!            src.ninput,
             src.delimited_by.field? field_str(src.delimited_by.field) : "SIZE" );
      std::for_each(src.inputs, src.inputs + src.ninput, dump_input);
    }
  
   protected:
    static void dump_input( const cbl_refer_t& refer ) {
!     yywarn( "%s:\t%s", __func__, field_str(refer.field) );
    }
  };
  
  void
  stringify( refer_collection_t *inputs,
!            cbl_refer_t into, cbl_refer_t pointer,
             cbl_label_t  *on_error,
             cbl_label_t *not_error )
  {
--- 12144,12173 ----
   * the convenience of the parser.
  */
  struct stringify_src_t : public cbl_string_src_t {
!   stringify_src_t( const refer_marked_list_t& marked = refer_marked_list_t() )
!     : cbl_string_src_t( marked.marker? *marked.marker : null_reference,
!                         marked.refers.size(),
!                         new cbl_refer_t[marked.refers.size()] )
    {
      std::copy( marked.refers.begin(), marked.refers.end(), inputs );
    }
  
    static void dump( const cbl_string_src_t& src ) {
!     dbgmsg( "%s:%d:, " HOST_SIZE_T_PRINT_UNSIGNED " inputs delimited by %s:",
!            __func__, __LINE__, (fmt_size_t)src.ninput,
             src.delimited_by.field? field_str(src.delimited_by.field) : "SIZE" );
      std::for_each(src.inputs, src.inputs + src.ninput, dump_input);
    }
  
   protected:
    static void dump_input( const cbl_refer_t& refer ) {
!     yywarn( "%s: %s", __func__, field_str(refer.field) );
    }
  };
  
  void
  stringify( refer_collection_t *inputs,
!            const cbl_refer_t& into, const cbl_refer_t& pointer,
             cbl_label_t  *on_error,
             cbl_label_t *not_error )
  {
*************** stringify( refer_collection_t *inputs,
*** 11743,11749 ****
  }
  
  void
! unstringify( cbl_refer_t& src,
               refer_list_t *delimited,
               unstring_into_t * into,
               cbl_label_t  *on_error,
--- 12182,12188 ----
  }
  
  void
! unstringify( const cbl_refer_t& src,
               refer_list_t *delimited,
               unstring_into_t * into,
               cbl_label_t  *on_error,
*************** unstringify( cbl_refer_t& src,
*** 11751,11756 ****
--- 12190,12196 ----
  {
    size_t ndelimited = delimited? delimited->size() : 0;
    cbl_refer_t *pdelimited = NULL;
+   // cppcheck-suppress [variableScope] pdelimited points to delimiteds.data()
    std::vector <cbl_refer_t> delimiteds(ndelimited);
    if( ndelimited > 0 ) {
      pdelimited = use_any( delimited->refers, delimiteds );
*************** lang_check_failed (const char* file, int
*** 11862,11876 ****
  
  #pragma GCC diagnostic pop
  
! void ast_inspect( cbl_refer_t& input, bool backward, ast_inspect_list_t& inspects ) {
    if( yydebug ) {
!     dbgmsg("%s:%d: INSPECT %zu operations on %s, line %d", __func__, __LINE__,
!           inspects.size(), input.field->name, yylineno);
    }
    std::for_each(inspects.begin(), inspects.end(), dump_inspect);
!   auto array = inspects.as_array();
!   parser_inspect( input, backward, inspects.size(), array );
!   delete[] array;
  }
  
  static const char *
--- 12302,12320 ----
  
  #pragma GCC diagnostic pop
  
! void
! ast_inspect( YYLTYPE loc, cbl_refer_t& input, bool backward,
!              cbl_inspect_opers_t& inspects )
! {
    if( yydebug ) {
!     dbgmsg("%s:%d: INSPECT " HOST_SIZE_T_PRINT_UNSIGNED " operations on %s, "
!            "lines %d:%d - %d:%d",
!            __func__, __LINE__,
!            (fmt_size_t)inspects.size(), input.field->name,
!            loc.first_line, loc.first_column, loc.last_line, loc.last_column );
    }
    std::for_each(inspects.begin(), inspects.end(), dump_inspect);
!   parser_inspect( input, backward, inspects );
  }
  
  static const char *
*************** cbl_refer_str( char output[], const cbl_
*** 11882,11909 ****
    return output;
  }
  
! static void
  dump_inspect_match( const cbl_inspect_match_t& M ) {
!   static char fields[3][4 * 64];
!   cbl_refer_str(fields[0], M.matching);
!   cbl_refer_str(fields[1], M.before.identifier_4);
!   cbl_refer_str(fields[2], M.after.identifier_4);
  
!   yywarn( "matching %s \n\t\tbefore %s%s \n\t\tafter  %s%s",
!          fields[0],
!          M.before.initial? "initial " : "", fields[1],
!          M.after.initial?  "initial " : "", fields[2] );
  }
  
  static void
  dump_inspect_replace( const cbl_inspect_replace_t& R ) {
    static char fields[4][4 * 64];
!   cbl_refer_str(fields[0], R.matching);
    cbl_refer_str(fields[1], R.before.identifier_4);
    cbl_refer_str(fields[2], R.after.identifier_4);
    cbl_refer_str(fields[3], R.replacement);
  
!   yywarn( "matching    %s \n\treplacement %s\n\t\tbefore %s%s \n\t\tafter  %s%s",
           fields[0], fields[3],
           R.before.initial? "initial " : "", fields[1],
           R.after.initial?  "initial " : "", fields[2] );
--- 12326,12354 ----
    return output;
  }
  
! void
  dump_inspect_match( const cbl_inspect_match_t& M ) {
!   static char fields[4][4 * 64];
!   cbl_refer_str(fields[0], M.match);
!   cbl_refer_str(fields[1], M.tally);
!   cbl_refer_str(fields[2], M.before.identifier_4);
!   cbl_refer_str(fields[3], M.after.identifier_4);
  
!   dbgmsg( "matching %s [tally %s]\n\t\tbefore %s%s \n\t\tafter  %s%s",
!          fields[0], fields[1],
!          M.before.initial? "initial " : "", fields[2],
!          M.after.initial?  "initial " : "", fields[3] );
  }
  
  static void
  dump_inspect_replace( const cbl_inspect_replace_t& R ) {
    static char fields[4][4 * 64];
!   cbl_refer_str(fields[0], R.matching());
    cbl_refer_str(fields[1], R.before.identifier_4);
    cbl_refer_str(fields[2], R.after.identifier_4);
    cbl_refer_str(fields[3], R.replacement);
  
!   dbgmsg( "matching    %s \n\treplacement %s\n\t\tbefore %s%s \n\t\tafter  %s%s",
           fields[0], fields[3],
           R.before.initial? "initial " : "", fields[1],
           R.after.initial?  "initial " : "", fields[2] );
*************** static REAL_VALUE_TYPE
*** 12006,12011 ****
--- 12451,12457 ----
  numstr2i( const char input[], radix_t radix ) {
    REAL_VALUE_TYPE output;
    size_t integer = 0;
+   fmt_size_t integerf = 0;
    int erc=0;
  
    switch( radix ) {
*************** numstr2i( const char input[], radix_t ra
*** 12017,12029 ****
      }
      break;
    case hexadecimal_e:
!     erc = sscanf(input, "%zx", &integer);
      real_from_integer (&output, VOIDmode, integer, UNSIGNED);
      break;
    case boolean_e:
      for( const char *p = input; *p != '\0'; p++ ) {
        if( ssize_t(8 * sizeof(integer) - 1) < p - input ) {
!         yywarn("'%s' was accepted as %d", input, integer);
          break;
        }
        switch(*p) {
--- 12463,12476 ----
      }
      break;
    case hexadecimal_e:
!     erc = sscanf(input, "%" GCC_PRISZ "x", &integerf);
!     integer = integerf;
      real_from_integer (&output, VOIDmode, integer, UNSIGNED);
      break;
    case boolean_e:
      for( const char *p = input; *p != '\0'; p++ ) {
        if( ssize_t(8 * sizeof(integer) - 1) < p - input ) {
!         yywarn("'%s' was accepted as %zu", input, integer);
          break;
        }
        switch(*p) {
*************** numstr2i( const char input[], radix_t ra
*** 12033,12039 ****
            integer |= ((*p) == '0' ? 0 : 1);
            break;
        default:
!         yywarn("'%s' was accepted as %d", input, integer);
  	break;
        }
      }
--- 12480,12486 ----
            integer |= ((*p) == '0' ? 0 : 1);
            break;
        default:
!         yywarn("'%s' was accepted as %zu", input, integer);
  	break;
        }
      }
*************** numstr2i( const char input[], radix_t ra
*** 12041,12047 ****
      return output;
    }
    if( erc == -1 ) {
!     yywarn("'%s' was accepted as %lld", input, output);
    }
    return output;
  }
--- 12488,12494 ----
      return output;
    }
    if( erc == -1 ) {
!     yywarn("'%s' was accepted as %zu", input, integer);
    }
    return output;
  }
*************** new_literal( const char initial[], enum
*** 12067,12073 ****
  class is_elementary_type { // for INITIALIZE purposes
    bool with_filler;
  public:
!   is_elementary_type( bool with_filler ) : with_filler(with_filler) {}
  
    bool operator()( const symbol_elem_t& elem ) const {
      if( elem.type != SymField ) return false;
--- 12514,12520 ----
  class is_elementary_type { // for INITIALIZE purposes
    bool with_filler;
  public:
!   explicit is_elementary_type( bool with_filler ) : with_filler(with_filler) {}
  
    bool operator()( const symbol_elem_t& elem ) const {
      if( elem.type != SymField ) return false;
*************** public:
*** 12081,12087 ****
  size_t end_of_group( size_t igroup );
  
  static std::list<cbl_refer_t>
! symbol_group_data_members( cbl_refer_t refer, bool with_filler ) {
    std::list<cbl_refer_t> refers;
    refers.push_front( refer );
  
--- 12528,12534 ----
  size_t end_of_group( size_t igroup );
  
  static std::list<cbl_refer_t>
! symbol_group_data_members( const cbl_refer_t& refer, bool with_filler ) {
    std::list<cbl_refer_t> refers;
    refers.push_front( refer );
  
*************** symbol_group_data_members( cbl_refer_t r
*** 12089,12095 ****
  
    class refer_of : public cbl_refer_t {
     public:
!     refer_of( const cbl_refer_t& refer ) : cbl_refer_t(refer) {}
      cbl_refer_t operator()( symbol_elem_t& elem ) {
        this->field = cbl_field_of(&elem); // preserve subscript/refmod
        return *this;
--- 12536,12542 ----
  
    class refer_of : public cbl_refer_t {
     public:
!     explicit refer_of( const cbl_refer_t& refer ) : cbl_refer_t(refer) {}
      cbl_refer_t operator()( symbol_elem_t& elem ) {
        this->field = cbl_field_of(&elem); // preserve subscript/refmod
        return *this;
*************** struct expand_group : public std::list<c
*** 12113,12119 ****
      return cbl_refer_t(field);
    }
    bool with_filler;
!   expand_group( bool with_filler ) : with_filler(with_filler) {}
  
    void operator()( const cbl_refer_t& refer ) {
      assert(refer.field);
--- 12560,12566 ----
      return cbl_refer_t(field);
    }
    bool with_filler;
!   explicit expand_group( bool with_filler ) : with_filler(with_filler) {}
  
    void operator()( const cbl_refer_t& refer ) {
      assert(refer.field);
*************** wsclear( char ch ) {
*** 12139,12145 ****
  }
  
  static void
! initialize_allocated( cbl_refer_t input ) {
    cbl_num_result_t result = { truncation_e, input };
    std::list<cbl_num_result_t> results;
    results.push_back(result);
--- 12586,12592 ----
  }
  
  static void
! initialize_allocated( const cbl_refer_t& input ) {
    cbl_num_result_t result = { truncation_e, input };
    std::list<cbl_num_result_t> results;
    results.push_back(result);
*************** initialize_allocated( cbl_refer_t input
*** 12148,12160 ****
  }
  
  static int
! initialize_with( cbl_refer_t tgt ) {
    if( tgt.field->type == FldPointer ) return ZERO;
    if( tgt.is_refmod_reference() ) return SPACES;
    return is_numeric(tgt.field)? ZERO : SPACES;
  }
  
  static bool
  initialize_one( cbl_num_result_t target, bool with_filler,
                  data_category_t value_category,
                  const category_map_t& replacements,
--- 12595,12608 ----
  }
  
  static int
! initialize_with( const cbl_refer_t& tgt ) {
    if( tgt.field->type == FldPointer ) return ZERO;
    if( tgt.is_refmod_reference() ) return SPACES;
    return is_numeric(tgt.field)? ZERO : SPACES;
  }
  
  static bool
+ // cppcheck-suppress [passedByValue] target.refer.field is modified
  initialize_one( cbl_num_result_t target, bool with_filler,
                  data_category_t value_category,
                  const category_map_t& replacements,
*************** typedef std::pair<size_t, size_t>  cbl_b
*** 12224,12234 ****
   * After the 1st record is initialized, copy it to the others.
   */
  static bool
! initialize_table( cbl_num_result_t target,
  		  size_t nspan, const cbl_bytespan_t spans[],
  		  const std::list<cbl_subtable_t>& subtables )
  {
!   assert( target.refer.nsubscript == dimensions(target.refer.field) );
    const cbl_refer_t& src( target.refer );
    size_t n( src.field->occurs.ntimes());
    assert( 0 < n );
--- 12672,12682 ----
   * After the 1st record is initialized, copy it to the others.
   */
  static bool
! initialize_table( const cbl_num_result_t& target,
  		  size_t nspan, const cbl_bytespan_t spans[],
  		  const std::list<cbl_subtable_t>& subtables )
  {
!   assert( target.refer.nsubscript() == dimensions(target.refer.field) );
    const cbl_refer_t& src( target.refer );
    size_t n( src.field->occurs.ntimes());
    assert( 0 < n );
*************** static cbl_refer_t
*** 12244,12260 ****
  synthesize_table_refer( cbl_refer_t tgt ) {
    // For a table, use supplied subscripts or start with 1.
    auto ndim( dimensions(tgt.field) );
!   if( tgt.nsubscript < ndim ) { // it's an incomplete table
      std::vector <cbl_refer_t> subscripts(ndim);
      for( size_t i=0; i < ndim; i++ ) {
!       if( i < tgt.nsubscript ) {
  	subscripts[i] = tgt.subscripts[i];
  	continue;
        }
        subscripts[i].field = new_tempnumeric();
        parser_set_numeric(subscripts[i].field, 1);
      }
!     return cbl_refer_t( tgt.field, subscripts.size(), subscripts.data() );
    }
    return tgt;
  }
--- 12692,12708 ----
  synthesize_table_refer( cbl_refer_t tgt ) {
    // For a table, use supplied subscripts or start with 1.
    auto ndim( dimensions(tgt.field) );
!   if( tgt.nsubscript() < ndim ) { // it's an incomplete table
      std::vector <cbl_refer_t> subscripts(ndim);
      for( size_t i=0; i < ndim; i++ ) {
!       if( i < tgt.nsubscript() ) {
  	subscripts[i] = tgt.subscripts[i];
  	continue;
        }
        subscripts[i].field = new_tempnumeric();
        parser_set_numeric(subscripts[i].field, 1);
      }
!     return cbl_refer_t( tgt.field, subscripts );
    }
    return tgt;
  }
*************** group_offset( const cbl_field_t *field )
*** 12264,12270 ****
    if( field->parent ) {
      auto e = symbol_at(field->parent);
      if( e->type == SymField ) {
!       auto parent = cbl_field_of(e);
        return field->offset - parent->offset;
      }
    }
--- 12712,12718 ----
    if( field->parent ) {
      auto e = symbol_at(field->parent);
      if( e->type == SymField ) {
!       const auto parent = cbl_field_of(e);
        return field->offset - parent->offset;
      }
    }
*************** initialize_statement( const cbl_num_resu
*** 12278,12284 ****
                        size_t depth = 0 )
  {
    const cbl_refer_t& tgt( target.refer );
!   assert(dimensions(tgt.field) == tgt.nsubscript || 0 < depth);
    assert(!is_literal(tgt.field));
  
    if( tgt.field->type == FldGroup ) {
--- 12726,12732 ----
                        size_t depth = 0 )
  {
    const cbl_refer_t& tgt( target.refer );
!   assert(dimensions(tgt.field) == tgt.nsubscript() || 0 < depth);
    assert(!is_literal(tgt.field));
  
    if( tgt.field->type == FldGroup ) {
*************** initialize_statement( const cbl_num_resu
*** 12315,12321 ****
  
      if( fOK && is_table(tgt.field) ) {
        cbl_num_result_t output = { target.rounded, synthesize_table_refer(tgt) };
!       if( tgt.nsubscript < output.refer.nsubscript ) { // tgt is whole table
  	std::list<field_span_t> field_spans;
  	static const field_span_t empty_span = { NULL, NULL };
  	field_span_t span = empty_span;
--- 12763,12769 ----
  
      if( fOK && is_table(tgt.field) ) {
        cbl_num_result_t output = { target.rounded, synthesize_table_refer(tgt) };
!       if( tgt.nsubscript() < output.refer.nsubscript() ) { // tgt is whole table
  	std::list<field_span_t> field_spans;
  	static const field_span_t empty_span = { NULL, NULL };
  	field_span_t span = empty_span;
*************** static void
*** 12426,12442 ****
  initialize_statement( std::list<cbl_num_result_t>& tgts, bool with_filler,
                       data_category_t value_category,
                       const category_map_t& replacements) {
! 
!   bool is_refmod = std::any_of( tgts.begin(), tgts.end(),
! 				[]( const auto& tgt ) {
! 				  return tgt.refer.is_refmod_reference();
! 				} );
!   if( false && is_refmod ) { // refmod seems valid per ISO
!     dbgmsg("INITIALIZE cannot initialize a refmod");
!     return;
!   }
! 
!   for( auto tgt : tgts ) {
      initialize_statement( tgt, with_filler, value_category,
                           replacements );
    }
--- 12874,12880 ----
  initialize_statement( std::list<cbl_num_result_t>& tgts, bool with_filler,
                       data_category_t value_category,
                       const category_map_t& replacements) {
!   for( const auto& tgt : tgts ) {
      initialize_statement( tgt, with_filler, value_category,
                           replacements );
    }
*************** initialize_statement( std::list<cbl_num_
*** 12445,12457 ****
  
  static void
  dump_inspect_oper( const cbl_inspect_oper_t& op ) {
!   dbgmsg("\t%s: %zu \"matches\", %zu \"replaces\"",
!         bound_str(op.bound),
!         op.matches? op.n_identifier_3 : 0, op.replaces? op.n_identifier_3 : 0);
!   if( op.matches )
!     std::for_each(op.matches, op.matches + op.n_identifier_3, dump_inspect_match);
!   if( op.replaces )
!     std::for_each(op.replaces, op.replaces + op.n_identifier_3, dump_inspect_replace);
  }
  
  #pragma GCC diagnostic push
--- 12883,12895 ----
  
  static void
  dump_inspect_oper( const cbl_inspect_oper_t& op ) {
!   dbgmsg("\t%s: " HOST_SIZE_T_PRINT_UNSIGNED
!          " \"matches\", " HOST_SIZE_T_PRINT_UNSIGNED " \"replaces\"",
!          bound_str(op.bound),
!          (fmt_size_t)op.matches.size(), 
!          (fmt_size_t)op.replaces.size());
!   std::for_each(op.matches.begin(), op.matches.end(), dump_inspect_match);
!   std::for_each(op.replaces.begin(), op.replaces.end(), dump_inspect_replace);
  }
  
  #pragma GCC diagnostic push
*************** dump_inspect( const cbl_inspect_t& I ) {
*** 12468,12481 ****
    } else {
      fprintf( stderr, "\tREPLACING:\n" );
    }
!   std::for_each( I.opers, I.opers + I.nbound, dump_inspect_oper );
  }
  #pragma GCC diagnostic pop
  
  #include <iterator>
  
  struct declarative_file_list_t : protected cbl_declarative_t {
!   declarative_file_list_t( const cbl_declarative_t& d )
      : cbl_declarative_t(d)
      {
        if( nfile > 0 )
--- 12906,12919 ----
    } else {
      fprintf( stderr, "\tREPLACING:\n" );
    }
!   std::for_each( I.begin(), I.end(), dump_inspect_oper );
  }
  #pragma GCC diagnostic pop
  
  #include <iterator>
  
  struct declarative_file_list_t : protected cbl_declarative_t {
!   explicit declarative_file_list_t( const cbl_declarative_t& d )
      : cbl_declarative_t(d)
      {
        if( nfile > 0 )
*************** operator<<( std::ostream& os, const decl
*** 12500,12506 ****
  
  static declarative_file_list_t
  file_list_of( const cbl_declarative_t& dcl ) {
!   return dcl;
  }
  
  std::ostream&
--- 12938,12944 ----
  
  static declarative_file_list_t
  file_list_of( const cbl_declarative_t& dcl ) {
!   return declarative_file_list_t(dcl);
  }
  
  std::ostream&
*************** cbl_field_t *
*** 12535,12544 ****
  new_literal( const literal_t& lit, enum cbl_field_attr_t attr ) {
    bool zstring = lit.prefix[0] == 'Z';
    if( !zstring && lit.data[lit.len] != '\0' ) {
!     dbgmsg("%s:%d: line %d, no NUL terminator '%-*.*s'{%zu/%zu}",
            __func__, __LINE__, yylineno,
            int(lit.len), int(lit.len),
!           lit.data, strlen(lit.data), lit.len);
    }
    assert(zstring || lit.data[lit.len] == '\0');
  
--- 12973,12983 ----
  new_literal( const literal_t& lit, enum cbl_field_attr_t attr ) {
    bool zstring = lit.prefix[0] == 'Z';
    if( !zstring && lit.data[lit.len] != '\0' ) {
!     dbgmsg("%s:%d: line %d, no NUL terminator '%-*.*s'{"
!           HOST_SIZE_T_PRINT_UNSIGNED "/" HOST_SIZE_T_PRINT_UNSIGNED "}",
            __func__, __LINE__, yylineno,
            int(lit.len), int(lit.len),
!           lit.data, (fmt_size_t)strlen(lit.data), (fmt_size_t)lit.len);
    }
    assert(zstring || lit.data[lit.len] == '\0');
  
*************** cbl_file_t::validate_key( const cbl_file
*** 12571,12577 ****
  
  bool
  cbl_file_t::validate() const {
!   size_t members[] = { user_status, vsam_status, record_length };
    bool tf = true;
  
    for( auto isym : members ) {
--- 13010,13016 ----
  
  bool
  cbl_file_t::validate() const {
!   const size_t members[] = { user_status, vsam_status, record_length };
    bool tf = true;
  
    for( auto isym : members ) {
*************** cbl_figconst_of( const char *value ) {
*** 12618,12623 ****
--- 13057,13090 ----
    return p == eovalues? normal_value_e : p->type;
  }
  
+ int
+ cbl_figconst_tok( const char *value ) {
+   struct values_t {
+     const char *value; int token;
+   } static const values[] = {
+     { constant_of(constant_index(ZERO))->data.initial, ZERO },
+     { constant_of(constant_index(SPACES))->data.initial, SPACES },
+     { constant_of(constant_index(HIGH_VALUES))->data.initial, HIGH_VALUES },
+     { constant_of(constant_index(LOW_VALUES))->data.initial, LOW_VALUES },
+     { constant_of(constant_index(QUOTES))->data.initial, QUOTES },
+     { constant_of(constant_index(NULLS))->data.initial, NULLS },
+   }, *eovalues = values + COUNT_OF(values);
+ 
+   auto p = std::find_if( values, eovalues,
+                          [value]( const values_t& elem ) {
+                            return elem.value == value;
+                          } );
+ 
+   return p == eovalues? 0 : p->token;
+ }
+ 
+ const cbl_field_t *
+ cbl_figconst_field_of( const char *value ) {
+   int token = cbl_figconst_tok(value);
+   return token == 0 ? nullptr : constant_of(constant_index(token));
+ }
+ 
+ 
  cbl_field_attr_t
  literal_attr( const char prefix[] ) {
    switch(strlen(prefix)) {
*************** literal_attr( const char prefix[] ) {
*** 12644,12650 ****
    }
  
    // must be [BN]X
!   cbl_internal_error("'%s': invalid literal prefix", prefix);
    gcc_unreachable();
    return none_e;
  }
--- 13111,13117 ----
    }
  
    // must be [BN]X
!   cbl_internal_error("invalid literal prefix: %qs", prefix);
    gcc_unreachable();
    return none_e;
  }
*************** mode_syntax_only( cbl_division_t divisio
*** 12676,12690 ****
  bool
  mode_syntax_only() {
    return cbl_syntax_only != not_syntax_only
!     && cbl_syntax_only <= current_division;
  }
  
  void
  cobol_dialect_set( cbl_dialect_t dialect ) {
!   cbl_dialect = dialect;
!   if( dialect & dialect_ibm_e ) cobol_gcobol_feature_set(feature_embiggen_e);
  }
- cbl_dialect_t cobol_dialect() { return cbl_dialect; }
  
  static bool internal_ebcdic_locked = false;
  
--- 13143,13169 ----
  bool
  mode_syntax_only() {
    return cbl_syntax_only != not_syntax_only
!       && cbl_syntax_only <= current_division;
  }
  
  void
  cobol_dialect_set( cbl_dialect_t dialect ) {
!   switch(dialect) {
!   case dialect_gcc_e:
!     break;
!   case dialect_ibm_e:
!     cobol_gcobol_feature_set(feature_embiggen_e);
!     break;
!   case dialect_mf_e:
!     break;
!   case dialect_gnu_e:
!     if( 0 == (cbl_dialects & dialect) ) { // first time
!       cdf_tokens.equate(YYLTYPE(), "BINARY-DOUBLE", "BINARY-C-LONG");
!     }
!     break;
!   }    
!   cbl_dialects |= dialect;
  }
  
  static bool internal_ebcdic_locked = false;
  
*************** literal_refmod_valid( YYLTYPE loc, const
*** 12742,12748 ****
  	if( --edge < r.field->data.capacity ) return true;
        }
        // len < 0 or not: 0 < from + len <= capacity
!       auto loc = symbol_field_location(field_index(r.field));
        error_msg(loc, "%s(%zu:%zu) out of bounds, "
  		"size is %u",
  		r.field->name,
--- 13221,13227 ----
  	if( --edge < r.field->data.capacity ) return true;
        }
        // len < 0 or not: 0 < from + len <= capacity
!       loc = symbol_field_location(field_index(r.field));
        error_msg(loc, "%s(%zu:%zu) out of bounds, "
  		"size is %u",
  		r.field->name,
*************** literal_subscript_oob( const cbl_refer_t
*** 12765,12794 ****
  
  static bool
  literal_subscripts_valid( YYLTYPE loc, const cbl_refer_t& name ) {
-   static char subs[ 7 * 32 ], *esub = subs + sizeof(subs);
-   char *p = subs;
    size_t isub;
  
!   // Find subscript in the supplied refer
    const cbl_field_t *oob = literal_subscript_oob(name, isub);
    if( oob ) {
!     const char *sep = "";
!     for( auto r = name.subscripts; r < name.subscripts + name.nsubscript; r++ ) {
!       snprintf( p, esub - p, "%s%s", sep, nice_name_of(r->field) );
!       sep = " ";
!     }
! 
      const char *upper_phrase = "";
      if( ! oob->occurs.bounds.fixed_size() ) {
        static char ub[32] = "boo";
!       sprintf(ub, " to %lu", oob->occurs.bounds.upper);
        upper_phrase = ub;
      }
  
      // X(0): subscript 1 of for out of range for 02 X OCCURS 4 to 6
      error_msg(loc, "%s(%s): subscript %zu out of range "
!                    "for %s %s OCCURS %lu%s",
! 	      oob->name, subs, 1 + isub,
  	      oob->level_str(), oob->name,
  	      oob->occurs.bounds.lower, upper_phrase );
      return false;
--- 13244,13277 ----
  
  static bool
  literal_subscripts_valid( YYLTYPE loc, const cbl_refer_t& name ) {
    size_t isub;
  
!   // Report any out-of-bound subscript. 
    const cbl_field_t *oob = literal_subscript_oob(name, isub);
    if( oob ) {
!     std::string sep("");
!     std::string subscript_names = 
!       std::accumulate( name.subscripts.begin(),
!                        name.subscripts.end(),
!                        std::string(),
!                        [&sep]( std::string acc, const auto& sub ) {
!                          acc += sep;
!                          sep = " ";
!                          return acc + nice_name_of(sub.field);
!                        } );
!     
      const char *upper_phrase = "";
      if( ! oob->occurs.bounds.fixed_size() ) {
        static char ub[32] = "boo";
!       sprintf(ub, " to " HOST_SIZE_T_PRINT_UNSIGNED,
!               (fmt_size_t)oob->occurs.bounds.upper);
        upper_phrase = ub;
      }
  
      // X(0): subscript 1 of for out of range for 02 X OCCURS 4 to 6
      error_msg(loc, "%s(%s): subscript %zu out of range "
!                    "for %s %s OCCURS %zu%s",
! 	      oob->name, subscript_names.c_str(), 1 + isub,
  	      oob->level_str(), oob->name,
  	      oob->occurs.bounds.lower, upper_phrase );
      return false;
*************** subscript_dimension_error( YYLTYPE loc,
*** 12810,12823 ****
  }
  
  static void
! reject_refmod( YYLTYPE loc, cbl_refer_t scalar ) {
    if( scalar.is_refmod_reference() ) {
      error_msg(loc, "%s cannot be reference-modified here", scalar.name());
    }
  }
  
  static bool
! require_pointer( YYLTYPE loc, cbl_refer_t scalar ) {
    if( scalar.field->type != FldPointer ) {
      error_msg(loc, "%s must have USAGE POINTER", scalar.name());
      return false;
--- 13293,13306 ----
  }
  
  static void
! reject_refmod( YYLTYPE loc, const cbl_refer_t& scalar ) {
    if( scalar.is_refmod_reference() ) {
      error_msg(loc, "%s cannot be reference-modified here", scalar.name());
    }
  }
  
  static bool
! require_pointer( YYLTYPE loc, const cbl_refer_t& scalar ) {
    if( scalar.field->type != FldPointer ) {
      error_msg(loc, "%s must have USAGE POINTER", scalar.name());
      return false;
*************** require_pointer( YYLTYPE loc, cbl_refer_
*** 12826,12832 ****
  }
  
  static bool
! require_numeric( YYLTYPE loc, cbl_refer_t scalar ) {
    if( ! is_numeric(scalar.field) ) {
      error_msg(loc, "%s must have numeric USAGE", scalar.name());
      return false;
--- 13309,13315 ----
  }
  
  static bool
! require_numeric( YYLTYPE loc, const cbl_refer_t& scalar ) {
    if( ! is_numeric(scalar.field) ) {
      error_msg(loc, "%s must have numeric USAGE", scalar.name());
      return false;
*************** require_numeric( YYLTYPE loc, cbl_refer_
*** 12834,12839 ****
--- 13317,13333 ----
    return true;
  }
  
+ static bool
+ require_integer( YYLTYPE loc, const cbl_refer_t& scalar ) {
+   if( is_literal(scalar.field) ) {
+     if( ! is_integer_literal(scalar.field) ) {
+       error_msg(loc, "numeric literal '%s' must be an integer",
+ 		scalar.field->pretty_name());
+       return false;
+     }
+   }
+   return require_numeric(loc, scalar);
+ }
  /* eval methods */
  
  eval_subject_t::eval_subject_t()
*************** eval_subject_t::label( const char skel[]
*** 12851,12857 ****
    cbl_label_t label = protolabel;
    label.line = yylineno;
    size_t n = 1 + symbols_end() - symbols_begin();
!   snprintf(label.name, sizeof(label.name), "_eval_%s_%zu", skel, n);
    auto output = symbol_label_add( PROGRAM, &label );
    return output;
  }
--- 13345,13352 ----
    cbl_label_t label = protolabel;
    label.line = yylineno;
    size_t n = 1 + symbols_end() - symbols_begin();
!   snprintf(label.name, sizeof(label.name),
!            "_eval_%s_" HOST_SIZE_T_PRINT_UNSIGNED, skel, (fmt_size_t)n);
    auto output = symbol_label_add( PROGRAM, &label );
    return output;
  }
diff -Nrcpad gcc-15-20250726/gcc/cobol/parse_ante.h gcc-15-20250809/gcc/cobol/parse_ante.h
*** gcc-15-20250726/gcc/cobol/parse_ante.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/parse_ante.h	Sat Aug  9 22:32:37 2025
***************
*** 28,36 ****
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
! #include <assert.h>
! #include <string.h>
! #include <stdio.h>
  
  #include <algorithm>
  #include <list>
--- 28,36 ----
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
! #include <cassert>
! #include <cstring>
! #include <cstdio>
  
  #include <algorithm>
  #include <list>
***************
*** 47,55 ****
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
  
- extern void declarative_runtime_match(cbl_field_t *declaratives,
-                                       cbl_label_t *lave );
- 
  extern YYLTYPE yylloc;
  
  extern int yylineno, yyleng, yychar;
--- 47,52 ----
*************** void apply_declaratives();
*** 73,114 ****
  const char * keyword_str( int token );
  void labels_dump();
  
! cbl_dialect_t cbl_dialect;
  size_t cbl_gcobol_features;
  
  static size_t nparse_error = 0;
  
! size_t parse_error_inc() { return ++nparse_error; }
  size_t parse_error_count() { return nparse_error; }
  void input_file_status_notify();
  
! #define YYLLOC_DEFAULT(Current, Rhs, N)					\
!   do {									\
!       if (N)								\
!         {								\
!           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
!           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
!           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
!           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
!           location_dump("parse.c", N,					\
!                         "rhs N  ", YYRHSLOC (Rhs, N));			\
!         }								\
!       else								\
!         {								\
!           (Current).first_line   =					\
!           (Current).last_line    = YYRHSLOC (Rhs, 0).last_line;		\
!           (Current).first_column =					\
!           (Current).last_column  = YYRHSLOC (Rhs, 0).last_column;	\
!         }								\
!       location_dump("parse.c", __LINE__, "current", (Current));		\
!       gcc_location_set( location_set(Current) );			\
!       input_file_status_notify();					\
    } while (0)
  
  int yylex(void);
  extern int yydebug;
  
! #include <stdarg.h>
  
  const char *
  consistent_encoding_check( const YYLTYPE& loc, const char input[] ) {
--- 70,115 ----
  const char * keyword_str( int token );
  void labels_dump();
  
! unsigned int cbl_dialects;
  size_t cbl_gcobol_features;
  
+ static enum cbl_division_t current_division;
  static size_t nparse_error = 0;
  
! size_t parse_error_inc() {
!   mode_syntax_only(current_division);
!   return ++nparse_error;
! }
  size_t parse_error_count() { return nparse_error; }
  void input_file_status_notify();
  
! #define YYLLOC_DEFAULT(Current, Rhs, N)                                 \
!   do {                                                                  \
!       if (N)                                                            \
!         {                                                               \
!           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
!           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
!           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
!           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
!           location_dump("parse.c", N,                                   \
!                         "rhs N  ", YYRHSLOC (Rhs, N));                  \
!         }                                                               \
!       else                                                              \
!         {                                                               \
!           (Current).first_line   =                                      \
!           (Current).last_line    = YYRHSLOC (Rhs, 0).last_line;         \
!           (Current).first_column =                                      \
!           (Current).last_column  = YYRHSLOC (Rhs, 0).last_column;       \
!         }                                                               \
!       location_dump("parse.c", __LINE__, "current", (Current));         \
!       input_file_status_notify();                                       \
!       location_set(Current);                                            \
    } while (0)
  
  int yylex(void);
  extern int yydebug;
  
! #include <cstdarg>
  
  const char *
  consistent_encoding_check( const YYLTYPE& loc, const char input[] ) {
*************** const char * original_picture();
*** 131,138 ****
  
  static const relop_t invalid_relop = static_cast<relop_t>(-1);
  
- static enum cbl_division_t current_division;
- 
  static cbl_refer_t null_reference;
  static cbl_field_t *literally_one, *literally_zero;
  
--- 132,137 ----
*************** literal_of( size_t value ) {
*** 142,148 ****
      case 0: return literally_zero;
      case 1: return literally_one;
    }
!   cbl_err("logic error: %s: %zu not supported", __func__, value);
    return NULL;
  }
  
--- 141,148 ----
      case 0: return literally_zero;
      case 1: return literally_one;
    }
!   cbl_err("logic error: %s: " HOST_SIZE_T_PRINT_UNSIGNED " not supported",
!           __func__, (fmt_size_t)value);
    return NULL;
  }
  
*************** has_clause( int data_clauses, data_claus
*** 180,200 ****
    return clause == (data_clauses & clause);
  }
  
  static bool
! is_cobol_word( const char name[] ) {
    auto eoname = name + strlen(name);
!   auto p = std::find_if( name, eoname,
                           []( char ch ) {
                             switch(ch) {
                             case '-':
                             case '_':
!                              return false;
                             case '$': // maybe one day (IBM allows)
                               break;
                             }
!                            return !ISALNUM(ch);
                           } );
!   return p == eoname;
  }
  
  bool
--- 180,202 ----
    return clause == (data_clauses & clause);
  }
  
+ 
  static bool
! is_cobol_charset( const char name[] ) {
    auto eoname = name + strlen(name);
!   auto ok = std::all_of( name, eoname,
                           []( char ch ) {
                             switch(ch) {
                             case '-':
                             case '_':
!                              return true;
                             case '$': // maybe one day (IBM allows)
+                              return false;
                               break;
                             }
!                            return 0 != ISALNUM(ch);
                           } );
!   return ok;
  }
  
  bool
*************** in_file_section(void) { return current_d
*** 208,213 ****
--- 210,218 ----
  static cbl_refer_t *
  intrinsic_inconsistent_parameter( size_t n, cbl_refer_t *args );
  
+ static int
+ intrinsic_token_of( const char name[] );
+ 
  static inline bool
  namcpy(const YYLTYPE& loc, cbl_name_t tgt, const char *src ) {
    // snprintf(3): writes at most size bytes (including the terminating NUL byte)
*************** namcpy(const YYLTYPE& loc, cbl_name_t tg
*** 221,227 ****
  }
  
  cbl_field_t *
! new_alphanumeric( size_t capacity = MAXIMUM_ALPHA_LENGTH );
  
  static inline cbl_refer_t *
  new_reference( enum cbl_field_type_t type, const char *initial ) {
--- 226,238 ----
  }
  
  cbl_field_t *
! new_alphanumeric( size_t capacity = MAXIMUM_ALPHA_LENGTH,
! 		  const cbl_name_t name = nullptr );
! 
! static inline cbl_field_t *
! new_alphanumeric( const cbl_name_t name ) {
!   return new_alphanumeric(MAXIMUM_ALPHA_LENGTH, name);
! }
  
  static inline cbl_refer_t *
  new_reference( enum cbl_field_type_t type, const char *initial ) {
*************** new_reference_like( const cbl_field_t& s
*** 236,244 ****
    return new cbl_refer_t( new_temporary_like(skel) );
  }
  
! static void reject_refmod( YYLTYPE loc, cbl_refer_t );
! static bool require_pointer( YYLTYPE loc, cbl_refer_t );
! static bool require_numeric( YYLTYPE loc, cbl_refer_t );
  
  struct cbl_field_t * constant_of( size_t isym );
  
--- 247,255 ----
    return new cbl_refer_t( new_temporary_like(skel) );
  }
  
! static void reject_refmod( YYLTYPE loc, const cbl_refer_t& );
! static bool require_pointer( YYLTYPE loc, const cbl_refer_t& );
! static bool require_integer( YYLTYPE loc, const cbl_refer_t& );
  
  struct cbl_field_t * constant_of( size_t isym );
  
*************** struct evaluate_elem_t {
*** 281,287 ****
      relop_t oper;
     public:
      cbl_field_t *subject, *object, *cond;
!     case_t( cbl_field_t * subject )
        : oper(eq_op)
        , subject(subject)
        , object(NULL)
--- 292,298 ----
      relop_t oper;
     public:
      cbl_field_t *subject, *object, *cond;
!     explicit case_t( cbl_field_t * subject )
        : oper(eq_op)
        , subject(subject)
        , object(NULL)
*************** struct evaluate_elem_t {
*** 312,332 ****
    case_iter pcase;
  
    void dump() const {
!     dbgmsg( "nother=%zu label '%s', %zu cases", nother, label.name, cases.size() );
      std::for_each( cases.begin(), cases.end(), case_t::Dump );
    }
  
    explicit evaluate_elem_t( const char skel[] )
      : nother(0)
      , result( keep_temporary(FldConditional) )
      , pcase( cases.end() )
    {
-     static const cbl_label_t protolabel = { LblEvaluate };
-     label = protolabel;
      label.line = yylineno;
      if( -1 == snprintf(label.name, sizeof(label.name),
                         "%.*s_%d", (int)sizeof(label.name)-6, skel, yylineno) ) {
!       yyerror("could not create unique label '%s_%d' because it is too long",
                skel, yylineno);
      }
    }
--- 323,344 ----
    case_iter pcase;
  
    void dump() const {
!     dbgmsg( "nother=" HOST_SIZE_T_PRINT_UNSIGNED " label '%s', "
!             HOST_SIZE_T_PRINT_UNSIGNED " cases",
!             (fmt_size_t)nother, label.name, (fmt_size_t)cases.size() );
      std::for_each( cases.begin(), cases.end(), case_t::Dump );
    }
  
    explicit evaluate_elem_t( const char skel[] )
      : nother(0)
+     , label{LblEvaluate}
      , result( keep_temporary(FldConditional) )
      , pcase( cases.end() )
    {
      label.line = yylineno;
      if( -1 == snprintf(label.name, sizeof(label.name),
                         "%.*s_%d", (int)sizeof(label.name)-6, skel, yylineno) ) {
!       yyerror("could not create unique label %<%s_%d%> because it is too long",
                skel, yylineno);
      }
    }
*************** struct evaluate_elem_t {
*** 357,369 ****
  static class file_delete_args_t {
    cbl_file_t *file;
  public:
    void init( cbl_file_t *file ) {
      this->file = file;
    }
!   bool ready() const { return file != NULL; }
    void call_parser_file_delete( bool sequentially ) {
      parser_file_delete(file, sequentially);
!     file = NULL;
    }
  } file_delete_args;
  
--- 369,382 ----
  static class file_delete_args_t {
    cbl_file_t *file;
  public:
+   file_delete_args_t() : file(nullptr) {}
    void init( cbl_file_t *file ) {
      this->file = file;
    }
!   bool ready() const { return file != nullptr; }
    void call_parser_file_delete( bool sequentially ) {
      parser_file_delete(file, sequentially);
!     file = nullptr;
    }
  } file_delete_args;
  
*************** static struct file_read_args_t {
*** 379,385 ****
  
    void
    init( struct cbl_file_t *file,
!         cbl_refer_t record,
          cbl_refer_t *read_into,
          int where ) {
      this->file = file;
--- 392,398 ----
  
    void
    init( struct cbl_file_t *file,
!         const cbl_refer_t& record,
          cbl_refer_t *read_into,
          int where ) {
      this->file = file;
*************** public:
*** 428,434 ****
      this->file = file;
    }
    bool ready() const { return file != NULL; }
!   void call_parser_return_start(cbl_refer_t into = cbl_refer_t() ) {
      parser_return_start(file, into);
      file = NULL;
    }
--- 441,447 ----
      this->file = file;
    }
    bool ready() const { return file != NULL; }
!   void call_parser_return_start(const cbl_refer_t& into = cbl_refer_t() ) {
      parser_return_start(file, into);
      file = NULL;
    }
*************** static class file_rewrite_args_t {
*** 438,454 ****
    cbl_file_t *file;
    cbl_field_t *record;
  public:
    void init( cbl_file_t *file, cbl_field_t *record ) {
      this->file = file;
      this->record = record;
    }
!   bool ready() const { return file != NULL; }
    void call_parser_file_rewrite( bool sequentially ) {
      sequentially = sequentially || file->access == file_access_seq_e;
      if( file->access == file_access_rnd_e ) sequentially = false;
      parser_file_rewrite(file, record, sequentially);
!     file = NULL;
!     record = NULL;
    }
  } file_rewrite_args;
  
--- 451,468 ----
    cbl_file_t *file;
    cbl_field_t *record;
  public:
+   file_rewrite_args_t() :  file(nullptr), record(nullptr) {}
    void init( cbl_file_t *file, cbl_field_t *record ) {
      this->file = file;
      this->record = record;
    }
!   bool ready() const { return file != nullptr; }
    void call_parser_file_rewrite( bool sequentially ) {
      sequentially = sequentially || file->access == file_access_seq_e;
      if( file->access == file_access_rnd_e ) sequentially = false;
      parser_file_rewrite(file, record, sequentially);
!     file = nullptr;
!     record = nullptr;
    }
  } file_rewrite_args;
  
*************** static class file_start_args_t {
*** 456,466 ****
    cbl_file_t *file;
  public:
    file_start_args_t() : file(NULL) {}
!   void init( YYLTYPE loc, cbl_file_t *file ) {
      this->file = file;
      if( is_sequential(file) ) {
        error_msg(loc, "START invalid with sequential file %s", file->name);
      }
    }
    bool ready() const { return file != NULL; }
    void call_parser_file_start() {
--- 470,481 ----
    cbl_file_t *file;
  public:
    file_start_args_t() : file(NULL) {}
!   cbl_file_t * init( YYLTYPE loc, cbl_file_t *file ) {
      this->file = file;
      if( is_sequential(file) ) {
        error_msg(loc, "START invalid with sequential file %s", file->name);
      }
+     return file;
    }
    bool ready() const { return file != NULL; }
    void call_parser_file_start() {
*************** static class file_write_args_t {
*** 476,496 ****
    cbl_refer_t *advance;
  public:
    file_write_args_t()
!     : file(NULL)
      , after(false)
!     , advance(NULL)
    {}
    cbl_file_t * init( cbl_file_t *file,
                       cbl_field_t *data_source,
                       bool after,
!                      cbl_refer_t *advance ) {
      this->file = file;
      this->data_source = data_source;
      this->after = after;
      this->advance = new cbl_refer_t(*advance);
      return this->file;
    }
!   bool ready() const { return file != NULL; }
    void call_parser_file_write( bool sequentially ) {
      sequentially = sequentially || file->access == file_access_seq_e;
      parser_file_write(file, data_source, after, *advance, sequentially);
--- 491,512 ----
    cbl_refer_t *advance;
  public:
    file_write_args_t()
!     : file(nullptr)
!     , data_source(nullptr)
      , after(false)
!     , advance(nullptr)
    {}
    cbl_file_t * init( cbl_file_t *file,
                       cbl_field_t *data_source,
                       bool after,
!                      const cbl_refer_t *advance ) {
      this->file = file;
      this->data_source = data_source;
      this->after = after;
      this->advance = new cbl_refer_t(*advance);
      return this->file;
    }
!   bool ready() const { return file != nullptr; }
    void call_parser_file_write( bool sequentially ) {
      sequentially = sequentially || file->access == file_access_seq_e;
      parser_file_write(file, data_source, after, *advance, sequentially);
*************** struct arith_t {
*** 524,530 ****
    cbl_refer_t remainder;
    cbl_label_t *on_error, *not_error;
  
!   arith_t( cbl_arith_format_t format )
      : format(format), on_error(NULL), not_error(NULL)
    {}
    arith_t( cbl_arith_format_t format, refer_list_t * refers );
--- 540,546 ----
    cbl_refer_t remainder;
    cbl_label_t *on_error, *not_error;
  
!   explicit arith_t( cbl_arith_format_t format )
      : format(format), on_error(NULL), not_error(NULL)
    {}
    arith_t( cbl_arith_format_t format, refer_list_t * refers );
*************** struct arith_t {
*** 542,549 ****
      res.refer.field = cbl_field_of(symbol_at(tgt));
      tgts.push_back( res );
  
!     dbgmsg("%s:%d: SRC: %3zu %s", __func__, __LINE__, src, a.str());
!     dbgmsg("%s:%d:   to %3zu %s", __func__, __LINE__, tgt, res.refer.str());
    }
    void operator()( const corresponding_fields_t::const_reference elem ) {
      another_pair( elem.first, elem.second );
--- 558,567 ----
      res.refer.field = cbl_field_of(symbol_at(tgt));
      tgts.push_back( res );
  
!     dbgmsg("%s:%d: SRC: %3" GCC_PRISZ "u %s",
!            __func__, __LINE__, (fmt_size_t)src, a.str());
!     dbgmsg("%s:%d:   to %3" GCC_PRISZ "u %s",
!            __func__, __LINE__, (fmt_size_t)tgt, res.refer.str());
    }
    void operator()( const corresponding_fields_t::const_reference elem ) {
      another_pair( elem.first, elem.second );
*************** class eval_subject_t {
*** 606,612 ****
    void new_object_labels();
   public:
    eval_subject_t();
!   void append( cbl_refer_t field ) {
      columns.push_back(field);
      pcol = columns.begin();
    }
--- 624,630 ----
    void new_object_labels();
   public:
    eval_subject_t();
!   void append( const cbl_refer_t& field ) {
      columns.push_back(field);
      pcol = columns.begin();
    }
*************** public:
*** 737,742 ****
--- 755,761 ----
  
  
  static void dump_inspect( const cbl_inspect_t& i );
+ void dump_inspect_match( const cbl_inspect_match_t& M );
  
  struct perform_t {
    struct cbl_perform_tgt_t tgt;
*************** struct perform_t {
*** 776,786 ****
      cbl_refer_t table;
    } search;
  
!   perform_t( cbl_label_t *from, cbl_label_t *to = NULL )
      : tgt( from, to ), before(true)
!   {
!     search = {};
!   }
    ~perform_t() { varys.clear(); }
    cbl_field_t * until() {
      assert(!varys.empty());
--- 795,804 ----
      cbl_refer_t table;
    } search;
  
!   explicit perform_t( cbl_label_t *from, cbl_label_t *to = NULL )
      : tgt( from, to ), before(true)
!     , search()
!   {}
    ~perform_t() { varys.clear(); }
    cbl_field_t * until() {
      assert(!varys.empty());
*************** static struct cbl_label_t *
*** 879,885 ****
  paragraph_reference( const char name[], size_t section );
  
  static inline void
! list_add( list<cbl_num_result_t>& list, cbl_refer_t refer, int round ) {
    struct cbl_num_result_t arg = { static_cast<cbl_round_t>(round), refer };
    list.push_back(arg);
  }
--- 897,903 ----
  paragraph_reference( const char name[], size_t section );
  
  static inline void
! list_add( list<cbl_num_result_t>& list, const cbl_refer_t& refer, int round ) {
    struct cbl_num_result_t arg = { static_cast<cbl_round_t>(round), refer };
    list.push_back(arg);
  }
*************** teed_up_names() {
*** 917,1046 ****
    return name_queue_t::namelist_of( name_queue.peek() );
  }
  
! class tokenset_t {
!   std::vector<const char *>token_names;
!   std::map <std::string, int> tokens;
!   std::set<std::string> cobol_words;
! 
!   static std::string
!   lowercase( const cbl_name_t name ) {
!     cbl_name_t lname;
!     std::transform(name, name + strlen(name) + 1, lname, ftolower);
!     return lname;
!   }
! 
!  public:
!   tokenset_t();
!   int find( const cbl_name_t name, bool include_intrinsics );
! 
!   bool equate( const YYLTYPE& loc, int token, const cbl_name_t name ) {
!     auto lname( lowercase(name) );
!     auto cw = cobol_words.insert(lname);
!     if( ! cw.second ) {
!       error_msg(loc, "COBOL-WORDS EQUATE: %s may appear but once", name);
!       return false;
!     }
!     auto p = tokens.find(lowercase(name));
!     bool fOK = p == tokens.end();
!     if( fOK ) { // name not already in use
!       tokens[lname] = token;
!     } else {
!       error_msg(loc, "EQUATE: %s already defined as a token", name);
!     }
!     return fOK;
!   }
!   bool undefine( const YYLTYPE& loc, const cbl_name_t name ) {
!     auto lname( lowercase(name) );
!     auto cw = cobol_words.insert(lname);
!     if( ! cw.second ) {
!       error_msg(loc, "COBOL-WORDS UNDEFINE: %s may appear but once", name);
!       return false;
!     }
!     auto p = tokens.find(lname);
!     bool fOK = p != tokens.end();
!     if( fOK ) { // name in use
!       tokens.erase(p);
!     } else {
!       error_msg(loc, "UNDEFINE: %s not defined as a token", name);
!     }
!     return fOK;
!   }
!   bool substitute( const YYLTYPE& loc, const cbl_name_t extant, int token, const cbl_name_t name ) {
!     return equate( loc, token, name ) && undefine( loc, extant );
!   }
!   bool reserve( const YYLTYPE& loc, const cbl_name_t name ) {
!     auto lname( lowercase(name) );
!     auto cw = cobol_words.insert(lname);
!     if( ! cw.second ) {
!       error_msg(loc, "COBOL-WORDS RESERVE: %s may appear but once", name);
!       return false;
!     }
!     tokens[lname] = -42;
!     return true;
!   }
!   int redefined_as( const cbl_name_t name ) {
!     auto lname( lowercase(name) );
!     if( cobol_words.find(lname) != cobol_words.end() ) {
!       auto p = tokens.find(lname);
!       if( p != tokens.end() ) {
!         return p->second;
!       }
!     }
!     return 0;
!   }
!   const char * name_of( int tok ) const {
!     tok -= (255 + 3);
!     gcc_assert(0 <= tok && size_t(tok) < token_names.size());
!     return token_names[tok];
!   }
! };
! 
! class current_tokens_t {
!   tokenset_t tokens;
!  public:
!   current_tokens_t() {}
!   int find( const cbl_name_t name, bool include_intrinsics ) {
!     return tokens.find(name, include_intrinsics);
!   }
!   bool equate( const YYLTYPE& loc, cbl_name_t keyword, const cbl_name_t name ) {
!     int token = keyword_tok(keyword);
!     if( 0 == token ) {
!       error_msg(loc, "EQUATE %s: not a valid token", keyword);
!       return false;
!     }
!     return tokens.equate(loc, token, name);
!   }
!   bool undefine( const YYLTYPE& loc, cbl_name_t keyword ) {
!     return tokens.undefine(loc, keyword);
!   }
!   bool substitute( const YYLTYPE& loc, cbl_name_t keyword, const cbl_name_t name ) {
!     int token = keyword_tok(keyword);
!     if( 0 == token ) {
!       error_msg(loc, "SUBSTITUTE %s: not a valid token", keyword);
!       return false;
!     }
!     return tokens.substitute(loc, keyword, token, name);
!   }
!   bool reserve( const YYLTYPE& loc, const cbl_name_t name ) {
!     return tokens.reserve(loc, name);
!   }
!   int redefined_as( const cbl_name_t name ) {
!     return tokens.redefined_as(name);
!   }
!   const char * name_of( int tok ) const {
!     return tokens.name_of(tok);
!   }
! } tokens;
  
  int
  redefined_token( const cbl_name_t name ) {
!   return tokens.redefined_as(name);
  }
  
  struct file_list_t {
    list<cbl_file_t*> files;
    file_list_t() {}
!   file_list_t( cbl_file_t* file ) {
      files.push_back(file);
    }
    file_list_t( file_list_t& that ) : files(that.files.size()) {
--- 935,951 ----
    return name_queue_t::namelist_of( name_queue.peek() );
  }
  
! #define cdf_tokens cdf_current_tokens()
  
  int
  redefined_token( const cbl_name_t name ) {
!   return cdf_tokens.redefined_as(name);
  }
  
  struct file_list_t {
    list<cbl_file_t*> files;
    file_list_t() {}
!   explicit file_list_t( cbl_file_t* file ) {
      files.push_back(file);
    }
    file_list_t( file_list_t& that ) : files(that.files.size()) {
*************** struct file_list_t {
*** 1054,1063 ****
  
  struct field_list_t {
    list<cbl_field_t*> fields;
!   field_list_t( cbl_field_t *field ) {
      fields.push_back(field);
    }
!   explicit field_list_t() {}
  };
  
  cbl_field_t **
--- 959,973 ----
  
  struct field_list_t {
    list<cbl_field_t*> fields;
!   field_list_t() {}
!   explicit field_list_t( cbl_field_t *field ) {
      fields.push_back(field);
    }
!   std::vector<const cbl_field_t*>
!   as_vector() const {
!     std::vector<const cbl_field_t*> output( fields.begin(), fields.end() );
!     return output;
!   }
  };
  
  cbl_field_t **
*************** cbl_file_t **
*** 1084,1090 ****
  
  struct refer_list_t {
    list<cbl_refer_t> refers;
!   refer_list_t( cbl_refer_t *refer ) {
      if( refer ) {
        refers.push_back(*refer);
        delete refer;
--- 994,1000 ----
  
  struct refer_list_t {
    list<cbl_refer_t> refers;
!   explicit refer_list_t( cbl_refer_t *refer ) {
      if( refer ) {
        refers.push_back(*refer);
        delete refer;
*************** struct refer_list_t {
*** 1106,1118 ****
      refers.clear();
      return tgt;
    }
  };
  
  struct refer_marked_list_t : public refer_list_t {
    cbl_refer_t *marker;
  
    refer_marked_list_t()  : refer_list_t(NULL),  marker(NULL) {}
!   refer_marked_list_t( cbl_refer_t *marker, refer_list_t *refers )
      : refer_list_t(*refers), marker(marker) {}
    refer_marked_list_t( cbl_refer_t *marker, cbl_refer_t *input )
      : refer_list_t(input)
--- 1016,1035 ----
      refers.clear();
      return tgt;
    }
+   std::vector<cbl_refer_t>
+   vectorize() {
+     std::vector<cbl_refer_t> tgt(refers.size());
+     std::copy(refers.begin(), refers.end(), tgt.begin());
+     refers.clear();
+     return tgt;
+   }
  };
  
  struct refer_marked_list_t : public refer_list_t {
    cbl_refer_t *marker;
  
    refer_marked_list_t()  : refer_list_t(NULL),  marker(NULL) {}
!   refer_marked_list_t( cbl_refer_t *marker, const refer_list_t *refers )
      : refer_list_t(*refers), marker(marker) {}
    refer_marked_list_t( cbl_refer_t *marker, cbl_refer_t *input )
      : refer_list_t(input)
*************** struct refer_marked_list_t : public refe
*** 1132,1138 ****
  struct refer_collection_t {
    list<refer_marked_list_t> lists;
  
!   refer_collection_t( const refer_marked_list_t& marked_list )
    {
      lists.push_back( marked_list );
    }
--- 1049,1055 ----
  struct refer_collection_t {
    list<refer_marked_list_t> lists;
  
!   explicit refer_collection_t( const refer_marked_list_t& marked_list )
    {
      lists.push_back( marked_list );
    }
*************** struct refer_collection_t {
*** 1158,1205 ****
    }
  };
  
! struct ast_inspect_oper_t {
!   cbl_inspect_bound_t bound;  // CHARACTERS/ALL/LEADING/FIRST
!   std::list<cbl_inspect_match_t>    matches;
!   std::list<cbl_inspect_replace_t> replaces;
! 
! ast_inspect_oper_t( const cbl_inspect_match_t& match,
!                     cbl_inspect_bound_t bound = bound_characters_e )
!     : bound(bound)
!   {
!     matches.push_back(match);
!   }
!   ast_inspect_oper_t( const cbl_inspect_replace_t& replace,
!                     cbl_inspect_bound_t bound = bound_characters_e )
!     : bound(bound)
!   {
!     replaces.push_back(replace);
!   }
! };
! 
! struct ast_inspect_t : public std::list<cbl_inspect_oper_t> {
!   cbl_refer_t tally; // field is NULL for REPLACING
!   const std::list<cbl_inspect_oper_t>& opers() const { return *this; }
! };
! 
! struct ast_inspect_list_t : public std::list<cbl_inspect_t> {
!   ast_inspect_list_t( const cbl_inspect_t& insp ) {
!     push_back(insp);
!   }
! 
!   cbl_inspect_t * as_array() {
!     cbl_inspect_t *output = new cbl_inspect_t[ size() ];
!     std::copy( begin(), end(), output );
!     return output;
!   }
! };
! 
! void ast_inspect( cbl_refer_t& input, bool backward, ast_inspect_list_t& inspects );
  
  template <typename E>
  struct elem_list_t {
    list<E*> elems;
!   elem_list_t( E *elem ) {
      elems.push_back(elem);
    }
    void clear() {
--- 1075,1087 ----
    }
  };
  
! void ast_inspect( YYLTYPE loc, cbl_refer_t& input, bool backward,
!                   cbl_inspect_opers_t& inspects );
  
  template <typename E>
  struct elem_list_t {
    list<E*> elems;
!   explicit elem_list_t( E *elem ) {
      elems.push_back(elem);
    }
    void clear() {
*************** template <typename L, typename E>
*** 1224,1230 ****
  
  struct unstring_tgt_t {
    cbl_refer_t *tgt, *delimiter, *count;
!   unstring_tgt_t( cbl_refer_t *tgt,
                    cbl_refer_t *delimiter = NULL,
                    cbl_refer_t *count = NULL )
      : tgt(tgt), delimiter(delimiter), count(count)
--- 1106,1112 ----
  
  struct unstring_tgt_t {
    cbl_refer_t *tgt, *delimiter, *count;
!   explicit unstring_tgt_t( cbl_refer_t *tgt,
                    cbl_refer_t *delimiter = NULL,
                    cbl_refer_t *count = NULL )
      : tgt(tgt), delimiter(delimiter), count(count)
*************** private:
*** 1248,1254 ****
  struct unstring_tgt_list_t {
    list<unstring_tgt_t> unstring_tgts;
  
!   unstring_tgt_list_t( unstring_tgt_t *unstring_tgt ) {
      unstring_tgts.push_back(*unstring_tgt);
      delete unstring_tgt;
    }
--- 1130,1136 ----
  struct unstring_tgt_list_t {
    list<unstring_tgt_t> unstring_tgts;
  
!   explicit unstring_tgt_list_t( unstring_tgt_t *unstring_tgt ) {
      unstring_tgts.push_back(*unstring_tgt);
      delete unstring_tgt;
    }
*************** struct unstring_tgt_list_t {
*** 1270,1276 ****
  
  struct unstring_into_t : public unstring_tgt_list_t {
    cbl_refer_t pointer, tally;
!   unstring_into_t( unstring_tgt_list_t *tgt_list,
                     cbl_refer_t *pointer = NULL,
                     cbl_refer_t *tally = NULL )
      : unstring_tgt_list_t(*tgt_list)
--- 1152,1158 ----
  
  struct unstring_into_t : public unstring_tgt_list_t {
    cbl_refer_t pointer, tally;
!   explicit unstring_into_t( unstring_tgt_list_t *tgt_list,
                     cbl_refer_t *pointer = NULL,
                     cbl_refer_t *tally = NULL )
      : unstring_tgt_list_t(*tgt_list)
*************** struct unstring_into_t : public unstring
*** 1286,1292 ****
  struct ffi_args_t {
    list<cbl_ffi_arg_t> elems;
  
!   ffi_args_t( cbl_ffi_arg_t *arg ) {
      this->push_back(arg);
    }
  
--- 1168,1174 ----
  struct ffi_args_t {
    list<cbl_ffi_arg_t> elems;
  
!   explicit ffi_args_t( cbl_ffi_arg_t *arg ) {
      this->push_back(arg);
    }
  
*************** struct file_sort_io_t {
*** 1362,1369 ****
    file_list_t file_list;
    cbl_perform_tgt_t tgt;
  
!   file_sort_io_t( file_list_t& files ) : file_list(files) {}
!   file_sort_io_t( cbl_perform_tgt_t& tgt ) : tgt(tgt.from(), tgt.to()) {}
    size_t nfile() const { return file_list.files.size(); }
  };
  
--- 1244,1251 ----
    file_list_t file_list;
    cbl_perform_tgt_t tgt;
  
!   explicit file_sort_io_t( file_list_t& files ) : file_list(files) {}
!   explicit file_sort_io_t( cbl_perform_tgt_t& tgt ) : tgt(tgt.from(), tgt.to()) {}
    size_t nfile() const { return file_list.files.size(); }
  };
  
*************** struct merge_t {
*** 1378,1391 ****
    cbl_perform_tgt_t tgt;
    list<cbl_file_t*> outputs;
  
!   merge_t( cbl_file_t *input ) : master(input), type(output_unknown_e) {}
  };
  
  static list<merge_t> merges;
  
  static inline merge_t&
  merge_alloc( cbl_file_t *file ) {
!   merges.push_back(file);
    return merges.back();
  }
  
--- 1260,1273 ----
    cbl_perform_tgt_t tgt;
    list<cbl_file_t*> outputs;
  
!   explicit merge_t( cbl_file_t *input ) : master(input), type(output_unknown_e) {}
  };
  
  static list<merge_t> merges;
  
  static inline merge_t&
  merge_alloc( cbl_file_t *file ) {
!   merges.push_back(merge_t(file));
    return merges.back();
  }
  
*************** static  list<cbl_refer_t> lhs;
*** 1406,1412 ****
  struct vargs_t {
    std::list<cbl_refer_t> args;
      vargs_t() {}
!     vargs_t( struct cbl_refer_t *p ) { args.push_back(*p); delete p; }
      void push_back( cbl_refer_t *p ) { args.push_back(*p); delete p; }
  };
  
--- 1288,1294 ----
  struct vargs_t {
    std::list<cbl_refer_t> args;
      vargs_t() {}
!     explicit vargs_t( struct cbl_refer_t *p ) { args.push_back(*p); delete p; }
      void push_back( cbl_refer_t *p ) { args.push_back(*p); delete p; }
  };
  
*************** class prog_descr_t {
*** 1425,1436 ****
    std::set<std::string> call_targets, subprograms;
   public:
    std::set<function_descr_t> function_repository;
!   size_t program_index, declaratives_index;
    cbl_label_t *declaratives_eval, *paragraph, *section;
    const char *collating_sequence;
    struct locale_t {
      cbl_name_t name; const char *os_name;
!     locale_t(const cbl_name_t name = NULL, const char *os_name = NULL)
        : name(""), os_name(os_name) {
        if( name ) {
          bool ok = namcpy(YYLTYPE(), this->name, name);
--- 1307,1319 ----
    std::set<std::string> call_targets, subprograms;
   public:
    std::set<function_descr_t> function_repository;
!   size_t program_index;
    cbl_label_t *declaratives_eval, *paragraph, *section;
    const char *collating_sequence;
    struct locale_t {
      cbl_name_t name; const char *os_name;
!     locale_t() : name(""), os_name(nullptr) {}
!     locale_t(const cbl_name_t name, const char *os_name)
        : name(""), os_name(os_name) {
        if( name ) {
          bool ok = namcpy(YYLTYPE(), this->name, name);
*************** class prog_descr_t {
*** 1438,1456 ****
        }
      }
    } locale;
-   cbl_call_convention_t call_convention;
    cbl_options_t options;
  
!   prog_descr_t( size_t isymbol )
      : program_index(isymbol)
-     , declaratives_index(0)
      , declaratives_eval(NULL)
      , paragraph(NULL)
      , section(NULL)
      , collating_sequence(NULL)
!   {
!     call_convention = current_call_convention();
!   }
  
   std::set<std::string> external_targets() {
     std::set<std::string> externals;
--- 1321,1335 ----
        }
      }
    } locale;
    cbl_options_t options;
  
!   explicit prog_descr_t( size_t isymbol )
      : program_index(isymbol)
      , declaratives_eval(NULL)
      , paragraph(NULL)
      , section(NULL)
      , collating_sequence(NULL)
!   {}
  
   std::set<std::string> external_targets() {
     std::set<std::string> externals;
*************** static cbl_label_t *  implicit_section()
*** 1539,1562 ****
  
  class program_stack_t : protected  std::stack<prog_descr_t> {
    struct pending_t {
-     cbl_call_convention_t call_convention;
      bool initial;
!     pending_t()
!       : call_convention(cbl_call_convention_t(0))
!       , initial(false)
!     {}
    } pending;
   public:
-   cbl_call_convention_t
-   pending_call_convention( cbl_call_convention_t convention ) {
-     return pending.call_convention = convention;
-   }
    bool pending_initial() { return pending.initial = true; }
  
    void push( prog_descr_t descr ) {
-     cbl_call_convention_t current_call_convention = cbl_call_cobol_e;
-     if( !empty() ) current_call_convention = top().call_convention;
-     descr.call_convention = current_call_convention;
      std::stack<prog_descr_t>& me(*this);
      me.push(descr);
    }
--- 1418,1430 ----
  
  class program_stack_t : protected  std::stack<prog_descr_t> {
    struct pending_t {
      bool initial;
!     pending_t() : initial(false) {}
    } pending;
   public:
    bool pending_initial() { return pending.initial = true; }
  
    void push( prog_descr_t descr ) {
      std::stack<prog_descr_t>& me(*this);
      me.push(descr);
    }
*************** class program_stack_t : protected  std::
*** 1582,1590 ****
    }
  
    void apply_pending() {
-     if( size() == 1 && 0 != pending.call_convention ) {
-       top().call_convention = pending.call_convention;
-   }
      if( pending.initial ) {
        auto e = symbol_at(top().program_index);
        auto prog(cbl_label_of(e));
--- 1450,1455 ----
*************** class program_stack_t : protected  std::
*** 1592,1602 ****
      }
    }
  
    cbl_label_t *first_declarative() {
      auto eval = top().declaratives_eval;
      if( eval ) return eval;
      // scan stack container for declaratives
!     for( auto& prog : c ) {
        if( prog.declaratives_eval ) {
          eval = prog.declaratives_eval;
          break;
--- 1457,1468 ----
      }
    }
  
+   // cppcheck-suppress-begin useStlAlgorithm
    cbl_label_t *first_declarative() {
      auto eval = top().declaratives_eval;
      if( eval ) return eval;
      // scan stack container for declaratives
!     for( const auto& prog : c ) {
        if( prog.declaratives_eval ) {
          eval = prog.declaratives_eval;
          break;
*************** class program_stack_t : protected  std::
*** 1604,1609 ****
--- 1470,1476 ----
      }
      return eval;
    }
+   // cppcheck-suppress-end useStlAlgorithm
  };
  
  struct rel_part_t {
*************** struct rel_part_t {
*** 1611,1619 ****
    bool has_relop, invert;
    relop_t relop;
  
!   rel_part_t( cbl_refer_t *operand = NULL,
!               relop_t relop = relop_t(-1),
!               bool invert = false )
      : operand(operand),
        has_relop(relop != -1),
        invert(invert),
--- 1478,1490 ----
    bool has_relop, invert;
    relop_t relop;
  
!   rel_part_t()
!     : operand(nullptr),
!       has_relop(false),
!       invert(false),
!       relop(relop_t(-1))
!   {}
!   rel_part_t( cbl_refer_t *operand, relop_t relop, bool invert )
      : operand(operand),
        has_relop(relop != -1),
        invert(invert),
*************** struct rel_part_t {
*** 1647,1653 ****
  class log_expr_t {
    cbl_field_t *orable, *andable;
   public:
!   log_expr_t( cbl_field_t *init ) : orable(NULL), andable(init) {
      if( ! is_conditional(init) ) {
        dbgmsg("%s:%d: logic error: %s is not a truth value",
                 __func__, __LINE__, name_of(init));
--- 1518,1524 ----
  class log_expr_t {
    cbl_field_t *orable, *andable;
   public:
!   explicit log_expr_t( cbl_field_t *init ) : orable(NULL), andable(init) {
      if( ! is_conditional(init) ) {
        dbgmsg("%s:%d: logic error: %s is not a truth value",
                 __func__, __LINE__, name_of(init));
*************** static class current_t {
*** 1706,1723 ****
    int first_statement;
    bool in_declaratives;
    // from command line or early TURN
!   std::list<cbl_exception_files_t> cobol_exceptions;
  
    error_labels_t error_labels;
  
    static void declarative_execute( cbl_label_t *eval ) {
-     if( !eval ) {
-       if( !enabled_exceptions.empty() ) {
-         auto index = new_temporary(FldNumericBin5);
-         parser_match_exception(index, NULL);
-       }
-       return;
-     }
      assert(eval);
      auto iprog = symbol_elem_of(eval)->program;
      if( iprog  == current_program_index() ) {
--- 1577,1587 ----
    int first_statement;
    bool in_declaratives;
    // from command line or early TURN
!   std::list<exception_turn_t> exception_turns;
  
    error_labels_t error_labels;
  
    static void declarative_execute( cbl_label_t *eval ) {
      assert(eval);
      auto iprog = symbol_elem_of(eval)->program;
      if( iprog  == current_program_index() ) {
*************** static class current_t {
*** 1813,1818 ****
--- 1677,1686 ----
    class declaratives_t : protected declaratives_list_t {
      struct file_exception_t {
        ec_type_t type; uint32_t file;
+       file_exception_t() : type(ec_none_e), file(0) {}
+       file_exception_t(ec_type_t type, uint32_t file)
+         : type(type), file(file)
+       {}
        bool operator<( const file_exception_t& that ) const {
          if( type == that.type ) return file < that.file;
          return type < that.type;
*************** static class current_t {
*** 1820,1825 ****
--- 1688,1700 ----
      };
      std::set<file_exception_t> file_exceptions;
     public:
+     declaratives_t() {}
+     // current compiled data for enabled ECs and Declaratives, used by library.
+     struct runtime_t {
+       tree ena, dcl;
+       runtime_t() : ena(nullptr), dcl(nullptr) {}
+     } runtime;
+     
      bool empty() const {
        return declaratives_list_t::empty();
      }
*************** static class current_t {
*** 1837,1843 ****
        }
        for( auto f = declarative.files;
             f && f < declarative.files + declarative.nfile; f++ ) {
!         file_exception_t ex = { declarative.type, *f };
          auto result = file_exceptions.insert(ex);
          if( ! result.second ) {
            yyerror("%s defined twice for %s",
--- 1712,1718 ----
        }
        for( auto f = declarative.files;
             f && f < declarative.files + declarative.nfile; f++ ) {
!         file_exception_t ex( declarative.type, *f );
          auto result = file_exceptions.insert(ex);
          if( ! result.second ) {
            yyerror("%s defined twice for %s",
*************** static class current_t {
*** 1849,1862 ****
        declaratives_list_t::push_back(declarative);
        return true;
      }
    } declaratives;
  
    void exception_add( ec_type_t ec,  bool enabled = true) {
!     std::set<size_t> files;
!     enabled_exceptions.turn_on_off(enabled,
!                                    false,  // for now
!                                    ec, files);
!     if( yydebug) enabled_exceptions.dump();
    }
  
    bool typedef_add( const cbl_field_t *field ) {
--- 1724,1769 ----
        declaratives_list_t::push_back(declarative);
        return true;
      }
+ 
+     // cppcheck-suppress-begin useStlAlgorithm
+     uint32_t status() const {
+       uint32_t status_word = 0;
+       for( auto dcl : *this ) {
+         status_word |= (EC_ALL_E & dcl.type );
+       }
+       return status_word;
+     }
+     // cppcheck-suppress-end useStlAlgorithm
+ 
+     bool has_format_1() const {
+       return std::any_of( begin(), end(),
+                           []( const cbl_declarative_t& dcl ) {
+                             return dcl.is_format_1();
+                           } );
+     }
+ 
+     std::vector<uint64_t> 
+     encode() const {
+       std::vector<uint64_t> encoded;
+       auto p = std::back_inserter(encoded);
+       for( const auto& dcl : *this ) {
+         *p++ = dcl.section;
+         *p++ = dcl.global;
+         *p++ = dcl.type;
+         *p++ = dcl.nfile;
+         p = std::copy(dcl.files, std::end(dcl.files), p);
+         *p++ = dcl.mode;
+       }
+       return encoded;
+     }
+ 
    } declaratives;
  
    void exception_add( ec_type_t ec,  bool enabled = true) {
!     exception_turns.push_back(exception_turn_t(ec, enabled));
!   }
!   std::list<exception_turn_t>& pending_exceptions() {
!     return exception_turns;
    }
  
    bool typedef_add( const cbl_field_t *field ) {
*************** static class current_t {
*** 1866,1872 ****
    const cbl_field_t * has_typedef( const cbl_field_t *field ) {
      auto found = typedefs.find(field);
      return found == typedefs.end()? NULL : *found;
-     return found == typedefs.end()? NULL : *found;
    }
  
    void udf_add( size_t isym ) {
--- 1773,1778 ----
*************** static class current_t {
*** 1922,1933 ****
  
    std::list<std::string>& debugging_declaratives(bool all) const {
      const char *para = programs.top().paragraph->name;
!     auto declaratives = debugging_clients.find(all? ":all:" : para);
!     if( declaratives == debugging_clients.end() ) {
        static std::list<std::string> empty;
        return empty;
      }
!     return declaratives->second;
    }
  
    bool
--- 1828,1839 ----
  
    std::list<std::string>& debugging_declaratives(bool all) const {
      const char *para = programs.top().paragraph->name;
!     auto client = debugging_clients.find(all? ":all:" : para);
!     if( client == debugging_clients.end() ) {
        static std::list<std::string> empty;
        return empty;
      }
!     return client->second;
    }
  
    bool
*************** static class current_t {
*** 1950,1968 ****
      return programs.top().options.default_round = mode;
    }
  
-   cbl_call_convention_t
-   call_convention() {
-     return programs.empty()? cbl_call_cobol_e : programs.top().call_convention;
-   }
-   cbl_call_convention_t
-   call_convention( cbl_call_convention_t convention) {
-     if( programs.empty() ) {
-       return programs.pending_call_convention(convention);
-     }
-     auto& prog( programs.top() );
-     return prog.call_convention = convention;
-   }
- 
    const char *
    locale() {
      return programs.empty()? NULL : programs.top().locale.os_name;
--- 1856,1861 ----
*************** static class current_t {
*** 1998,2004 ****
  
      const cbl_label_t *L;
      if( (L = symbol_program_add(parent, &label)) == NULL ) return false;
!     programs.push( symbol_index(symbol_elem_of(L)));
      programs.apply_pending();
  
      bool fOK = symbol_at(programs.top().program_index) + 1 == symbols_end();
--- 1891,1897 ----
  
      const cbl_label_t *L;
      if( (L = symbol_program_add(parent, &label)) == NULL ) return false;
!     programs.push( prog_descr_t(symbol_index(symbol_elem_of(L))) );
      programs.apply_pending();
  
      bool fOK = symbol_at(programs.top().program_index) + 1 == symbols_end();
*************** static class current_t {
*** 2022,2031 ****
      assert(!programs.empty());
      return programs.top().program_index;
    }
-   size_t  program_declaratives(void) const {
-     if( programs.empty() ) return 0;
-     return programs.top().declaratives_index;
-   }
    const cbl_label_t * program(void) {
      return programs.empty()?
                  NULL : cbl_label_of(symbol_at(programs.top().program_index));
--- 1915,1920 ----
*************** static class current_t {
*** 2039,2050 ****
  
    bool is_first_statement( const YYLTYPE& loc )  {
      if( ! in_declaratives && first_statement == 0 ) {
!       if( ! symbol_label_section_exists(program_index()) ) {
!         if( ! dialect_ibm() ) {
!           error_msg(loc,
!                     "Per ISO a program with DECLARATIVES must begin with a SECTION, "
!                     "requires -dialect ibm");
!         }
        }
        first_statement = loc.first_line;
        return true;
--- 1928,1943 ----
  
    bool is_first_statement( const YYLTYPE& loc )  {
      if( ! in_declaratives && first_statement == 0 ) {
!       auto eval = programs.top().declaratives_eval;
!       if( eval ) {
! 	size_t ilabel = symbol_index(symbol_elem_of(eval));
! 	if( ! symbol_label_section_exists(ilabel) ) {
! 	  if( ! dialect_ibm() ) {
! 	    error_msg(loc,
! 		      "Per ISO a program with DECLARATIVES must begin with a SECTION, "
! 		      "requires %<-dialect ibm%>");
! 	  }
! 	}
        }
        first_statement = loc.first_line;
        return true;
*************** static class current_t {
*** 2060,2072 ****
     * ISO, in new_program.
     */
    std::set<std::string>  end_program() {
      if( enabled_exceptions.size() ) {
!       declaratives_evaluate(ec_none_e);
      }
  
      assert(!programs.empty());
  
!     procref_t *ref = ambiguous_reference(program_index());
      std::set<std::string> externals = programs.top().external_targets();
  
      /*
--- 1953,1966 ----
     * ISO, in new_program.
     */
    std::set<std::string>  end_program() {
+     cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() );
      if( enabled_exceptions.size() ) {
!       declaratives_evaluate();
      }
  
      assert(!programs.empty());
  
!     const procref_t *ref = ambiguous_reference(program_index());
      std::set<std::string> externals = programs.top().external_targets();
  
      /*
*************** static class current_t {
*** 2077,2085 ****
--- 1971,1989 ----
       * subprograms, and whether or not they are COMMON. PROGRAM may be
       * the caller, or a subprogram could call COMMON sibling.
       */
+ 
+     static std::unordered_set<size_t> callers_we_have_seen;
      if( programs.size() == 1 ) {
        if( yydebug ) parser_call_targets_dump();
        for( size_t caller : symbol_program_programs() ) {
+         // We are running through the entire growing list of called programs
+         // at the point of each END PROGRAM.  This confuses the name changing
+         // routines, so we use a std::set to avoid doing callers more than
+         // once.
+         if( callers_we_have_seen.find(caller) != callers_we_have_seen.end() )
+           {
+           continue;
+           }
          const char *caller_name = cbl_label_of(symbol_at(caller))->name;
          for( auto callable : symbol_program_callables(caller) ) {
            auto called = cbl_label_of(symbol_at(callable));
*************** static class current_t {
*** 2087,2097 ****
              called->mangled_name? called->mangled_name : called->name;
  
            size_t n =
!             parser_call_target_update(caller, called->name, mangled_name);
            // Zero is not an error
!           dbgmsg("updated %zu calls from #%-3zu (%s) s/%s/%s/",
!                  n, caller, caller_name, called->name, mangled_name);
          }
        }
        if( yydebug ) parser_call_targets_dump();
      }
--- 1991,2006 ----
              called->mangled_name? called->mangled_name : called->name;
  
            size_t n =
!             parser_call_target_update(caller,
!                                       called->name,
!                                       mangled_name);
            // Zero is not an error
!           dbgmsg("updated " HOST_SIZE_T_PRINT_UNSIGNED
!                  " calls from #%-3" GCC_PRISZ "u (%s) s/%s/%s/",
!                  (fmt_size_t)n, (fmt_size_t)caller, caller_name,
!                  called->name, mangled_name);
          }
+       callers_we_have_seen.insert(caller);
        }
        if( yydebug ) parser_call_targets_dump();
      }
*************** static class current_t {
*** 2121,2127 ****
      return symbol_index(symbol_elem_of(section));
    }
  
!   cbl_label_t *doing_declaratives( bool begin ) {
      if( begin ) {
        in_declaratives = true;
        return NULL;
--- 2030,2036 ----
      return symbol_index(symbol_elem_of(section));
    }
  
!   cbl_label_t * doing_declaratives( bool begin ) {
      if( begin ) {
        in_declaratives = true;
        return NULL;
*************** static class current_t {
*** 2131,2154 ****
      if( declaratives.empty() ) return NULL;
      assert(!declaratives.empty());
  
!     size_t idcl = symbol_declaratives_add(program_index(), declaratives.as_list());
!     programs.top().declaratives_index = idcl;
  
      // Create section to evaluate declaratives.  Given them unique names so
      // that we can figure out what is going on in a trace or looking at the
      // assembly language.
!     static int eval_count=1;
!     char eval[32];
!     char lave[32];
      sprintf(eval, "_DECLARATIVES_EVAL%d", eval_count);
!     sprintf(lave, "_DECLARATIVES_LAVE%d", eval_count);
!     eval_count +=1 ;
  
      struct cbl_label_t*& eval_label = programs.top().declaratives_eval;
      eval_label = label_add(LblSection, eval, yylineno);
      struct cbl_label_t * lave_label = label_add(LblSection, lave, yylineno);
      ast_enter_section(eval_label);
!     declarative_runtime_match(cbl_field_of(symbol_at(idcl)), lave_label);
      return lave_label;
    }
  
--- 2040,2066 ----
      if( declaratives.empty() ) return NULL;
      assert(!declaratives.empty());
  
!     declaratives.runtime.dcl = parser_compile_dcls(declaratives.encode());
  
      // Create section to evaluate declaratives.  Given them unique names so
      // that we can figure out what is going on in a trace or looking at the
      // assembly language.
!     static int eval_count = 1;
!     char eval[32], lave[32];
!     
      sprintf(eval, "_DECLARATIVES_EVAL%d", eval_count);
!     sprintf(lave, "_DECLARATIVES_LAVE%d", eval_count++);
  
      struct cbl_label_t*& eval_label = programs.top().declaratives_eval;
      eval_label = label_add(LblSection, eval, yylineno);
      struct cbl_label_t * lave_label = label_add(LblSection, lave, yylineno);
+ 
      ast_enter_section(eval_label);
! 
!     declarative_runtime_match(declaratives.as_list(), lave_label);
!     
!     parser_label_label(lave_label);
!     
      return lave_label;
    }
  
*************** static class current_t {
*** 2156,2169 ****
      std::swap( programs.top().section, section );
      return section;
    }
  
    /*
     * END DECLARATIVES causes:
!    *   1. Add DECLARATIVES symbol, containing criteria blob.
!    *   2. Create section _DECLARATIVES_EVAL
     *      and exit label _DECLARATIVES_LAVE
!    *   3. declarative_runtime_match generates runtime evaluation "ladder".
!    *   4. After a declarative is executed, control branches to the exit label.
     *
     * After each verb, we call declaratives_evaluate,
     * which PERFORMs _DECLARATIVES_EVAL.
--- 2068,2099 ----
      std::swap( programs.top().section, section );
      return section;
    }
+   
+   ec_type_t ec_type_of( file_status_t status ) {
+     static std::vector<ec_type_t> ec_by_status {
+       /* 0 */ ec_none_e, // ec_io_warning_e if low byte is nonzero
+       /* 1 */ ec_io_at_end_e, 
+       /* 2 */ ec_io_invalid_key_e,
+       /* 3 */ ec_io_permanent_error_e,
+       /* 4 */ ec_io_logic_error_e,
+       /* 5 */ ec_io_record_operation_e,
+       /* 6 */ ec_io_file_sharing_e,
+       /* 7 */ ec_io_record_content_e,
+       /* 8 */ ec_io_imp_e, // unused, not defined by ISO
+       /* 9 */ ec_io_imp_e,
+     };
+     int status10 = static_cast<unsigned int>(status) / 10;
+     gcc_assert(ec_by_status.size() == 10);
+     gcc_assert(0 <= status10 && status10 < 10 && status10 != 8);
+     return ec_by_status[status10];
+   }
  
    /*
     * END DECLARATIVES causes:
!    *   1. Create section _DECLARATIVES_EVAL
     *      and exit label _DECLARATIVES_LAVE
!    *   2. declarative_runtime_match generates runtime evaluation "ladder".
!    *   3. After a declarative is executed, control branches to the exit label.
     *
     * After each verb, we call declaratives_evaluate,
     * which PERFORMs _DECLARATIVES_EVAL.
*************** static class current_t {
*** 2173,2190 ****
     * alternative entry point (TODO).
     */
    void
!   declaratives_evaluate( cbl_file_t *file,
!                          file_status_t status = FsSuccess ) {
!     // The exception file number is assumed to be zero at all times unless
!     // it has been set to non-zero, at which point whoever picks it up and takes
!     // action on it is charged with setting it back to zero.
!     if( file )
!       {
!       parser_set_file_number((int)symbol_index(symbol_elem_of(file)));
!       }
!     // parser_set_file_number(file ? (int)symbol_index(symbol_elem_of(file)) : 0);
!     parser_set_handled((ec_type_t)status);
! 
      parser_file_stash(file);
  
      cbl_label_t *eval = programs.first_declarative();
--- 2103,2110 ----
     * alternative entry point (TODO).
     */
    void
!   declaratives_evaluate( cbl_file_t *file ) {
!     gcc_assert(file);
      parser_file_stash(file);
  
      cbl_label_t *eval = programs.first_declarative();
*************** static class current_t {
*** 2212,2218 ****
     * To indicate to the runtime-match function that we want to evaluate
     * only the exception condition, unrelated to a file, we set the
     * file register to 0 and the handled-exception register to the
!    * handled exception condition (not file status).
     *
     * declaratives_execute performs the "declarative ladder" produced
     * by declaratives_runtime_match.  That section CALLs the
--- 2132,2138 ----
     * To indicate to the runtime-match function that we want to evaluate
     * only the exception condition, unrelated to a file, we set the
     * file register to 0 and the handled-exception register to the
!    * handled exception condition. 
     *
     * declaratives_execute performs the "declarative ladder" produced
     * by declaratives_runtime_match.  That section CALLs the
*************** static class current_t {
*** 2223,2238 ****
     * index, per usual.
     */
    void
!   declaratives_evaluate( ec_type_t handled = ec_none_e ) {
!     // The exception file number  is assumed to be zero unless it has been
!     // changed to a non-zero value.  The program picking it up and referencing
!     // it is charged with setting it back to zero.
!     // parser_set_file_number(0);
! 
!     parser_set_handled(handled);
! 
      cbl_label_t *eval = programs.first_declarative();
!     declarative_execute(eval);
    }
  
    cbl_label_t * new_paragraph( cbl_label_t *para ) {
--- 2143,2151 ----
     * index, per usual.
     */
    void
!   declaratives_evaluate() {
      cbl_label_t *eval = programs.first_declarative();
!     if( eval ) declarative_execute(eval);
    }
  
    cbl_label_t * new_paragraph( cbl_label_t *para ) {
*************** static class current_t {
*** 2276,2290 ****
    cbl_label_t * compute_label() { return error_labels.compute_error; }
  } current;
  
  #define PROGRAM current.program_index()
  
  static void
  add_debugging_declarative( const cbl_label_t * label ) {
    const char *section = current.declarative_section_name();
    if( section ) {
      debugging_clients[label->name].push_back(section);
    }
! };
  
  cbl_options_t current_options() {
    return current.options_paragraph;
--- 2189,2208 ----
    cbl_label_t * compute_label() { return error_labels.compute_error; }
  } current;
  
+ void current_enabled_ecs( tree ena ) {
+   current.declaratives.runtime.ena = ena;
+ }
+ 
  #define PROGRAM current.program_index()
  
  static void
  add_debugging_declarative( const cbl_label_t * label ) {
+   // cppcheck-suppress [unreadVariable] obviously not true
    const char *section = current.declarative_section_name();
    if( section ) {
      debugging_clients[label->name].push_back(section);
    }
! }
  
  cbl_options_t current_options() {
    return current.options_paragraph;
*************** current_rounded_mode( cbl_round_t rounde
*** 2326,2340 ****
  #endif
  static cbl_round_t current_rounded_mode( int token );
  
- cbl_call_convention_t
- current_call_convention() {
-   return current.call_convention();
- }
- cbl_call_convention_t
- current_call_convention( cbl_call_convention_t convention) {
-   return current.call_convention(convention);
- }
- 
  size_t program_level() { return current.program_level(); }
  
  static size_t constant_index( int token );
--- 2244,2249 ----
*************** char *
*** 2354,2363 ****
  normalize_picture( char picture[] );
  
  static inline cbl_field_t *
! new_tempnumeric(void) { return new_temporary(FldNumericBin5); }
  
  static inline cbl_field_t *
! new_tempnumeric_float(void) { return new_temporary(FldFloat); }
  
  uint32_t
  type_capacity( enum cbl_field_type_t type, uint32_t digits );
--- 2263,2276 ----
  normalize_picture( char picture[] );
  
  static inline cbl_field_t *
! new_tempnumeric(const cbl_name_t name = nullptr) {
!   return new_temporary(FldNumericBin5, name);
! }
  
  static inline cbl_field_t *
! new_tempnumeric_float(const cbl_name_t name = nullptr) {
!   return new_temporary(FldFloat, name);
! }
  
  uint32_t
  type_capacity( enum cbl_field_type_t type, uint32_t digits );
*************** literal_refmod_valid( YYLTYPE loc, const
*** 2375,2385 ****
  
  static bool
  is_integer_literal( const cbl_field_t *field ) {
!   if( is_literal(field) ) {
!     int v, n;
      const char *initial = field->data.initial;
  
!     return 1 == sscanf(initial, "%d%n", &v, &n) && n == (int)strlen(initial);
    }
    return false;
  }
--- 2288,2314 ----
  
  static bool
  is_integer_literal( const cbl_field_t *field ) {
!   if( field->type == FldLiteralN ) {
      const char *initial = field->data.initial;
  
!     switch( *initial ) {
!     case '-': case '+': ++initial;
!     }
! 
!     const char *eos = initial + strlen(initial);
!     auto p = std::find_if_not( initial, eos, fisdigit );
!     if( p == eos ) return true;
!     
!     if( *p++ == symbol_decimal_point() ) {
!       switch( *p++ ) {
!       case 'E': case 'e':
! 	switch( *p++ ) {
! 	case '+': case '-':
! 	  return std::all_of(p, eos, []( char ch ) { return ch == '0'; } );
! 	  break;
! 	}
!       }
!     }
    }
    return false;
  }
*************** is_callable( const cbl_field_t *field )
*** 2453,2459 ****
    case FldPointer:
      return true;
    }
!   cbl_internal_error( "%s:%d: invalid symbol_type_t %d", __func__, __LINE__, field->type );
    return false;
  }
  
--- 2382,2389 ----
    case FldPointer:
      return true;
    }
!   cbl_internal_error( "%s:%d: invalid %<symbol_type_t%> %d",
!                       __func__, __LINE__, field->type );
    return false;
  }
  
*************** intrinsic_call_1( cbl_field_t *output, i
*** 2500,2507 ****
  }
  
  static bool
! intrinsic_call_2( cbl_field_t *tgt, int token, cbl_refer_t *r1, cbl_refer_t *r2 ) {
!   std::vector<cbl_refer_t> args { *r1, *r2 };
    size_t n = intrinsic_invalid_parameter(token, args);
    if( n < args.size() ) {
      error_msg(args[n].loc, "invalid parameter '%s'", args[n].field->name);
--- 2430,2437 ----
  }
  
  static bool
! intrinsic_call_2( cbl_field_t *tgt, int token, const cbl_refer_t *r1, cbl_refer_t *r2 ) {
!   std::vector<cbl_refer_t> args { *r1, r2? *r2 : cbl_refer_t() };
    size_t n = intrinsic_invalid_parameter(token, args);
    if( n < args.size() ) {
      error_msg(args[n].loc, "invalid parameter '%s'", args[n].field->name);
*************** table_primary_index( cbl_field_t *table
*** 2578,2595 ****
      NULL : cbl_field_of(symbol_at(table->occurs.indexes.fields[0]));
  }
  
! static inline const cbl_refer_t  // & // Removed the '&' to stop a weird compiler error
  invalid_key( const cbl_refer_t& ref ) {
    assert(ref.field);
! 
!   if( ref.nsubscript == 0 ) return ref;
! 
!   for( size_t i=0; i < ref.nsubscript; i++ ) {
!     if( ref.subscripts[i].field->parent != ref.field->parent ) {
!       return ref.subscripts[i];
!     }
!   }
!   return NULL;
  }
  
  static inline symbol_elem_t *
--- 2508,2521 ----
      NULL : cbl_field_of(symbol_at(table->occurs.indexes.fields[0]));
  }
  
! static inline const cbl_refer_t  // return copy, not element reference
  invalid_key( const cbl_refer_t& ref ) {
    assert(ref.field);
!   auto p = std::find_if( ref.subscripts.begin(), ref.subscripts.end(),
!                          [parent = ref.field->parent]( const auto &sub ) {
!                            return sub.field->parent == parent;
!                          } );
!   return p != ref.subscripts.end() ? *p : nullptr;
  }
  
  static inline symbol_elem_t *
*************** group_attr( const cbl_field_t * field )
*** 2791,2807 ****
    return p->attr;
  }
  
- static struct symbol_elem_t *
- field_of( const char F[], int L, const char name[] ) {
-   struct symbol_elem_t *e = symbol_field(PROGRAM, 0, name);
-   if( !e ) {
-     cbl_internal_error("%s:%d: no symbol '%s' found", F, L, name);
-   }
-   assert( procedure_div_e != current_division  );
-   return e;
- }
- #define field_of( F ) field_of(__func__, __LINE__, (F))
- 
  static struct cbl_field_t *
  field_add( const YYLTYPE& loc, cbl_field_t *field ) {
    switch(current_data_section) {
--- 2717,2722 ----
*************** file_add( YYLTYPE loc, cbl_file_t *file
*** 3006,3013 ****
    }
    file = cbl_file_of(e);
    snprintf(field->name, sizeof(field->name),
!            "%s%zu_%s",
!            record_area_name_stem, symbol_index(e), file->name);
    if( file->attr & external_e ) {
      snprintf(field->name, sizeof(field->name),
               "%s%s", record_area_name_stem, file->name);
--- 2921,2928 ----
    }
    file = cbl_file_of(e);
    snprintf(field->name, sizeof(field->name),
!            "%s" HOST_SIZE_T_PRINT_UNSIGNED "_%s",
!            record_area_name_stem, (fmt_size_t)symbol_index(e), file->name);
    if( file->attr & external_e ) {
      snprintf(field->name, sizeof(field->name),
               "%s%s", record_area_name_stem, file->name);
*************** current_field(cbl_field_t * field = NULL
*** 3037,3042 ****
--- 2952,2968 ----
    return local;
  }
  
+ static void
+ set_real_from_capacity( const YYLTYPE& loc,
+ 			cbl_field_t *field,
+ 			REAL_VALUE_TYPE *r ) {
+   if( field == current_field() ) {
+     error_msg(loc, "cannot define %s via self-reference", field->name);
+     return;
+   }
+   field->data.set_real_from_capacity(r);
+ }
+ 
  static struct cbl_special_name_t *
  special_of( const char F[], int L, const char name[] ) {
    struct symbol_elem_t *e = symbol_special(PROGRAM, name);
*************** special_of( const char F[], int L, const
*** 3048,3062 ****
  }
  #define special_of( F ) special_of(__func__, __LINE__, (F))
  
  static inline void
! parser_add2( struct cbl_num_result_t& to,
!              struct cbl_refer_t from ) {
    parser_add(to.refer, to.refer, from, to.rounded);
  }
  
  static inline void
! parser_subtract2( struct cbl_num_result_t to,
!                   struct cbl_refer_t from ) {
    parser_subtract(to.refer, to.refer, from, to.rounded);
  }
  
--- 2974,3003 ----
  }
  #define special_of( F ) special_of(__func__, __LINE__, (F))
  
+ static const special_name_t *
+ cmd_or_env_special_of( std::string name ) {
+   static const std::map< std::string, special_name_t > fujitsus
+     { // Fujitsu calls these "function names", not device names
+       { "ARGUMENT-NUMBER", ARG_NUM_e },
+       { "ARGUMENT-VALUE", ARG_VALUE_e } ,
+       { "ENVIRONMENT-NAME", ENV_NAME_e },
+       { "ENVIRONMENT-VALUE", ENV_VALUE_e },
+     };
+ 
+   std::transform(name.begin(), name.end(), name.begin(), ::toupper);
+   auto p = fujitsus.find(name.c_str());
+   return p != fujitsus.end()? &p->second : nullptr;
+ }
+ 
  static inline void
! parser_add2( const cbl_num_result_t& to,
!              const cbl_refer_t& from ) {
    parser_add(to.refer, to.refer, from, to.rounded);
  }
  
  static inline void
! parser_subtract2(  const cbl_num_result_t& to,
!                    const cbl_refer_t& from ) {
    parser_subtract(to.refer, to.refer, from, to.rounded);
  }
  
*************** parser_move_carefully( const char */*F*/
*** 3079,3084 ****
--- 3020,3030 ----
        }
      } else {
        if( ! valid_move( tgt.field, src.field ) ) {
+         if( src.field->type == FldPointer &&
+             tgt.field->type == FldPointer ) {
+           if( dialect_mf() || dialect_gnu() ) return true;
+           dialect_error(src.loc, "MOVE POINTER", "mf");
+         }
          if( ! is_index ) {
            char ach[16];
            char stype[32];
*************** parser_move_carefully( const char */*F*/
*** 3104,3110 ****
              sprintf(ach, ".%d", tgt.field->data.rdigits);
              strcat(dtype, ach);
              }
- 
            error_msg(src.loc,  "cannot MOVE '%s' (%s) to '%s' (%s)",
                      name_of(src.field), stype,
                      name_of(tgt.field), dtype);
--- 3050,3055 ----
*************** ast_set_pointers( const list<cbl_num_res
*** 3140,3150 ****
  
  void
  stringify( refer_collection_t *inputs,
!            cbl_refer_t into, cbl_refer_t pointer,
             cbl_label_t  *on_error = NULL,
             cbl_label_t *not_error = NULL);
  
! void unstringify( cbl_refer_t& src, refer_list_t *delimited,
                    unstring_into_t * into,
                    cbl_label_t  *on_error = NULL,
                    cbl_label_t *not_error = NULL );
--- 3085,3095 ----
  
  void
  stringify( refer_collection_t *inputs,
!            const cbl_refer_t& into, const cbl_refer_t& pointer,
             cbl_label_t  *on_error = NULL,
             cbl_label_t *not_error = NULL);
  
! void unstringify( const cbl_refer_t& src, refer_list_t *delimited,
                    unstring_into_t * into,
                    cbl_label_t  *on_error = NULL,
                    cbl_label_t *not_error = NULL );
*************** static cbl_label_t *
*** 3153,3159 ****
  implicit_paragraph()
  {
    cbl_name_t name;
!   sprintf(name, "_implicit_paragraph_%zu", symbol_index());
    // Programs have to start with an implicit paragraph
    return label_add(LblParagraph, name, yylineno);
  }
--- 3098,3105 ----
  implicit_paragraph()
  {
    cbl_name_t name;
!   sprintf(name, "_implicit_paragraph_" HOST_SIZE_T_PRINT_UNSIGNED,
!           (fmt_size_t)symbol_index());
    // Programs have to start with an implicit paragraph
    return label_add(LblParagraph, name, yylineno);
  }
*************** static cbl_label_t *
*** 3161,3172 ****
  implicit_section()
  {
    cbl_name_t name;
!   sprintf(name, "_implicit_section_%zu", symbol_index());
    // Programs have to start with an implicit section
    return label_add(LblSection, name, yylineno);
  }
  
  static void
  ast_enter_exit_section( cbl_label_t * section ) {
    auto implicit = section?  implicit_paragraph() : NULL;
  
--- 3107,3120 ----
  implicit_section()
  {
    cbl_name_t name;
!   sprintf(name, "_implicit_section_" HOST_SIZE_T_PRINT_UNSIGNED,
!           (fmt_size_t)symbol_index());
    // Programs have to start with an implicit section
    return label_add(LblSection, name, yylineno);
  }
  
  static void
+ // cppcheck-suppress constParameterPointer
  ast_enter_exit_section( cbl_label_t * section ) {
    auto implicit = section?  implicit_paragraph() : NULL;
  
*************** data_division_ready() {
*** 3236,3242 ****
    }
  
    if( nsymbol == 0 || nparse_error > 0 ) {
!     dbgmsg( "%d errors in DATA DIVISION, compilation ceases", nparse_error );
      return false;
    }
  
--- 3184,3191 ----
    }
  
    if( nsymbol == 0 || nparse_error > 0 ) {
!     dbgmsg( HOST_SIZE_T_PRINT_DEC " errors in DATA DIVISION, compilation ceases",
!             (fmt_size_t)nparse_error );
      return false;
    }
  
*************** data_division_ready() {
*** 3245,3251 ****
  
  static
  bool
! anybody_redefines(cbl_field_t *tree)
    {
    bool retval = false;
    while(tree)
--- 3194,3200 ----
  
  static
  bool
! anybody_redefines( const cbl_field_t *tree )
    {
    bool retval = false;
    while(tree)
*************** anybody_redefines(cbl_field_t *tree)
*** 3255,3261 ****
        retval = true;
        break;
        }
!     tree = parent_of(tree);
      }
    return retval;
    }
--- 3204,3211 ----
        retval = true;
        break;
        }
!     // cppcheck-suppress [unreadVariable] obviously not true
!     tree = parent_of(tree);   
      }
    return retval;
    }
*************** procedure_division_ready( YYLTYPE loc, c
*** 3302,3307 ****
--- 3252,3264 ----
      }
    }
  
+   // Apply ECs from the command line
+   std::list<exception_turn_t>& exception_turns = current.pending_exceptions();
+   for( const auto& exception_turn : exception_turns) {
+     apply_cdf_turn(exception_turn);
+   }
+   exception_turns.clear();
+   
    // Start the Procedure Division.
    size_t narg = ffi_args? ffi_args->elems.size() : 0;
    std::vector <cbl_ffi_arg_t> args(narg);
*************** file_section_parent_set( cbl_field_t *fi
*** 3468,3481 ****
                                                  field->data.capacity);
  
      field->file = file_section_fd;
!     auto redefined = symbol_redefines(record_area);
      field->parent = redefined? record_area->parent : file->default_record;
    }
    return file_section_fd > 0;
  }
  
  void ast_call(const YYLTYPE& loc, cbl_refer_t name,
!                   cbl_refer_t returning,
                    size_t narg, cbl_ffi_arg_t args[],
                    cbl_label_t *except,
                    cbl_label_t *not_except,
--- 3425,3438 ----
                                                  field->data.capacity);
  
      field->file = file_section_fd;
!     const auto redefined = symbol_redefines(record_area);
      field->parent = redefined? record_area->parent : file->default_record;
    }
    return file_section_fd > 0;
  }
  
  void ast_call(const YYLTYPE& loc, cbl_refer_t name,
!                   const cbl_refer_t& returning,
                    size_t narg, cbl_ffi_arg_t args[],
                    cbl_label_t *except,
                    cbl_label_t *not_except,
*************** goodnight_gracie() {
*** 3534,3553 ****
    return true;
  }
  
! const char * keyword_str( int token );
! 
  static YYLTYPE current_location;
  
  const YYLTYPE& cobol_location() { return current_location; }
  
! static inline YYLTYPE
  location_set( const YYLTYPE& loc ) {
!   return current_location = loc;
  }
  
! static int prior_statement;
! 
! static size_t statement_begin( const YYLTYPE& loc, int token );
  
  static void ast_first_statement( const YYLTYPE& loc ) {
    if( current.is_first_statement( loc ) ) {
--- 3491,3513 ----
    return true;
  }
  
! // false after USE statement, to enter Declarative with EC intact. 
! static bool statement_cleanup = true;
  static YYLTYPE current_location;
  
+ static void statement_epilog( int token );
+ 
+ const char * keyword_str( int token );
+ 
  const YYLTYPE& cobol_location() { return current_location; }
  
! static inline void
  location_set( const YYLTYPE& loc ) {
!   current_location = loc;
!   gcc_location_set(loc);
  }
  
! static void statement_begin( const YYLTYPE& loc, int token );
  
  static void ast_first_statement( const YYLTYPE& loc ) {
    if( current.is_first_statement( loc ) ) {
diff -Nrcpad gcc-15-20250726/gcc/cobol/parse_util.h gcc-15-20250809/gcc/cobol/parse_util.h
*** gcc-15-20250726/gcc/cobol/parse_util.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/parse_util.h	Sat Aug  9 22:32:37 2025
*************** function_descr_t *function_descrs_end =
*** 271,277 ****
  class cname_cmp {
    const char *cname;
   public:
!   cname_cmp( const char *cname ) : cname(cname) {}
  
    bool operator()( const function_descr_t& descr ) {
      return strlen(cname) == strlen(descr.cname) &&
--- 271,277 ----
  class cname_cmp {
    const char *cname;
   public:
!   explicit cname_cmp( const char *cname ) : cname(cname) {}
  
    bool operator()( const function_descr_t& descr ) {
      return strlen(cname) == strlen(descr.cname) &&
*************** class cname_cmp {
*** 283,288 ****
--- 283,297 ----
    }
  };
  
+ static int
+ intrinsic_token_of( const char name[] ) {
+   auto pdescr = std::find_if( function_descrs, function_descrs_end,
+                               [name]( const function_descr_t& descr ) {
+                                 return 0 == strcmp(name, descr.name);
+                               } );
+   return pdescr == function_descrs_end? 0 : pdescr->token;
+ }
+ 
  /*
   * For variadic intrinsic functions, ensure all parameters are commensurate.
   * Return pointer in 1st inconsistent parameter type.
*************** intrinsic_inconsistent_parameter( size_t
*** 293,300 ****
    class commensurate_type {
      cbl_refer_t first;
     public:
!     commensurate_type( const cbl_refer_t& first ) : first(first) {}
!     bool operator()( cbl_refer_t& arg )  const {
        return is_numeric(first.field) == is_numeric(arg.field);
      }
    };
--- 302,309 ----
    class commensurate_type {
      cbl_refer_t first;
     public:
!     explicit commensurate_type( const cbl_refer_t& first ) : first(first) {}
!     bool operator()( const cbl_refer_t& arg )  const {
        return is_numeric(first.field) == is_numeric(arg.field);
      }
    };
*************** intrinsic_invalid_parameter( int token,
*** 348,354 ****
                             return token == descr.token;
                           } );
    if( p == function_descrs_end ) {
!     cbl_internal_error( "%s: intrinsic function  %s not found",
                          __func__, keyword_str(token) );
    }
  
--- 357,363 ----
                             return token == descr.token;
                           } );
    if( p == function_descrs_end ) {
!     cbl_internal_error( "%s: intrinsic function %qs not found",
                          __func__, keyword_str(token) );
    }
  
diff -Nrcpad gcc-15-20250726/gcc/cobol/scan.l gcc-15-20250809/gcc/cobol/scan.l
*** gcc-15-20250726/gcc/cobol/scan.l	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/scan.l	Sat Aug  9 22:32:37 2025
***************
*** 27,32 ****
--- 27,35 ----
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
+ %top{
+ #include "config.h"
+ }
  %{
  #include <fstream>  // Before cobol-system because it uses poisoned functions
  #include "cobol-system.h"
*************** nonseq    (([''][[:alnum:]]+][''])|([""]
*** 76,89 ****
  INTEGER   0*[1-9][[:digit:]]*
  INTEGERZ  [[:digit:]]+
  
  SPC  [[:space:]]+
  OSPC [[:space:]]*
  EOL  \r?\n
  BLANK_EOL   [[:blank:]]*{EOL}
  BLANK_OEOL  [[:blank:]]*{EOL}?
  
  
! DOTSEP    [.][[:space:]]
  DOTEOL    [[:blank:]]*[.]{BLANK_EOL}
  
  SKIP	  [[:blank:]]*SKIP[123][[:blank:]]*[.]?{BLANK_EOL}
--- 79,97 ----
  INTEGER   0*[1-9][[:digit:]]*
  INTEGERZ  [[:digit:]]+
  
+ NONWORD   [^[:alnum:]$_-]+
+ 
  SPC  [[:space:]]+
  OSPC [[:space:]]*
+ BLANK  [[:blank:]]+
+ OBLANK [[:blank:]]*
  EOL  \r?\n
  BLANK_EOL   [[:blank:]]*{EOL}
  BLANK_OEOL  [[:blank:]]*{EOL}?
  
+ PICTURE   [^[:space:]]+
  
! DOTSEP    [.]+[[:space:]]
  DOTEOL    [[:blank:]]*[.]{BLANK_EOL}
  
  SKIP	  [[:blank:]]*SKIP[123][[:blank:]]*[.]?{BLANK_EOL}
*************** NP        P+|(P{COUNT})
*** 95,101 ****
  
  UNSIGNED  [[:space:]]+UNSIGNED
  SIGNED    [[:space:]]+SIGNED
- DBLLONG   (LONG-LONG|DOUBLE)
  
  ALNUM     [AX9]+
  
--- 103,108 ----
*************** COMMA    [,;][[:blank:]]*
*** 156,162 ****
  ISNT	 (IS{SPC})?NOT
  
  
! COMMENTARY DATE-COMPILED|DATE-WRITTEN|INSTALLATION|SECURITY
  
  SORT_MERGE    SORT(-MERGE)?
  
--- 163,169 ----
  ISNT	 (IS{SPC})?NOT
  
  
! COMMENTARY AUTHOR|DATE-COMPILED|DATE-WRITTEN|INSTALLATION|SECURITY
  
  SORT_MERGE    SORT(-MERGE)?
  
*************** SIZE_ERROR (ON[[[:space:]]+)?SIZE[[:spac
*** 170,184 ****
  VARTYPE  NUMERIC|ALPHABETIC|ALPHABETIC_LOWER|ALPHABETIC_UPPER|DBCS|KANJI
  NAMTYP   {NAME}|{VARTYPE}
  
! NL       [[:blank:]]*\r?\n[[:blank:]]*
  
  PUSH_FILE \f?[#]FILE{SPC}PUSH{SPC}[^\f]+\f
  POP_FILE  \f?[#]FILE{SPC}POP\f
! LINE_DIRECTIVE [#]line{SPC}[[:alnum:]]+{SPC}[""''].+\n
  
  %x procedure_div ident_state addr_of function classify
  %x program_id_state comment_entries
! %x author_state date_state field_level field_state dot_state
  %x numeric_state name_state
  %x quoted1 quoted2 quoteq
  %x picture picture_count integer_count
--- 177,191 ----
  VARTYPE  NUMERIC|ALPHABETIC|ALPHABETIC_LOWER|ALPHABETIC_UPPER|DBCS|KANJI
  NAMTYP   {NAME}|{VARTYPE}
  
! NL       [[:blank:]]*{EOL}[[:blank:]]*
  
  PUSH_FILE \f?[#]FILE{SPC}PUSH{SPC}[^\f]+\f
  POP_FILE  \f?[#]FILE{SPC}POP\f
! LINE_DIRECTIVE ^[#]line{SPC}[[:alnum:]]+{SPC}[""''].+\n
  
  %x procedure_div ident_state addr_of function classify
  %x program_id_state comment_entries
! %x date_state field_level field_state dot_state
  %x numeric_state name_state
  %x quoted1 quoted2 quoteq
  %x picture picture_count integer_count
*************** WORKING-STORAGE{SPC}SECTION {
*** 234,263 ****
                  yy_push_state(field_state);
                  return WORKING_STORAGE_SECT; }
  LOCAL-STORAGE{SPC}SECTION {
!                 yy_push_state(field_state);
!                 return LOCAL_STORAGE_SECT; }
! WORKING-STORAGE {
!                 return WORKING_STORAGE; }
! LOCAL-STORAGE {
!                 return LOCAL_STORAGE; }
! SCREEN {
!                 return SCREEN; }
  
  LINKAGE{SPC}SECTION {
                  yy_push_state(field_state);
                  return LINKAGE_SECT; }
  
! FUNCTION-ID		{ yy_push_state(ident_state);
!                   	  yy_push_state(program_id_state);
!                   	  yy_push_state(name_state); return FUNCTION; }
! 
! PROGRAM-ID		{ yy_push_state(ident_state);
!                   	  yy_push_state(program_id_state);
!                   	  yy_push_state(name_state); return PROGRAM_ID; }
  
! PROGRAM-ID/{DOTEOL}	{ yy_push_state(ident_state);
!                   	  yy_push_state(name_state);
!                   	  yy_push_state(dot_state); return PROGRAM_ID; }
  
  PROCEDURE{SPC}DIVISION	{ yy_push_state(procedure_div);
                                    return PROCEDURE_DIV; }
--- 241,263 ----
                  yy_push_state(field_state);
                  return WORKING_STORAGE_SECT; }
  LOCAL-STORAGE{SPC}SECTION {
!                   yy_push_state(field_state);
!                   return LOCAL_STORAGE_SECT; }
! WORKING-STORAGE	{ return WORKING_STORAGE; }
! LOCAL-STORAGE 	{ return LOCAL_STORAGE; }
! SCREEN 		{ return SCREEN; }
  
  LINKAGE{SPC}SECTION {
                  yy_push_state(field_state);
                  return LINKAGE_SECT; }
  
! FUNCTION-ID{OSPC}{DOTSEP}?	{ yy_push_state(ident_state);
!                 	  	  yy_push_state(program_id_state);
!                   		  yy_push_state(name_state); return FUNCTION; }
  
! PROGRAM-ID{OSPC}{DOTSEP}?	{ yy_push_state(ident_state);
! 	                  	  yy_push_state(program_id_state);
!         	          	  yy_push_state(name_state); return PROGRAM_ID; }
  
  PROCEDURE{SPC}DIVISION	{ yy_push_state(procedure_div);
                                    return PROCEDURE_DIV; }
*************** PROCEDURE{SPC}DIVISION	{ yy_push_state(p
*** 268,296 ****
  }
  
  <ident_state>{
    AS{SPC}[""] 	{ yy_push_state(quoted2); return AS; }
    AS{SPC}[''] 	{ yy_push_state(quoted1); return AS; }
    IS		{ pop_return IS; }
  
-   OPTIONS		{ yy_pop_state(); myless(0); }
-   [[:blank:]]*(ENVIRONMENT|DATA|PROCEDURE)[[:blank:]]+DIVISION/.+\n {
-                                   yy_pop_state(); myless(0); }
-   [[:blank:]]*AUTHOR[[:blank:].]+{EOL}? {
- 				  // Might not have an EOL, but stop on one.
-                                   yy_push_state(author_state); }
- 
-   {DOTEOL}
- 
    {COMMENTARY} { BEGIN(comment_entries); }
  }
- <author_state>{
-     [[:blank:]]+
-     ^{BLANK_EOL}
-     [^\r\n]+                   { yy_pop_state();
-                                   yylval.string = xstrdup(yytext);
-                                }
- }
- 
  
  <INITIAL>{
    COBOL		{ return COBOL; }
--- 268,285 ----
  }
  
  <ident_state>{
+   {BLANK_OEOL}
+   ID(ENTIFICATION)?{SPC}DIVISION	{ myless(0); yy_pop_state(); }
+   (ENVIRONMENT|DATA|PROCEDURE){SPC}DIVISION {
+ 					  myless(0); yy_pop_state(); }
+   OPTIONS				{ myless(0); yy_pop_state(); }
+ 
    AS{SPC}[""] 	{ yy_push_state(quoted2); return AS; }
    AS{SPC}[''] 	{ yy_push_state(quoted1); return AS; }
    IS		{ pop_return IS; }
  
    {COMMENTARY} { BEGIN(comment_entries); }
  }
  
  <INITIAL>{
    COBOL		{ return COBOL; }
*************** PROCEDURE{SPC}DIVISION	{ yy_push_state(p
*** 302,307 ****
--- 291,305 ----
                              yy_push_state(field_state);
                              yy_set_bol(1);
                              myless(0); }
+ 
+   END{SPC}PROGRAM        { yy_push_state(name_state);
+                                   return program_level() > 1?
+                                          END_SUBPROGRAM : END_PROGRAM; }
+ 
+   END{SPC}FUNCTION        { yy_push_state(name_state);
+                                   return program_level() > 1?
+                                          END_SUBPROGRAM /*invalid*/ :
+                                          END_FUNCTION; }
  }
  
  <INITIAL,procedure_div,cdf_state>{
*************** CENTER		{
*** 324,329 ****
--- 322,336 ----
  		  return typed_name(yytext);
  		}
  
+ 	/* figurative constants that are otherwise matched as names */
+ 
+ ZEROE?S?/{OSPC}{DOTSEP}		{ return ZERO; }
+ SPACES?/{OSPC}{DOTSEP}		{ yylval.string = NULL; return SPACES; }
+ QUOTES?/{OSPC}{DOTSEP}		{ return QUOTES; }
+ NULLS?/{OSPC}{DOTSEP}		{ return NULLS; }
+ LOW-VALUES?/{OSPC}{DOTSEP}	{ return LOW_VALUES; }
+ HIGH-VALUES?/{OSPC}{DOTSEP}	{ return HIGH_VALUES; }
+ 
  BINARY				{ return BINARY; }
  CLASSIFICATION			{ return CLASSIFICATION; }
  CYCLE				{ return CYCLE; }
*************** STDOUT		{ return STDOUT; }
*** 430,435 ****
--- 437,447 ----
  STDERR		{ return STDERR; }
  SYSERR		{ return STDERR; }
  
+ ARGUMENT-NUMBER  	{ return ARGUMENT_NUMBER; }
+ ARGUMENT-VALUE   	{ return ARGUMENT_VALUE; }
+ ENVIRONMENT-NAME 	{ return ENVIRONMENT_NAME; }
+ ENVIRONMENT-VALUE	{ return ENVIRONMENT_VALUE; }
+ 
  CANCEL		{ return CANCEL; }
  COMMIT		{ return COMMIT; }
  COMMON		{ return COMMON; }
*************** SECTION{SPC}[+-]?{INTEGERZ}/{OSPC}{DOTSE
*** 527,533 ****
  				  auto eotext = yytext + yyleng;
  				  auto p = std::find_if(yytext, eotext, fisspace);
  				  p = std::find_if(p, eotext, nonspace);
! 				  yylval.string = p;
  				  return SECTION;
  				}
  
--- 539,545 ----
  				  auto eotext = yytext + yyleng;
  				  auto p = std::find_if(yytext, eotext, fisspace);
  				  p = std::find_if(p, eotext, nonspace);
! 				  yylval.string = xstrdup(p);
  				  return SECTION;
  				}
  
*************** ANUM            { return ANUM; }
*** 854,861 ****
  ALTERNATE	{ return ALTERNATE; }
  ALTER		{ return ALTER; }
  ALSO		{ return ALSO; }
! ALPHABET	{ return ALPHABET; }
! ALPHABETIC	{ return ALPHABETIC; }
  ALPHABETIC-LOWER	{ return ALPHABETIC_LOWER; }
  ALPHABETIC-UPPER	{ return ALPHABETIC_UPPER; }
  ALPHANUMERIC            { return ALPHANUMERIC; }
--- 866,874 ----
  ALTERNATE	{ return ALTERNATE; }
  ALTER		{ return ALTER; }
  ALSO		{ return ALSO; }
! 
! ALPHABET		{ return ALPHABET; }
! ALPHABETIC		{ return ALPHABETIC; }
  ALPHABETIC-LOWER	{ return ALPHABETIC_LOWER; }
  ALPHABETIC-UPPER	{ return ALPHABETIC_UPPER; }
  ALPHANUMERIC            { return ALPHANUMERIC; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 953,959 ****
                                return NUMSTR;
                             }
  
!   PIC(TURE)?({SPC}IS)?[[:space:]]{BLANK_OEOL} {
  				  yy_push_state(picture); return PIC; }
  
    ANY				{ return ANY; }
--- 966,974 ----
                                return NUMSTR;
                             }
  
!   PIC(TURE)?({SPC}IS)?{SPC}{PICTURE} {
! 				  auto pos = validate_picture();
! 				  myless(pos);
  				  yy_push_state(picture); return PIC; }
  
    ANY				{ return ANY; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 973,996 ****
    COMP(UTATIONAL)?		{ return ucomputable(FldNumericBinary, 0); }
    BINARY            		{ return scomputable(FldNumericBinary, 0); }
  
!   BINARY-CHAR{SIGNED}   	{ return scomputable(FldNumericBin5, 1); }
!   BINARY-CHAR{UNSIGNED} 	{ return ucomputable(FldNumericBin5, 1); }
!   BINARY-CHAR 			{ return scomputable(FldNumericBin5, 1); }
!   BINARY-SHORT{SIGNED}  	{ return scomputable(FldNumericBin5, 2); }
!   BINARY-SHORT{UNSIGNED}	{ return ucomputable(FldNumericBin5, 2); }
!   BINARY-SHORT 			{ return scomputable(FldNumericBin5, 2); }
!   BINARY-LONG{SIGNED}   	{ return scomputable(FldNumericBin5, 4); }
!   BINARY-LONG{UNSIGNED} 	{ return ucomputable(FldNumericBin5, 4); }
!   BINARY-LONG 			{ return scomputable(FldNumericBin5, 4); }
!   BINARY-{DBLLONG}{SIGNED}	{ return scomputable(FldNumericBin5, 8); }
!   BINARY-{DBLLONG}{UNSIGNED}	{ return ucomputable(FldNumericBin5, 8); }
!   BINARY-{DBLLONG}		{ return scomputable(FldNumericBin5, 8); }
    BIT				{ not_implemented("USAGE type: BIT");
  				  return BIT; }
    FLOAT-BINARY-32		{ return ucomputable(FldFloat, 4); }
    FLOAT-BINARY-64		{ return ucomputable(FldFloat, 8); }
    FLOAT-BINARY-128		{ return ucomputable(FldFloat, 16); }
!   FLOAT-DECIMAL-(16|34)		{ not_implemented("USAGE type: FLOAT_DECIMAL");
  				  return FLOAT_DECIMAL; // causes syntax error
  				}
    /* 21) The representation and length of a data item described with USAGE
--- 988,1010 ----
    COMP(UTATIONAL)?		{ return ucomputable(FldNumericBinary, 0); }
    BINARY            		{ return scomputable(FldNumericBinary, 0); }
  
!   BINARY-CHAR	   		{ return bcomputable(FldNumericBin5, 1); }
!   BINARY-SHORT	  		{ return bcomputable(FldNumericBin5, 2); }
!   BINARY-LONG	   		{ return bcomputable(FldNumericBin5, 4); }
!   BINARY-DOUBLE			{ return bcomputable(FldNumericBin5, 8); }
!   BINARY-LONG-LONG		{ if( ! dialect_mf() ) {
! 				    dialect_error(yylloc, yytext, "mf");
! 				  }
! 				  return bcomputable(FldNumericBin5, 8);
! 				}
! 
    BIT				{ not_implemented("USAGE type: BIT");
  				  return BIT; }
+ 
    FLOAT-BINARY-32		{ return ucomputable(FldFloat, 4); }
    FLOAT-BINARY-64		{ return ucomputable(FldFloat, 8); }
    FLOAT-BINARY-128		{ return ucomputable(FldFloat, 16); }
!   FLOAT-DECIMAL-(16|34)		{ not_implemented("USAGE type: %<FLOAT_DECIMAL%>");
  				  return FLOAT_DECIMAL; // causes syntax error
  				}
    /* 21) The representation and length of a data item described with USAGE
*************** USE({SPC}FOR)?		{ return USE; }
*** 1000,1005 ****
--- 1014,1022 ----
    FLOAT-LONG	  		{ return ucomputable(FldFloat, 8); }
    FLOAT-SHORT    		{ return ucomputable(FldFloat, 4); }
  
+   SIGNED			{ return SIGNED_kw; }
+   UNSIGNED			{ return UNSIGNED_kw; }
+ 
    INDEX				{ return INDEX; }
    MESSAGE-TAG			{ not_implemented("USAGE type: MESSAGE-TAG"); }
    NATIONAL			{ not_implemented("USAGE type: NATIONAL");
*************** USE({SPC}FOR)?		{ return USE; }
*** 1013,1019 ****
    POINTER           	{ yylval.field_attr = none_e;     return POINTER; }
  
    PROCEDURE-POINTER    	{ if( dialect_gcc() ) {
! 			    error_msg(yylloc, "%s requires -dialect ibm or mf", yytext);
  			  }
  			  yylval.field_attr = prog_ptr_e;
  			  return POINTER;  // return it anyway
--- 1030,1036 ----
    POINTER           	{ yylval.field_attr = none_e;     return POINTER; }
  
    PROCEDURE-POINTER    	{ if( dialect_gcc() ) {
! 			    dialect_error(yylloc, yytext, "ibm or mf");
  			  }
  			  yylval.field_attr = prog_ptr_e;
  			  return POINTER;  // return it anyway
*************** USE({SPC}FOR)?		{ return USE; }
*** 1114,1123 ****
    FD/[[:blank:]]+       { parsing.need_level(false); return FD; }
    SD/[[:blank:]]+       { parsing.need_level(false); return SD; }
  
!   {NAME}                { // NAME here is never a token name
                            if( is_integer_token() ) return numstr_of(yytext);
  			  ydflval.string = yylval.string = xstrdup(yytext);
! 			  auto token = typed_name(yytext);
  			  return token == NAME88? NAME : token;
   			}
  
--- 1131,1144 ----
    FD/[[:blank:]]+       { parsing.need_level(false); return FD; }
    SD/[[:blank:]]+       { parsing.need_level(false); return SD; }
  
!   {NAME}                { // NAME here might be a token alias
! 		   	  int token;
! 		          if( 0 != (token = binary_integer_usage(yytext)) ) {
! 			    return token;
! 			  }
                            if( is_integer_token() ) return numstr_of(yytext);
  			  ydflval.string = yylval.string = xstrdup(yytext);
! 			  token = typed_name(yytext);
  			  return token == NAME88? NAME : token;
   			}
  
*************** USE({SPC}FOR)?		{ return USE; }
*** 1129,1135 ****
  	    		  yy_push_state(hex_state); }
    N?X{nonseq}		{ dbgmsg("invalid hexadecimal value: %s", yytext);
  			  return NO_CONDITION; }
!   [[:blank:]]*\r?\n     {}
  
    WORKING-STORAGE{SPC}SECTION { return WORKING_STORAGE_SECT; }
    LOCAL-STORAGE{SPC}SECTION   { return LOCAL_STORAGE_SECT; }
--- 1150,1156 ----
  	    		  yy_push_state(hex_state); }
    N?X{nonseq}		{ dbgmsg("invalid hexadecimal value: %s", yytext);
  			  return NO_CONDITION; }
!   [[:blank:]]*{EOL}     {}
  
    WORKING-STORAGE{SPC}SECTION { return WORKING_STORAGE_SECT; }
    LOCAL-STORAGE{SPC}SECTION   { return LOCAL_STORAGE_SECT; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 1199,1205 ****
    {NP}V?/[,.]?     { yylval.number = ndigit(yyleng);     return picset(PIC_P); }
    {N9}*V/{N9}*     { yylval.number = ndigit(yyleng - 1); return picset(NINEV); }
    {N9}/{N9}*[,.]?  { yylval.number = ndigit(yyleng);     return picset(NINES); }
!   P+/[,.]?\r?\n    { yylval.number = yyleng;             return picset(PIC_P); }
  
    {ALNUM}/{COUNT}({ALNUM}{COUNT}?)+ {
                           yy_push_state(picture_count);
--- 1220,1231 ----
    {NP}V?/[,.]?     { yylval.number = ndigit(yyleng);     return picset(PIC_P); }
    {N9}*V/{N9}*     { yylval.number = ndigit(yyleng - 1); return picset(NINEV); }
    {N9}/{N9}*[,.]?  { yylval.number = ndigit(yyleng);     return picset(NINES); }
!   P+/[,.]?{EOL}    { yylval.number = yyleng;             return picset(PIC_P); }
! 
!   1{1,31}/({COUNT}|[(]{NAME}[)]) {
!                          yy_push_state(picture_count);
!                          yylval.string = xstrdup(yytext); return picset(ONES); }
!   1{1,31} {              yylval.string = xstrdup(yytext); return picset(ONES); }
  
    {ALNUM}/{COUNT}({ALNUM}{COUNT}?)+ {
                           yy_push_state(picture_count);
*************** USE({SPC}FOR)?		{ return USE; }
*** 1293,1299 ****
    [""]{SPC}[&]{SPC}[""''] {
  		        if( yytext[yyleng - 1] == '\'' ) BEGIN(quoted1);
  		      }
!   [""]-{OSPC}(\r?\n{OSPC})+[""] /* continue ...  */
    [""]                {
        			char *s = xstrdup(tmpstring? tmpstring : "\0");
                          yylval.literal.set_data(strlen(s), s);
--- 1319,1325 ----
    [""]{SPC}[&]{SPC}[""''] {
  		        if( yytext[yyleng - 1] == '\'' ) BEGIN(quoted1);
  		      }
!   [""]-{OSPC}({EOL}{OSPC})+[""] /* continue ...  */
    [""]                {
        			char *s = xstrdup(tmpstring? tmpstring : "\0");
                          yylval.literal.set_data(strlen(s), s);
*************** USE({SPC}FOR)?		{ return USE; }
*** 1310,1316 ****
    ['']{SPC}[&]{SPC}[""''] {
  		        if( yytext[yyleng - 1] == '"' ) BEGIN(quoted2);
  		      }
!   ['']-{OSPC}(\r?\n{OSPC})+[''] /* continue ...  */
    ['']                {
        			char *s = xstrdup(tmpstring? tmpstring : "\0");
                          yylval.literal.set_data(strlen(s), s);
--- 1336,1342 ----
    ['']{SPC}[&]{SPC}[""''] {
  		        if( yytext[yyleng - 1] == '"' ) BEGIN(quoted2);
  		      }
!   ['']-{OSPC}({EOL}{OSPC})+[''] /* continue ...  */
    ['']                {
        			char *s = xstrdup(tmpstring? tmpstring : "\0");
                          yylval.literal.set_data(strlen(s), s);
*************** USE({SPC}FOR)?		{ return USE; }
*** 1358,1403 ****
  }
  
  <program_id_state>{
!   ^[[:blank:]]+
!   ^{BLANK_EOL}
    (IS)?[[:space:]]
  
!   COMMON/[.]|{SPC}[[:alnum:].] 	{ return COMMON; }
!   INITIAL/[.]|{SPC}[[:alnum:].]	{ return INITIAL_kw; }
!   RECURSIVE			{ return RECURSIVE; }
!   PROGRAM/[.]|{SPC}[[:alnum:].] { return PROGRAM_kw; }
! 
!   INITIAL	{ pop_return INITIAL_kw; }
!   COMMON	{ pop_return COMMON; }
!   PROGRAM 	{ pop_return PROGRAM; }
  
!   AS/{SPC} 	{ myless(0); yy_pop_state(); } /* => ident_state */
!   [[:blank:]]*{DOTSEP}[[:blank:].]+{EOL} { pop_return '.'; }
!   {DOTEOL}		 		 { pop_return '.'; }
  }
  
! <name_state>{
!   ^[[:blank:]]+
!   ^{BLANK_EOL}
!   {NAME}/{OSPC}[.]	{ yy_pop_state();
!     			  yylval.string = xstrdup(yytext); return NAME; }
!   {NAME} 		{ yy_pop_state();
!     			  yylval.string = xstrdup(yytext); return NAME; }
  
    Z?['']                { yylval.literal.set_prefix(yytext, yyleng-1);
! 			  yy_push_state(quoted1); }
    Z?[""]                { yylval.literal.set_prefix(yytext, yyleng-1);
! 			  yy_push_state(quoted2); }
! 
!   [.]/[[:blank:]]+.     { return *yytext; }
  
!   [[:blank:]]*{DOTSEP}[[:blank:].]+{EOL} {
! 			  yy_pop_state(); myless(0); }
!   {DOTEOL}             	{ yy_pop_state(); myless(0); }
  }
  <dot_state>{
    [[:blank:]]*[.][[:blank:].]+{EOL} 	{ pop_return '.'; }
!   [[:blank:]]*[.]			{ pop_return '.'; }
  }
  
  <date_state>{
--- 1384,1419 ----
  }
  
  <program_id_state>{
!   {BLANK_OEOL}
    (IS)?[[:space:]]
+   AS/{SPC} 	{ myless(0); yy_pop_state(); } /* => ident_state */
  
!   INITIAL	{ return INITIAL_kw; }
!   COMMON	{ return COMMON; }
!   RECURSIVE	{ return RECURSIVE; }
!   PROGRAM 	{ return PROGRAM_kw; }
  
!   {DOTSEP}	{ pop_return '.'; }
  }
  
! <name_state>{           /* Either pop from here, or let the quoted state pop */
!   {BLANK_OEOL}
  
+   {NAME}	        { yy_pop_state();
+ 			  yylval.string = xstrdup(yytext);
+ 			  return NAME; 
+ 			}
    Z?['']                { yylval.literal.set_prefix(yytext, yyleng-1);
! 			  BEGIN(quoted1); }
    Z?[""]                { yylval.literal.set_prefix(yytext, yyleng-1);
! 			  BEGIN(quoted2); }
  
!   .             	{ myless(0); yy_pop_state();
! 			  /* Should not happen for valid inputs. */ }
  }
  <dot_state>{
    [[:blank:]]*[.][[:blank:].]+{EOL} 	{ pop_return '.'; }
!   [[:blank:]]*[.]+			{ pop_return '.'; }
  }
  
  <date_state>{
*************** USE({SPC}FOR)?		{ return USE; }
*** 1486,1496 ****
    {GREATER_THAN}{SPC}{OR_EQUAL}/[[:space:]]	{ return GE; }
    {GREATER_THAN}			{ return '>'; }
  
!   {ISNT}{SPC}">="        { return '<'; }
!   {ISNT}{SPC}">"         { return LE;  }
!   {ISNT}{SPC}"="         { return NE;  }
!   {ISNT}{SPC}"<"         { return GE;  }
!   {ISNT}{SPC}"<="        { return '>'; }
  
    {ISNT}{SPC}GREATER{SPC}(THAN)?{SPC}{OR_EQUAL}/[[:space:]] { return '<'; }
    {ISNT}{SPC}GREATER{SPC}(THAN)?	{ return LE; }
--- 1502,1512 ----
    {GREATER_THAN}{SPC}{OR_EQUAL}/[[:space:]]	{ return GE; }
    {GREATER_THAN}			{ return '>'; }
  
!   {ISNT}{OSPC}">="        { verify_ws(yytext[yyleng - 3]); return '<'; }
!   {ISNT}{OSPC}">"         { verify_ws(yytext[yyleng - 2]); return LE;  }
!   {ISNT}{OSPC}"="         { verify_ws(yytext[yyleng - 2]); return NE;  }
!   {ISNT}{OSPC}"<"         { verify_ws(yytext[yyleng - 2]); return GE;  }
!   {ISNT}{OSPC}"<="        { verify_ws(yytext[yyleng - 3]); return '>'; }
  
    {ISNT}{SPC}GREATER{SPC}(THAN)?{SPC}{OR_EQUAL}/[[:space:]] { return '<'; }
    {ISNT}{SPC}GREATER{SPC}(THAN)?	{ return LE; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 1498,1510 ****
    {ISNT}{SPC}LESS{SPC}(THAN)?		{ return GE; }
    {ISNT}{SPC}LESS{SPC}(THAN)?{SPC}{OR_EQUAL}/[[:space:]] { return '>'; }
  
!   [*]{2}{SPC}[+]	{ return POW; }
!   "**"        		{ return POW; }
  }
  
  <procedure_div>{
    (ID|IDENTIFICATION|ENVIRONMENT|DATA|PROCEDURE){SPC}DIVISION  {
! 			    myless(0); yy_pop_state(); }
  
    EXIT{SPC}/(PROGRAM|SECTION|PARAGRAPH|PERFORM) {
  			  return EXIT; }
--- 1514,1548 ----
    {ISNT}{SPC}LESS{SPC}(THAN)?		{ return GE; }
    {ISNT}{SPC}LESS{SPC}(THAN)?{SPC}{OR_EQUAL}/[[:space:]] { return '>'; }
  
!   [*]{2}	{ return POW; }
! 
!   /* 
!    * "A boolean operator specifies the type of boolean operation to be performed
!    *  on one or two operands, for a unary operator or binary operator,
!    *  respectively."
!    * Binary boolean operators
!    *  B-AND B-OR B-XOR
!    * Unary boolean operator
!    *  B-NOT
!    * Boolean shift operators
!    *  B-SHIFT-L B-SHIFT-LC B-SHIFT-R B-SHIFT-RC
!    */
! 
! B-AND
! B-OR
! B-XOR
! B-NOT
! B-SHIFT-L
! B-SHIFT-LC
! B-SHIFT-R
! B-SHIFT-RC
! 
  }
  
  <procedure_div>{
    (ID|IDENTIFICATION|ENVIRONMENT|DATA|PROCEDURE){SPC}DIVISION  {
! 			          myless(0); BEGIN(INITIAL); }
!   PROGRAM-ID{OSPC}{DOTSEP}	{ myless(0); BEGIN(INITIAL); }
  
    EXIT{SPC}/(PROGRAM|SECTION|PARAGRAPH|PERFORM) {
  			  return EXIT; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 1571,1576 ****
--- 1609,1615 ----
    DELIMITER                     { return DELIMITER; }
    ENVIRONMENT                   { return ENVIRONMENT; }
  
+ 			/* After name state, pop out of procedure_div state. */
    END{SPC}PROGRAM        { yy_push_state(name_state);
                                    return program_level() > 1?
                                           END_SUBPROGRAM : END_PROGRAM; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 1597,1624 ****
  
    FUNCTION 			{ yy_push_state(function); return FUNCTION; }
  
!   SECTION{OSPC}[.]{SPC}/USE[[:space:]]	{ yylval.string = NULL; return SECTION; }
  
!   {NAME}{OSPC}[.]({SPC}(EJECT|SKIP[123]))*{SPC}EXIT{OSPC}/{DOTSEP} {
                     // EXIT format-1 is a "continue" statement
-                    yylval.string = xstrdup(yytext);
- 		   auto p = strchr(yylval.string, '.');
- 		   assert(p);
- 		   assert( ISSPACE(p[1]) );
- 		   *p = '\0';
- 		   while( p > yylval.string && ISSPACE(p[-1]) ) {
- 		     *--p = '\0';
- 		   }
- 
-                    int token = keyword_tok(yylval.string);
-                    if( token ) return token;
-                    if( is_integer_token() ) return numstr_of(yylval.string);
-                    return typed_name(yylval.string);
                   }
    {NAME}/{OSPC}{DOTSEP} {
  		   assert(YY_START == procedure_div);
!                    int token = keyword_tok(yytext);
!                    if( token ) return token;
                     if( is_integer_token() ) return numstr_of(yytext);
  
                     ydflval.string = yylval.string = xstrdup(yytext);
--- 1636,1651 ----
  
    FUNCTION 			{ yy_push_state(function); return FUNCTION; }
  
!   SECTION{OSPC}[.]+{SPC}/USE[[:space:]]	{ yylval.string = NULL; return SECTION; }
  
!   [.]+({SPC}(EJECT|SKIP[123]))*{SPC}EXIT{OSPC}/{DOTSEP} {
                     // EXIT format-1 is a "continue" statement
                   }
    {NAME}/{OSPC}{DOTSEP} {
  		   assert(YY_START == procedure_div);
! 		   int token;
! 		   if( 0 != (token = binary_integer_usage(yytext)) ) return token;
!                    if( 0 != (token = keyword_tok(yytext)) ) return token;
                     if( is_integer_token() ) return numstr_of(yytext);
  
                     ydflval.string = yylval.string = xstrdup(yytext);
*************** USE({SPC}FOR)?		{ return USE; }
*** 1780,1905 ****
  }
  
  <function>{
  
  
!   ABS{OSPC}/[(]?			{ pop_return ABS; }
!   ACOS{OSPC}/[(]?			{ pop_return ACOS; }
!   ANNUITY{OSPC}/[(]?			{ pop_return ANNUITY; }
!   ASIN{OSPC}/[(]?			{ pop_return ASIN; }
!   ATAN{OSPC}/[(]?			{ pop_return ATAN; }
!   BASECONVERT{OSPC}/[(]?		{ pop_return BASECONVERT; }
!   BIT-OF{OSPC}/[(]?			{ pop_return BIT_OF; }
!   BIT-TO-CHAR{OSPC}/[(]?		{ pop_return BIT_TO_CHAR; }
!   BOOLEAN-OF-INTEGER{OSPC}/[(]?		{ pop_return BOOLEAN_OF_INTEGER; }
!   BYTE-LENGTH{OSPC}/[(]?		{ pop_return BYTE_LENGTH; }
!   CHAR-NATIONAL{OSPC}/[(]?		{ pop_return CHAR_NATIONAL; }
!   CHAR{OSPC}/[(]?			{ pop_return CHAR; }
!   COMBINED-DATETIME{OSPC}/[(]?		{ pop_return COMBINED_DATETIME; }
!   CONCAT{OSPC}/[(]?			{ pop_return CONCAT; }
!   CONTENT-LENGTH{OSPC}/[(]?		{ pop_return NO_CONDITION; /* GNU only*/ }
!   CONTENT-OF{OSPC}/[(]?			{ pop_return NO_CONDITION; /* GNU only*/ }
!   CONVERT{OSPC}/[(]?			{ pop_return CONVERT; }
!   COS{OSPC}/[(]?			{ pop_return COS; }
!   CURRENCY-SYBOL{OSPC}/[(]?		{ pop_return NO_CONDITION; /* GNU only*/ }
!   CURRENT-DATE{OSPC}/[(]?		{ pop_return CURRENT_DATE; }
!   DATE-OF-INTEGER{OSPC}/[(]?		{ pop_return DATE_OF_INTEGER; }
!   DATE-TO-YYYYMMDD{OSPC}/[(]?		{ pop_return DATE_TO_YYYYMMDD; }
!   DAY-OF-INTEGER{OSPC}/[(]?		{ pop_return DAY_OF_INTEGER; }
!   DAY-TO-YYYYDDD{OSPC}/[(]?		{ pop_return DAY_TO_YYYYDDD; }
!   DISPLAY-OF{OSPC}/[(]?			{ pop_return DISPLAY_OF; }
!   E{OSPC}/[(]?				{ pop_return E; }
! 
!   EXCEPTION-FILE-N{OSPC}/[(]?		{ pop_return EXCEPTION_FILE_N; }
!   EXCEPTION-FILE{OSPC}/[(]?		{ pop_return EXCEPTION_FILE; }
!   EXCEPTION-LOCATION-N{OSPC}/[(]?	{ pop_return EXCEPTION_LOCATION_N; }
!   EXCEPTION-LOCATION{OSPC}/[(]?		{ pop_return EXCEPTION_LOCATION; }
!   EXCEPTION-STATEMENT{OSPC}/[(]?	{ pop_return EXCEPTION_STATEMENT; }
!   EXCEPTION-STATUS{OSPC}/[(]?		{ pop_return EXCEPTION_STATUS; }
! 
!   EXP{OSPC}/[(]?			{ pop_return EXP; }
!   EXP10{OSPC}/[(]?			{ pop_return EXP10; }
!   FACTORIAL{OSPC}/[(]?			{ pop_return FACTORIAL; }
!   FIND-STRING{OSPC}/[(]?		{ pop_return FIND_STRING; }
  
!   FORMATTED-CURRENT-DATE{OSPC}/[(]?	{ BEGIN(datetime_fmt); return FORMATTED_CURRENT_DATE; }
!   FORMATTED-DATE{OSPC}/[(]?		{ BEGIN(datetime_fmt); return FORMATTED_DATE; }
!   FORMATTED-DATETIME{OSPC}/[(]?		{ BEGIN(datetime_fmt); return FORMATTED_DATETIME; }
!   FORMATTED-TIME{OSPC}/[(]?		{ BEGIN(datetime_fmt); return FORMATTED_TIME; }
!   FRACTION-PART{OSPC}/[(]?		{ pop_return FRACTION_PART; }
  
!   HEX-OF{OSPC}/[(]?			{ pop_return HEX_OF; }
!   HEX-TO-CHAR{OSPC}/[(]?		{ pop_return HEX_TO_CHAR; }
!   HIGHEST-ALGEBRAIC{OSPC}/[(]?		{ pop_return HIGHEST_ALGEBRAIC; }
  
!   INTEGER{OSPC}/[(]?			{ pop_return INTEGER; }
!   INTEGER-OF-BOOLEAN{OSPC}/[(]?		{ pop_return INTEGER_OF_BOOLEAN; }
!   INTEGER-OF-DATE{OSPC}/[(]?		{ pop_return INTEGER_OF_DATE; }
!   INTEGER-OF-DAY{OSPC}/[(]?		{ pop_return INTEGER_OF_DAY; }
!   INTEGER-OF-FORMATTED-DATE{OSPC}/[(]?	{ BEGIN(datetime_fmt); return INTEGER_OF_FORMATTED_DATE; }
!   INTEGER-PART{OSPC}/[(]?		{ pop_return INTEGER_PART; }
!   LENGTH{OSPC}/[(]?			{ pop_return LENGTH; }
!   LOCALE-COMPARE{OSPC}/[(]?		{ pop_return LOCALE_COMPARE; }
!   LOCALE-DATE{OSPC}/[(]?		{ pop_return LOCALE_DATE; }
!   LOCALE-TIME{OSPC}/[(]?		{ pop_return LOCALE_TIME; }
!   LOCALE-TIME-FROM-SECONDS{OSPC}/[(]?	{ pop_return LOCALE_TIME_FROM_SECONDS; }
!   LOG{OSPC}/[(]?			{ pop_return LOG; }
!   LOG10{OSPC}/[(]?			{ pop_return LOG10; }
!   LOWER-CASE{OSPC}/[(]?			{ pop_return LOWER_CASE; }
!   LOWEST-ALGEBRAIC{OSPC}/[(]?		{ pop_return LOWEST_ALGEBRAIC; }
!   MAX{OSPC}/[(]?			{ pop_return MAXX; }
!   MEAN{OSPC}/[(]?			{ pop_return MEAN; }
!   MEDIAN{OSPC}/[(]?			{ pop_return MEDIAN; }
!   MIDRANGE{OSPC}/[(]?			{ pop_return MIDRANGE; }
!   MIN{OSPC}/[(]?			{ pop_return MINN; }
!   MOD{OSPC}/[(]?			{ pop_return MOD; }
!   MODULE-NAME{OSPC}/[(]?		{ pop_return MODULE_NAME; }
!   NATIONAL-OF{OSPC}/[(]?		{ pop_return NATIONAL_OF; }
!   NUMVAL{OSPC}/[(]?			{ pop_return NUMVAL; }
!   NUMVAL-C{OSPC}/[(]?			{ pop_return NUMVAL_C; }
!   NUMVAL-F{OSPC}/[(]?			{ pop_return NUMVAL_F; }
!   ORD{OSPC}/[(]?			{ pop_return ORD; }
!   ORD-MAX{OSPC}/[(]?			{ pop_return ORD_MAX; }
!   ORD-MIN{OSPC}/[(]?			{ pop_return ORD_MIN; }
!   PI{OSPC}/[(]?				{ pop_return PI; }
!   PRESENT-VALUE{OSPC}/[(]?		{ pop_return PRESENT_VALUE; }
  
    RANDOM{OSPC}{PARENS}			{ pop_return RANDOM; }
    RANDOM{OSPC}[(]		 	{ pop_return RANDOM_SEED; }
    RANDOM			 	{ pop_return RANDOM; }
  
!   RANGE{OSPC}/[(]?			{ pop_return RANGE; }
!   REM{OSPC}/[(]?			{ pop_return REM; }
!   REVERSE{OSPC}/[(]?			{ pop_return REVERSE; }
!   SECONDS-FROM-FORMATTED-TIME{OSPC}/[(]? { BEGIN(datetime_fmt);
  					   return SECONDS_FROM_FORMATTED_TIME; }
!   SECONDS-PAST-MIDNIGHT{OSPC}/[(]?	{ pop_return SECONDS_PAST_MIDNIGHT; }
!   SIGN{OSPC}/[(]?			{ pop_return SIGN; }
!   SIN{OSPC}/[(]?			{ pop_return SIN; }
!   SMALLEST-ALGEBRAIC{OSPC}/[(]?		{ pop_return SMALLEST_ALGEBRAIC; }
!   SQRT{OSPC}/[(]?			{ pop_return SQRT; }
!   STANDARD-COMPARE{OSPC}/[(]?		{ pop_return STANDARD_COMPARE; }
!   STANDARD-DEVIATION{OSPC}/[(]?		{ pop_return STANDARD_DEVIATION; }
!   SUBSTITUTE{OSPC}/[(]?			{ pop_return SUBSTITUTE; }
!   SUM{OSPC}/[(]?			{ pop_return SUM; }
!   TAN{OSPC}/[(]?			{ pop_return TAN; }
!   TEST-DATE-YYYYMMDD{OSPC}/[(]?		{ pop_return TEST_DATE_YYYYMMDD; }
!   TEST-DAY-YYYYDDD{OSPC}/[(]?		{ pop_return TEST_DAY_YYYYDDD; }
!   TEST-FORMATTED-DATETIME{OSPC}/[(]?	{ BEGIN(datetime_fmt); return TEST_FORMATTED_DATETIME; }
!   TEST-NUMVAL{OSPC}/[(]?		{ pop_return TEST_NUMVAL; }
!   TEST-NUMVAL-C{OSPC}/[(]?		{ pop_return TEST_NUMVAL_C; }
!   TEST-NUMVAL-F{OSPC}/[(]?		{ pop_return TEST_NUMVAL_F; }
!   TRIM{OSPC}/[(]?			{ pop_return TRIM; }
!   ULENGTH{OSPC}/[(]?			{ pop_return ULENGTH; }
!   UPOS{OSPC}/[(]?			{ pop_return UPOS; }
!   UPPER-CASE{OSPC}/[(]?			{ pop_return UPPER_CASE; }
!   USUBSTR{OSPC}/[(]?			{ pop_return USUBSTR; }
!   USUPPLEMENTARY{OSPC}/[(]?		{ pop_return USUPPLEMENTARY; }
!   UUID4{OSPC}/[(]?			{ pop_return UUID4; }
!   UVALID{OSPC}/[(]?			{ pop_return UVALID; }
!   UWIDTH{OSPC}/[(]?			{ pop_return UWIDTH; }
!   VARIANCE{OSPC}/[(]?			{ pop_return VARIANCE; }
!   WHEN-COMPILED{OSPC}/[(]?		{ pop_return WHEN_COMPILED; }
!   YEAR-TO-YYYY{OSPC}/[(]?		{ pop_return YEAR_TO_YYYY; }
  
    {NAME}{OSPC}/[(] { /* If /{OSPC}, "dangerous trailing context" "*/
                    auto name = null_trim(xstrdup(yytext));
--- 1807,1934 ----
  }
  
  <function>{
+   ABS/{NONWORD}				{ pop_return ABS; }
+   ACOS/{NONWORD}			{ pop_return ACOS; }
+   ANNUITY/{NONWORD}			{ pop_return ANNUITY; }
+   ASIN/{NONWORD}			{ pop_return ASIN; }
+   ATAN/{NONWORD}			{ pop_return ATAN; }
+   BASECONVERT/{NONWORD}			{ pop_return BASECONVERT; }
+   BIT-OF/{NONWORD}			{ pop_return BIT_OF; }
+   BIT-TO-CHAR/{NONWORD}			{ pop_return BIT_TO_CHAR; }
+   BOOLEAN-OF-INTEGER/{NONWORD}		{ pop_return BOOLEAN_OF_INTEGER; }
+   BYTE-LENGTH/{NONWORD}			{ pop_return BYTE_LENGTH; }
+   CHAR-NATIONAL/{NONWORD}		{ pop_return CHAR_NATIONAL; }
+   CHAR/{NONWORD}			{ pop_return CHAR; }
+   COMBINED-DATETIME/{NONWORD}		{ pop_return COMBINED_DATETIME; }
+   CONCAT/{NONWORD}			{ pop_return CONCAT; }
+   CONTENT-LENGTH/{NONWORD}		{ pop_return NO_CONDITION; /* GNU only*/ }
+   CONTENT-OF/{NONWORD}			{ pop_return NO_CONDITION; /* GNU only*/ }
+   CONVERT/{NONWORD}			{ pop_return CONVERT; }
+   COS/{NONWORD}				{ pop_return COS; }
+   CURRENCY-SYBOL/{NONWORD}		{ pop_return NO_CONDITION; /* GNU only*/ }
+   CURRENT-DATE/{NONWORD}		{ pop_return CURRENT_DATE; }
+   DATE-OF-INTEGER/{NONWORD}		{ pop_return DATE_OF_INTEGER; }
+   DATE-TO-YYYYMMDD/{NONWORD}		{ pop_return DATE_TO_YYYYMMDD; }
+   DAY-OF-INTEGER/{NONWORD}		{ pop_return DAY_OF_INTEGER; }
+   DAY-TO-YYYYDDD/{NONWORD}		{ pop_return DAY_TO_YYYYDDD; }
+   DISPLAY-OF/{NONWORD}			{ pop_return DISPLAY_OF; }
+   E/{NONWORD}				{ pop_return E; }
  
+   EXCEPTION-FILE-N/{NONWORD}		{ pop_return EXCEPTION_FILE_N; }
+   EXCEPTION-FILE/{NONWORD}		{ pop_return EXCEPTION_FILE; }
+   EXCEPTION-LOCATION-N/{NONWORD}	{ pop_return EXCEPTION_LOCATION_N; }
+   EXCEPTION-LOCATION/{NONWORD}		{ pop_return EXCEPTION_LOCATION; }
+   EXCEPTION-STATEMENT/{NONWORD}		{ pop_return EXCEPTION_STATEMENT; }
+   EXCEPTION-STATUS/{NONWORD}		{ pop_return EXCEPTION_STATUS; }
  
!   EXP/{NONWORD}				{ pop_return EXP; }
!   EXP10/{NONWORD}			{ pop_return EXP10; }
!   FACTORIAL/{NONWORD}			{ pop_return FACTORIAL; }
!   FIND-STRING/{NONWORD}			{ pop_return FIND_STRING; }
  
!   FORMATTED-CURRENT-DATE/{NONWORD}	{ BEGIN(datetime_fmt);
! 					  return FORMATTED_CURRENT_DATE; }
!   FORMATTED-DATE/{NONWORD}		{ BEGIN(datetime_fmt); return FORMATTED_DATE; }
!   FORMATTED-DATETIME/{NONWORD}		{ BEGIN(datetime_fmt); return FORMATTED_DATETIME; }
!   FORMATTED-TIME/{NONWORD}		{ BEGIN(datetime_fmt); return FORMATTED_TIME; }
!   FRACTION-PART/{NONWORD}		{ pop_return FRACTION_PART; }
  
!   HEX-OF/{NONWORD}			{ pop_return HEX_OF; }
!   HEX-TO-CHAR/{NONWORD}			{ pop_return HEX_TO_CHAR; }
!   HIGHEST-ALGEBRAIC/{NONWORD}		{ pop_return HIGHEST_ALGEBRAIC; }
  
!   INTEGER/{NONWORD}			{ pop_return INTEGER; }
!   INTEGER-OF-BOOLEAN/{NONWORD}		{ pop_return INTEGER_OF_BOOLEAN; }
!   INTEGER-OF-DATE/{NONWORD}		{ pop_return INTEGER_OF_DATE; }
!   INTEGER-OF-DAY/{NONWORD}		{ pop_return INTEGER_OF_DAY; }
!   INTEGER-OF-FORMATTED-DATE/{NONWORD}	{ BEGIN(datetime_fmt);
! 					  return INTEGER_OF_FORMATTED_DATE; }
!   INTEGER-PART/{NONWORD}		{ pop_return INTEGER_PART; }
!   LENGTH/{NONWORD}			{ pop_return LENGTH; }
!   LOCALE-COMPARE/{NONWORD}		{ pop_return LOCALE_COMPARE; }
!   LOCALE-DATE/{NONWORD}			{ pop_return LOCALE_DATE; }
!   LOCALE-TIME/{NONWORD}			{ pop_return LOCALE_TIME; }
!   LOCALE-TIME-FROM-SECONDS/{NONWORD}	{ pop_return LOCALE_TIME_FROM_SECONDS; }
!   LOG/{NONWORD}				{ pop_return LOG; }
!   LOG10/{NONWORD}			{ pop_return LOG10; }
!   LOWER-CASE/{NONWORD}			{ pop_return LOWER_CASE; }
!   LOWEST-ALGEBRAIC/{NONWORD}		{ pop_return LOWEST_ALGEBRAIC; }
!   MAX/{NONWORD}				{ pop_return MAXX; }
!   MEAN/{NONWORD}			{ pop_return MEAN; }
!   MEDIAN/{NONWORD}			{ pop_return MEDIAN; }
!   MIDRANGE/{NONWORD}			{ pop_return MIDRANGE; }
!   MIN/{NONWORD}				{ pop_return MINN; }
!   MOD/{NONWORD}				{ pop_return MOD; }
!   MODULE-NAME/{NONWORD}			{ pop_return MODULE_NAME; }
!   NATIONAL-OF/{NONWORD}			{ pop_return NATIONAL_OF; }
!   NUMVAL/{NONWORD}			{ pop_return NUMVAL; }
!   NUMVAL-C/{NONWORD}			{ pop_return NUMVAL_C; }
!   NUMVAL-F/{NONWORD}			{ pop_return NUMVAL_F; }
!   ORD/{NONWORD}				{ pop_return ORD; }
!   ORD-MAX/{NONWORD}			{ pop_return ORD_MAX; }
!   ORD-MIN/{NONWORD}			{ pop_return ORD_MIN; }
!   PI/{NONWORD}				{ pop_return PI; }
!   PRESENT-VALUE/{NONWORD}		{ pop_return PRESENT_VALUE; }
  
    RANDOM{OSPC}{PARENS}			{ pop_return RANDOM; }
    RANDOM{OSPC}[(]		 	{ pop_return RANDOM_SEED; }
    RANDOM			 	{ pop_return RANDOM; }
  
!   RANGE/{NONWORD}			{ pop_return RANGE; }
!   REM/{NONWORD}				{ pop_return REM; }
!   REVERSE/{NONWORD}			{ pop_return REVERSE; }
!   SECONDS-FROM-FORMATTED-TIME/{NONWORD} { BEGIN(datetime_fmt);
  					   return SECONDS_FROM_FORMATTED_TIME; }
!   SECONDS-PAST-MIDNIGHT/{NONWORD}	{ pop_return SECONDS_PAST_MIDNIGHT; }
!   SIGN/{NONWORD}			{ pop_return SIGN; }
!   SIN/{NONWORD}				{ pop_return SIN; }
!   SMALLEST-ALGEBRAIC/{NONWORD}		{ pop_return SMALLEST_ALGEBRAIC; }
!   SQRT/{NONWORD}			{ pop_return SQRT; }
!   STANDARD-COMPARE/{NONWORD}		{ pop_return STANDARD_COMPARE; }
!   STANDARD-DEVIATION/{NONWORD}		{ pop_return STANDARD_DEVIATION; }
!   SUBSTITUTE/{NONWORD}			{ pop_return SUBSTITUTE; }
!   SUM/{NONWORD}				{ pop_return SUM; }
!   TAN/{NONWORD}				{ pop_return TAN; }
!   TEST-DATE-YYYYMMDD/{NONWORD}		{ pop_return TEST_DATE_YYYYMMDD; }
!   TEST-DAY-YYYYDDD/{NONWORD}		{ pop_return TEST_DAY_YYYYDDD; }
!   TEST-FORMATTED-DATETIME/{NONWORD}	{ BEGIN(datetime_fmt); return TEST_FORMATTED_DATETIME; }
!   TEST-NUMVAL/{NONWORD}			{ pop_return TEST_NUMVAL; }
!   TEST-NUMVAL-C/{NONWORD}		{ pop_return TEST_NUMVAL_C; }
!   TEST-NUMVAL-F/{NONWORD}		{ pop_return TEST_NUMVAL_F; }
!   TRIM/{NONWORD}			{ pop_return TRIM; }
!   ULENGTH/{NONWORD}			{ pop_return ULENGTH; }
!   UPOS/{NONWORD}			{ pop_return UPOS; }
!   UPPER-CASE/{NONWORD}			{ pop_return UPPER_CASE; }
!   USUBSTR/{NONWORD}			{ pop_return USUBSTR; }
!   USUPPLEMENTARY/{NONWORD}		{ pop_return USUPPLEMENTARY; }
!   UUID4/{NONWORD}			{ pop_return UUID4; }
!   UVALID/{NONWORD}			{ pop_return UVALID; }
!   UWIDTH/{NONWORD}			{ pop_return UWIDTH; }
!   VARIANCE/{NONWORD}			{ pop_return VARIANCE; }
!   WHEN-COMPILED/{NONWORD}		{ pop_return WHEN_COMPILED; }
!   YEAR-TO-YYYY/{NONWORD}		{ pop_return YEAR_TO_YYYY; }
! 
!   /* Matches above include NONWORD because the NAME tests below are otherwise longer, */
  
    {NAME}{OSPC}/[(] { /* If /{OSPC}, "dangerous trailing context" "*/
                    auto name = null_trim(xstrdup(yytext));
*************** BASIS		{ yy_push_state(basis); return BA
*** 1994,2000 ****
                    }
                    return token;
                  }
!   [.][[:blank:].]+  	{ return '.'; }
  }
  
  <exception>{
--- 2023,2029 ----
                    }
                    return token;
                  }
!   [.]+[[:blank:].]+  	{ return '.'; }
  }
  
  <exception>{
*************** BASIS		{ yy_push_state(basis); return BA
*** 2014,2020 ****
  		  return symbol_file(PROGRAM, yytext)? FILENAME : NAME;
  		}
    [[:blank:]]+
!   \r?\n		{ yy_pop_state(); }
  }
  
  <raising>{
--- 2043,2049 ----
  		  return symbol_file(PROGRAM, yytext)? FILENAME : NAME;
  		}
    [[:blank:]]+
!   {EOL}		{ yy_pop_state(); }
  }
  
  <raising>{
*************** BASIS		{ yy_push_state(basis); return BA
*** 2035,2083 ****
  		    if( include_debug() ) myless(7);
  		  }
  		}
!   ^[ ]*>>{OSPC}IF		{ yy_push_state(cdf_state); return CDF_IF; }
!   ^[ ]*>>{OSPC}ELSE	 	{ return CDF_ELSE; }
!   ^[ ]*>>{OSPC}END-IF	 	{ return CDF_END_IF; }
  
!   ^[ ]*[$]{OSPC}IF		{ if( ! dialect_mf() )  {
  				    dialect_error(yylloc,  yytext, "mf");
  				  }
  				  yy_push_state(cdf_state); return CDF_IF; }
!   ^[ ]*[$]{OSPC}ELSE	 	{ if( ! dialect_mf() )  {
  				    dialect_error(yylloc,  yytext, "mf");
  				  }
  				  return CDF_ELSE; }
!   ^[ ]*[$]{OSPC}END	 	{ if( ! dialect_mf() ) {
  				    dialect_error(yylloc,  yytext, "mf");
  				  }
  				  return CDF_END_IF; }
  
!   ^[ ]*[$]{OSPC}SET({SPC}CONSTANT)? {
  				  if( ! dialect_mf() ) dialect_error(yylloc, yytext, "mf");
  				  yy_push_state(cdf_state); return CDF_DEFINE; }
  
!   ^[ ]*>>{OSPC}EVALUATE		{ return CDF_EVALUATE; }
!   ^[ ]*>>{OSPC}WHEN		{ return CDF_WHEN; }
!   ^[ ]*>>{OSPC}END-EVALUATE	{ return CDF_END_EVALUATE; }
  
!   ^[ ]*>>{OSPC}CALL-CONVENTION{SPC}C		{ return CALL_VERBATIM; }
!   ^[ ]*>>{OSPC}CALL-CONVENTION{SPC}COBOL	{ return CALL_COBOL; }
!   ^[ ]*>>{OSPC}CALL-CONVENTION{SPC}VERBATIM	{ return CALL_VERBATIM; }
  
!   ^[ ]*>>{OSPC}DEFINE	{ yy_push_state(cdf_state); return CDF_DEFINE; }
!   ^[ ]*>>{OSPC}DISPLAY 	{ return CDF_DISPLAY; }
!   ^[ ]*>>{OSPC}TURN 	{ yy_push_state(exception); return TURN; }
!   ^[ ]*>>{OSPC}COBOL-WORDS	{ yy_push_state(cobol_words); return COBOL_WORDS; }
  
!   ^[ ]*>>{OSPC}{NAME} 	{
  			  error_msg(yylloc, "unknown CDF token: %s", yytext);
  			}
  
    OTHER		{ return OTHER; }
    OVERRIDE	{ return OVERRIDE; }
    PARAMETER	{ return PARAMETER_kw; }
    THRU		{ return THRU; }
    TRUE		{ return TRUE_kw; }
  }
  
  <cobol_words>{
--- 2064,2125 ----
  		    if( include_debug() ) myless(7);
  		  }
  		}
!   ^[ ]*>>{OBLANK}IF		{ yy_push_state(cdf_state); return CDF_IF; }
!   ^[ ]*>>{OBLANK}ELSE	 	{ return CDF_ELSE; }
!   ^[ ]*>>{OBLANK}END-IF	 	{ return CDF_END_IF; }
  
!   ^[ ]*[$]{OBLANK}IF		{ if( ! dialect_mf() )  {
  				    dialect_error(yylloc,  yytext, "mf");
  				  }
  				  yy_push_state(cdf_state); return CDF_IF; }
!   ^[ ]*[$]{OBLANK}ELSE	 	{ if( ! dialect_mf() )  {
  				    dialect_error(yylloc,  yytext, "mf");
  				  }
  				  return CDF_ELSE; }
!   ^[ ]*[$]{OBLANK}END	 	{ if( ! dialect_mf() ) {
  				    dialect_error(yylloc,  yytext, "mf");
  				  }
  				  return CDF_END_IF; }
  
!   ^[ ]*[$]{OBLANK}SET({SPC}CONSTANT)? {
  				  if( ! dialect_mf() ) dialect_error(yylloc, yytext, "mf");
  				  yy_push_state(cdf_state); return CDF_DEFINE; }
  
!   ^[ ]*>>{OBLANK}EVALUATE		{ return CDF_EVALUATE; }
!   ^[ ]*>>{OBLANK}WHEN		{ return CDF_WHEN; }
!   ^[ ]*>>{OBLANK}END-EVALUATE	{ return CDF_END_EVALUATE; }
  
!   ^[ ]*>>{OBLANK}CALL-CONVENTION{BLANK}C		{ return CALL_VERBATIM; }
!   ^[ ]*>>{OBLANK}CALL-CONVENTION{BLANK}COBOL	{ return CALL_COBOL; }
!   ^[ ]*>>{OBLANK}CALL-CONVENTION{BLANK}VERBATIM	{ return CALL_VERBATIM; }
  
!   ^[ ]*>>{OBLANK}DEFINE	{ yy_push_state(cdf_state); return CDF_DEFINE; }
!   ^[ ]*>>{OBLANK}DISPLAY 	{ return CDF_DISPLAY; }
!   ^[ ]*>>{OBLANK}TURN 	{ yy_push_state(exception); return TURN; }
!   ^[ ]*>>{OBLANK}COBOL-WORDS	{ yy_push_state(cobol_words); return COBOL_WORDS; }
  
!   ^[ ]*>>{OBLANK}SOURCE{BLANK}FORMAT	{ return SOURCE_FORMAT; }
! 
!   ^[ ]*>>{OBLANK}PUSH 		{ return CDF_PUSH; }
!   ^[ ]*>>{OBLANK}POP 		{ return CDF_POP; }
! 
!   ^[ ]*>>{OBLANK}{NAME} 	{
  			  error_msg(yylloc, "unknown CDF token: %s", yytext);
  			}
  
+ 
    OTHER		{ return OTHER; }
    OVERRIDE	{ return OVERRIDE; }
    PARAMETER	{ return PARAMETER_kw; }
    THRU		{ return THRU; }
    TRUE		{ return TRUE_kw; }
+ 
+   ALL			{ return ALL; }
+   CALL-CONVENTION	{ return CALL_CONVENTION; }
+   COBOL-WORDS		{ return COBOL_WORDS; }
+   DEFINE		{ return CDF_DEFINE; }
+   SOURCE{BLANK}FORMAT	{ return SOURCE_FORMAT; }
+ 
  }
  
  <cobol_words>{
*************** BASIS		{ yy_push_state(basis); return BA
*** 2092,2130 ****
  }
  
  <*>{
!   {PUSH_FILE}	{
! 			yy_set_bol(true);
! 			auto top_file = cobol_lineno_save();
! 			if( top_file ) {
! 			  if( yy_flex_debug ) dbgmsg("  saving line %4d of %s",
! 						     yylineno, top_file);
! 			}
! 			// "\f#file push <name>": name starts at offset 13.
! 			char *filename = xstrdup(yytext);
! 			filename[yyleng - 1] = '\0'; // kill the trailing formfeed
! 			filename += 12;
! 			if( yytext[0] != '\f' ) {
! 			  dbgmsg("logic warning: filename was adjusted to %s", --filename);
! 			}
! 			input_file_status.enter(filename);
! 		}
  
!   {POP_FILE} 	{
! 			yy_set_bol(true);
! 			input_file_status.leave();
! 		}
  
!   {LINE_DIRECTIVE} {	cobol_fileline_set(yytext); }
  }
  
  
  <*>OR 				{ return OR; }
  <*>AND				{ return AND; }
! <*>{DOTSEP}[[:blank:].]+$	{ return '.'; }
! <*>[*/+-]{SPC}[+]		{ return *yytext; }
  <*>[().=*/+&-]			{ return *yytext; }
  <*>[[:blank:]]+
! <*>\r?\n
  
  <*>{
    {COMMA}
--- 2134,2178 ----
  }
  
  <*>{
!   {PUSH_FILE}		{
! 			  yy_set_bol(true);
! 			  auto top_file = cobol_lineno(yylineno);
! 			  if( top_file ) {
! 			    if( yy_flex_debug ) dbgmsg("  saving line %4d of %s",
! 			  			       yylineno, top_file);
! 			  }
! 			  // "\f#file push <name>": name starts at offset 13.
! 			  char *filename = xstrdup(yytext);
! 			  filename[yyleng - 1] = '\0'; // kill the trailing formfeed
! 			  filename += 12;
! 			  if( yytext[0] != '\f' ) {
! 			    dbgmsg("logic warning: filename was adjusted to %s",
! 				   --filename);
! 			  }
! 			  input_file_status.enter(filename);
! 			  yylineno = 1;
! 			  reset_location();
!   			}
  
!   {POP_FILE}	 	{
! 			  yy_set_bol(true);
! 			  input_file_status.leave();
! 			  yylineno = cobol_lineno();
! 			}
  
!   {LINE_DIRECTIVE} 	{
!       			  yylineno = cobol_fileline_set(yytext);
! 			  reset_location();
! 			}
  }
  
  
  <*>OR 				{ return OR; }
  <*>AND				{ return AND; }
! <*>{DOTSEP}			{ return '.'; }
  <*>[().=*/+&-]			{ return *yytext; }
  <*>[[:blank:]]+
! <*>{EOL}
  
  <*>{
    {COMMA}
*************** BASIS		{ yy_push_state(basis); return BA
*** 2135,2182 ****
  <*>{
    ACCEPT	{ return ACCEPT; }
    ACCESS	{ return ACCESS; }
!   ADD	{ return ADD; }
    ADDRESS	{ return ADDRESS; }
    ADVANCING	{ return ADVANCING; }
!   AFTER	{ return AFTER; }
!   ALL	{ return ALL; }
    ALLOCATE	{ return ALLOCATE; }
    ALPHABET	{ return ALPHABET; }
    ALPHABETIC	{ return ALPHABETIC; }
    ALPHABETIC-LOWER	{ return ALPHABETIC_LOWER; }
    ALPHABETIC-UPPER	{ return ALPHABETIC_UPPER; }
!   ALPHANUMERIC	{ return ALPHANUMERIC; }
    ALPHANUMERIC-EDITED	{ return ALPHANUMERIC_EDITED; }
!   ALSO	{ return ALSO; }
    ALTERNATE	{ return ALTERNATE; }
!   AND	{ return AND; }
!   ANY	{ return ANY; }
    ANYCASE	{ return ANYCASE; }
!   ARE	{ return ARE; }
!   AREA	{ return AREA; }
!   AREAS	{ return AREAS; }
!   AS	{ return AS; }
    ASCENDING	{ return ASCENDING; }
!   ASSIGN	{ return ASSIGN; }
!   AT	{ return AT; }
!   BASED	{ return BASED; }
    BEFORE	{ return BEFORE; }
    BINARY	{ return BINARY; }
!   BIT	{ return BIT; }
!   BLANK	{ return BLANK; }
!   BLOCK	{ return BLOCK_kw; }
    BOTTOM	{ return BOTTOM; }
!   BY	{ return BY; }
!   CALL	{ return CALL; }
    CANCEL	{ return CANCEL; }
!   CF	{ return CF; }
!   CH	{ return CH; }
    CHARACTER	{ return CHARACTER; }
    CHARACTERS	{ return CHARACTERS; }
!   CLASS	{ return CLASS; }
!   CLOSE	{ return CLOSE; }
!   CODE	{ return CODE; }
!   COMMA	{ return COMMA; }
    COMMIT	{ return COMMIT; }
    COMMON	{ return COMMON; }
    CONDITION	{ return CONDITION; }
--- 2183,2230 ----
  <*>{
    ACCEPT	{ return ACCEPT; }
    ACCESS	{ return ACCESS; }
!   ADD		{ return ADD; }
    ADDRESS	{ return ADDRESS; }
    ADVANCING	{ return ADVANCING; }
!   AFTER		{ return AFTER; }
!   ALL		{ return ALL; }
    ALLOCATE	{ return ALLOCATE; }
    ALPHABET	{ return ALPHABET; }
    ALPHABETIC	{ return ALPHABETIC; }
    ALPHABETIC-LOWER	{ return ALPHABETIC_LOWER; }
    ALPHABETIC-UPPER	{ return ALPHABETIC_UPPER; }
!   ALPHANUMERIC		{ return ALPHANUMERIC; }
    ALPHANUMERIC-EDITED	{ return ALPHANUMERIC_EDITED; }
!   ALSO		{ return ALSO; }
    ALTERNATE	{ return ALTERNATE; }
!   AND		{ return AND; }
!   ANY		{ return ANY; }
    ANYCASE	{ return ANYCASE; }
!   ARE		{ return ARE; }
!   AREA		{ return AREA; }
!   AREAS		{ return AREAS; }
!   AS		{ return AS; }
    ASCENDING	{ return ASCENDING; }
!   ASSIGN		{ return ASSIGN; }
!   AT		{ return AT; }
!   BASED		{ return BASED; }
    BEFORE	{ return BEFORE; }
    BINARY	{ return BINARY; }
!   BIT		{ return BIT; }
!   BLANK		{ return BLANK; }
!   BLOCK		{ return BLOCK_kw; }
    BOTTOM	{ return BOTTOM; }
!   BY		{ return BY; }
!   CALL		{ return CALL; }
    CANCEL	{ return CANCEL; }
!   CF		{ return CF; }
!   CH		{ return CH; }
    CHARACTER	{ return CHARACTER; }
    CHARACTERS	{ return CHARACTERS; }
!   CLASS		{ return CLASS; }
!   CLOSE		{ return CLOSE; }
!   CODE		{ return CODE; }
!   COMMA		{ return COMMA; }
    COMMIT	{ return COMMIT; }
    COMMON	{ return COMMON; }
    CONDITION	{ return CONDITION; }
*************** BASIS		{ yy_push_state(basis); return BA
*** 2187,2200 ****
    CONTROL	{ return CONTROL; }
    CONTROLS	{ return CONTROLS; }
    CONVERTING	{ return CONVERTING; }
!   COPY	{ return COPY; }
!   COUNT	{ return COUNT; }
    CURRENCY	{ return CURRENCY; }
!   DATA	{ return DATA; }
!   DATE	{ return DATE; }
!   DAY	{ return DAY; }
    DAY-OF-WEEK	{ return DAY_OF_WEEK; }
!   DE	{ return DE; }
    DECIMAL-POINT	{ return DECIMAL_POINT; }
    DECLARATIVES	{ return DECLARATIVES; }
    DEFAULT	{ return DEFAULT; }
--- 2235,2248 ----
    CONTROL	{ return CONTROL; }
    CONTROLS	{ return CONTROLS; }
    CONVERTING	{ return CONVERTING; }
!   COPY		{ return COPY; }
!   COUNT		{ return COUNT; }
    CURRENCY	{ return CURRENCY; }
!   DATA		{ return DATA; }
!   DATE		{ return DATE; }
!   DAY		{ return DAY; }
    DAY-OF-WEEK	{ return DAY_OF_WEEK; }
!   DE		{ return DE; }
    DECIMAL-POINT	{ return DECIMAL_POINT; }
    DECLARATIVES	{ return DECLARATIVES; }
    DEFAULT	{ return DEFAULT; }
*************** BASIS		{ yy_push_state(basis); return BA
*** 2206,2217 ****
    DETAIL	{ return DETAIL; }
    DISPLAY	{ return DISPLAY; }
    DIVIDE	{ return DIVIDE; }
!   DOWN	{ return DOWN; }
    DUPLICATES	{ return DUPLICATES; }
    DYNAMIC	{ return DYNAMIC; }
!   EC	{ return EC; }
!   ELSE	{ return ELSE; }
!   END	{ return END; }
    END-ACCEPT	{ return END_ACCEPT; }
    END-ADD	{ return END_ADD; }
    END-CALL	{ return END_CALL; }
--- 2254,2265 ----
    DETAIL	{ return DETAIL; }
    DISPLAY	{ return DISPLAY; }
    DIVIDE	{ return DIVIDE; }
!   DOWN		{ return DOWN; }
    DUPLICATES	{ return DUPLICATES; }
    DYNAMIC	{ return DYNAMIC; }
!   EC		{ return EC; }
!   ELSE		{ return ELSE; }
!   END		{ return END; }
    END-ACCEPT	{ return END_ACCEPT; }
    END-ADD	{ return END_ADD; }
    END-CALL	{ return END_CALL; }
*************** BASIS		{ yy_push_state(basis); return BA
*** 2229,2345 ****
    END-SUBTRACT	{ return END_SUBTRACT; }
    END-WRITE	{ return END_WRITE; }
    ENVIRONMENT	{ return ENVIRONMENT; }
!   EQUAL	{ return EQUAL; }
!   ERROR	{ return ERROR; }
    EVALUATE	{ return EVALUATE; }
    EXCEPTION	{ return EXCEPTION; }
!   EXIT	{ return EXIT; }
    EXTEND	{ return EXTEND; }
    EXTERNAL	{ return EXTERNAL; }
  
!   FD	{ return FD; }
!   FINAL	{ return FINAL; }
    FINALLY	{ return FINALLY; }
!   FIRST	{ return FIRST; }
    FOOTING	{ return FOOTING; }
!   FOR	{ return FOR; }
!   FREE	{ return FREE; }
!   FROM	{ return FROM; }
    FUNCTION	{ return FUNCTION; }
    GENERATE	{ return GENERATE; }
    GIVING	{ return GIVING; }
    GLOBAL	{ return GLOBAL; }
!   GO	{ return GO; }
    GOBACK	{ return GOBACK; }
!   GROUP	{ return GROUP; }
    HEADING	{ return HEADING; }
!   IDENTIFICATION	{ return IDENTIFICATION_DIV; }
!   IF	{ return IF; }
!   IN	{ return IN; }
!   INDEX	{ return INDEX; }
    INDEXED	{ return INDEXED; }
    INDICATE	{ return INDICATE; }
    INITIAL	{ return INITIAL; }
    INITIALIZE	{ return INITIALIZE; }
    INITIATE	{ return INITIATE; }
!   INPUT	{ return INPUT; }
    INSPECT	{ return INSPECT; }
    INTERFACE	{ return INTERFACE; }
!   INTO	{ return INTO; }
    INVOKE	{ return INVOKE; }
!   IS	{ return IS; }
!   KEY	{ return KEY; }
!   LAST	{ return LAST; }
    LEADING	{ return LEADING; }
!   LEFT	{ return LEFT; }
    LENGTH	{ return LENGTH; }
!   LIMIT	{ return LIMIT; }
    LIMITS	{ return LIMITS; }
    LINAGE	{ return LINAGE; }
!   LINE	{ return LINE; }
    LINE-COUNTER	{ return LINE_COUNTER; }
!   LINES	{ return LINES; }
    LINKAGE	{ return LINKAGE; }
    LOCAL-STORAGE	{ return LOCAL_STORAGE; }
    LOCALE	{ return LOCALE; }
    LOCATION	{ return LOCATION; }
!   LOCK	{ return LOCK; }
!   MERGE	{ return MERGE; }
!   MODE	{ return MODE; }
!   MOVE	{ return MOVE; }
    MULTIPLY	{ return MULTIPLY; }
    NATIONAL	{ return NATIONAL; }
    NATIONAL-EDITED	{ return NATIONAL_EDITED; }
    NATIVE	{ return NATIVE; }
    NEGATIVE	{ return NEGATIVE; }
    NESTED	{ return NESTED; }
!   NEXT	{ return NEXT; }
!   NO	{ return NO; }
!   NOT	{ return NOT; }
    NUMBER	{ return NUMBER; }
    NUMERIC	{ return NUMERIC; }
    NUMERIC-EDITED	{ return NUMERIC_EDITED; }
    OCCURS	{ return OCCURS; }
!   OF	{ return OF; }
!   OFF	{ return OFF; }
    OMITTED	{ return OMITTED; }
!   ON	{ return ON; }
!   OPEN	{ return OPEN; }
    OPTIONAL	{ return OPTIONAL; }
    OPTIONS	{ return OPTIONS; }
!   OR	{ return OR; }
!   ORDER	{ return ORDER; }
!   ORGANIZATION	{ return ORGANIZATION; }
!   OTHER	{ return OTHER; }
    OUTPUT	{ return OUTPUT; }
    OVERFLOW	{ return OVERFLOW_kw; }
    OVERRIDE	{ return OVERRIDE; }
    PACKED-DECIMAL	{ return PACKED_DECIMAL; }
!   PAGE	{ return PAGE; }
    PAGE-COUNTER	{ return PAGE_COUNTER; }
    PERFORM	{ return PERFORM; }
!   PF	{ return PF; }
!   PH	{ return PH; }
!   PIC	{ return PIC; }
    PICTURE	{ return PICTURE; }
!   PLUS	{ return PLUS; }
    POINTER	{ return POINTER; }
    POSITIVE	{ return POSITIVE; }
    PROCEDURE	{ return PROCEDURE; }
!   PROGRAM	{ return PROGRAM; }
    PROGRAM-ID	{ return PROGRAM_ID; }
    PROPERTY	{ return PROPERTY; }
    PROTOTYPE	{ return PROTOTYPE; }
    QUOTES	{ return QUOTES; }
!   RAISE	{ return RAISE; }
    RAISING	{ return RAISING; }
    RANDOM	{ return RANDOM; }
!   RD	{ return RD; }
!   READ	{ return READ; }
    RECORD	{ return RECORD; }
    RECORDS	{ return RECORDS; }
    REDEFINES	{ return REDEFINES; }
!   REEL	{ return REEL; }
    REFERENCE	{ return REFERENCE; }
    RELATIVE	{ return RELATIVE; }
    RELEASE	{ return RELEASE; }
--- 2277,2392 ----
    END-SUBTRACT	{ return END_SUBTRACT; }
    END-WRITE	{ return END_WRITE; }
    ENVIRONMENT	{ return ENVIRONMENT; }
!   EQUAL		{ return EQUAL; }
!   ERROR		{ return ERROR; }
    EVALUATE	{ return EVALUATE; }
    EXCEPTION	{ return EXCEPTION; }
!   EXIT		{ return EXIT; }
    EXTEND	{ return EXTEND; }
    EXTERNAL	{ return EXTERNAL; }
  
!   FD		{ return FD; }
!   FINAL		{ return FINAL; }
    FINALLY	{ return FINALLY; }
!   FIRST		{ return FIRST; }
    FOOTING	{ return FOOTING; }
!   FOR		{ return FOR; }
!   FREE		{ return FREE; }
!   FROM		{ return FROM; }
    FUNCTION	{ return FUNCTION; }
    GENERATE	{ return GENERATE; }
    GIVING	{ return GIVING; }
    GLOBAL	{ return GLOBAL; }
!   GO		{ return GO; }
    GOBACK	{ return GOBACK; }
!   GROUP		{ return GROUP; }
    HEADING	{ return HEADING; }
!   IF		{ return IF; }
!   IN		{ return IN; }
!   INDEX		{ return INDEX; }
    INDEXED	{ return INDEXED; }
    INDICATE	{ return INDICATE; }
    INITIAL	{ return INITIAL; }
    INITIALIZE	{ return INITIALIZE; }
    INITIATE	{ return INITIATE; }
!   INPUT		{ return INPUT; }
    INSPECT	{ return INSPECT; }
    INTERFACE	{ return INTERFACE; }
!   INTO		{ return INTO; }
    INVOKE	{ return INVOKE; }
!   IS		{ return IS; }
!   KEY		{ return KEY; }
!   LAST		{ return LAST; }
    LEADING	{ return LEADING; }
!   LEFT		{ return LEFT; }
    LENGTH	{ return LENGTH; }
!   LIMIT		{ return LIMIT; }
    LIMITS	{ return LIMITS; }
    LINAGE	{ return LINAGE; }
!   LINE		{ return LINE; }
    LINE-COUNTER	{ return LINE_COUNTER; }
!   LINES		{ return LINES; }
    LINKAGE	{ return LINKAGE; }
    LOCAL-STORAGE	{ return LOCAL_STORAGE; }
    LOCALE	{ return LOCALE; }
    LOCATION	{ return LOCATION; }
!   LOCK		{ return LOCK; }
!   MERGE		{ return MERGE; }
!   MODE		{ return MODE; }
!   MOVE		{ return MOVE; }
    MULTIPLY	{ return MULTIPLY; }
    NATIONAL	{ return NATIONAL; }
    NATIONAL-EDITED	{ return NATIONAL_EDITED; }
    NATIVE	{ return NATIVE; }
    NEGATIVE	{ return NEGATIVE; }
    NESTED	{ return NESTED; }
!   NEXT		{ return NEXT; }
!   NO		{ return NO; }
!   NOT		{ return NOT; }
    NUMBER	{ return NUMBER; }
    NUMERIC	{ return NUMERIC; }
    NUMERIC-EDITED	{ return NUMERIC_EDITED; }
    OCCURS	{ return OCCURS; }
!   OF		{ return OF; }
!   OFF		{ return OFF; }
    OMITTED	{ return OMITTED; }
!   ON		{ return ON; }
!   OPEN		{ return OPEN; }
    OPTIONAL	{ return OPTIONAL; }
    OPTIONS	{ return OPTIONS; }
!   OR		{ return OR; }
!   ORDER		{ return ORDER; }
!   ORGANI[SZ]ATION	{ return ORGANIZATION; }
!   OTHER		{ return OTHER; }
    OUTPUT	{ return OUTPUT; }
    OVERFLOW	{ return OVERFLOW_kw; }
    OVERRIDE	{ return OVERRIDE; }
    PACKED-DECIMAL	{ return PACKED_DECIMAL; }
!   PAGE		{ return PAGE; }
    PAGE-COUNTER	{ return PAGE_COUNTER; }
    PERFORM	{ return PERFORM; }
!   PF		{ return PF; }
!   PH		{ return PH; }
!   PIC		{ return PIC; }
    PICTURE	{ return PICTURE; }
!   PLUS		{ return PLUS; }
    POINTER	{ return POINTER; }
    POSITIVE	{ return POSITIVE; }
    PROCEDURE	{ return PROCEDURE; }
!   PROGRAM	{ return PROGRAM_kw; }
    PROGRAM-ID	{ return PROGRAM_ID; }
    PROPERTY	{ return PROPERTY; }
    PROTOTYPE	{ return PROTOTYPE; }
    QUOTES	{ return QUOTES; }
!   RAISE		{ return RAISE; }
    RAISING	{ return RAISING; }
    RANDOM	{ return RANDOM; }
!   RD		{ return RD; }
!   READ		{ return READ; }
    RECORD	{ return RECORD; }
    RECORDS	{ return RECORDS; }
    REDEFINES	{ return REDEFINES; }
!   REEL		{ return REEL; }
    REFERENCE	{ return REFERENCE; }
    RELATIVE	{ return RELATIVE; }
    RELEASE	{ return RELEASE; }
*************** BASIS		{ yy_push_state(basis); return BA
*** 2353,2429 ****
    REPORTS	{ return REPORTS; }
    REPOSITORY	{ return REPOSITORY; }
    RESERVE	{ return RESERVE; }
!   RESET	{ return RESET; }
    RESUME	{ return RESUME; }
    RETURN	{ return RETURN; }
    RETURNING	{ return RETURNING; }
    REWIND	{ return REWIND; }
    REWRITE	{ return REWRITE; }
!   RF	{ return RF; }
!   RH	{ return RH; }
!   RIGHT	{ return RIGHT; }
    ROUNDED	{ return ROUNDED; }
!   RUN	{ return RUN; }
!   SAME	{ return SAME; }
    SCREEN	{ return SCREEN; }
!   SD	{ return SD; }
    SEARCH	{ return SEARCH; }
!   SECTION	{ return SECTION; }
    SELECT	{ return SELECT; }
    SENTENCE	{ return SENTENCE; }
    SEPARATE	{ return SEPARATE; }
    SEQUENCE	{ return SEQUENCE; }
    SEQUENTIAL	{ return SEQUENTIAL; }
!   SET	{ return SET; }
    SHARING	{ return SHARING; }
!   SIGN	{ return SIGN; }
!   SIZE	{ return SIZE; }
!   SORT	{ return SORT; }
    SORT-MERGE	{ return SORT_MERGE; }
    SOURCE	{ return SOURCE; }
!   SPACE	{ return SPACE; }
    SPACES	{ return SPACES; }
    SPECIAL-NAMES	{ return SPECIAL_NAMES; }
    STANDARD	{ return STANDARD; }
    STANDARD-1	{ return STANDARD_1; }
!   START	{ return START; }
    STATUS	{ return STATUS; }
!   STOP	{ return STOP; }
    SUBTRACT	{ return SUBTRACT; }
!   SUM	{ return SUM; }
    SUPPRESS	{ return SUPPRESS; }
    SYMBOLIC	{ return SYMBOLIC; }
    TALLYING	{ return TALLYING; }
    TERMINATE	{ return TERMINATE; }
!   TEST	{ return TEST; }
!   THAN	{ return THAN; }
!   THEN	{ return THEN; }
!   THRU	{ return THRU; }
!   TIME	{ return TIME; }
!   TIMES	{ return TIMES; }
!   TO	{ return TO; }
!   TOP	{ return TOP; }
    TRAILING	{ return TRAILING; }
  
!   TYPE	{ return TYPE; }
    TYPEDEF	{ return TYPEDEF; }
!   UNIT	{ return UNIT; }
!   UNTIL	{ return UNTIL; }
!   UP	{ return UP; }
!   UPON	{ return UPON; }
!   USAGE	{ return USAGE; }
!   USE	{ return USE; }
!   USING	{ return USING; }
!   VALUE	{ return VALUE; }
    VARYING	{ return VARYING; }
!   WHEN	{ return WHEN; }
!   WITH	{ return WITH; }
    WORKING-STORAGE	{ return WORKING_STORAGE; }
!   WRITE	{ return WRITE; }
  
    ZERO	|
    ZEROES	|
!   ZEROS	{ return ZERO; }
  }
  
  <*>{
--- 2400,2476 ----
    REPORTS	{ return REPORTS; }
    REPOSITORY	{ return REPOSITORY; }
    RESERVE	{ return RESERVE; }
!   RESET		{ return RESET; }
    RESUME	{ return RESUME; }
    RETURN	{ return RETURN; }
    RETURNING	{ return RETURNING; }
    REWIND	{ return REWIND; }
    REWRITE	{ return REWRITE; }
!   RF		{ return RF; }
!   RH		{ return RH; }
!   RIGHT		{ return RIGHT; }
    ROUNDED	{ return ROUNDED; }
!   RUN		{ return RUN; }
!   SAME		{ return SAME; }
    SCREEN	{ return SCREEN; }
!   SD		{ return SD; }
    SEARCH	{ return SEARCH; }
!   SECTION	{ yylval.string = NULL; return SECTION; }
    SELECT	{ return SELECT; }
    SENTENCE	{ return SENTENCE; }
    SEPARATE	{ return SEPARATE; }
    SEQUENCE	{ return SEQUENCE; }
    SEQUENTIAL	{ return SEQUENTIAL; }
!   SET		{ return SET; }
    SHARING	{ return SHARING; }
!   SIGN		{ return SIGN; }
!   SIZE		{ return SIZE; }
!   SORT		{ return SORT; }
    SORT-MERGE	{ return SORT_MERGE; }
    SOURCE	{ return SOURCE; }
!   SPACE		{ return SPACE; }
    SPACES	{ return SPACES; }
    SPECIAL-NAMES	{ return SPECIAL_NAMES; }
    STANDARD	{ return STANDARD; }
    STANDARD-1	{ return STANDARD_1; }
!   START		{ return START; }
    STATUS	{ return STATUS; }
!   STOP		{ return STOP; }
    SUBTRACT	{ return SUBTRACT; }
!   SUM		{ return SUM; }
    SUPPRESS	{ return SUPPRESS; }
    SYMBOLIC	{ return SYMBOLIC; }
    TALLYING	{ return TALLYING; }
    TERMINATE	{ return TERMINATE; }
!   TEST		{ return TEST; }
!   THAN		{ return THAN; }
!   THEN		{ return THEN; }
!   THRU		{ return THRU; }
!   TIME		{ return TIME; }
!   TIMES		{ return TIMES; }
!   TO		{ return TO; }
!   TOP		{ return TOP; }
    TRAILING	{ return TRAILING; }
  
!   TYPE		{ return TYPE; }
    TYPEDEF	{ return TYPEDEF; }
!   UNIT		{ return UNIT; }
!   UNTIL		{ return UNTIL; }
!   UP		{ return UP; }
!   UPON		{ return UPON; }
!   USAGE		{ return USAGE; }
!   USE		{ return USE; }
!   USING		{ return USING; }
!   VALUE		{ return VALUE; }
    VARYING	{ return VARYING; }
!   WHEN		{ return WHEN; }
!   WITH		{ return WITH; }
    WORKING-STORAGE	{ return WORKING_STORAGE; }
!   WRITE		{ return WRITE; }
  
    ZERO	|
    ZEROES	|
!   ZEROS		{ return ZERO; }
  }
  
  <*>{
*************** BASIS		{ yy_push_state(basis); return BA
*** 2460,2487 ****
  		  return NO_CONDITION;
  		}
  
! <<EOF>>         {
! 
!                   if( YY_START == quoted1 || YY_START == quoted2 ) {
! 		    error_msg(yylloc, "syntax error: unterminated string '%s'",
  			     tmpstring);
! 		    cbl_internal_error("");
!                   }
!                   yypop_buffer_state();
! 
!                   if ( !YY_CURRENT_BUFFER ) {
! 		    return 0;
!                   }
! 
!                   if( ! wait_for_the_child() ) {
!                     yyterminate();
!                   }
! 		  cobol_filename_restore();
!    		  parser_leave_file();
! 
! 		  if( yydebug ) yywarn("resume parsing '%s'", cobol_filename());
! 		  yy_set_bol(true);
!                 }
  
  %%
  
--- 2507,2519 ----
  		  return NO_CONDITION;
  		}
  
! <quoted1,quoted2>{
!   <<EOF>> 	{
! 		    error_msg(yylloc, "syntax error: unterminated string %<%s%>",
  			     tmpstring);
! 		    return NO_CONDITION;
! 		}
! }
  
  %%
  
diff -Nrcpad gcc-15-20250726/gcc/cobol/scan_ante.h gcc-15-20250809/gcc/cobol/scan_ante.h
*** gcc-15-20250726/gcc/cobol/scan_ante.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/scan_ante.h	Sat Aug  9 22:32:37 2025
*************** numstr_of( const char string[], radix_t
*** 149,155 ****
      }
      auto nx = std::count_if(input, p, fisdigit);
      if( 36 < nx ) {
!       error_msg(yylloc, "significand of %s has more than 36 digits (%zu)", input, nx);
        return NO_CONDITION;
      }
  
--- 149,155 ----
      }
      auto nx = std::count_if(input, p, fisdigit);
      if( 36 < nx ) {
!       error_msg(yylloc, "significand of %s has more than 36 digits (%ld)", input, (long)nx);
        return NO_CONDITION;
      }
  
*************** numstr_of( const char string[], radix_t
*** 159,169 ****
      //  exponent is implementor-defined." (We allow 9999.)
      nx = std::count_if(p, eoinput, fisdigit);
      if( 4 < nx ) {
!       error_msg(yylloc, "exponent %s more than 4 digits", ++p);
        return NO_CONDITION;
      }
      if( eoinput != std::find(p, eoinput, symbol_decimal_point()) ) {
!       error_msg(yylloc, "exponent includes decimal point", ++p);
        return NO_CONDITION;
      }
  
--- 159,169 ----
      //  exponent is implementor-defined." (We allow 9999.)
      nx = std::count_if(p, eoinput, fisdigit);
      if( 4 < nx ) {
!       error_msg(yylloc, "exponent %qs more than 4 digits", ++p);
        return NO_CONDITION;
      }
      if( eoinput != std::find(p, eoinput, symbol_decimal_point()) ) {
!       error_msg(yylloc, "exponent %qs includes decimal point", ++p);
        return NO_CONDITION;
      }
  
*************** numstr_of( const char string[], radix_t
*** 187,193 ****
      }
    }
    if( 1 < std::count(input, eoinput, symbol_decimal_point()) ) {
!     error_msg(yylloc, "invalid numeric literal", ++p);
      return NO_CONDITION;
    }
  
--- 187,193 ----
      }
    }
    if( 1 < std::count(input, eoinput, symbol_decimal_point()) ) {
!     error_msg(yylloc, "invalid numeric literal %qs", ++p);
      return NO_CONDITION;
    }
  
*************** struct cdf_status_t {
*** 214,220 ****
    const char *filename;
    int  token;
    bool parsing;
!   cdf_status_t( int token = 0, bool parsing = true )
      : lineno(yylineno), filename(cobol_filename())
      , token(token), parsing(parsing)
    {}
--- 214,224 ----
    const char *filename;
    int  token;
    bool parsing;
!   cdf_status_t()
!     : lineno(yylineno), filename(cobol_filename())
!     , token(0), parsing(true)
!   {}
!   cdf_status_t( int token, bool parsing )
      : lineno(yylineno), filename(cobol_filename())
      , token(token), parsing(parsing)
    {}
*************** static class parsing_status_t : public s
*** 291,297 ****
    void splat() const {
      int i=0;
      for( const auto& status : c ) {
!       yywarn( "%4d\t%s", ++i, status.str() );
      }
    }
  } parsing;
--- 295,301 ----
    void splat() const {
      int i=0;
      for( const auto& status : c ) {
!       yywarn( "%d %s", ++i, status.str() );
      }
    }
  } parsing;
*************** void field_done() { orig_picture[0] = '\
*** 301,307 ****
  
  static int scanner_token() {
    if( parsing.empty() ) {
!     error_msg(yylloc, ">>ELSE or >>END-IF without >>IF");
      return NO_CONDITION;
    }
    return parsing.top().token;
--- 305,311 ----
  
  static int scanner_token() {
    if( parsing.empty() ) {
!     error_msg(yylloc, "%<>>ELSE%> or %<>>END-IF%> without %<>>IF%>");
      return NO_CONDITION;
    }
    return parsing.top().token;
*************** bool scanner_normal()  { return parsing.
*** 313,343 ****
  void scanner_parsing( int token, bool tf ) {
    parsing.push( cdf_status_t(token, tf) );
    if( yydebug ) {
!     yywarn("%10s: parsing now %5s, depth %zu",
              keyword_str(token), boolalpha(parsing.on()), parsing.size());
      parsing.splat();
    }
  }
  void scanner_parsing_toggle() {
    if( parsing.empty() ) {
!     error_msg(yylloc, ">>ELSE without >>IF");
      return;
    }
    parsing.top().toggle();
    if( yydebug ) {
!     yywarn("%10s: parsing now %5s",
              keyword_str(CDF_ELSE), boolalpha(parsing.on()));
    }
  }
  void scanner_parsing_pop() {
    if( parsing.empty() ) {
!     error_msg(yylloc, ">>END-IF without >>IF");
      return;
    }
    parsing.pop();
    if( yydebug ) {
!     yywarn("%10s: parsing now %5s, depth %zu",
!             keyword_str(CDF_END_IF), boolalpha(parsing.on()), parsing.size());
      parsing.splat();
    }
  }
--- 317,348 ----
  void scanner_parsing( int token, bool tf ) {
    parsing.push( cdf_status_t(token, tf) );
    if( yydebug ) {
!     yywarn("%s: parsing now %s, depth %zu",
              keyword_str(token), boolalpha(parsing.on()), parsing.size());
      parsing.splat();
    }
  }
  void scanner_parsing_toggle() {
    if( parsing.empty() ) {
!     error_msg(yylloc, "%<>>ELSE%> without %<>>IF%>");
      return;
    }
    parsing.top().toggle();
    if( yydebug ) {
!     yywarn("%s: parsing now %s",
              keyword_str(CDF_ELSE), boolalpha(parsing.on()));
    }
  }
  void scanner_parsing_pop() {
    if( parsing.empty() ) {
!     error_msg(yylloc, "%<>>END-IF%> without %<>>IF%>");
      return;
    }
    parsing.pop();
    if( yydebug ) {
!     yywarn("%s: parsing now %s, depth %zu",
!             keyword_str(CDF_END_IF), boolalpha(parsing.on()),
! 	   parsing.size());
      parsing.splat();
    }
  }
*************** static void level_found() {
*** 351,356 ****
--- 356,365 ----
    if( scanner_normal() ) parsing.need_level(false);
  }
  
+ /*
+  * Trim the scanned location by the amount about to re-scanned. 
+  * Must be a macro because it expands yyless. 
+  */
  #define myless(N)				\
    do {						\
      auto n(N);					\
*************** class enter_leave_t {
*** 368,375 ****
   public:
    enter_leave_t() : entering(NULL), leaving(NULL), filename(NULL) {}
    enter_leave_t(  parser_enter_file_f *entering, const char *filename )
!     : entering(entering), leaving(NULL), filename(filename) {}
!   enter_leave_t(parser_leave_file_f *leaving)
      : entering(NULL), leaving(leaving), filename(NULL) {}
  
    void notify() {
--- 377,385 ----
   public:
    enter_leave_t() : entering(NULL), leaving(NULL), filename(NULL) {}
    enter_leave_t(  parser_enter_file_f *entering, const char *filename )
!     : entering(entering), leaving(NULL), filename(filename)
!   {}
!   explicit enter_leave_t(parser_leave_file_f *leaving)
      : entering(NULL), leaving(leaving), filename(NULL) {}
  
    void notify() {
*************** class enter_leave_t {
*** 381,389 ****
        gcc_assert(leaving == NULL);
      }
      if( leaving ) {
!       auto name = cobol_filename_restore();
        if( yy_flex_debug ) dbgmsg("resuming line %4d of %s",
!                                  yylineno, name? name : "<none>");
        leaving();
        gcc_assert(entering == NULL);
      }
--- 391,399 ----
        gcc_assert(leaving == NULL);
      }
      if( leaving ) {
!       cobol_filename_restore();
        if( yy_flex_debug ) dbgmsg("resuming line %4d of %s",
!                                  yylineno, cobol_filename());
        leaving();
        gcc_assert(entering == NULL);
      }
*************** static class input_file_status_t {
*** 397,403 ****
      inputs.push( enter_leave_t(parser_enter_file, filename) );
    }
    void leave() {
!     inputs.push( parser_leave_file );
    }
    void notify() {
      while( ! inputs.empty() ) {
--- 407,413 ----
      inputs.push( enter_leave_t(parser_enter_file, filename) );
    }
    void leave() {
!     inputs.push( enter_leave_t(parser_leave_file) );
    }
    void notify() {
      while( ! inputs.empty() ) {
*************** static class input_file_status_t {
*** 410,435 ****
  
  void input_file_status_notify() { input_file_status.notify(); }
  
! void cdf_location_set(YYLTYPE loc);
  
  static void
! update_location() {
    YYLTYPE loc = {
      yylloc.last_line, yylloc.last_column,
      yylineno,         yylloc.last_column + yyleng
    };
  
!   auto nline = std::count(yytext, yytext + yyleng, '\n');
!   if( nline ) {
!     char *p = static_cast<char*>(memrchr(yytext, '\n', yyleng));
      loc.last_column = (yytext + yyleng) - p;
    }
  
    yylloc = loc;
!   cdf_location_set(loc);
!   location_dump(__func__, __LINE__, "yylloc", yylloc);
  }
  
  static void
  trim_location( int nkeep) {
    gcc_assert( 0 <= nkeep && nkeep <= yyleng );
--- 420,479 ----
  
  void input_file_status_notify() { input_file_status.notify(); }
  
! /*
!  * parse.y and cdf.y each define a 4-integer struct to hold a token's location. 
!  * parse.y uses   YYLTYPE  yylloc;
!  * cdf.y   uses YDFLLTYPE ydflloc;
!  * 
!  * The structs have identical definitions with different types and of course
!  * names.  We define "conversion" between them for convenience. 
!  * 
!  * Each parser expects its location value to be updated whenever it calls
!  * yylex().  Therefore, here in the lexer we set both locations as each token
!  * is scanned, so that both parsers see the same location.
!  */
! static YDFLTYPE
! ydfltype_of( const YYLTYPE& loc ) {
!   YDFLTYPE output { 
!     loc.first_line,   loc.first_column,
!     loc.last_line,    loc.last_column };
!   return output;
! }
  
+ /*
+  * After the input filename and yylineno are set, update the location of the
+  * scanned token.
+  */
  static void
! update_location( const YYLTYPE *ploc = nullptr ) {
    YYLTYPE loc = {
      yylloc.last_line, yylloc.last_column,
      yylineno,         yylloc.last_column + yyleng
    };
+   if( ploc ) loc = *ploc;
  
!   const char *p = static_cast<char*>(memrchr(yytext, '\n', yyleng));
!   if( p ) {
      loc.last_column = (yytext + yyleng) - p;
    }
  
    yylloc = loc;
!   ydflloc = ydfltype_of(yylloc);
! 
!   dbgmsg("  SC: %s location (%d,%d) to (%d,%d)",
!          start_condition_is(),
!          yylloc.first_line, yylloc.first_column,
!          yylloc.last_line,  yylloc.last_column);
! }
! 
! static void
! reset_location() {
!   static const YYLTYPE loc { yylineno, 1, yylineno, 1 };
!   update_location(&loc);
  }
  
+ #define YY_USER_ACTION update_location();
+ 
  static void
  trim_location( int nkeep) {
    gcc_assert( 0 <= nkeep && nkeep <= yyleng );
*************** trim_location( int nkeep) {
*** 438,451 ****
    } rescan = { yytext + nkeep, yytext + yyleng };
  
    auto nline = std::count(rescan.p, rescan.pend, '\n');
!   dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (%zu lines, %d bytes)",
           __func__, __LINE__,
           nkeep,
           int(rescan.size()), rescan.p,
!          nline, rescan.size());
    if( nline ) {
      gcc_assert( yylloc.first_line + nline <= yylloc.last_line );
!     yylloc.last_line =- int(nline);
      char *p = static_cast<char*>(memrchr(rescan.p, '\n', rescan.size()));
      yylloc.last_column = rescan.pend - ++p;
      return;
--- 482,497 ----
    } rescan = { yytext + nkeep, yytext + yyleng };
  
    auto nline = std::count(rescan.p, rescan.pend, '\n');
!   dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (" HOST_SIZE_T_PRINT_UNSIGNED
!          " lines, " HOST_SIZE_T_PRINT_UNSIGNED " bytes)",
           __func__, __LINE__,
           nkeep,
           int(rescan.size()), rescan.p,
!          (fmt_size_t)nline, (fmt_size_t)rescan.size());
    if( nline ) {
      gcc_assert( yylloc.first_line + nline <= yylloc.last_line );
!     yylloc.last_line -= int(nline);
!     gcc_assert( yylloc.first_line <= yylloc.last_line );
      char *p = static_cast<char*>(memrchr(rescan.p, '\n', rescan.size()));
      yylloc.last_column = rescan.pend - ++p;
      return;
*************** update_location_col( const char str[], i
*** 473,479 ****
  
  #define YY_USER_INIT do {			\
      static YYLTYPE ones = {1,1, 1,1};		\
!     yylloc = ones;				\
    } while(0)
  
  /*
--- 519,526 ----
  
  #define YY_USER_INIT do {			\
      static YYLTYPE ones = {1,1, 1,1};		\
!     yylloc = ones;                              \
!     ydflloc = ydfltype_of(yylloc);              \
    } while(0)
  
  /*
*************** update_location_col( const char str[], i
*** 482,502 ****
   * updates neither yylval nor yylloc.  That job is left to the actions.
   *
   * The parser relies on yylex to set yylval and yylloc each time it is
!  * called. It apparently maintains a separate copy for each term, and uses
   * YYLLOC_DEFAULT() to update the location of nonterminals.
   */
  #define YY_DECL int lexer(void)
  
- #define YY_USER_ACTION							\
-   update_location();							\
-   if( yy_flex_debug ) dbgmsg("SC: %s", start_condition_is() );
- 
  # define YY_INPUT(buf, result, max_size)                        \
  {                                                               \
    if( 0 == (result = lexer_input(buf, max_size, yyin)) )        \
      result = YY_NULL;                                           \
  }
  
  #define scomputable(T, C)                               \
      yylval.computational.type=T,                        \
      yylval.computational.capacity=C,                    \
--- 529,549 ----
   * updates neither yylval nor yylloc.  That job is left to the actions.
   *
   * The parser relies on yylex to set yylval and yylloc each time it is
!  * called. It maintains a separate copy for each term, and uses
   * YYLLOC_DEFAULT() to update the location of nonterminals.
   */
  #define YY_DECL int lexer(void)
  
  # define YY_INPUT(buf, result, max_size)                        \
  {                                                               \
    if( 0 == (result = lexer_input(buf, max_size, yyin)) )        \
      result = YY_NULL;                                           \
  }
  
+ #define bcomputable(T, C)                               \
+     yylval.computational.type=T,                        \
+     yylval.computational.capacity=C,                    \
+     yylval.computational.signable=true, BINARY_INTEGER
  #define scomputable(T, C)                               \
      yylval.computational.type=T,                        \
      yylval.computational.capacity=C,                    \
*************** static char *tmpstring = NULL;
*** 510,515 ****
--- 557,666 ----
  
  #define PROGRAM current_program_index()
  
+ // map of alias => canonical
+ static std::map <std::string, std::string> keyword_aliases;
+ 
+ const std::string& 
+ keyword_alias_add( const std::string& keyword, const std::string& alias ) {
+   auto p = keyword_aliases.find(alias);
+   if( p != keyword_aliases.end() ) return p->second; // error: do not overwrite
+   return keyword_aliases[alias] = keyword;
+ }
+ 
+ /*
+  * Because numeric USAGE types don't have distinct tokens and may have aliases,
+  * we keep a table of their canonical names, which we use if we encounter an
+  * alias.
+  */
+ struct bint_t {
+   int token;
+   cbl_field_type_t type;
+   uint32_t capacity;
+   bool signable;
+ };
+ static const std::map <std::string, bint_t > binary_integers {
+   { "COMP-X", { COMPUTATIONAL, FldNumericBin5, 0xFF, false } }, 
+   { "COMP-6", { COMPUTATIONAL, FldPacked, 0, false } }, 
+   { "COMP-5", { COMPUTATIONAL, FldNumericBin5, 0, false } }, 
+   { "COMP-4", { COMPUTATIONAL, FldNumericBinary, 0, true } }, 
+   { "COMP-2", { COMPUTATIONAL, FldFloat, 8, false } }, 
+   { "COMP-1", { COMPUTATIONAL, FldFloat, 4, false } }, 
+   { "COMP", { COMPUTATIONAL, FldNumericBinary, 0, false } }, 
+   { "COMPUTATIONAL-X", { COMPUTATIONAL, FldNumericBin5, 0xFF, false } }, 
+   { "COMPUTATIONAL-6", { COMPUTATIONAL, FldPacked, 0, false } }, 
+   { "COMPUTATIONAL-5", { COMPUTATIONAL, FldNumericBin5, 0, false } }, 
+   { "COMPUTATIONAL-4", { COMPUTATIONAL, FldNumericBinary, 0, true } }, 
+   { "COMPUTATIONAL-2", { COMPUTATIONAL, FldFloat, 8, false } }, 
+   { "COMPUTATIONAL-1", { COMPUTATIONAL, FldFloat, 4, false } }, 
+   { "COMPUTATIONAL", { COMPUTATIONAL, FldNumericBinary, 0, false } }, 
+   { "BINARY", { BINARY_INTEGER, FldNumericBinary, 0, true } }, 
+   { "BINARY-CHAR", { BINARY_INTEGER, FldNumericBin5, 1, true } }, 
+   { "BINARY-SHORT", { BINARY_INTEGER, FldNumericBin5, 2, true } }, 
+   { "BINARY-LONG", { BINARY_INTEGER, FldNumericBin5, 4, true } }, 
+   { "BINARY-DOUBLE", { BINARY_INTEGER, FldNumericBin5, 8, true } }, 
+   { "BINARY-LONG-LONG", { BINARY_INTEGER, FldNumericBin5, 8, true } }, 
+   { "FLOAT-BINARY-32", { COMPUTATIONAL, FldFloat, 4, false } }, 
+   { "FLOAT-BINARY-64", { COMPUTATIONAL, FldFloat, 8, false } }, 
+   { "FLOAT-BINARY-128", { COMPUTATIONAL, FldFloat, 16, false } }, 
+   { "FLOAT-EXTENDED", { COMPUTATIONAL, FldFloat, 16, false } }, 
+   { "FLOAT-LONG", { COMPUTATIONAL, FldFloat, 8, false } }, 
+   { "FLOAT-SHORT", { COMPUTATIONAL, FldFloat, 4, false } }, 
+ };
+ 
+ static int
+ binary_integer_usage( const char name[]) {
+   cbl_name_t uname = {};
+   std::transform(name, name + strlen(name), uname, ftoupper);
+ 
+   dbgmsg("%s:%d: checking %s in %zu keyword_aliases",
+ 	 __func__, __LINE__, uname,
+ 	 keyword_aliases.size() );
+ 
+   std::string key = uname;
+   auto alias = keyword_aliases.find(key);
+   if( alias != keyword_aliases.end() ) key = alias->second;
+   
+   auto p = binary_integers.find(key);
+   if( p == binary_integers.end() ) return 0;
+   
+   yylval.computational.type = p->second.type;
+   yylval.computational.capacity = p->second.capacity;
+   yylval.computational.signable = p->second.signable;
+   dbgmsg("%s:%d: %s has type %d", __func__, __LINE__,
+ 	 uname, p->second.type );
+   return p->second.token;
+ }
+       
+ static void
+ verify_ws( const YYLTYPE& loc, const char input[], char ch ) {
+   if( ! fisspace(ch) ) {
+     if( ! (dialect_mf() || dialect_gnu()) ) {
+       dialect_error(loc, "separator space required in %qs", input);
+     }
+   }
+ }
+ #define verify_ws(C) verify_ws(yylloc, yytext, C)
+ 
+ int
+ binary_integer_usage_of( const char name[] ) {
+   cbl_name_t uname = {};
+   std::transform(name, name + strlen(name), uname, ftoupper);
+ 
+   auto p = binary_integers.find(uname);
+   if( p != binary_integers.end() ) {
+     int token = p->second.token;
+     switch( token ) {
+     case COMPUTATIONAL:
+     case BINARY_INTEGER:
+       return token;
+     default:
+       gcc_unreachable();
+       assert(false);
+     }
+   }
+   return 0;
+ }
+ 
  static uint32_t
  level_of( const char input[] ) {
    unsigned int output = 0;
*************** picset( int token ) {
*** 543,548 ****
--- 694,1080 ----
    return token;
  }
  
+ /**
+ ## Script and data to produce picture_t::followers.
+ ## Based on ISO Table 10. 
+ #! /usr/bin/awk -f
+ 
+ BEGIN  {
+   str = "B0/ , . + +- +- CR/DB cs cs Z* Z* + + cs cs 9 AX S V P P 1 N E"
+   split(str, cols)
+ }
+ 
+ $1 ~ /CR|DB|cs/ { next }
+ 
+ 0 && !nlines++ {
+   for( i=0; i < length(cols); i++ ) {
+     print i, cols[i], "'" $i "'"
+   }
+ }
+ 
+ $field == "x" {
+   if( ! nout++ ) {
+     printf "%2d: %5s: \"", field, cols[field - 1]
+   }
+ 
+   gsub(/^ +| +$/, "", $1) 
+   printf "%s", $1
+ }
+ 
+ END {
+   if( ! nout++ ) {
+     printf "%2d: %5s: \"", field, cols[field - 1]
+   }
+   print "\""
+ }
+ 
+ B  x x x - x - - x - x x x x x x x x - x - x - x
+ 0  x x x - x - - x - x x x x x x x x - x - x - x
+ /  x x x - x - - x - x x x x x x x x - x - x - x
+ ,  x x x - x - - x - x x x x x x x - - x - x
+ .  x x - - x - - x - x - x - x - x
+ +  - - - - - - - - - - - - - - - - - - - - - - - x
+ +
+ –
+ +  x x x - - - - x x x x - - x x x - - x x x
+ CR x x x - - - - x x x x - - x x x - - x x x
+ DB x x x - - - - x x x x - - x x x - - x x x
+ cs - - - - x
+ cs x x x - x - - - - x x - - - - x - - x x x
+ 
+ Z  x x - - x - - x - x
+ *  x x - - x - - x - x
+ Z  x x x - x - - x - x x - - - - - - - x - x
+ *  x x x - x - - x - x x - - - - - - - x - x
+ +  x x - - - - - x - - - x
+ –  x x - - - - - x - - - x
+ +  x x x - - - - x - - - x x - - - - - x
+ –  x x x - - - - x - - - x x - - - - - x
+ cs x x - - x - - - - - - - - x
+ cs x x x - x - - - - - - - - x x - - - x
+ 
+ 9  x x x x x - - x - x - x - x - x x x x - x - - x
+ A  x - - - - - - - - - - - - - - x x
+ X  x - - - - - - - - - - - - - - x x
+ S 
+ V  x x - - x - - x - x - x - x - x - x - x
+ P  x x - - x - - x - x - x - x - x - x - x
+ P  - - - - x - - x - - - - - - - - - x x - x
+ 1  - - - - - - - - - - - - - - - - - - - - - x
+ N  x - - - - - - - - - - - - - - - - - - - - - x
+ E  x x x - x - - - - - - - - - - x
+ **/
+ 
+ class picture_t {
+   static const char dot = '.', comma = ',';
+ 
+   typedef std::vector<std::string> followings_t;
+   static const std::map <char, followings_t> followers;
+   
+   const char * const begin;
+   const char *p, *pend; 
+   size_t pos;
+   struct exclusions_t { // Nonzero if set, > 1 is false.
+     // crdb means CR/DB or +/-.
+     // pluses means 2 or more consecutive '+'.
+     // minuses means 2 or more consecutive '-'.
+     // "21) The symbol 'Z' and the symbol '*' are mutually exclusive "
+     // stars means '*' or Z.
+     unsigned short int crdb, currency, dot, pluses, minuses, stars, zzz;
+     exclusions_t()
+       : crdb(0), currency(0), dot(0), pluses(0), minuses(0), stars(0)
+     {}
+   } exclusions;
+   YYLTYPE loc;
+   
+   bool is_crdb() const { // input must be uppercase for CR/DB
+     if( p[0] == 'C' || p[0] == 'D' ) {
+       char input[3] = { p[0], p[1] };
+       return ( 0 == strcmp(input, "CR") || 0 == strcmp(input, "DB") );
+     }
+     return false;
+   }
+ 
+   const char * match_paren( const char *paren ) const {
+     gcc_assert(paren[0] == '(');  // start with opening paren
+     paren = std::find_if( paren, pend,
+                           []( char ch ) {
+                             return ch == '(' || ch == ')';
+                           } );
+     if( *paren == '(' ) return nullptr; // no nesting
+     if( paren == pend ) return nullptr;
+     return ++paren;
+   }
+ 
+   const char * next_not( char ch ) const {
+     return std::find_if( p, pend,
+                          [ch = TOUPPER(ch)]( char next ) {
+                            return ch != next;
+                          } );
+   }
+ 
+   const char * valid_next( const char *p, const std::string& valid ) const {
+     if( p == pend || p + 1 == pend ) return pend;
+     if( p[1] == '(' ) {
+       return match_paren(++p);
+     }
+     auto pv = std::find(valid.begin(), valid.end(), TOUPPER(p[1]));
+     return pv != valid.end()? ++p : nullptr;
+   }
+   const char * valid_next( const char *p,
+                            bool first = true, char ch = '\0' ) const {
+     if( p == pend || p + 1 == pend ) return pend;
+     if( p[0] == '(' ) {
+       if( (p = match_paren(p)) == nullptr ) return nullptr;
+     }
+     if( p[0] == '(' ) return nullptr;  // consecutive parentheses
+     
+     int index = first? 0 : 1;
+     if( !ch ) ch = *p;   // use current character unless overridden
+     auto valid = followers.find(TOUPPER(ch));
+     if( valid == followers.end() ) {
+       YYLTYPE loc(yylloc);
+       loc.first_column += int(p - begin);
+       error_msg( loc, "PICTURE: strange character %qc, giving up", ch );
+       return nullptr;
+     }
+     return valid_next(p, valid->second[index]);
+   }
+ 
+   const char * start() { // start modifies exclusions, but not p
+     auto pnext = p;
+ 
+     switch(TOUPPER(p[0])) {
+     case comma: case dot:
+       // use decimal_is_comma()
+       //  4:     .: "B0/,+Z*+-9E"
+       exclusions.dot++;
+       pnext = valid_next(p, "B0/,+Z*+-9E");
+       break;
+     case '+': case '-':
+       //  6:    +-: "B0/,.Z*Z*9VPPE"
+       exclusions.crdb++;
+       pnext = next_not(p[0]);
+       if( p + 1 < pnext ) {
+         exclusions.pluses++;
+       }
+       pnext = valid_next(--pnext, "B0/,.Z*Z*9VPPE");
+       break;
+     case 'Z': case '*': 
+       exclusions.stars++;
+       pnext = next_not(p[0]);
+       break;
+     case 'S':
+       // 19:     S: "9VP"
+       pnext = valid_next(p, "9VP");
+       break;
+     }
+ 
+     /*
+      * "For fixed editing sign control, the currency symbol, when used, shall
+      * be either the leftmost symbol in character-string-1, optionally preceded
+      * by one of the symbols '+' or '-' "
+      */
+     if( pnext ) {
+       if( p == pnext || p[0] == '+' || p[0] == '-' ) {
+         if( symbol_currency(*pnext) ) {
+           exclusions.currency++;
+           pnext = next_not(*pnext);
+           pnext = valid_next(--pnext, true, '$');
+         }
+       }
+     }
+     
+     return pnext;
+   }
+ 
+   const char * next() { // modify state; do not modify position
+     auto pnext = p;
+     auto loc(picture_t::loc);
+     loc.first_column += int(p - begin);
+ 
+     if( is_crdb() ) {
+       if( exclusions.crdb++ ) {
+         error_msg( loc, "PICTURE: CR/DB and %c/%c may appear only once", '+', '-' );
+         return nullptr;
+       }
+       if( p + 2 != pend ) { 
+         error_msg( loc, "PICTURE: CR/DB must appear at the end" );
+         return nullptr;
+       }
+       return pend;
+     }
+ 
+     if( symbol_currency(p[0]) ) {
+       if( false && exclusions.currency++ ) { // not enforced
+         error_msg( loc, "PICTURE: CURRENCY SYMBOL sequence may appear at most once" );
+         return nullptr;
+       }
+       return valid_next(p, ! exclusions.dot, '$');
+     }
+ 
+     switch(TOUPPER(p[0])) {
+     case '(':
+       return match_paren(p);
+       break;
+     case 'B': case '0': case '/':
+       pnext = valid_next(p);
+       break;
+     case comma: 
+       if( decimal_is_comma() ) {
+         if( exclusions.dot++ ) {
+           error_msg( loc, "PICTURE: %qc: may appear at most once", p[0] );
+           return nullptr;
+         }
+         pnext = valid_next(p, true, dot);
+       } else {
+         pnext = valid_next(p);
+       }
+       break;
+     case dot: 
+       if( p + 1 == pend ) {
+         pnext = pend;
+       } else {
+         if( decimal_is_comma() ) {
+           pnext = valid_next(p, true, comma );
+         } else {
+           if( exclusions.dot++ ) {
+             error_msg( loc, "PICTURE: %qc: may appear at most once", p[0] );
+             return nullptr;
+           }
+           pnext = valid_next(p);
+         }
+       }
+       break;
+ 
+     case '+': case '-':
+       // 7 is trailing sign; 13 & 14 are numeric.  Leading sign handled by start(). 
+       if( p + 1 == pend ) {
+         if( exclusions.crdb++ ) {
+           error_msg( loc, "PICTURE: %c/%c may appear at most once as a sign", '+', '-' );
+           return nullptr;
+         }
+         pnext = pend;
+       } else {
+         pnext = next_not(p[0]);
+         if( p + 1 < pnext ) {
+           if( false && exclusions.pluses++ )  { // not enforced
+             error_msg( loc, "PICTURE: %qc: sequence may appear at most once", p[0] );
+             return nullptr;
+           }
+         }
+         pnext = valid_next(pnext, ! exclusions.dot);
+       }
+       break;
+ 
+     case 'Z': case '*':
+       if( false && exclusions.stars++ ) { // not enforced 
+         error_msg( loc, "PICTURE: %qc: sequence may appear at most once", p[0] );
+         return nullptr;
+       }
+       if( (pnext = next_not(p[0])) == nullptr ) return pnext;
+       pnext = valid_next(pnext, ! exclusions.dot);
+       break;
+     case 'P':
+       pnext = valid_next(pnext, ! exclusions.dot);
+       break;
+     case '9':
+     case 'A': case 'X':
+     case 'V':
+     case '1':
+     case 'N':
+       pnext = valid_next(p);
+       break;
+     case 'E':
+       pnext = valid_next(p, "+9");
+       if( pnext && *pnext == '+' ) {
+         pnext = valid_next(p, "9");
+       }
+       break;
+     default:
+       error_msg( loc, "PICTURE: %qc: invalid character", p[0] );
+       return nullptr;
+     }
+     return pnext;
+   }
+   
+  public:
+   picture_t( const char *p, int len )
+     : begin(p)
+     , p(p), pend(p + len)
+     , loc(yylloc)
+   { 
+     assert(TOUPPER(*p) == 'P'); // as in PICTURE (or PICTURE IS)
+     // move p to start of picture string
+     while( (p = std::find_if(p, pend, fisspace)) != pend ) {
+       this->p = p = std::find_if(p, pend,
+                                  []( char ch ) { return ! fisspace(ch); } );
+     }
+     assert(this->p != pend);
+     pos = this->p - begin;
+   }
+ 
+   bool is_valid() {
+     if( !p ) return false;
+     if( (p = start()) == nullptr ) {
+       return false;
+     }
+ 
+     while( p && p < pend) {
+       p = next();
+     }
+     return p == pend;
+   }
+ 
+   int starts_at() const { return pos; }
+ };
+ 
+ /*
+  * The Followers map gives 1 or 2 lists of valid characters following a
+  * character, the one in the key. If there are two lists, the correct one is
+  * determined by the caller based on the state of the picture string, i.e.,
+  * what has been seen before.
+  */
+ const std::map <char, picture_t::followings_t> picture_t::followers {
+   /*   B0/ */ { 'B', {"B0/,.Z*+-9AXVPNE" } },
+   /*   B0/ */ { '0', {"B0/,.Z*+-9AXVPNE" } },
+   /*   B0/ */ { '/', {"B0/,.Z*+-9AXVPNE" } },
+   /*     , */ { ',', {"B0/,.Z*+-9VPE"} },
+   /*     . */ { '.', {"B0/,Z*+-9E"} },
+   /*     +    { '+', "9" }, */
+   /*    +- */ { '+', {"B0/,.Z*9VPE", "" } },
+   /*    +- */ { '-', {"B0/,.Z*9VPE", "" } },
+   /* CR/DB    { 'C', "" }, */
+   /*    cs    { 'c', "B0/,.Z*+-9VP" }, */
+   /*    cs    { 'c', "+" }, */
+   /*    Z* */ { 'Z', {"B0/,.+Z*9VP", "B0/,+Z*"} },
+   /*    Z* */ { '*', {"B0/,.+Z*9VP", "B0/,+Z*"} },
+   /*     + */ { '+', {"B0/,.+-9VP",  "B0/,+-"} },
+   /*    cs */ { '$', {"B0/,.+9VP",   "B0/,+"} },
+   /*     9 */ { '9', {"B0/,.+9AXVPE"} },
+   /*    AX */ { 'A', {"B0/9AX"} },
+   /*    AX */ { 'X', {"B0/9AX"} },
+   /*     S */ { 'S', {"9VP"} },
+   /*     V */ { 'V', {"B0/,+Z*+-9P"} },
+   /*     P */ { 'P', {"+VP", "B0/,+Z*9P"} },
+   /*     1 */ { '1', {"1"} },
+   /*     N */ { 'N', {"B0/N"} },
+   /*     E */ { 'E', {"+9"} },
+ };
+ 
+ /*
+  * Although picture_t::is_valid return a bool, it's not used. The validation
+  * routines emit messages where the error is detected. The entire string is
+  * subsequently parsed by the parser, which might otherwise accept an invalid
+  * string, but will usually emit a message of its own.
+  */
+ static int 
+ validate_picture() {
+   picture_t picture(yytext, yyleng);
+   picture.is_valid();
+   return  picture.starts_at();
+ }
+ 
  static inline bool
  is_integer_token( int *pvalue = NULL ) {
    int v, n = 0;
*************** bool need_nume_set( bool tf ) {
*** 559,565 ****
  static int datetime_format_of( const char input[] );
  
  static int symbol_function_token( const char name[] ) {
!   auto e = symbol_function( 0, name );
    return e ? symbol_index(e) : 0;
  }
  
--- 1091,1097 ----
  static int datetime_format_of( const char input[] );
  
  static int symbol_function_token( const char name[] ) {
!   const auto e = symbol_function( 0, name );
    return e ? symbol_index(e) : 0;
  }
  
*************** typed_name( const char name[] ) {
*** 633,638 ****
--- 1165,1174 ----
      {
        auto f = cbl_field_of(e);
        if( is_constant(f) ) {
+ 	if(  f->data.initial ) {
+ 	  int token = cbl_figconst_tok(f->data.initial);
+ 	  if( token ) return token;
+ 	}
          int token = datetime_format_of(f->data.initial);
          if( token ) {
            yylval.string = xstrdup(f->data.initial);
*************** typed_name( const char name[] ) {
*** 643,649 ****
      __attribute__((fallthrough));
    case FldLiteralN:
      {
!       auto f = cbl_field_of(e);
        if( type == FldLiteralN ) {
          yylval.numstr.radix =
            f->has_attr(hex_encoded_e)? hexadecimal_e : decimal_e;
--- 1179,1185 ----
      __attribute__((fallthrough));
    case FldLiteralN:
      {
!       const auto f = cbl_field_of(e);
        if( type == FldLiteralN ) {
          yylval.numstr.radix =
            f->has_attr(hex_encoded_e)? hexadecimal_e : decimal_e;
*************** typed_name( const char name[] ) {
*** 677,683 ****
      return cbl_field_of(e)->level == 88? NAME88 : CLASS_NAME;
      break;
    default:
!     yywarn("%s:%d: invalid symbol type %s for symbol \"%s\"",
            __func__, __LINE__, cbl_field_type_str(type), name);
      return NAME;
    }
--- 1213,1219 ----
      return cbl_field_of(e)->level == 88? NAME88 : CLASS_NAME;
      break;
    default:
!     yywarn("%s:%d: invalid symbol type %s for symbol %qs",
            __func__, __LINE__, cbl_field_type_str(type), name);
      return NAME;
    }
*************** tmpstring_append( int len ) {
*** 699,730 ****
  
  #define pop_return yy_pop_state(); return
  
- static bool
- wait_for_the_child(void) {
-   pid_t pid;
-   int status;
- 
-   if( (pid = wait(&status)) == -1 ) {
-     yywarn("internal error: no pending child CDF parser process");
-     return false;
-   }
- 
-   if( WIFSIGNALED(status) ) {
-     yywarn( "process %d terminated by %s", pid, strsignal(WTERMSIG(status)) );
-     return false;
-   }
-   if( WIFEXITED(status) ) {
-     if( WEXITSTATUS(status) != 0 ) {
-       yywarn("process %d exited with status %d", pid, status);
-       return false;
-     }
-   }
-   if( yy_flex_debug ) {
-     yywarn("process %d exited with status %d", pid, status);
-   }
-   return true;
- }
- 
  static bool is_not = false;
  
  static uint64_t
--- 1235,1240 ----
diff -Nrcpad gcc-15-20250726/gcc/cobol/scan_post.h gcc-15-20250809/gcc/cobol/scan_post.h
*** gcc-15-20250726/gcc/cobol/scan_post.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/scan_post.h	Sat Aug  9 22:32:37 2025
*************** start_condition_str( int sc ) {
*** 33,45 ****
    const char *state = "???";
    switch(sc) {
    case INITIAL: state = "INITIAL"; break;
!   case author_state: state = "author_state"; break;
    case basis: state = "basis"; break;
    case bool_state: state = "bool_state"; break;
    case cdf_state: state = "cdf_state"; break;
    case classify: state = "classify"; break;
!   case copy_state: state = "copy_state"; break;
    case comment_entries: state = "comment_entries"; break;
    case date_state: state = "date_state"; break;
    case datetime_fmt: state = "datetime_fmt"; break;
    case dot_state: state = "dot_state"; break;
--- 33,46 ----
    const char *state = "???";
    switch(sc) {
    case INITIAL: state = "INITIAL"; break;
!   case addr_of: state = "addr_of"; break;
    case basis: state = "basis"; break;
    case bool_state: state = "bool_state"; break;
    case cdf_state: state = "cdf_state"; break;
    case classify: state = "classify"; break;
!   case cobol_words: state = "cobol_words"; break;
    case comment_entries: state = "comment_entries"; break;
+   case copy_state: state = "copy_state"; break;
    case date_state: state = "date_state"; break;
    case datetime_fmt: state = "datetime_fmt"; break;
    case dot_state: state = "dot_state"; break;
*************** start_condition_str( int sc ) {
*** 62,69 ****
    case quoted2: state = "quoted2"; break;
    case quoteq: state = "quoteq"; break;
    case raising: state = "raising"; break;
-   case subscripts: state = "subscripts"; break;
    case sort_state: state = "sort_state"; break;
    }
    return state;
  }
--- 63,70 ----
    case quoted2: state = "quoted2"; break;
    case quoteq: state = "quoteq"; break;
    case raising: state = "raising"; break;
    case sort_state: state = "sort_state"; break;
+   case subscripts: state = "subscripts"; break;
    }
    return state;
  }
*************** datetime_format_of( const char input[] )
*** 114,123 ****
  
      for( auto p = patterns; p < eopatterns; p++ ) {
        static const int cflags = REG_EXTENDED | REG_ICASE;
-       static char msg[80];
        int erc;
  
        if( 0 != (erc = regcomp(&p->re, p->regex, cflags)) ) {
          regerror(erc, &p->re, msg, sizeof(msg));
          yywarn("%s:%d: %s: %s", __func__, __LINE__, keyword_str(p->token), msg);
        }
--- 115,124 ----
  
      for( auto p = patterns; p < eopatterns; p++ ) {
        static const int cflags = REG_EXTENDED | REG_ICASE;
        int erc;
  
        if( 0 != (erc = regcomp(&p->re, p->regex, cflags)) ) {
+         static char msg[80];
          regerror(erc, &p->re, msg, sizeof(msg));
          yywarn("%s:%d: %s: %s", __func__, __LINE__, keyword_str(p->token), msg);
        }
*************** is_cdf_token( int token ) {
*** 157,162 ****
--- 158,165 ----
    case CDF_DISPLAY:
    case CDF_IF:       case CDF_ELSE: case CDF_END_IF:
    case CDF_EVALUATE: case CDF_WHEN: case CDF_END_EVALUATE:
+   case CDF_PUSH:
+   case CDF_POP:
      return true;
    case CALL_COBOL:
    case CALL_VERBATIM:
*************** prelex() {
*** 258,270 ****
    while( is_cdf_token(token) ) {
  
      if( ! run_cdf(token) ) {
!       dbgmsg( ">>CDF parser failed" );
!       return NO_CONDITION;
      }
      // Return the CDF's discarded lookahead token, if extant.
      token = ydfchar > 0? ydfchar : next_token();
      if( token == NO_CONDITION && parsing.at_eof() ) {
!       return token = YYEOF;
      }
  
      // Reenter cdf parser only if next token could affect parsing state.
--- 261,272 ----
    while( is_cdf_token(token) ) {
  
      if( ! run_cdf(token) ) {
!       dbgmsg( ">>CDF parser failed, ydfchar %d", ydfchar );
      }
      // Return the CDF's discarded lookahead token, if extant.
      token = ydfchar > 0? ydfchar : next_token();
      if( token == NO_CONDITION && parsing.at_eof() ) {
!       return YYEOF;
      }
  
      // Reenter cdf parser only if next token could affect parsing state.
*************** prelex() {
*** 296,302 ****
        token = LEVEL;
        break;
      case YDF_NUMBER:
!       if( yy_flex_debug ) yywarn("final token is YDF_NUMBER");
        yylval.number = ydflval.number;
        token = LEVEL;
        break;
--- 298,304 ----
        token = LEVEL;
        break;
      case YDF_NUMBER:
!       if( yy_flex_debug ) yywarn("final token is %<YDF_NUMBER%>");
        yylval.number = ydflval.number;
        token = LEVEL;
        break;
*************** yylex(void) {
*** 373,379 ****
      token = prelex();
      if( yy_flex_debug ) {
        if( parsing.in_cdf() ) {
!         dbgmsg( "%s:%d: %s routing %s to CDF parser", __func__, __LINE__,
                 start_condition_is(), keyword_str(token) );
        } else if( !parsing.on() ) {
          dbgmsg( "eating %s because conditional compilation is FALSE",
--- 375,381 ----
      token = prelex();
      if( yy_flex_debug ) {
        if( parsing.in_cdf() ) {
!         dbgmsg( "%s:%d: <%s> routing %s to CDF parser", __func__, __LINE__,
                 start_condition_is(), keyword_str(token) );
        } else if( !parsing.on() ) {
          dbgmsg( "eating %s because conditional compilation is FALSE",
diff -Nrcpad gcc-15-20250726/gcc/cobol/show_parse.h gcc-15-20250809/gcc/cobol/show_parse.h
*** gcc-15-20250726/gcc/cobol/show_parse.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/show_parse.h	Sat Aug  9 22:32:37 2025
*************** extern bool cursor_at_sol;
*** 54,64 ****
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
  
  #define RETURN_IF_PARSE_ONLY                    \
    do { if(  mode_syntax_only() ) return; } while(0)
  
! #define SHOW_PARSE1                      if(bSHOW_PARSE)
! #define SHOW_PARSE RETURN_IF_PARSE_ONLY; if(bSHOW_PARSE)
  
  // _HEADER and _END are generally the first and last things inside the
  // SHOW_PARSE statement.  They don't have to be; SHOW_PARSE can be used
--- 54,73 ----
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
  
+ /*
+  * In syntax-only mode, return immediately.  By using these macros, the parser
+  * can call code-generation functions unconditionally because it does not rely
+  * on the results.
+  */
  #define RETURN_IF_PARSE_ONLY                    \
    do { if(  mode_syntax_only() ) return; } while(0)
  
! #define RETURN_XX_PARSE_ONLY(XX)			\
!   do { if(  mode_syntax_only() ) return XX; } while(0)
! 
! #define SHOW_PARSE1                                   if(bSHOW_PARSE)
! #define SHOW_PARSE        RETURN_IF_PARSE_ONLY;       if(bSHOW_PARSE)
! #define SHOW_IF_PARSE(XX) RETURN_XX_PARSE_ONLY((XX)); if(bSHOW_PARSE)
  
  // _HEADER and _END are generally the first and last things inside the
  // SHOW_PARSE statement.  They don't have to be; SHOW_PARSE can be used
*************** extern bool cursor_at_sol;
*** 138,147 ****
                      fprintf(stderr, "<%s>", cbl_field_type_str((b).field->type)); \
                      } \
                  } \
!             if( (b).nsubscript) \
                  { \
                  fprintf(stderr,"("); \
!                 for(size_t jjj=0; jjj<(b).nsubscript; jjj++) \
                      { \
                      if(jjj) \
                        { \
--- 147,156 ----
                      fprintf(stderr, "<%s>", cbl_field_type_str((b).field->type)); \
                      } \
                  } \
!             if( (b).nsubscript()) \
                  { \
                  fprintf(stderr,"("); \
!                 for(size_t jjj=0; jjj<(b).nsubscript(); jjj++) \
                      { \
                      if(jjj) \
                        { \
*************** extern bool cursor_at_sol;
*** 167,177 ****
                  } \
              else \
                  { \
! 		fprintf(stderr, " %p:%s (%s)", (void*)b, b->name, b->type_str()); \
                  } \
              show_parse_sol = false; \
              } while(0);
  
  #define TRACE1 if(bTRACE1)
  #define TRACE1_HEADER do \
    { \
--- 176,196 ----
                  } \
              else \
                  { \
!                 fprintf(stderr, " %p:%s (%s)", static_cast<void*>(b), b->name, b->type_str()); \
                  } \
              show_parse_sol = false; \
              } while(0);
  
+ // Use this version when b is known to be valid.  This is necessary to quiet
+ // cppcheck nullPointerRedundantCheck warnings
+ #define SHOW_PARSE_LABEL_OK(a, b) \
+         do \
+             { \
+             fprintf(stderr, "%s", a); \
+             fprintf(stderr, " %p:%s (%s)", static_cast<void*>(b), b->name, b->type_str()); \
+             show_parse_sol = false; \
+             } while(0);
+ 
  #define TRACE1 if(bTRACE1)
  #define TRACE1_HEADER do \
    { \
*************** extern bool cursor_at_sol;
*** 202,207 ****
--- 221,227 ----
  #define TRACE1_FIELD_VALUE(a, field, b) \
          do \
              { \
+             gcc_assert(field); \
              cursor_at_sol=false; \
              if ( field->type == FldConditional ) \
                {                                       \
*************** extern bool cursor_at_sol;
*** 328,340 ****
      else \
        { \
        gg_fprintf(trace_handle, 1, "%s", gg_string_literal( (b).field->name ? (b).field->name:"")); \
!       if( b.nsubscript ) \
          { \
          gg_fprintf(trace_handle, 0, "("); \
!         for(unsigned int i=0; i<b.nsubscript; i++) \
            { \
            gg_fprintf(trace_handle, 1, "%s", gg_string_literal(    b.subscripts[i].field->name ? b.subscripts[i].field->name : ""  )); \
!           if( i<b.nsubscript-1 ) \
              { \
              gg_fprintf(trace_handle, 0, " "); \
              } \
--- 348,360 ----
      else \
        { \
        gg_fprintf(trace_handle, 1, "%s", gg_string_literal( (b).field->name ? (b).field->name:"")); \
!       if( b.nsubscript() ) \
          { \
          gg_fprintf(trace_handle, 0, "("); \
!         for(unsigned int i=0; i<b.nsubscript(); i++) \
            { \
            gg_fprintf(trace_handle, 1, "%s", gg_string_literal(    b.subscripts[i].field->name ? b.subscripts[i].field->name : ""  )); \
!           if( i<b.nsubscript()-1 ) \
              { \
              gg_fprintf(trace_handle, 0, " "); \
              } \
*************** extern bool cursor_at_sol;
*** 414,444 ****
      } while(0);
  
  // Use CHECK_FIELD when a should be non-null, and a->var_decl_node also should
! // by non-null:
! #define CHECK_FIELD(a)          \
!         do{                     \
!         if(!a)                  \
!             {                   \
!             yywarn("%s(): parameter " #a " is NULL", __func__); \
!             gcc_unreachable();  \
!             }                   \
!         if( !a->var_decl_node && a->type != FldConditional && a->type != FldLiteralA)  \
!             {                   \
!             yywarn("%s() parameter " #a " is variable %s<%s> with NULL var_decl_node", \
!                 __func__,       \
!                 a->name,        \
!                 cbl_field_type_str(a->type) ); \
!             gcc_unreachable();  \
!             }                   \
!         }while(0);
  
! #define CHECK_LABEL(a)            \
!         do{                     \
!         if(!a)                  \
!             {                   \
!             yywarn("%s(): parameter " #a " is NULL", __func__); \
!             gcc_unreachable();  \
!             }                   \
          }while(0);
  
  #ifdef INCORPORATE_ANALYZER
--- 434,494 ----
      } while(0);
  
  // Use CHECK_FIELD when a should be non-null, and a->var_decl_node also should
! // by non-null.  (The useless calls to abort() are because cppcheck doesn't
! // understand that gcc_unreachable doesn't return);
  
! // Use this after doing any SHOW_PARSE stuff, to avoid cppcheck complaints
! // about nullPointerRedundantCheck 
! #define CHECK_FIELD(a)                                                  \
!         do {                                                            \
!         if(!a)                                                          \
!             {                                                           \
!             yywarn("%s: parameter %<" #a "%> is NULL", __func__);       \
!             gcc_unreachable();                                          \
!             abort();                                                    \
!             }                                                           \
!         if( !a->var_decl_node )                                         \
!             {                                                           \
!             yywarn("%s: parameter %<" #a "%> is variable "              \
!                    "%s<%s> with NULL %<var_decl_node%>",                \
!                 __func__,                                               \
!                 a->name,                                                \
!                 cbl_field_type_str(a->type) );                          \
!             gcc_unreachable();                                          \
!             abort();                                                    \
!             }                                                           \
!         } while(0);
! 
! // This version is a bit more lax, for special cases
! #define CHECK_FIELD2(a)                                                  \
!         do {                                                            \
!         if(!a)                                                          \
!             {                                                           \
!             yywarn("%s: parameter %<" #a "%> is NULL", __func__);       \
!             gcc_unreachable();                                          \
!             abort();                                                    \
!             }                                                           \
!         if( !a->var_decl_node && a->type != FldConditional && a->type != FldLiteralA) \
!             {                                                           \
!             yywarn("%s: parameter %<" #a "%> is variable "               \
!                    "%s<%s> with NULL %<var_decl_node%>",                \
!                 __func__,                                               \
!                 a->name,                                                \
!                 cbl_field_type_str(a->type) );                          \
!             gcc_unreachable();                                          \
!             abort();                                                    \
!             }                                                           \
!         } while(0);
! 
! 
! #define CHECK_LABEL(a)                                                  \
!         do{                                                             \
!         if(!a)                                                          \
!             {                                                           \
!             yywarn("%s: parameter %<" #a "%> is NULL", __func__);       \
!             gcc_unreachable();                                          \
!             abort();                                                    \
!             }                                                           \
          }while(0);
  
  #ifdef INCORPORATE_ANALYZER
*************** class ANALYZE
*** 494,503 ****
        }
    };
  #else
  class ANALYZE
    {
    public:
!     ANALYZE(const char *)
        {
        }
      ~ANALYZE()
--- 544,554 ----
        }
    };
  #else
+ // cppcheck-suppress ctuOneDefinitionRuleViolation
  class ANALYZE
    {
    public:
!     explicit ANALYZE(const char *)
        {
        }
      ~ANALYZE()
diff -Nrcpad gcc-15-20250726/gcc/cobol/structs.cc gcc-15-20250809/gcc/cobol/structs.cc
*** gcc-15-20250726/gcc/cobol/structs.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/structs.cc	Sat Aug  9 22:32:37 2025
*************** tree cblc_field_p_type_node;
*** 156,161 ****
--- 156,162 ----
  tree cblc_field_pp_type_node;
  tree cblc_file_type_node;
  tree cblc_file_p_type_node;
+ tree cbl_enabled_exception_type_node;
  tree cblc_goto_type_node;
  
  // The following functions return type_decl nodes for the various structures
*************** create_cblc_field_t()
*** 176,182 ****
          struct cblc_field_t *parent;// This field's immediate parent field
          size_t occurs_lower;        // non-zero for a table
          size_t occurs_upper;        // non-zero for a table
!         size_t attr;                // See cbl_field_attr_t
          signed char type;           // A one-byte copy of cbl_field_type_t
          signed char level;          // This variable's level in the naming heirarchy
          signed char digits;         // Digits specified in PIC string; e.g. 5 for 99v999
--- 177,183 ----
          struct cblc_field_t *parent;// This field's immediate parent field
          size_t occurs_lower;        // non-zero for a table
          size_t occurs_upper;        // non-zero for a table
!         uint64_t attr;              // See cbl_field_attr_t
          signed char type;           // A one-byte copy of cbl_field_type_t
          signed char level;          // This variable's level in the naming heirarchy
          signed char digits;         // Digits specified in PIC string; e.g. 5 for 99v999
*************** create_cblc_field_t()
*** 196,202 ****
                                              CHAR_P,  "parent",
                                              SIZE_T,  "occurs_lower",
                                              SIZE_T,  "occurs_upper",
!                                             SIZE_T,  "attr",
                                              SCHAR,   "type",
                                              SCHAR,   "level",
                                              SCHAR,   "digits",
--- 197,203 ----
                                              CHAR_P,  "parent",
                                              SIZE_T,  "occurs_lower",
                                              SIZE_T,  "occurs_upper",
!                                             ULONGLONG, "attr",
                                              SCHAR,   "type",
                                              SCHAR,   "level",
                                              SCHAR,   "digits",
*************** create_cblc_file_t()
*** 216,221 ****
--- 217,223 ----
  typedef struct cblc_file_t
      {
      char                *name;             // This is the name of the structure; might be the name of an environment variable
+     size_t               symbol_index;     // The symbol table index of the related cbl_file_t structure
      char                *filename;         // The name of the file to be opened
      FILE                *file_pointer;     // The FILE *pointer
      cblc_field_t        *default_record;   // The record_area
*************** typedef struct cblc_file_t
*** 250,257 ****
  
      tree retval = NULL_TREE;
      retval = gg_get_filelevel_struct_type_decl( "cblc_file_t",
!                                             30,
                                              CHAR_P,    "name",
                                              CHAR_P,    "filename",
                                              FILE_P,    "file_pointer",
                                              cblc_field_p_type_node, "default_record",
--- 252,260 ----
  
      tree retval = NULL_TREE;
      retval = gg_get_filelevel_struct_type_decl( "cblc_file_t",
!                                             31,
                                              CHAR_P,    "name",
+                                             SIZE_T,    "symbol_table_index",
                                              CHAR_P,    "filename",
                                              FILE_P,    "file_pointer",
                                              cblc_field_p_type_node, "default_record",
*************** typedef struct cblc_file_t
*** 285,290 ****
--- 288,316 ----
      return retval;
      }
  
+ static tree
+ create_cbl_enabled_exception_t()
+     {
+     /*
+     struct cbl_enabled_exception_t
+         {
+         bool enabled, location;
+         ec_type_t ec;
+         size_t file;
+         };
+     */
+     tree retval = NULL_TREE;
+     retval = gg_get_filelevel_struct_type_decl( "cbl_enabled_exception_t",
+                                             4,
+                                             BOOL,   "enabled",
+                                             BOOL,   "location",
+                                             UINT,   "ec",
+                                             SIZE_T, "file");
+     retval = TREE_TYPE(retval);
+ 
+     return retval;
+     }
+ 
  void
  create_our_type_nodes()
      {
*************** create_our_type_nodes()
*** 297,302 ****
--- 323,329 ----
          cblc_field_pp_type_node           = build_pointer_type(cblc_field_p_type_node);
          cblc_file_type_node               = create_cblc_file_t();
          cblc_file_p_type_node             = build_pointer_type(cblc_file_type_node);
+         cbl_enabled_exception_type_node   = create_cbl_enabled_exception_t();
          }
      }
  
diff -Nrcpad gcc-15-20250726/gcc/cobol/structs.h gcc-15-20250809/gcc/cobol/structs.h
*** gcc-15-20250726/gcc/cobol/structs.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/structs.h	Sat Aug  9 22:32:37 2025
*************** extern GTY(()) tree cblc_field_p_type_no
*** 54,59 ****
--- 54,60 ----
  extern GTY(()) tree cblc_field_pp_type_node;
  extern GTY(()) tree cblc_file_type_node;
  extern GTY(()) tree cblc_file_p_type_node;
+ extern GTY(()) tree cbl_enabled_exception_type_node;
  extern GTY(()) tree cblc_goto_type_node;
  
  extern void create_our_type_nodes();
diff -Nrcpad gcc-15-20250726/gcc/cobol/symbols.cc gcc-15-20250809/gcc/cobol/symbols.cc
*** gcc-15-20250726/gcc/cobol/symbols.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/symbols.cc	Sat Aug  9 22:32:37 2025
***************
*** 28,33 ****
--- 28,34 ----
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
+ #include "config.h"
  #include <fstream> // Before cobol-system because it uses poisoned functions
  #include "cobol-system.h"
  
*************** class symbol_pair_t
*** 55,61 ****
  {
    const symbol_elem_t *first, *last;
  public:
!   symbol_pair_t( const symbol_elem_t * first, const symbol_elem_t * end = NULL )
      : first(first), last(end)
    {}
  
--- 56,62 ----
  {
    const symbol_elem_t *first, *last;
  public:
!   explicit symbol_pair_t( const symbol_elem_t * first, const symbol_elem_t * end = NULL )
      : first(first), last(end)
    {}
  
*************** static struct symbol_table_t {
*** 135,145 ****
  
  static symbol_table_t&
  symbol_table_extend() {
-   static FILE *mapped;
  
    if( symbols.nelem == 0 ) {  // first time: create file & set initial capacity
!     assert(mapped == NULL && symbols.fd == -1);
! 
      if( (mapped = tmpfile()) == NULL ) {
        cbl_err( "could not create temporary file for symbol table");
      }
--- 136,144 ----
  
  static symbol_table_t&
  symbol_table_extend() {
  
    if( symbols.nelem == 0 ) {  // first time: create file & set initial capacity
!     FILE *mapped;
      if( (mapped = tmpfile()) == NULL ) {
        cbl_err( "could not create temporary file for symbol table");
      }
*************** symbol_table_extend() {
*** 159,166 ****
    off_t len = symbols.size();
  
    if( 0 != ftruncate(symbols.fd, len) ) {
!     cbl_err( "%s:%d:could not extend symbol table to %zu elements",
!         __func__, __LINE__, symbols.capacity);
    }
  
    /*
--- 158,165 ----
    off_t len = symbols.size();
  
    if( 0 != ftruncate(symbols.fd, len) ) {
!     cbl_err( "%s:%d: could not extend symbol table to %lu elements",
! 	     __func__, __LINE__, gb4(symbols.capacity));
    }
  
    /*
*************** cbl_span_t::from_field() { assert(from);
*** 228,233 ****
--- 227,238 ----
  cbl_field_t *
  cbl_span_t::len_field()  { assert(len); return len->field; }
  
+ cbl_ffi_arg_t::cbl_ffi_arg_t()
+   : optional(false)
+   , crv(by_reference_e)
+   , attr(none_of_e)
+ {}
+ 
  cbl_ffi_arg_t::
  cbl_ffi_arg_t( cbl_refer_t* refer, cbl_ffi_arg_attr_t attr )
    : optional(false)
*************** cbl_ffi_arg_t( cbl_ffi_crv_t crv,
*** 256,298 ****
   } while(0)
  
  
- cbl_field_t *
- symbol_valid_udf_args( size_t function, std::list<cbl_refer_t> args ) {
-   auto L = cbl_label_of(symbol_at(function));
-   if( ! L->returning ) {
-     dbgmsg("logic error: %s does not define RETURNING", L->name);
-     return NULL;
-   }
-   auto e = std::find_if( symbol_at(function), symbols_end(),
-                          []( auto symbol ) {
-                            if( symbol.type == SymDataSection ) {
-                              auto section(symbol.elem.section);
-                              return section.type == linkage_sect_e;
-                            }
-                            return false;
-                          } );
-   for( auto arg : args ) {
-     size_t iarg(1);
-     e++; // skip over linkage_sect_e, which appears after the function
-     if( e->type != SymField ) {
-       ERROR_FIELD(arg.field,
-                   "FUNCTION %s has no defined parameter matching arg %zu, '%s'",
-                   L->name, iarg, arg.field->name );
-       return NULL;
-     }
- 
-     auto tgt = cbl_field_of(e);
- 
-     if( ! valid_move(tgt, arg.field) ) {
-       ERROR_FIELD(tgt, "FUNCTION %s arg %zu, '%s' cannot be passed to %s, type %s",
-                 L->name, iarg, arg.field->pretty_name(),
-                 tgt->pretty_name(), 3 + cbl_field_type_str(tgt->type) );
-       return NULL;
-     }
-   }
-   return cbl_field_of(symbol_at(L->returning));
- }
- 
  static const struct cbl_occurs_t nonarray = cbl_occurs_t();
  
  #if 0
--- 261,266 ----
*************** class group_size_t {
*** 316,322 ****
  enum  { constq = constant_e | quoted_e };
  
  static symbol_elem_t
! elementize( cbl_field_t& field ) {
    symbol_elem_t sym (SymField);
    sym.elem.field = field;
    return sym;
--- 284,290 ----
  enum  { constq = constant_e | quoted_e };
  
  static symbol_elem_t
! elementize( const cbl_field_t& field ) {
    symbol_elem_t sym (SymField);
    sym.elem.field = field;
    return sym;
*************** symbol_elem_cmp( const void *K, const vo
*** 486,494 ****
    case SymDataSection:
      return k->elem.section.type == e->elem.section.type ? 0 : 1;
      break;
-   case SymFunction:
-     return strcmp(k->elem.function.name, e->elem.function.name);
-     break;
    case SymField:
      if( has_parent(k) && cbl_field_of(k)->parent != cbl_field_of(e)->parent ) {
        return 1;
--- 454,459 ----
*************** symbol_elem_cmp( const void *K, const vo
*** 535,547 ****
        }
        return strcasecmp(key.name, elem.name);
      }
!     break;
    case SymSpecial:
      return special_pair_cmp(k->elem.special, e->elem.special)? 0 : 1;
!     break;
    case SymAlphabet:
      return strcasecmp(k->elem.alphabet.name, e->elem.alphabet.name);
!     break;
    case SymFile:
      // If the key is global, so must be the found element.
      if( (cbl_file_of(k)->attr & global_e) == global_e &&
--- 500,512 ----
        }
        return strcasecmp(key.name, elem.name);
      }
!     // break; // This break not needed if all options do a return.
    case SymSpecial:
      return special_pair_cmp(k->elem.special, e->elem.special)? 0 : 1;
!     // break; // This break not needed after return.
    case SymAlphabet:
      return strcasecmp(k->elem.alphabet.name, e->elem.alphabet.name);
!     // break; // This break not needed after return.
    case SymFile:
      // If the key is global, so must be the found element.
      if( (cbl_file_of(k)->attr & global_e) == global_e &&
*************** symbol_elem_cmp( const void *K, const vo
*** 549,555 ****
        return 1;
      }
      return strcasecmp(k->elem.file.name, e->elem.file.name);
!     break;
    }
    assert(k->type == SymField);
  
--- 514,520 ----
        return 1;
      }
      return strcasecmp(k->elem.file.name, e->elem.file.name);
!     // break; // This break not needed after return.
    }
    assert(k->type == SymField);
  
*************** symbol_special( size_t program, const ch
*** 707,713 ****
  struct symbol_elem_t *
  symbol_alphabet( size_t program, const char name[] )
  {
!   cbl_alphabet_t alphabet(YYLTYPE(), custom_encoding_e);
    assert(strlen(name) < sizeof alphabet.name);
    strcpy(alphabet.name, name);
  
--- 672,678 ----
  struct symbol_elem_t *
  symbol_alphabet( size_t program, const char name[] )
  {
!   cbl_alphabet_t alphabet(YYLTYPE(), custom_encoding_e); // cppcheck-suppress syntaxError
    assert(strlen(name) < sizeof alphabet.name);
    strcpy(alphabet.name, name);
  
*************** cbl_field_t::size() const {
*** 814,837 ****
    return field_size(this);
  }
  
! size_t
  cbl_field_t::set_attr( cbl_field_attr_t attr ) {
    if( attr == signable_e ) {
      if( ! has_attr(attr) && this->var_decl_node != NULL ) {
        parser_field_attr_set(this, attr);
      }
    }
!   return this->attr |= size_t(attr);
  }
  
! size_t
  cbl_field_t::clear_attr( cbl_field_attr_t attr ) {
    if( attr == signable_e ) {
      if( this->var_decl_node != nullptr && has_attr(attr) ) {
        parser_field_attr_set(this, attr, false);
      }
    }
!   return this->attr &= ~size_t(attr);
  }
  
  static uint32_t
--- 779,802 ----
    return field_size(this);
  }
  
! uint64_t
  cbl_field_t::set_attr( cbl_field_attr_t attr ) {
    if( attr == signable_e ) {
      if( ! has_attr(attr) && this->var_decl_node != NULL ) {
        parser_field_attr_set(this, attr);
      }
    }
!   return this->attr |= uint64_t(attr);
  }
  
! uint64_t
  cbl_field_t::clear_attr( cbl_field_attr_t attr ) {
    if( attr == signable_e ) {
      if( this->var_decl_node != nullptr && has_attr(attr) ) {
        parser_field_attr_set(this, attr, false);
      }
    }
!   return this->attr &= ~uint64_t(attr);
  }
  
  static uint32_t
*************** end_of_group( const cbl_field_t *group,
*** 946,952 ****
  class eog_t {
    const cbl_field_t * group;
  public:
!   eog_t( const symbol_elem_t *e ) : group(cbl_field_of(e)) {}
  
    bool operator()( symbol_elem_t& e ) {
      return e.type == SymField && end_of_group(group, cbl_field_of(&e));
--- 911,917 ----
  class eog_t {
    const cbl_field_t * group;
  public:
!   explicit eog_t( const symbol_elem_t *e ) : group(cbl_field_of(e)) {}
  
    bool operator()( symbol_elem_t& e ) {
      return e.type == SymField && end_of_group(group, cbl_field_of(&e));
*************** end_of_group( size_t igroup ) {
*** 966,972 ****
        if( e->program != group->program ) return isym;
        if( e->type == SymLabel ) return isym; // end of data division
        if( e->type == SymField ) {
!         auto f = cbl_field_of(e);
          if( f->level == LEVEL77 || f->level == 66 ) return isym;
          if( f->level == 1 && f->parent != igroup ) {
            return isym;
--- 931,937 ----
        if( e->program != group->program ) return isym;
        if( e->type == SymLabel ) return isym; // end of data division
        if( e->type == SymField ) {
!         const cbl_field_t * f = cbl_field_of(e);
          if( f->level == LEVEL77 || f->level == 66 ) return isym;
          if( f->level == 1 && f->parent != igroup ) {
            return isym;
*************** end_of_group( size_t igroup ) {
*** 977,983 ****
    }
  
    eog_t eog(symbol_at(igroup));
!   symbol_elem_t *e = std::find_if( symbols_begin(++igroup), symbols_end(), eog );
    return e - symbols_begin();
  }
  
--- 942,948 ----
    }
  
    eog_t eog(symbol_at(igroup));
!   const symbol_elem_t *e = std::find_if( symbols_begin(++igroup), symbols_end(), eog );
    return e - symbols_begin();
  }
  
*************** symbol_field_capacity( const cbl_field_t
*** 1001,1008 ****
    size_t size = std::accumulate( symbol_at(bog), symbol_at_impl(eog),
                                   0, sym_field_size::capacity );
  
!   if(true) dbgmsg("%s: %02u %s.data.capacity was computed as %zu", __func__,
!                   field->level, field->name, size);
  
    return size;
  }
--- 966,973 ----
    size_t size = std::accumulate( symbol_at(bog), symbol_at_impl(eog),
                                   0, sym_field_size::capacity );
  
!   if(true) dbgmsg("%s: %02u %s.data.capacity was computed as " HOST_SIZE_T_PRINT_UNSIGNED,
!                   __func__, field->level, field->name, (fmt_size_t)size);
  
    return size;
  }
*************** has_odo( const symbol_elem_t& e ) {
*** 1016,1029 ****
  struct cbl_field_t *
  symbol_find_odo_debug( cbl_field_t * field ) {
    size_t bog = field_index(field), eog = end_of_group(bog);
!   dbgmsg("%s: %s is #%zu - #%zu of %zu, ends at %s", __func__,
!         field->name, bog, eog, symbols.nelem,
          eog == symbols.nelem? "[end]" : cbl_field_of(symbol_at(eog))->name );
  
    auto e = std::find_if( symbol_at(bog), symbol_at_impl(eog, true), has_odo );
    if( e != symbol_at_impl(eog, true) ) {
!     dbgmsg("%s: %s has ODO at #%zu (return '%s')", __func__,
!           field->name, symbol_index(e),
            cbl_field_of(e)->name );
    }
    return e == symbol_at_impl(eog, true)? NULL : cbl_field_of(e);
--- 981,995 ----
  struct cbl_field_t *
  symbol_find_odo_debug( cbl_field_t * field ) {
    size_t bog = field_index(field), eog = end_of_group(bog);
!   dbgmsg("%s: %s is #" HOST_SIZE_T_PRINT_UNSIGNED " - #" HOST_SIZE_T_PRINT_UNSIGNED
!          " of " HOST_SIZE_T_PRINT_UNSIGNED ", ends at %s", __func__,
!         field->name, (fmt_size_t)bog, (fmt_size_t)eog, (fmt_size_t)symbols.nelem,
          eog == symbols.nelem? "[end]" : cbl_field_of(symbol_at(eog))->name );
  
    auto e = std::find_if( symbol_at(bog), symbol_at_impl(eog, true), has_odo );
    if( e != symbol_at_impl(eog, true) ) {
!     dbgmsg("%s: %s has ODO at #" HOST_SIZE_T_PRINT_UNSIGNED " (return '%s')", __func__,
!           field->name, (fmt_size_t)symbol_index(e),
            cbl_field_of(e)->name );
    }
    return e == symbol_at_impl(eog, true)? NULL : cbl_field_of(e);
*************** symbol_find_odo_debug( cbl_field_t * fie
*** 1031,1037 ****
  
  // Return OCCURS DEPENDING ON table subordinate to field, if any.
  struct cbl_field_t *
! symbol_find_odo( cbl_field_t * field ) {
    size_t bog = field_index(field), eog = end_of_group(bog);
    auto e = std::find_if( symbol_at(bog), symbol_at_impl(eog, true), has_odo );
    return e == symbol_at_impl(eog, true)? NULL : cbl_field_of(e);
--- 997,1003 ----
  
  // Return OCCURS DEPENDING ON table subordinate to field, if any.
  struct cbl_field_t *
! symbol_find_odo( const cbl_field_t * field ) {
    size_t bog = field_index(field), eog = end_of_group(bog);
    auto e = std::find_if( symbol_at(bog), symbol_at_impl(eog, true), has_odo );
    return e == symbol_at_impl(eog, true)? NULL : cbl_field_of(e);
*************** symbols_dump( size_t first, bool header
*** 1047,1054 ****
    if( !yydebug ) return 0;
  
    if( header ) {
!     fprintf(stderr, "Symbol Table has %zu elements\n",
!             symbols_end() - symbols_begin());
    }
  
    for( struct symbol_elem_t *e = symbols_begin(first); e < symbols_end(); e++ ) {
--- 1013,1020 ----
    if( !yydebug ) return 0;
  
    if( header ) {
!     fprintf(stderr, "Symbol Table has " HOST_SIZE_T_PRINT_UNSIGNED " elements\n",
!             (fmt_size_t)(symbols_end() - symbols_begin()));
    }
  
    for( struct symbol_elem_t *e = symbols_begin(first); e < symbols_end(); e++ ) {
*************** symbols_dump( size_t first, bool header
*** 1056,1080 ****
  
      switch(e->type) {
      case SymFilename:
!       s = xasprintf("%4zu %-18s %s", e->program,
                      "Filename", e->elem.filename);
        break;
      case SymDataSection:
!       s = xasprintf("%4zu %-18s line %d", e->program,
                      cbl_section_of(e)->name(), cbl_section_of(e)->line);
        break;
-     case SymFunction:
-       s = xasprintf("%4zu %-15s %s", e->program,
-                     "Function", e->elem.function.name);
-       break;
      case SymField: {
        auto field = cbl_field_of(e);
        char *odo_str = NULL;
        if( field->occurs.depending_on != 0 ) {
!         odo_str = xasprintf("odo %zu", field->occurs.depending_on );
        }
        ninvalid += cbl_field_of(e)->type == FldInvalid? 1 : 0;
!       s = xasprintf("%4zu %-18s %s (%s)", e->program,
                      cbl_field_type_str(cbl_field_of(e)->type) + 3,
                      field_str(cbl_field_of(e)),
                      odo_str? odo_str :
--- 1022,1043 ----
  
      switch(e->type) {
      case SymFilename:
!       s = xasprintf("%4" GCC_PRISZ "u %-18s %s", (fmt_size_t)e->program,
                      "Filename", e->elem.filename);
        break;
      case SymDataSection:
!       s = xasprintf("%4" GCC_PRISZ "u %-18s line %d", (fmt_size_t)e->program,
                      cbl_section_of(e)->name(), cbl_section_of(e)->line);
        break;
      case SymField: {
        auto field = cbl_field_of(e);
        char *odo_str = NULL;
        if( field->occurs.depending_on != 0 ) {
!         odo_str = xasprintf("odo " HOST_SIZE_T_PRINT_UNSIGNED,
!                             (fmt_size_t)field->occurs.depending_on );
        }
        ninvalid += cbl_field_of(e)->type == FldInvalid? 1 : 0;
!       s = xasprintf("%4" GCC_PRISZ "u %-18s %s (%s)", (fmt_size_t)e->program,
                      cbl_field_type_str(cbl_field_of(e)->type) + 3,
                      field_str(cbl_field_of(e)),
                      odo_str? odo_str :
*************** symbols_dump( size_t first, bool header
*** 1082,1088 ****
        }
        break;
      case SymLabel:
!       s = xasprintf("%4zu %-18s %s", e->program,
                      "Labe1l", e->elem.label.str());
        if( LblProgram == cbl_label_of(e)->type ) {
          const auto& L = *cbl_label_of(e);
--- 1045,1051 ----
        }
        break;
      case SymLabel:
!       s = xasprintf("%4" GCC_PRISZ "u %-18s %s", (fmt_size_t)e->program,
                      "Labe1l", e->elem.label.str());
        if( LblProgram == cbl_label_of(e)->type ) {
          const auto& L = *cbl_label_of(e);
*************** symbols_dump( size_t first, bool header
*** 1094,1124 ****
        }
        break;
      case SymSpecial:
!       s = xasprintf("%4zu %-18s id=%2d, %s", e->program,
                      "Special", e->elem.special.id, e->elem.special.name);
        break;
      case SymAlphabet:
!       s = xasprintf("%4zu %-18s encoding=%2d, '%s'", e->program, "Alphabet",
                      int(e->elem.alphabet.encoding), e->elem.alphabet.name);
        break;
      case SymFile:
!       s = xasprintf("%4zu %-18s    %-20s", e->program,
                      "File", e->elem.file.name);
        {
          char same_as[26] = "";
          if( cbl_file_of(e)->same_record_as > 0 ) {
!           sprintf(same_as, "s%3zu", cbl_file_of(e)->same_record_as);
          }
          const char *type = file_org_str(e->elem.file.org);
          char *part = s;
  
!         s = xasprintf("%s %-4s %s %s %s{%zu-%zu} status=#%zu",
                        part, same_as, type,
                        e->elem.file.keys_str(),
                        cbl_file_of(e)->varies()? "varies " : "",
!                       cbl_file_of(e)->varying_size.min,
!                       cbl_file_of(e)->varying_size.max,
!                       cbl_file_of(e)->user_status);
          free(part);
        }
        break;
--- 1057,1091 ----
        }
        break;
      case SymSpecial:
!       s = xasprintf("%4" GCC_PRISZ "u %-18s id=%2d, %s", (fmt_size_t)e->program,
                      "Special", e->elem.special.id, e->elem.special.name);
        break;
      case SymAlphabet:
!       s = xasprintf("%4" GCC_PRISZ "u %-18s encoding=%2d, '%s'",
!                     (fmt_size_t)e->program, "Alphabet",
                      int(e->elem.alphabet.encoding), e->elem.alphabet.name);
        break;
      case SymFile:
!       s = xasprintf("%4" GCC_PRISZ "u %-18s    %-20s", (fmt_size_t)e->program,
                      "File", e->elem.file.name);
        {
          char same_as[26] = "";
          if( cbl_file_of(e)->same_record_as > 0 ) {
!           sprintf(same_as, "s%3" GCC_PRISZ "u",
!                   (fmt_size_t)cbl_file_of(e)->same_record_as);
          }
          const char *type = file_org_str(e->elem.file.org);
          char *part = s;
  
!         s = xasprintf("%s %-4s %s %s %s{" HOST_SIZE_T_PRINT_UNSIGNED "-"
!                       HOST_SIZE_T_PRINT_UNSIGNED "} status=#"
!                       HOST_SIZE_T_PRINT_UNSIGNED,
                        part, same_as, type,
                        e->elem.file.keys_str(),
                        cbl_file_of(e)->varies()? "varies " : "",
!                       (fmt_size_t)cbl_file_of(e)->varying_size.min,
!                       (fmt_size_t)cbl_file_of(e)->varying_size.max,
!                       (fmt_size_t)cbl_file_of(e)->user_status);
          free(part);
        }
        break;
*************** symbols_dump( size_t first, bool header
*** 1126,1132 ****
        dbgmsg("%s: cannot dump symbol type %d", __func__, e->type);
        continue;
      }
!     fprintf(stderr, "%4zu: %s\n", e - symbols_begin(), s);
      free(s);
    }
    return ninvalid;
--- 1093,1100 ----
        dbgmsg("%s: cannot dump symbol type %d", __func__, e->type);
        continue;
      }
!     fprintf(stderr, "%4" GCC_PRISZ "u: %s\n",
!             (fmt_size_t)(e - symbols_begin()), s);
      free(s);
    }
    return ninvalid;
*************** static struct symbol_elem_t *
*** 1206,1212 ****
          // If an 01 record exists for the FD/SD, use its capacity as the
          // default_record capacity.
          if( p != symbols_end() ) {
!           auto record = cbl_field_of(p);
            assert(record->level == 1);
            e = calculate_capacity(p);
            auto record_size = std::max(record->data.memsize,
--- 1174,1180 ----
          // If an 01 record exists for the FD/SD, use its capacity as the
          // default_record capacity.
          if( p != symbols_end() ) {
!           const cbl_field_t * record = cbl_field_of(p);
            assert(record->level == 1);
            e = calculate_capacity(p);
            auto record_size = std::max(record->data.memsize,
*************** static struct symbol_elem_t *
*** 1238,1244 ****
    }
  
    if(yydebug && group->type != FldGroup) {
!     dbgmsg("Field #%zu '%s' is not a group", symbol_index(e), group->name);
      symbols_dump(symbols.first_program, true);
    }
    if( group->type == FldInvalid ) return e;
--- 1206,1213 ----
    }
  
    if(yydebug && group->type != FldGroup) {
!     dbgmsg("Field #" HOST_SIZE_T_PRINT_UNSIGNED " '%s' is not a group",
!            (fmt_size_t)symbol_index(e), group->name);
      symbols_dump(symbols.first_program, true);
    }
    if( group->type == FldInvalid ) return e;
*************** static struct symbol_elem_t *
*** 1293,1299 ****
  
      // If group has a parent that is a record area, expand it, too.
      if( 0 < group->parent ) {
!       auto redefined = symbol_redefines(group);
        if( redefined && is_record_area(redefined) ) {
          if( redefined->data.capacity < group->data.memsize ) {
            redefined->data.capacity = group->data.memsize;
--- 1262,1268 ----
  
      // If group has a parent that is a record area, expand it, too.
      if( 0 < group->parent ) {
!       redefined = symbol_redefines(group);
        if( redefined && is_record_area(redefined) ) {
          if( redefined->data.capacity < group->data.memsize ) {
            redefined->data.capacity = group->data.memsize;
*************** immediately_follows( const cbl_field_t *
*** 1374,1392 ****
  
  bool
  is_variable_length( const cbl_field_t *field ) {
!   bool odo = false;
!   std::find_if( symbol_at(field_index(field)) + 1, symbols_end(),
!                 [&odo, field]( const auto& elem ) {
!                   if( elem.type == SymField ) {
!                     auto f = cbl_field_of(&elem);
!                     if( f->level <= field->level ) return true;
!                     if( f->occurs.depending_on ) {
!                       odo = true;
!                       return true;
!                     }
!                   }
!                   return false;
!                 } );
    return odo;
  }
  
--- 1343,1360 ----
  
  bool
  is_variable_length( const cbl_field_t *field ) {
!   // RENAMES may be included in end_of_group.
!   size_t isym = field_index(field),  esym = end_of_group(isym);
!   bool odo = std::any_of( symbol_at(isym) + 1, symbol_at_impl(esym), 
! 			  [field]( const auto& elem ) {
! 			    if( elem.type == SymField ) {
! 			      auto f = cbl_field_of(&elem);
! 			      if( field->level < f->level ) { // exclude RENAMES
! 				return 0 < f->occurs.depending_on;
! 			      }
! 			    }
! 			    return false;
! 			  } );
    return odo;
  }
  
*************** is_variable_length( const cbl_field_t *f
*** 1398,1404 ****
   *  occurs-depending table."
  */
  cbl_field_t *
! rename_not_ok( cbl_field_t *first, cbl_field_t *last) {
    symbol_elem_t
      *beg = symbol_at(field_index(first)),
      *end = symbol_at(field_index(last));
--- 1366,1372 ----
   *  occurs-depending table."
  */
  cbl_field_t *
! rename_not_ok( const cbl_field_t *first, const cbl_field_t *last) {
    symbol_elem_t
      *beg = symbol_at(field_index(first)),
      *end = symbol_at(field_index(last));
*************** cbl_field_t::attr_str( const std::vector
*** 1466,1476 ****
    const char *sep = "";
    char *out = NULL;
  
!   for( auto attr : attrs ) {
      char *part = out;
!     if( has_attr(attr) ) {
        int erc = asprintf(&out, "%s%s%s",
!                          part? part : "", sep, cbl_field_attr_str(attr));
        if( -1 == erc ) return part;
        free(part);
        sep = ", ";
--- 1434,1444 ----
    const char *sep = "";
    char *out = NULL;
  
!   for( auto attr_l : attrs ) {
      char *part = out;
!     if( has_attr(attr_l) ) {
        int erc = asprintf(&out, "%s%s%s",
!                          part? part : "", sep, cbl_field_attr_str(attr_l));
        if( -1 == erc ) return part;
        free(part);
        sep = ", ";
*************** field_str( const cbl_field_t *field ) {
*** 1493,1509 ****
        for( size_t i=0; i < field->occurs.nkey; i++ ) {
          updown[i] = field->occurs.keys[i].ascending? 'A' : 'D';
        }
!       snprintf(name, sizeof(name), "%s[%zu]%s",
!                field->name, field->occurs.ntimes(), updown.data());
      }
    }
  
    pend += snprintf(pend, string + sizeof(string) - pend,
!                    "%02d %-20s ", field->level, name);
  
    char offset[32] = "";
    if( field->level > 1 ) {
!     sprintf( offset, "off%3zu", field->offset );
    }
  
    char parredef =
--- 1461,1477 ----
        for( size_t i=0; i < field->occurs.nkey; i++ ) {
          updown[i] = field->occurs.keys[i].ascending? 'A' : 'D';
        }
!       snprintf(name, sizeof(name), "%s[" HOST_SIZE_T_PRINT_UNSIGNED "]%s",
!                field->name, (fmt_size_t)field->occurs.ntimes(), updown.data());
      }
    }
  
    pend += snprintf(pend, string + sizeof(string) - pend,
!                    "%02u %-20s ", field->level, name);
  
    char offset[32] = "";
    if( field->level > 1 ) {
!     sprintf( offset, "off%3" GCC_PRISZ "u", (fmt_size_t)field->offset );
    }
  
    char parredef =
*************** field_str( const cbl_field_t *field ) {
*** 1521,1526 ****
--- 1489,1511 ----
        auto n = asprintf(&s, "'%s'", data);
        gcc_assert(n);
        auto eodata = data + field->data.capacity;
+       // It is possible for data.initial to be shorter than capacity.
+       
+       // This whole thing needs to be reexamined.  There is an assumption for
+       // FldAlphanumeric values that the valid data in data.initial be the same
+       // length as data.capacity.  But that does not hold true for other types.
+       // For example, a PIC 9V9 has a capacity of two, but the initial
+       // string provided by the COBOL programmer might be "1.2".  Likewise, a
+       // PIC 999999 (capacity 5) might have a value of "1".
+       
+       for(size_t i = 0; i<field->data.capacity; i++)
+         {
+         if( data[i] == '\0' )
+           {
+           eodata = data + i;
+           break;
+           }
+         }
        if( eodata != std::find_if_not(data, eodata, fisprint) ) {
          char *p = reinterpret_cast<char*>(xrealloc(s, n + 8 + 2 * field->data.capacity));
          if( is_elementary(field->type) &&
*************** field_str( const cbl_field_t *field ) {
*** 1570,1577 ****
    };
  
    pend += snprintf(pend, string + sizeof(string) - pend,
!                    "%c%3zu %-6s %c%c%c %2u{%3u,%u,%d = %s} (%s), line %d",
!                    parredef, field->parent, offset,
                     (field->attr & global_e)? 'G' : 0x20,
                     (field->attr & external_e)? 'E' : 0x20,
                     storage_type,
--- 1555,1562 ----
    };
  
    pend += snprintf(pend, string + sizeof(string) - pend,
!                    "%c%3" GCC_PRISZ "u %-6s %c%c%c %2u{%3u,%u,%d = %s} (%s), line %d",
!                    parredef, (fmt_size_t)field->parent, offset,
                     (field->attr & global_e)? 'G' : 0x20,
                     (field->attr & external_e)? 'E' : 0x20,
                     storage_type,
*************** struct capacity_of {
*** 1593,1599 ****
  
    capacity_of operator()( symbol_elem_t& elem ) {
      if( elem.type == SymField ) {
!       cbl_field_t *f = cbl_field_of(&elem);
        if( is_elementary(f->type) ) {
          capacity += field_size(f);
        }
--- 1578,1584 ----
  
    capacity_of operator()( symbol_elem_t& elem ) {
      if( elem.type == SymField ) {
!       const cbl_field_t *f = cbl_field_of(&elem);
        if( is_elementary(f->type) ) {
          capacity += field_size(f);
        }
*************** symbols_update( size_t first, bool parse
*** 1722,1728 ****
      case 1:
        pend = calculate_capacity(p);
        if( dialect_mf() && is_table(field) ) {
-         cbl_field_t *field = cbl_field_of(p);
          if( field->data.memsize < field->size() ) {
            field->data.memsize = field->size();
          }
--- 1707,1712 ----
*************** symbols_update( size_t first, bool parse
*** 1761,1767 ****
  
      bool size_invalid = field->data.memsize > 0 && symbol_redefines(field);
      if( size_invalid ) { // redefine of record area is ok
!       auto redefined = symbol_redefines(field);
        size_invalid = ! is_record_area(redefined);
      }
      if( !field->is_valid() || size_invalid )
--- 1745,1751 ----
  
      bool size_invalid = field->data.memsize > 0 && symbol_redefines(field);
      if( size_invalid ) { // redefine of record area is ok
!       const cbl_field_t * redefined = symbol_redefines(field);
        size_invalid = ! is_record_area(redefined);
      }
      if( !field->is_valid() || size_invalid )
*************** symbols_update( size_t first, bool parse
*** 1784,1791 ****
          if( e == symbols_end() ) {
            // no field redefines the file's default record
            auto file = cbl_file_of(symbol_at(field->parent));
!           ERROR_FIELD(field, "line %d: %s lacks a file description",
!                       file->line, file->name);
            return 0;
          }
        }
--- 1768,1775 ----
          if( e == symbols_end() ) {
            // no field redefines the file's default record
            auto file = cbl_file_of(symbol_at(field->parent));
!           ERROR_FIELD(field, "%s lacks a file description",
!                       file->name);
            return 0;
          }
        }
*************** symbols_update( size_t first, bool parse
*** 1796,1813 ****
                    field->line, field->level_str(), field->name);
  
          } else {
!           dbgmsg("%s: error: data item %s #%zu '%s' capacity %u rejected",
                     __func__,
                     3 + cbl_field_type_str(field->type),
!                    isym, field->name, field->data.capacity);
          }
        }
        return 0;
      }
  
      if(! (field->data.memsize == 0 || field_size(field) <= field->data.memsize) ) {
!       dbgmsg( "%s:%d: #%zu: invalid: %s", __func__, __LINE__,
!                            symbol_index(p), field_str(cbl_field_of(p)) );
      }
      assert(field->data.memsize == 0 || field_size(field) <= field_memsize(field));
      assert( !(field->data.memsize > 0 && symbol_explicitly_redefines(field)) );
--- 1780,1798 ----
                    field->line, field->level_str(), field->name);
  
          } else {
!           dbgmsg("%s: error: data item %s #" HOST_SIZE_T_PRINT_UNSIGNED
!                  " '%s' capacity %u rejected",
                     __func__,
                     3 + cbl_field_type_str(field->type),
!                    (fmt_size_t)isym, field->name, field->data.capacity);
          }
        }
        return 0;
      }
  
      if(! (field->data.memsize == 0 || field_size(field) <= field->data.memsize) ) {
!       dbgmsg( "%s:%d: #" HOST_SIZE_T_PRINT_UNSIGNED ": invalid: %s", __func__, __LINE__,
!               (fmt_size_t)symbol_index(p), field_str(cbl_field_of(p)) );
      }
      assert(field->data.memsize == 0 || field_size(field) <= field_memsize(field));
      assert( !(field->data.memsize > 0 && symbol_explicitly_redefines(field)) );
*************** symbols_update( size_t first, bool parse
*** 1827,1832 ****
--- 1812,1826 ----
      if( field->level == 0 && field->is_key_name() ) continue;
      if( is_literal(field) && field->var_decl_node != NULL ) continue;
  
+     // If the field is a constant for a figconstant, just use it. 
+     if( field->level != 0 && field->has_attr(constant_e) ) {
+       auto fig = cbl_figconst_field_of(field->data.initial);
+       if( fig ) {
+ 	field->var_decl_node = fig->var_decl_node;
+ 	continue;
+       }
+     }
+     
      if( field->is_typedef() ) {
        auto isym = end_of_group( symbol_index(p) );
        p = symbol_at(--isym);
*************** symbols_update( size_t first, bool parse
*** 1834,1840 ****
      }
  
      // Verify REDEFINing field has no ODO components
!     auto parent = symbol_redefines(field);
      if( parent && !is_record_area(parent) && is_variable_length(field) ) {
        ERROR_FIELD(field, "line %d: REDEFINES field %s cannot be variable length",
                 field->line, field->name);
--- 1828,1834 ----
      }
  
      // Verify REDEFINing field has no ODO components
!     const cbl_field_t * parent = symbol_redefines(field);
      if( parent && !is_record_area(parent) && is_variable_length(field) ) {
        ERROR_FIELD(field, "line %d: REDEFINES field %s cannot be variable length",
                 field->line, field->name);
*************** symbol_field_forward( size_t index ) {
*** 1925,1931 ****
    assert( index < symbols.nelem );
    symbol_elem_t *e = symbol_at(index);
    if( (e->type != SymField) ) {
!     dbgmsg("%s: logic error: #%zu is %s", __func__, index, symbol_type_str(e->type));
    }
    assert(e->type == SymField);
  
--- 1919,1926 ----
    assert( index < symbols.nelem );
    symbol_elem_t *e = symbol_at(index);
    if( (e->type != SymField) ) {
!     dbgmsg("%s: logic error: #" HOST_SIZE_T_PRINT_UNSIGNED " is %s",
!            __func__, (fmt_size_t)index, symbol_type_str(e->type));
    }
    assert(e->type == SymField);
  
*************** symbol_in_file( symbol_elem_t *e ) {
*** 2023,2037 ****
  }
  #endif
  
! static struct cbl_field_t *
! symbol_field_parent_set( struct cbl_field_t *field )
  {
    if( field->level == 01 ) return NULL;
    if( field->level == 77 ) return NULL;
    if( field->level == 78 ) return NULL;
  
    struct symbol_elem_t *e = symbols.elems + symbols.nelem - 1;
!   struct symbol_elem_t *first = symbols.elems + symbols.first_program;
  
    for( ; field->parent == 0 && e >= first; e-- ) {
      if( ! (e->type == SymField && cbl_field_of(e)->level > 0) ) {
--- 2018,2032 ----
  }
  #endif
  
! static cbl_field_t *
! symbol_field_parent_set( cbl_field_t *field )
  {
    if( field->level == 01 ) return NULL;
    if( field->level == 77 ) return NULL;
    if( field->level == 78 ) return NULL;
  
    struct symbol_elem_t *e = symbols.elems + symbols.nelem - 1;
!   const struct symbol_elem_t *first = symbols.elems + symbols.first_program;
  
    for( ; field->parent == 0 && e >= first; e-- ) {
      if( ! (e->type == SymField && cbl_field_of(e)->level > 0) ) {
*************** class parent_elem_set
*** 2109,2115 ****
  private:
    size_t parent_index;
  public:
!   parent_elem_set( size_t parent_index )
      : parent_index(parent_index)
    {}
    void operator()( struct symbol_elem_t& e ) {
--- 2104,2110 ----
  private:
    size_t parent_index;
  public:
!   explicit parent_elem_set( size_t parent_index )
      : parent_index(parent_index)
    {}
    void operator()( struct symbol_elem_t& e ) {
*************** symbol_table_init(void) {
*** 2185,2198 ****
    }
  
    static symbol_elem_t environs[] = {
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSIN_e, "SYSIN", 0, "/dev/stdin"}} },
!     { symbol_elem_t{ 0, cbl_special_name_t{0, SYSIPT_e, "SYSIPT", 0, "/dev/stdout"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSOUT_e, "SYSOUT", 0, "/dev/stdout"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSLIST_e, "SYSLIST", 0, "/dev/stdout"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSLST_e, "SYSLST", 0, "/dev/stdout"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSPUNCH_e, "SYSPUNCH", 0, "/dev/stderr"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSPCH_e, "SYSPCH", 0, "/dev/stderr"}} },
!     { symbol_elem_t{ 0, cbl_special_name_t{0, CONSOLE_e, "CONSOLE", 0, "/dev/stdout"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, C01_e, "C01", 0, "/dev/null"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, C02_e, "C02", 0, "/dev/null"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, C03_e, "C03", 0, "/dev/null"}} },
--- 2180,2201 ----
    }
  
    static symbol_elem_t environs[] = {
+     { symbol_elem_t{ 0, cbl_special_name_t{0, CONSOLE_e, "CONSOLE", 0, "/dev/stdout"}} }, // stdout in DISPLAY; stdin in ACCEPT
+ 
+     { symbol_elem_t{ 0, cbl_special_name_t{0, STDIN_e, "STDIN", 0, "/dev/stdin"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSIN_e, "SYSIN", 0, "/dev/stdin"}} },
!     { symbol_elem_t{ 0, cbl_special_name_t{0, SYSIPT_e, "SYSIPT", 0, "/dev/stdin"}} },
! 
!     { symbol_elem_t{ 0, cbl_special_name_t{0, STDOUT_e, "STDOUT", 0, "/dev/stdout"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSOUT_e, "SYSOUT", 0, "/dev/stdout"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSLIST_e, "SYSLIST", 0, "/dev/stdout"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSLST_e, "SYSLST", 0, "/dev/stdout"}} },
+ 
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSPUNCH_e, "SYSPUNCH", 0, "/dev/stderr"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, SYSPCH_e, "SYSPCH", 0, "/dev/stderr"}} },
!     { symbol_elem_t{ 0, cbl_special_name_t{0, STDERR_e, "STDERR", 0, "/dev/stderr"}} },
!     { symbol_elem_t{ 0, cbl_special_name_t{0, SYSERR_e, "SYSERR", 0, "/dev/stderr"}} },
! 
      { symbol_elem_t{ 0, cbl_special_name_t{0, C01_e, "C01", 0, "/dev/null"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, C02_e, "C02", 0, "/dev/null"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, C03_e, "C03", 0, "/dev/null"}} },
*************** symbol_table_init(void) {
*** 2212,2221 ****
      { symbol_elem_t{ 0, cbl_special_name_t{0, S04_e, "S04", 0, "/dev/null"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, S05_e, "S05", 0, "/dev/null"}} },
      { symbol_elem_t{ 0, cbl_special_name_t{0, AFP_5A_e, "AFP-5A", 0, "/dev/null"}} },
-     { symbol_elem_t{ 0, cbl_special_name_t{0, STDIN_e, "STDIN", 0, "/dev/stdin"}} },
-     { symbol_elem_t{ 0, cbl_special_name_t{0, STDOUT_e, "STDOUT", 0, "/dev/stdout"}} },
-     { symbol_elem_t{ 0, cbl_special_name_t{0, STDERR_e, "STDERR", 0, "/dev/stderr"}} },
-     { symbol_elem_t{ 0, cbl_special_name_t{0, SYSERR_e, "SYSERR", 0, "/dev/stderr"}} },
    };
  
    struct symbol_elem_t *p = table.elems + table.nelem;
--- 2215,2220 ----
*************** symbol_table_init(void) {
*** 2266,2272 ****
        "FILLER", 0, {}, {1,1,0,0, " "}, NULL },
      { 0, FldAlphanumeric, FldInvalid, signable_e | global_e, 0,0,2, nonarray, 0,
        "DEBUG-CONTENTS", 0, {}, {76,76,0,0, NULL}, NULL },
! };
  
    // debug registers
    assert(table.nelem + COUNT_OF(debug_registers) < table.capacity);
--- 2265,2271 ----
        "FILLER", 0, {}, {1,1,0,0, " "}, NULL },
      { 0, FldAlphanumeric, FldInvalid, signable_e | global_e, 0,0,2, nonarray, 0,
        "DEBUG-CONTENTS", 0, {}, {76,76,0,0, NULL}, NULL },
!   };
  
    // debug registers
    assert(table.nelem + COUNT_OF(debug_registers) < table.capacity);
*************** symbol_file_add( size_t program, cbl_fil
*** 2413,2419 ****
      return NULL;
    }
  
!   struct symbol_elem_t sym = { SymFile, program };
    sym.elem.file = *file;
  
    e = symbol_add(&sym);
--- 2412,2418 ----
      return NULL;
    }
  
!   symbol_elem_t sym{ SymFile, program };
    sym.elem.file = *file;
  
    e = symbol_add(&sym);
*************** symbol_file_add( size_t program, cbl_fil
*** 2426,2441 ****
    return e;
  }
  
! struct symbol_elem_t *
! symbol_alphabet_add( size_t program, struct cbl_alphabet_t *alphabet ) {
!   struct symbol_elem_t sym{ SymAlphabet, program };
    sym.elem.alphabet = *alphabet;
    return symbol_add(&sym);
  }
  
! size_t
  numeric_group_attrs( const cbl_field_t *field ) {
!   static const size_t inherit = signable_e | leading_e | separate_e | big_endian_e;
    static_assert(sizeof(cbl_field_t::type) < sizeof(inherit), "need bigger type");
    assert(field);
    if( field->type == FldNumericDisplay || field->type == FldGroup ) {
--- 2425,2440 ----
    return e;
  }
  
! symbol_elem_t *
! symbol_alphabet_add( size_t program, const cbl_alphabet_t *alphabet ) {
!   symbol_elem_t sym{ SymAlphabet, program };
    sym.elem.alphabet = *alphabet;
    return symbol_add(&sym);
  }
  
! uint64_t
  numeric_group_attrs( const cbl_field_t *field ) {
!   static const uint64_t inherit = signable_e | leading_e | separate_e | big_endian_e;
    static_assert(sizeof(cbl_field_t::type) < sizeof(inherit), "need bigger type");
    assert(field);
    if( field->type == FldNumericDisplay || field->type == FldGroup ) {
*************** symbol_typedef_add( size_t program, stru
*** 2471,2477 ****
    auto e = symbols_end() - 1;
    assert( symbols_begin() < e );
    if( e->type == SymField ) {
!     auto f = cbl_field_of(e);
      if( f == field ) return e;
    }
  
--- 2470,2476 ----
    auto e = symbols_end() - 1;
    assert( symbols_begin() < e );
    if( e->type == SymField ) {
!     const cbl_field_t * f = cbl_field_of(e);
      if( f == field ) return e;
    }
  
*************** struct symbol_elem_t *
*** 2509,2515 ****
  symbol_field_add( size_t program, struct cbl_field_t *field )
  {
    field->our_index = symbols.nelem;
!   cbl_field_t *parent = symbol_field_parent_set( field );
    if( parent && parent->type == FldGroup) {
      // Inherit effects of parent's USAGE, as though it appeared 1st in the
      // member's definition.
--- 2508,2514 ----
  symbol_field_add( size_t program, struct cbl_field_t *field )
  {
    field->our_index = symbols.nelem;
!   const cbl_field_t *parent = symbol_field_parent_set( field );
    if( parent && parent->type == FldGroup) {
      // Inherit effects of parent's USAGE, as though it appeared 1st in the
      // member's definition.
*************** symbol_field_add( size_t program, struct
*** 2521,2527 ****
      if( is_numeric(parent->usage) && parent->data.capacity > 0 ) {
        field->type = parent->usage;
        field->data = parent->data;
!       field->data = 0.0;
        field->data.initial = NULL;
      }
    }
--- 2520,2527 ----
      if( is_numeric(parent->usage) && parent->data.capacity > 0 ) {
        field->type = parent->usage;
        field->data = parent->data;
!       field->data = 0;  // cppcheck-suppress redundantAssignment
!       //                // cppcheck doesn't understand multiple overloaded operator=
        field->data.initial = NULL;
      }
    }
*************** symbol_field( size_t program, size_t par
*** 2640,2645 ****
--- 2640,2646 ----
    return p != end? &*p : NULL;
  }
  
+ // cppcheck-suppress-begin [CastIntegerToAddressAtReturn] obviously not true
  symbol_elem_t *
  symbol_register( const char name[] )
  {
*************** symbol_register( const char name[] )
*** 2655,2660 ****
--- 2656,2662 ----
  
    return p;
  }
+ // cppcheck-suppress-end [CastIntegerToAddressAtReturn]
  
  // Find current 01 record during Level 66 construction.
  const symbol_elem_t *
*************** symbol_literalA( size_t program, const c
*** 2717,2727 ****
  struct symbol_elem_t *
  symbol_file( size_t program, const char name[] ) {
    size_t nelem = symbols.nelem;
!   struct symbol_elem_t key = { SymFile, program }, *e = &key;
  
    assert(strlen(name) < sizeof(key.elem.file.name));
    strcpy(key.elem.file.name, name);
  
    do {
      e = static_cast<struct symbol_elem_t *>(lfind( &key, symbols.elems,
                                                     &nelem, sizeof(*e),
--- 2719,2730 ----
  struct symbol_elem_t *
  symbol_file( size_t program, const char name[] ) {
    size_t nelem = symbols.nelem;
!   symbol_elem_t key{ SymFile, program }, *e = &key;
  
    assert(strlen(name) < sizeof(key.elem.file.name));
    strcpy(key.elem.file.name, name);
  
+   // cppcheck-suppress-begin [knownConditionTrueFalse]
    do {
      e = static_cast<struct symbol_elem_t *>(lfind( &key, symbols.elems,
                                                     &nelem, sizeof(*e),
*************** symbol_file( size_t program, const char
*** 2730,2735 ****
--- 2733,2739 ----
      key.program = cbl_label_of(symbol_at(key.program))->parent;
      if( key.program == 0 ) break; // no file without a program
    } while( !e );
+   // cppcheck-suppress-end [knownConditionTrueFalse]
  
    if( e ) {
      assert(e->type == SymFile);
*************** seek_parent( const symbol_elem_t *e, siz
*** 2837,2843 ****
  struct symbol_elem_t *
  symbol_field_same_as( cbl_field_t *tgt, const cbl_field_t *src ) {
    if( target_in_src(tgt, src) ) {
!     ERROR_FIELD(tgt, "%s %s  may not reference itself as part of %s %s",
              tgt->level_str(), tgt->name, src->level_str(), src->name);
      return NULL;
    }
--- 2841,2847 ----
  struct symbol_elem_t *
  symbol_field_same_as( cbl_field_t *tgt, const cbl_field_t *src ) {
    if( target_in_src(tgt, src) ) {
!     ERROR_FIELD(tgt, "%s %s may not reference itself as part of %s %s",
              tgt->level_str(), tgt->name, src->level_str(), src->name);
      return NULL;
    }
*************** symbol_file_same_record_area( std::list<
*** 2923,2929 ****
  }
  
  static symbol_elem_t *
! next_program( symbol_elem_t *elem ) {
    size_t start = elem? symbol_index(elem) : 0;
    symbol_elem_t * e =
      std::find_if( symbols_begin(start), symbols_end(), is_program );
--- 2927,2933 ----
  }
  
  static symbol_elem_t *
! next_program( const symbol_elem_t *elem ) {
    size_t start = elem? symbol_index(elem) : 0;
    symbol_elem_t * e =
      std::find_if( symbols_begin(start), symbols_end(), is_program );
*************** is_numeric_constant( const char name[] )
*** 2961,2974 ****
  
  // get default record layout for a file
  struct cbl_field_t *
! symbol_file_record( struct cbl_file_t *file ) {
    return cbl_field_of(symbol_at(file->default_record));
  }
  
  class is_section {
    cbl_section_type_t section_type;
   public:
!   is_section( cbl_section_type_t sect ) : section_type(sect) {}
    bool operator()( symbol_elem_t& e ) const {
      return e.type == SymDataSection && cbl_section_of(&e)->type == section_type;
    }
--- 2965,2978 ----
  
  // get default record layout for a file
  struct cbl_field_t *
! symbol_file_record( const cbl_file_t *file ) {
    return cbl_field_of(symbol_at(file->default_record));
  }
  
  class is_section {
    cbl_section_type_t section_type;
   public:
!   explicit is_section( cbl_section_type_t sect ) : section_type(sect) {}
    bool operator()( symbol_elem_t& e ) const {
      return e.type == SymDataSection && cbl_section_of(&e)->type == section_type;
    }
*************** static bool fd_record_size_cmp( const sy
*** 2979,2986 ****
    return cbl_field_of(&a)->data.capacity < cbl_field_of(&b)->data.capacity;
  }
  
- cbl_file_key_t cbl_file_t::no_key;
- 
  /*
   * Find largest and smallest record defined for a file.  The rule is:
   * cbl_file_t::varies() returns true if the record size varies,
--- 2983,2988 ----
*************** cbl_alphabet_t::assign( const YYLTYPE& l
*** 3091,3097 ****
      return true;
    }
    auto taken = alphabet[ch];
!   error_msg(loc, "ALPHABET %s, character '%c' (X'%x') "
             "in position %d already defined at position %d",
             name,
             ISPRINT(ch)? ch : '?', ch,
--- 3093,3099 ----
      return true;
    }
    auto taken = alphabet[ch];
!   error_msg(loc, "ALPHABET %s, character %<%c%> (X%'%x%') "
             "in position %d already defined at position %d",
             name,
             ISPRINT(ch)? ch : '?', ch,
*************** using std::deque;
*** 3140,3149 ****
  static deque<cbl_field_t*> stack;
  
  static cbl_field_t *
! new_temporary_impl( enum cbl_field_type_t type )
  {
    extern int yylineno;
-   static int nstack, nliteral;
    static const struct cbl_field_t empty_alpha = {
                                  0, FldAlphanumeric, FldInvalid,
                                  intermediate_e, 0, 0, 0, nonarray, 0, "",
--- 3142,3150 ----
  static deque<cbl_field_t*> stack;
  
  static cbl_field_t *
! new_temporary_impl( enum cbl_field_type_t type, const cbl_name_t name = nullptr )
  {
    extern int yylineno;
    static const struct cbl_field_t empty_alpha = {
                                  0, FldAlphanumeric, FldInvalid,
                                  intermediate_e, 0, 0, 0, nonarray, 0, "",
*************** new_temporary_impl( enum cbl_field_type_
*** 3212,3222 ****
--- 3213,3227 ----
  
    f->line = yylineno;
    if( is_literal(type) ) {
+     static int nliteral = 0;
      snprintf(f->name, sizeof(f->name), "_literal%d",++nliteral);
    } else {
+     static int nstack = 0;
      snprintf(f->name, sizeof(f->name), "_stack%d",++nstack);
    }
  
+   f->data.initial = name; // capture e.g. the function name 
+ 
    return f;
  }
  
*************** parser_symbol_add2( cbl_field_t *field )
*** 3235,3241 ****
  
  static cbl_field_t *
  new_literal_add( const char initial[], uint32_t len, enum cbl_field_attr_t attr ) {
-   static char empty[2] = "\0";
    cbl_field_t *field = NULL;
    if( !(attr & quoted_e) )
      {
--- 3240,3245 ----
*************** new_literal_add( const char initial[], u
*** 3245,3250 ****
--- 3249,3255 ----
      }
    else
      {
+     static char empty[2] = "\0";
      field = new_temporary_impl(FldLiteralA);
      field->attr |= attr;
      field->data.initial = len > 0? initial : empty;
*************** new_literal_add( const char initial[], u
*** 3258,3267 ****
  
    static size_t literal_count = 1;
    sprintf(field->name,
!           "%s%c_%zd",
            "_literal",
            field->type == FldLiteralA ? 'a' : 'n',
!           literal_count++);
  
    return parser_symbol_add2(field);
  }
--- 3263,3272 ----
  
    static size_t literal_count = 1;
    sprintf(field->name,
!           "%s%c_" HOST_SIZE_T_PRINT_DEC,
            "_literal",
            field->type == FldLiteralA ? 'a' : 'n',
!           (fmt_size_t)literal_count++);
  
    return parser_symbol_add2(field);
  }
*************** new_literal( uint32_t len, const char in
*** 3290,3303 ****
  void
  temporaries_t::dump() const {
    extern int yylineno;
!   char *output  = xasprintf("%4d: %zu Literals", yylineno, literals.size());
  
    for( const auto& elem : used ) {
      if( ! elem.second.empty() ) {
        char *so_far = output;
!       output = xasprintf("%s, %zu %s",
                           so_far,
!                          elem.second.size(),
                           3 + cbl_field_type_str(elem.first));
        free(so_far);
      }
--- 3295,3309 ----
  void
  temporaries_t::dump() const {
    extern int yylineno;
!   char *output  = xasprintf("%4d: " HOST_SIZE_T_PRINT_UNSIGNED " Literals",
!                             yylineno, (fmt_size_t)literals.size());
  
    for( const auto& elem : used ) {
      if( ! elem.second.empty() ) {
        char *so_far = output;
!       output = xasprintf("%s, " HOST_SIZE_T_PRINT_UNSIGNED " %s",
                           so_far,
!                          (fmt_size_t)elem.second.size(),
                           3 + cbl_field_type_str(elem.first));
        free(so_far);
      }
*************** temporaries_t::reuse( cbl_field_type_t t
*** 3338,3348 ****
  }
  
  cbl_field_t *
! temporaries_t::acquire( cbl_field_type_t type ) {
    cbl_field_t *field = reuse(type);
  
    if( !field ) {
!     field = new_temporary_impl(type);
      add(field);
    }
    return parser_symbol_add2(field); // notify of reuse
--- 3344,3354 ----
  }
  
  cbl_field_t *
! temporaries_t::acquire( cbl_field_type_t type, const cbl_name_t name ) {
    cbl_field_t *field = reuse(type);
  
    if( !field ) {
!     field = new_temporary_impl(type, name);
      add(field);
    }
    return parser_symbol_add2(field); // notify of reuse
*************** symbol_temporaries_free() {
*** 3375,3382 ****
  }
  
  cbl_field_t *
! new_alphanumeric( size_t capacity ) {
!   cbl_field_t * field = new_temporary_impl(FldAlphanumeric);
    field->data.capacity = capacity;
    temporaries.add(field);
    return parser_symbol_add2(field);
--- 3381,3388 ----
  }
  
  cbl_field_t *
! new_alphanumeric( size_t capacity, const cbl_name_t name = nullptr ) {
!   cbl_field_t * field = new_temporary_impl(FldAlphanumeric, name);
    field->data.capacity = capacity;
    temporaries.add(field);
    return parser_symbol_add2(field);
*************** cbl_field_t *
*** 3386,3400 ****
  new_temporary( enum cbl_field_type_t type, const char *initial ) {
    if( ! initial ) {
      assert( ! is_literal(type) ); // Literal type must have literal value.
!     return temporaries.acquire(type);
    }
    if( is_literal(type) ) {
      auto field = temporaries.literal(initial,
                                       type == FldLiteralA? quoted_e : none_e);
      return field;
    }
!   cbl_field_t *field = new_temporary_impl(type);
!   field->data.capacity = strlen(field->data.initial = initial);
    temporaries.add(field);
    parser_symbol_add(field);
  
--- 3392,3405 ----
  new_temporary( enum cbl_field_type_t type, const char *initial ) {
    if( ! initial ) {
      assert( ! is_literal(type) ); // Literal type must have literal value.
!     return temporaries.acquire(type, initial);
    }
    if( is_literal(type) ) {
      auto field = temporaries.literal(initial,
                                       type == FldLiteralA? quoted_e : none_e);
      return field;
    }
!   cbl_field_t *field = new_temporary_impl(type, initial);
    temporaries.add(field);
    parser_symbol_add(field);
  
*************** cbl_field_t::internalize() {
*** 3494,3500 ****
    static const size_t noconv = size_t(-1);
  
    if (cd == (iconv_t)-1) {
!     yywarn("failed iconv_open tocode = '%s' fromcode = %s", tocode, fromcode);
    }
  
    bool using_assumed = fromcode == os_locale.assumed;
--- 3499,3505 ----
    static const size_t noconv = size_t(-1);
  
    if (cd == (iconv_t)-1) {
!     yywarn("failed %<iconv_open%> tocode = %<%s%> fromcode = %s", tocode, fromcode);
    }
  
    bool using_assumed = fromcode == os_locale.assumed;
*************** cbl_label_t::str() const {
*** 3580,3587 ****
        buf = xasprintf("%-12s %s top level [%s], line %d",
                        type_str() + 3, name, mangled_name, line);
      } else {
!       buf = xasprintf("%-12s %s OF #%zu '%s' [%s], line %d",
!                       type_str() + 3, name, parent,
                        cbl_label_of(symbol_at(parent))->name,
                        mangled_name, line);
      }
--- 3585,3592 ----
        buf = xasprintf("%-12s %s top level [%s], line %d",
                        type_str() + 3, name, mangled_name, line);
      } else {
!       buf = xasprintf("%-12s %s OF #" HOST_SIZE_T_PRINT_UNSIGNED " '%s' [%s], line %d",
!                       type_str() + 3, name, (fmt_size_t)parent,
                        cbl_label_of(symbol_at(parent))->name,
                        mangled_name, line);
      }
*************** cbl_label_t::explicit_parent() const {
*** 3611,3622 ****
  }
  
  cbl_prog_hier_t::cbl_prog_hier_t() {
-   nlabel = std::count_if( symbols_begin(), symbols_end(), is_program );
-   assert(nlabel >0);
-   labels = new cbl_prog_hier_t::program_label_t[nlabel];
- 
    std::copy_if( symbols_begin(), symbols_end(),
!                 labels, is_program );
  }
  
  /*
--- 3616,3624 ----
  }
  
  cbl_prog_hier_t::cbl_prog_hier_t() {
    std::copy_if( symbols_begin(), symbols_end(),
!                 std::back_inserter(labels), is_program );
!   assert(! labels.empty());
  }
  
  /*
*************** symbol_label_add( size_t program, cbl_la
*** 3695,3701 ****
    // Set the program's mangled name, dehyphenated and uniqified by parent index.
    if( input->type == LblProgram ) {
      char *psz = cobol_name_mangler(input->name);
!     input->mangled_name = xasprintf("%s.%zu", psz, input->parent);
      free(psz);
    }
  
--- 3697,3704 ----
    // Set the program's mangled name, dehyphenated and uniqified by parent index.
    if( input->type == LblProgram ) {
      char *psz = cobol_name_mangler(input->name);
!     input->mangled_name = xasprintf("%s." HOST_SIZE_T_PRINT_UNSIGNED,
!                                     psz, (fmt_size_t)input->parent);
      free(psz);
    }
  
*************** symbol_label_add( size_t program, cbl_la
*** 3708,3714 ****
    if( (e = symbol_add(&elem)) == NULL ) {
      cbl_errx("%s:%d: could not add '%s'", __func__, __LINE__, label->name);
    }
! 
    common_callables_update( symbol_index(e) );
  
    // restore munged line number unless symbol_add returned an existing label
--- 3711,3718 ----
    if( (e = symbol_add(&elem)) == NULL ) {
      cbl_errx("%s:%d: could not add '%s'", __func__, __LINE__, label->name);
    }
!   assert(e);
!   
    common_callables_update( symbol_index(e) );
  
    // restore munged line number unless symbol_add returned an existing label
*************** symbol_label_add( size_t program, cbl_la
*** 3719,3757 ****
  }
  
  /*
!  * Under ISO (and not IBM) Declaratives are followed by a Section name.  When
!  * the first statement is parsed, verify, if Declaratives were used, that it
   * was preceeded by a Section name.
   */
  bool
! symbol_label_section_exists( size_t program ) {
!   auto pblob = std::find_if( symbols_begin(program), symbols_end(),
!                                []( const auto& sym ) {
!                                  if( sym.type == SymField ) {
!                                    auto& f( sym.elem.field );
!                                    return f.type == FldBlob;
!                                  }
!                                  return false;
!                                } );
!   if( pblob == symbols_end() ) return true; // Section name not required
! 
!   bool has_section = std::any_of( ++pblob, symbols_end(),
!                                []( const auto& sym ) {
!                                  if( sym.type == SymLabel ) {
!                                    auto& L(sym.elem.label);
!                                    if( L.type == LblSection ) {
!                                      if( L.name[0] != '_' ) { // not implicit
!                                        return true; // Section name exists
!                                      }
!                                    }
                                   }
                                   return false;
                                 } );
    if( yydebug && ! has_section ) {
!     symbols_dump(program, true);
    }
!   // Return true if no Declaratives, because the (non-)requirement is met.
!   // Return false if Declaratives exist, because no Section name was found.
    return has_section;
  }
  
--- 3723,3755 ----
  }
  
  /*
!  * Under ISO (and not IBM) Declaratives are followed by a Section name.  If
!  * Declaratives were used, when the first statement is parsed verify that it
   * was preceeded by a Section name.
   */
  bool
! symbol_label_section_exists( size_t eval_label_index ) {
!   auto eval = symbols_begin(eval_label_index);
!   /*  cppcheck warns that the following statement depends on the order of
!       evaluation of side effects.  Since this isn't my code, and since I don't
!       think the warning can be eliminated without rewriting it, I am just
!       supprressing it.
!       -- Bob Dubner, 2025-07-14 */
!   // cppcheck-suppress unknownEvaluationOrder
!   bool has_section = std::any_of( ++eval, symbols_end(),
!                                [program = eval->program]( const auto& sym ) {
!                                  if( program == sym.program && sym.type == SymLabel ) {
!                                    const auto& L(sym.elem.label);
! 				   // true if the symbol is an explicit label.
!                                    return L.type == LblSection &&  L.name[0] != '_'; 
                                   }
                                   return false;
                                 } );
    if( yydebug && ! has_section ) {
!     symbols_dump(eval_label_index, true);
    }
!   // Return true if a user-defined SECTION was found after the Declaratives
!   // label section. 
    return has_section;
  }
  
*************** symbol_program_add( size_t program, cbl_
*** 3764,3770 ****
  
    // Set the program's mangled name, dehyphenated and uniqified by parent index.
    char *psz = cobol_name_mangler(input->name);
!   elem.elem.label.mangled_name = xasprintf("%s.%zu", psz, input->parent);
    free(psz);
  
    e = std::find_if( symbols_begin(program), symbols_end(),
--- 3762,3769 ----
  
    // Set the program's mangled name, dehyphenated and uniqified by parent index.
    char *psz = cobol_name_mangler(input->name);
!   elem.elem.label.mangled_name = xasprintf("%s." HOST_SIZE_T_PRINT_UNSIGNED,
!                                            psz, (fmt_size_t)input->parent);
    free(psz);
  
    e = std::find_if( symbols_begin(program), symbols_end(),
*************** expand_picture(const char *picture)
*** 3892,3898 ****
      {
      assert(strlen(picture) < PICTURE_MAX); // guaranteed by picset() in scanner
      size_t retval_length = PICTURE_MAX;
!     char *retval = (char *)xmalloc(retval_length);
      size_t index = 0;
  
      int ch;
--- 3891,3897 ----
      {
      assert(strlen(picture) < PICTURE_MAX); // guaranteed by picset() in scanner
      size_t retval_length = PICTURE_MAX;
!     char *retval = static_cast<char *>(xmalloc(retval_length));
      size_t index = 0;
  
      int ch;
*************** expand_picture(const char *picture)
*** 3921,3927 ****
              if( index + repeat >= retval_length )
                  {
                  retval_length <<= 1;
!                 retval = (char *)xrealloc(retval, retval_length);
                  }
  
              while(repeat--)
--- 3920,3926 ----
              if( index + repeat >= retval_length )
                  {
                  retval_length <<= 1;
!                 retval = static_cast<char *>(xrealloc(retval, retval_length));
                  }
  
              while(repeat--)
*************** expand_picture(const char *picture)
*** 3934,3940 ****
              if( index >= retval_length )
                  {
                  retval_length <<= 1;
!                 retval = (char *)xrealloc(retval, retval_length);
                  }
              retval[index++] = ch;
              }
--- 3933,3939 ----
              if( index >= retval_length )
                  {
                  retval_length <<= 1;
!                 retval = static_cast<char *>(xrealloc(retval, retval_length));
                  }
              retval[index++] = ch;
              }
*************** expand_picture(const char *picture)
*** 3943,3949 ****
      if( index >= retval_length )
          {
          retval_length <<= 1;
!         retval = (char *)xrealloc(retval, retval_length);
          }
      retval[index++] = '\0';
  
--- 3942,3948 ----
      if( index >= retval_length )
          {
          retval_length <<= 1;
!         retval = static_cast<char *>(xrealloc(retval, retval_length));
          }
      retval[index++] = '\0';
  
*************** expand_picture(const char *picture)
*** 3966,3972 ****
                  {
                  pcurrency[i] = 'B';
                  }
-             dest_length += sign_length;
              }
          }
  
--- 3965,3970 ----
*************** symbol_program_callables( size_t program
*** 4197,4203 ****
      if( e->type != SymLabel ) continue;
      if( e->elem.label.type != LblProgram ) continue;
  
!     auto prog = cbl_label_of(e);
      if( program == symbol_index(e) && !prog->recursive ) continue;
  
      if( (self->parent == prog->parent && prog->common) ||
--- 4195,4201 ----
      if( e->type != SymLabel ) continue;
      if( e->elem.label.type != LblProgram ) continue;
  
!     const cbl_label_t * prog = cbl_label_of(e);
      if( program == symbol_index(e) && !prog->recursive ) continue;
  
      if( (self->parent == prog->parent && prog->common) ||
*************** symbol_program_local( const char tgt_nam
*** 4231,4236 ****
--- 4229,4235 ----
   */
  std::map<char, const char *> currencies;
  
+ // cppcheck-suppress-begin [nullPointerRedundantCheck]
  bool
  symbol_currency_add( const char symbol[], const char sign[] ) {
    // In service of CURRENCY sign PICTURE SYMBOL symbol
*************** symbol_currency_add( const char symbol[]
*** 4242,4247 ****
--- 4241,4247 ----
    currencies[*symbol] = sign;
    return true;
  }
+ // cppcheck-suppress-end [nullPointerRedundantCheck]
  
  const char *
  symbol_currency( char sign ) {
*************** symbol_currency( char sign ) {
*** 4249,4254 ****
--- 4249,4259 ----
    if( currencies.size() == 0 ) {
      currencies['$'] = "$";
    }
+   if( sign == '\0' ) { // default
+     auto result = currencies.begin();
+     gcc_assert(result != currencies.end());
+     return result->second;
+   }
    auto result = currencies.find(sign);
    return result == currencies.end()? NULL : result->second;
  }
*************** bool decimal_is_comma() { return decimal
*** 4264,4287 ****
  /*
   * A cbl_occurs_key_t is part of a field definition, and comprises
   * size_t symbol indexes.  A cbl_key_t is a list of field pointers,
!  * and can be created ad hoc to describe a sort. We can construct a
   * cbl_key_t from cbl_occurs_key_t.
   */
  cbl_key_t::
  cbl_key_t( const cbl_occurs_key_t& that )
    : ascending(that.ascending)
  {
!   if( that.field_list.nfield == 0 ) {
!     *this = cbl_key_t();
!     return;
!   }
! 
!   nfield = that.field_list.nfield;
!   fields = static_cast<cbl_field_t**>( xcalloc(nfield,
!                                                    sizeof(*fields)) );
!   for( size_t i=0; i < that.field_list.nfield; i++ ) {
!     fields[i] = cbl_field_of(symbol_at(that.field_list.fields[i]));
!   }
  }
  
  void
--- 4269,4287 ----
  /*
   * A cbl_occurs_key_t is part of a field definition, and comprises
   * size_t symbol indexes.  A cbl_key_t is a list of field pointers,
!  * and can be created ad hoc to describe a sort. We construct a
   * cbl_key_t from cbl_occurs_key_t.
   */
  cbl_key_t::
  cbl_key_t( const cbl_occurs_key_t& that )
    : ascending(that.ascending)
  {
!   std::transform( that.field_list.fields,
!                   that.field_list.fields + that.field_list.nfield,
!                   std::back_inserter(fields),
!                   []( size_t isym ) {
!                     return cbl_field_of(symbol_at(isym));
!                   } );
  }
  
  void
*************** cbl_occurs_t::key_alloc( bool ascending
*** 4294,4300 ****
  }
  
  void
! cbl_occurs_t::field_add( cbl_field_list_t& field_list, cbl_field_t *field ) {
    cbl_field_list_t list = field_list;
    size_t ifield = field_index(field);
    auto nbytes = sizeof(list.fields[0]) * (list.nfield + 1);
--- 4294,4300 ----
  }
  
  void
! cbl_occurs_t::field_add( cbl_field_list_t& field_list, const cbl_field_t *field ) {
    cbl_field_list_t list = field_list;
    size_t ifield = field_index(field);
    auto nbytes = sizeof(list.fields[0]) * (list.nfield + 1);
*************** cbl_occurs_t::key_field_add( cbl_field_t
*** 4312,4325 ****
  }
  
  void
! cbl_occurs_t::index_add( cbl_field_t *field ) {
    field_add(indexes, field);
  }
  
  class is_field_at {
    cbl_field_t *field;
   public:
!  is_field_at( cbl_field_t *field ) : field(field) {}
    bool operator()( size_t isym ) const  {
      return field == field_at(isym);
    }
--- 4312,4325 ----
  }
  
  void
! cbl_occurs_t::index_add( const cbl_field_t *field ) {
    field_add(indexes, field);
  }
  
  class is_field_at {
    cbl_field_t *field;
   public:
!  explicit is_field_at( cbl_field_t *field ) : field(field) {}
    bool operator()( size_t isym ) const  {
      return field == field_at(isym);
    }
*************** cbl_occurs_t::subscript_ok( const cbl_fi
*** 4362,4367 ****
--- 4362,4387 ----
    return bounds.lower <= (size_t)sub && (size_t)sub <= bounds.upper;
  }
  
+ const cbl_field_t * 
+ symbol_unresolved_file_key( const cbl_file_t * file,
+                             const cbl_name_t key_field_name ) {
+   const symbol_elem_t *file_sym = symbol_elem_of(file);
+   size_t program = file_sym->program;
+   for( const symbol_elem_t *e = file_sym - 1; e->program == program; e-- ) {
+     if( e->type == SymFile ) break;
+     if( e->type == SymField ) {
+       auto f = cbl_field_of(e);
+       if( f->type == FldLiteralA ) break;
+       if( f->type == FldForward ) {
+         if( 0 == strcmp(key_field_name, f->name) ) {
+           return f;
+         }
+       }
+     }
+   }
+   return nullptr;
+ }
+ 
  cbl_file_key_t::
  cbl_file_key_t( cbl_name_t name,
                  const std::list<cbl_field_t *>& fields,
*************** symbol_forward_names( size_t ifield ) {
*** 4445,4452 ****
    for( auto sym = symbols_begin(ifield); sym && sym->type == SymField; ) {
      const cbl_field_t *field = cbl_field_of(sym);
      if( !(field->type == FldForward) ) {
!       dbgmsg("%s:%d: logic error, not FldForward: #%zu %s",
!             __func__, __LINE__, symbol_index(sym), field_str(field));
      }
      assert(field->type == FldForward);
  
--- 4465,4472 ----
    for( auto sym = symbols_begin(ifield); sym && sym->type == SymField; ) {
      const cbl_field_t *field = cbl_field_of(sym);
      if( !(field->type == FldForward) ) {
!       dbgmsg("%s:%d: logic error, not FldForward: #" HOST_SIZE_T_PRINT_UNSIGNED " %s",
!             __func__, __LINE__, (fmt_size_t)symbol_index(sym), field_str(field));
      }
      assert(field->type == FldForward);
  
*************** symbol_forward_to( size_t fwd ) {
*** 4469,4476 ****
    if( !elem.second ) {
      const auto& field = *cbl_field_of(symbols_begin(fwd));
      if( yydebug )
!       dbgmsg("%s:%d: no symbol found for #%zu %s %s", __func__, __LINE__,
!                fwd, cbl_field_type_str(field.type), field.name);
      return fwd;
    }
  
--- 4489,4497 ----
    if( !elem.second ) {
      const auto& field = *cbl_field_of(symbols_begin(fwd));
      if( yydebug )
!       dbgmsg("%s:%d: no symbol found for #" HOST_SIZE_T_PRINT_UNSIGNED " %s %s",
!                __func__, __LINE__,
!                (fmt_size_t)fwd, cbl_field_type_str(field.type), field.name);
      return fwd;
    }
  
*************** cbl_file_key_t::deforward( size_t ifile
*** 4486,4498 ****
    const auto file = cbl_file_of(symbol_at(ifile));
    std::transform( fields, fields + nfield, fields,
                    [ifile, file]( size_t fwd ) {
-                     static std::map<size_t, int> keys;
                      auto ifield = symbol_forward_to(fwd);
                      const auto field = cbl_field_of(symbol_at(ifield));
  
                      if( is_forward(field) && yydebug ) {
!                       dbgmsg("%s:%d: key %d: #%zu %s of %s is %s", "deforward", __LINE__,
!                             keys[ifile]++, ifield, field->name, file->name,
                              cbl_field_type_str(field->type) + 3);
                      }
  
--- 4507,4520 ----
    const auto file = cbl_file_of(symbol_at(ifile));
    std::transform( fields, fields + nfield, fields,
                    [ifile, file]( size_t fwd ) {
                      auto ifield = symbol_forward_to(fwd);
                      const auto field = cbl_field_of(symbol_at(ifield));
  
                      if( is_forward(field) && yydebug ) {
!                       static std::map<size_t, int> keys;
!                       dbgmsg("%s:%d: key %d: #" HOST_SIZE_T_PRINT_UNSIGNED " %s of %s is %s",
!                             "deforward", __LINE__,
!                             keys[ifile]++, (fmt_size_t)ifield, field->name, file->name,
                              cbl_field_type_str(field->type) + 3);
                      }
  
*************** cbl_file_key_t::deforward( size_t ifile
*** 4501,4507 ****
                      if( ifield == fwd ) {
                        ERROR_FIELD(field, "line %d: %s of %s "
                                 "is not defined",
!                                file->line, field->name, file->name);
                        return ifield;
                      }
  
--- 4523,4529 ----
                      if( ifield == fwd ) {
                        ERROR_FIELD(field, "line %d: %s of %s "
                                 "is not defined",
!                                field->line, field->name, file->name);
                        return ifield;
                      }
  
*************** cbl_file_key_t::deforward( size_t ifile
*** 4530,4538 ****
                      // looked-up field must have same file as parent
                      if( ! (parent != NULL &&
                             symbol_index(symbol_elem_of(parent)) == ifile) ) {
!                       ERROR_FIELD(field, "line %d: %s of %s "
!                                "is not defined in file description",
!                                file->line, field->name, file->name);
                      }
                      return ifield;
                    } );
--- 4552,4564 ----
                      // looked-up field must have same file as parent
                      if( ! (parent != NULL &&
                             symbol_index(symbol_elem_of(parent)) == ifile) ) {
!                       const cbl_field_t *undefined =
!                         symbol_unresolved_file_key(file, field->name);
!                       int lineno = undefined? undefined->line : file->line;
!                       ERROR_FIELD(undefined? undefined : field,
!                                   "line %d: %s of %s "
!                                   "is not defined in file description",
!                                   lineno, field->name, file->name);
                      }
                      return ifield;
                    } );
*************** cbl_file_key_t::str() const {
*** 4546,4552 ****
  
    *p++ = '[';
    for( auto f = fields; f < fields + nfield; f++) {
!     auto n = sprintf(p, "%s%zu", sep, *f);
      p += n;
      sep = ", ";
    }
--- 4572,4578 ----
  
    *p++ = '[';
    for( auto f = fields; f < fields + nfield; f++) {
!     auto n = sprintf(p, "%s" HOST_SIZE_T_PRINT_UNSIGNED, sep, (fmt_size_t)*f);
      p += n;
      sep = ", ";
    }
*************** cbl_file_t::deforward() {
*** 4576,4602 ****
  
  char *
  cbl_file_t::keys_str() const {
!   std::vector <char *> ks(nkey);
!   std::transform(keys, keys + nkey, ks.begin(),
!                  []( const cbl_file_key_t& key ) {
!                    return key.str();
!                  } );
!   size_t n = 4 * nkey + std::accumulate(ks.begin(), ks.end(), 0,
!                                         []( int n, const char *s ) {
!                                           return n +  strlen(s);
!                                         } );
!   char *output = static_cast<char*>( xcalloc(1, n) ), *p = output;
!   const char *sep = "";
! 
!   *p++ = '[';
!   for( auto k : ks ) {
!     p = stpcpy(p, sep);
!     p = stpcpy(p, k);
!     sep = ", ";
!     free(k);
    }
!   *p++ = ']';
!   return output;
  }
  
  /*
--- 4602,4613 ----
  
  char *
  cbl_file_t::keys_str() const {
!   std::string names = "[";
!   for( cbl_file_key_t *p = keys;  p < keys + nkey; p++ ) {
!     names += p->str();
!     names += p + 1 < keys + nkey ? "," : "]";
    }
!   return xasprintf("%s", names.c_str());
  }
  
  /*
*************** cbl_file_status_cmp( const void *K, cons
*** 4658,4668 ****
  static long
  file_status_status_of( file_status_t status ) {
    size_t n = COUNT_OF(file_status_fields);
!   file_status_field_t *fs, key { status };
! 
!   fs = (file_status_field_t*)lfind( &key, file_status_fields,
!                                     &n, sizeof(*fs), cbl_file_status_cmp );
  
    return fs? (long)fs->status : -1;
  }
  
--- 4669,4681 ----
  static long
  file_status_status_of( file_status_t status ) {
    size_t n = COUNT_OF(file_status_fields);
!   const file_status_field_t *fs, key { status };
  
+   fs = static_cast<file_status_field_t*>(lfind( &key,
+                                                 file_status_fields,
+                                                 &n,
+                                                 sizeof(*fs),
+                                                 cbl_file_status_cmp ));
    return fs? (long)fs->status : -1;
  }
  
*************** ast_file_status_between( file_status_t l
*** 4688,4694 ****
  }
  
  bool
! is_register_field(cbl_field_t *field)
    {
    // TRUE when the field is an executable-level global variable of the type we
    // are calling a "register", like RETURN-CODE or UPSI or the like:
--- 4701,4707 ----
  }
  
  bool
! is_register_field(const cbl_field_t *field)
    {
    // TRUE when the field is an executable-level global variable of the type we
    // are calling a "register", like RETURN-CODE or UPSI or the like:
diff -Nrcpad gcc-15-20250726/gcc/cobol/symbols.h gcc-15-20250809/gcc/cobol/symbols.h
*** gcc-15-20250726/gcc/cobol/symbols.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/symbols.h	Sat Aug  9 22:32:37 2025
***************
*** 32,42 ****
  #else
  #define _SYMBOLS_H_
  
! #include <assert.h>
! #include <limits.h>
! #include <stdint.h>
! #include <stdlib.h>
! #include <string.h>
  
  #include <algorithm>
  #include <list>
--- 32,42 ----
  #else
  #define _SYMBOLS_H_
  
! #include <cassert>
! #include <climits>
! #include <cstdint>
! #include <cstdlib>
! #include <cstring>
  
  #include <algorithm>
  #include <list>
*************** enum cbl_dialect_t {
*** 57,75 ****
    dialect_gnu_e = 0x04,
  };
  
! extern cbl_dialect_t cbl_dialect;
  void cobol_dialect_set( cbl_dialect_t dialect );
- cbl_dialect_t dialect_is();
  
  static inline bool dialect_gcc() {
!   return dialect_gcc_e  == cbl_dialect;
  }
- 
  static inline bool dialect_ibm() {
!   return dialect_ibm_e == (cbl_dialect & dialect_ibm_e);
  }
  static inline bool dialect_mf() {
!   return dialect_mf_e  == (cbl_dialect & dialect_mf_e );
  }
  
  enum cbl_gcobol_feature_t {
--- 57,78 ----
    dialect_gnu_e = 0x04,
  };
  
! // Dialects may be combined. 
! extern unsigned int cbl_dialects;
  void cobol_dialect_set( cbl_dialect_t dialect );
  
+ // GCC dialect means no other dialects
  static inline bool dialect_gcc() {
!   return dialect_gcc_e == cbl_dialects;
  }
  static inline bool dialect_ibm() {
!   return dialect_ibm_e == (cbl_dialects & dialect_ibm_e);
  }
  static inline bool dialect_mf() {
!   return dialect_mf_e  == (cbl_dialects & dialect_mf_e );
! }
! static inline bool dialect_gnu() {
!   return dialect_gnu_e  == (cbl_dialects & dialect_gnu_e );
  }
  
  enum cbl_gcobol_feature_t {
*************** is_numeric( cbl_field_type_t type ) {
*** 128,140 ****
    case FldIndex:
      return true;
    }
!   yywarn( "%s:%d: invalid symbol_type_t %d", __func__, __LINE__, type );
    return false;
  }
  
  struct os_locale_t {
    char assumed[16];
!   char *codeset;
  };
  
  const char * cbl_field_attr_str( cbl_field_attr_t attr );
--- 131,143 ----
    case FldIndex:
      return true;
    }
!   cbl_internal_error( "%s:%d: invalid %<symbol_type_t%> %d", __func__, __LINE__, type );
    return false;
  }
  
  struct os_locale_t {
    char assumed[16];
!   const char *codeset;
  };
  
  const char * cbl_field_attr_str( cbl_field_attr_t attr );
*************** is_working_storage(uint32_t attr) {
*** 146,151 ****
--- 149,155 ----
    return 0 == (attr & (linkage_e | local_e));
  }
  
+ int cbl_figconst_tok( const char *value );
  enum cbl_figconst_t cbl_figconst_of( const char *value );
  const char * cbl_figconst_str( cbl_figconst_t fig );
  
*************** class cbl_domain_elem_t {
*** 169,175 ****
    {
      if( value && ! is_numeric ) {
        auto s = consistent_encoding_check(loc, value);
!       if( s ) value = s;
      }
    }
    const char *name() const { return value; }
--- 173,179 ----
    {
      if( value && ! is_numeric ) {
        auto s = consistent_encoding_check(loc, value);
!       if( s ) this->value = s;
      }
    }
    const char *name() const { return value; }
*************** bool decimal_is_comma();
*** 215,221 ****
  
  enum symbol_type_t {
    SymFilename,
-   SymFunction,
    SymField,
    SymLabel,                     // section, paragraph, or label
    SymSpecial,
--- 219,224 ----
*************** struct cbl_field_data_t {
*** 261,267 ****
      explicit etc_t( tree v = build_zero_cst (float128_type_node)) : value(v) {}
    } etc;
  
!   cbl_field_data_t( uint32_t memsize=0,  uint32_t capacity=0 )
      : memsize(memsize)
      , capacity(capacity)
      , digits(0)
--- 264,281 ----
      explicit etc_t( tree v = build_zero_cst (float128_type_node)) : value(v) {}
    } etc;
  
!   cbl_field_data_t()
!     : memsize(0)
!     , capacity(0)
!     , digits(0)
!     , rdigits(0)
!     , initial(0)
!     , picture(0)
!     , etc_type(value_e)
!     , etc()
!   {}
! 
!   cbl_field_data_t( uint32_t memsize,  uint32_t capacity )
      : memsize(memsize)
      , capacity(capacity)
      , digits(0)
*************** struct cbl_field_data_t {
*** 324,329 ****
--- 338,347 ----
      etc_type = value_e;
      return etc.value = v;
    } 
+   tree& operator=(int i) {
+     etc_type = value_e;
+     return etc.value = build_int_cst_type(integer_type_node, i);
+   } 
  
    void set_real_from_capacity( REAL_VALUE_TYPE *r ) const {
      real_from_integer (r, VOIDmode, capacity, SIGNED);
*************** struct cbl_field_data_t {
*** 343,351 ****
  
    cbl_field_data_t& valify() {
      assert(initial);
!     const size_t len = strlen(initial);
!     std::string input(len + 1, '\0'); // add a NUL
!     std::copy(initial, initial + len, input.begin()); 
      if( decimal_is_comma() ) {
        std::replace(input.begin(), input.end(), ',', '.');
      }
--- 361,367 ----
  
    cbl_field_data_t& valify() {
      assert(initial);
!     std::string input(initial);
      if( decimal_is_comma() ) {
        std::replace(input.begin(), input.end(), ',', '.');
      }
*************** struct cbl_occurs_bounds_t {
*** 411,418 ****
    // variable size table.  lower can be zero.
    size_t lower, upper;
  
!   cbl_occurs_bounds_t(size_t lower=0, size_t upper=0)
      : lower(lower), upper(upper) {}
    size_t ntimes() const {
      return upper;
    }
--- 427,437 ----
    // variable size table.  lower can be zero.
    size_t lower, upper;
  
!   cbl_occurs_bounds_t()
!     : lower(0), upper(0) {}
!   explicit cbl_occurs_bounds_t(size_t lower, size_t upper=0)
      : lower(lower), upper(upper) {}
+ 
    size_t ntimes() const {
      return upper;
    }
*************** struct cbl_occurs_t {
*** 445,456 ****
  
    void key_alloc( bool ascending );
    void key_field_add( cbl_field_t *field );
!   void index_add( cbl_field_t *field );
    cbl_occurs_key_t * key_of( cbl_field_t *field );
    bool subscript_ok( const cbl_field_t *subscript ) const;
  
  protected:
!   void field_add( cbl_field_list_t& fields, cbl_field_t *field );
  };
  
  /*
--- 464,475 ----
  
    void key_alloc( bool ascending );
    void key_field_add( cbl_field_t *field );
!   void index_add( const cbl_field_t *field );
    cbl_occurs_key_t * key_of( cbl_field_t *field );
    bool subscript_ok( const cbl_field_t *subscript ) const;
  
  protected:
!   void field_add( cbl_field_list_t& fields, const cbl_field_t *field );
  };
  
  /*
*************** bool is_elementary( enum cbl_field_type_
*** 494,500 ****
  struct cbl_field_t {
    size_t offset;
    enum cbl_field_type_t type, usage;
!   size_t attr;
    static_assert(sizeof(attr) == sizeof(cbl_field_attr_t), "wrong attr size");
    size_t parent;    // symbols[] index of our parent
    size_t our_index; // symbols[] index of this field, set in symbol_add()
--- 513,519 ----
  struct cbl_field_t {
    size_t offset;
    enum cbl_field_type_t type, usage;
!   uint64_t attr;
    static_assert(sizeof(attr) == sizeof(cbl_field_attr_t), "wrong attr size");
    size_t parent;    // symbols[] index of our parent
    size_t our_index; // symbols[] index of this field, set in symbol_add()
*************** struct cbl_field_t {
*** 513,519 ****
    tree data_decl_node;  // Reference to the run-time data of the COBOL variable
    //                    // For linkage_e variables, data_decl_node is a pointer
    //                    // to the data, rather than the actual data
-   tree literal_decl_node; // This is a FLOAT128 version of data.value
  
    void set_linkage( cbl_ffi_crv_t crv, bool optional ) {
      linkage.optional = optional;
--- 532,537 ----
*************** struct cbl_field_t {
*** 597,604 ****
    bool has_attr( cbl_field_attr_t attr ) const {
      return cbl_field_attr_t(this->attr & attr) == attr;
    }
!   size_t set_attr( cbl_field_attr_t attr );
!   size_t clear_attr( cbl_field_attr_t attr );
    const char * attr_str( const std::vector<cbl_field_attr_t>& attrs ) const;
  
    bool is_justifiable() const {
--- 615,622 ----
    bool has_attr( cbl_field_attr_t attr ) const {
      return cbl_field_attr_t(this->attr & attr) == attr;
    }
!   uint64_t set_attr( cbl_field_attr_t attr );
!   uint64_t clear_attr( cbl_field_attr_t attr );
    const char * attr_str( const std::vector<cbl_field_attr_t>& attrs ) const;
  
    bool is_justifiable() const {
*************** struct cbl_field_t {
*** 632,637 ****
--- 650,657 ----
    }
  };
  
+ const cbl_field_t * cbl_figconst_field_of( const char *value );
+ 
  // Necessary forward referencea
  struct cbl_label_t;
  struct cbl_refer_t;
*************** struct cbl_refer_t;
*** 639,645 ****
  struct cbl_span_t {
    cbl_refer_t *from, *len;
  
!   cbl_span_t( cbl_refer_t *from, cbl_refer_t *len = NULL )
      : from(from), len(len) {};
    bool is_active() const { return !( from == NULL && len == NULL ); }
  
--- 659,665 ----
  struct cbl_span_t {
    cbl_refer_t *from, *len;
  
!   explicit cbl_span_t( cbl_refer_t *from, cbl_refer_t *len = NULL )
      : from(from), len(len) {};
    bool is_active() const { return !( from == NULL && len == NULL ); }
  
*************** struct cbl_refer_t {
*** 653,702 ****
    cbl_field_t *field;
    cbl_label_t *prog_func;
    bool all, addr_of;
!   uint32_t nsubscript;
!   cbl_refer_t *subscripts;  // indices
    cbl_span_t refmod;        // substring bounds
  
    cbl_refer_t()
!     : field(NULL), prog_func(NULL)
      , all(NULL), addr_of(false)
!     , nsubscript(0), subscripts(NULL), refmod(NULL)
    {}
    cbl_refer_t( cbl_field_t *field, bool all = false )
!     : field(field), prog_func(NULL)
      , all(all), addr_of(false)
!     , nsubscript(0), subscripts(NULL), refmod(NULL)
    {}
    cbl_refer_t( const YYLTYPE& loc, cbl_field_t *field, bool all = false )
      : loc(loc), field(field), prog_func(NULL)
      , all(all), addr_of(false)
!     , nsubscript(0), subscripts(NULL), refmod(NULL)
    {}
    cbl_refer_t( cbl_field_t *field, cbl_span_t& refmod )
!     : field(field), prog_func(NULL)
      , all(false), addr_of(false)
!     , nsubscript(0), subscripts(NULL), refmod(refmod)
    {}
    cbl_refer_t( cbl_field_t *field,
!                size_t nsubscript, cbl_refer_t *subscripts,
                 cbl_span_t refmod = cbl_span_t(NULL) )
!     : field(field), prog_func(NULL)
      , all(false), addr_of(false)
!     , nsubscript(nsubscript) , subscripts( new cbl_refer_t[nsubscript] )
      , refmod(refmod)
!   {
!     std::copy(subscripts, subscripts + nsubscript, this->subscripts);
!   }
    explicit cbl_refer_t( cbl_label_t *prog_func, bool addr_of = true )
!     : field(NULL), prog_func(prog_func)
      , all(false), addr_of(addr_of)
!     , nsubscript(0), subscripts(NULL), refmod(cbl_span_t(NULL))
    {}
  
    cbl_refer_t duplicate() const {
!     return cbl_refer_t( field, nsubscript, subscripts, refmod );
    }
  
    static cbl_refer_t *empty();
  
    cbl_refer_t * name( const char name[] ) {
--- 673,736 ----
    cbl_field_t *field;
    cbl_label_t *prog_func;
    bool all, addr_of;
!   std::vector<cbl_refer_t> subscripts;  // indices
    cbl_span_t refmod;        // substring bounds
  
    cbl_refer_t()
!     : loc(), field(NULL), prog_func(NULL)
      , all(NULL), addr_of(false)
!     , refmod(NULL)
    {}
+   // cppcheck-suppress noExplicitConstructor
    cbl_refer_t( cbl_field_t *field, bool all = false )
!     : loc(), field(field), prog_func(NULL)
      , all(all), addr_of(false)
!     , refmod(NULL)
    {}
    cbl_refer_t( const YYLTYPE& loc, cbl_field_t *field, bool all = false )
      : loc(loc), field(field), prog_func(NULL)
      , all(all), addr_of(false)
!     , refmod(NULL)
    {}
    cbl_refer_t( cbl_field_t *field, cbl_span_t& refmod )
!     : loc(), field(field), prog_func(NULL)
      , all(false), addr_of(false)
!     , refmod(refmod)
    {}
    cbl_refer_t( cbl_field_t *field,
!                const std::vector<cbl_refer_t>& subscripts,
                 cbl_span_t refmod = cbl_span_t(NULL) )
!     : loc(), field(field), prog_func(NULL)
      , all(false), addr_of(false)
!     , subscripts(subscripts)
      , refmod(refmod)
!   {}
    explicit cbl_refer_t( cbl_label_t *prog_func, bool addr_of = true )
!     : loc(), field(NULL), prog_func(prog_func)
      , all(false), addr_of(addr_of)
!     , refmod(cbl_span_t(NULL))
    {}
  
+   cbl_refer_t( const cbl_refer_t& that ) = default;
+ 
+   cbl_refer_t& operator=( const cbl_refer_t& that ) {
+     loc = that.loc;
+     field = that.field;
+     prog_func = that.prog_func;
+     all = that.all;
+     addr_of = that.addr_of;
+     subscripts = that.subscripts;
+     refmod = that.refmod;
+     return *this;
+   }
+     
+   
    cbl_refer_t duplicate() const {
!     return cbl_refer_t( field, subscripts, refmod );
    }
  
+   uint32_t nsubscript() const { return subscripts.size(); }
+ 
    static cbl_refer_t *empty();
  
    cbl_refer_t * name( const char name[] ) {
*************** struct cbl_refer_t {
*** 707,714 ****
    }
  
    bool is_pointer() const { return addr_of || field->type == FldPointer; }
!   bool is_reference() const { return nsubscript > 0 || refmod.is_active(); }
!   bool is_table_reference() const  { return nsubscript > 0; }
    bool is_refmod_reference() const  { return refmod.is_active(); }
  
    size_t subscripts_set( const std::list<cbl_refer_t>& subs );
--- 741,748 ----
    }
  
    bool is_pointer() const { return addr_of || field->type == FldPointer; }
!   bool is_reference() const { return nsubscript() > 0 || refmod.is_active(); }
!   bool is_table_reference() const  { return nsubscript() > 0; }
    bool is_refmod_reference() const  { return refmod.is_active(); }
  
    size_t subscripts_set( const std::list<cbl_refer_t>& subs );
*************** struct field_key_t {
*** 773,779 ****
    }
  };
  
! bool valid_move( const struct cbl_field_t *tgt, const struct cbl_field_t *src );
  
  #define record_area_name_stem "_ra_"
  
--- 807,813 ----
    }
  };
  
! bool valid_move( const cbl_field_t *tgt, const cbl_field_t *src );
  
  #define record_area_name_stem "_ra_"
  
*************** is_record_area( const cbl_field_t *field
*** 783,790 ****
    return 0 == memcmp(field->name, stem, sizeof(stem)-1);
  }
  
! bool
! is_register_field(cbl_field_t *field);
  
  static inline bool
  is_constant( const cbl_field_t *field ) {
--- 817,823 ----
    return 0 == memcmp(field->name, stem, sizeof(stem)-1);
  }
  
! bool is_register_field( const cbl_field_t *field );
  
  static inline bool
  is_constant( const cbl_field_t *field ) {
*************** symbol_field_type_update( cbl_field_t *f
*** 802,818 ****
                            cbl_field_type_t type, bool is_usage );
  
  struct sort_key_t;
  
  struct cbl_key_t {
    bool ascending;
!   size_t nfield;
!   cbl_field_t **fields;
  
!   cbl_key_t() : ascending(false), nfield(0), fields(0) {}
!   cbl_key_t( size_t nfield, cbl_field_t **fields, bool ascending = true )
!     : ascending(ascending), nfield(nfield), fields(fields) {}
!   cbl_key_t( const sort_key_t& src );
    explicit cbl_key_t( const cbl_occurs_key_t& that );
  };
  
  enum cbl_label_type_t {
--- 835,854 ----
                            cbl_field_type_t type, bool is_usage );
  
  struct sort_key_t;
+ struct sort_key_t;
  
  struct cbl_key_t {
    bool ascending;
!   std::vector<const cbl_field_t*> fields;
  
!   cbl_key_t() : ascending(true) {}
!   explicit cbl_key_t( sort_key_t src );
    explicit cbl_key_t( const cbl_occurs_key_t& that );
+   cbl_key_t( size_t nfield, cbl_field_t **fields, bool ascending = true )
+     : ascending(ascending)
+     , fields(fields, fields + nfield)
+   {}
+   cbl_key_t& operator=( const sort_key_t& that );
  };
  
  enum cbl_label_type_t {
*************** struct cbl_substitute_t {
*** 909,916 ****
    subst_fl_t first_last;
    cbl_refer_t orig, replacement;
  
!   cbl_substitute_t( bool anycase = false, char first_last = 0,
!                     cbl_refer_t *orig = NULL, cbl_refer_t *replacement = NULL )
      : anycase(anycase)
      , first_last(subst_fl_t(first_last))
      , orig( orig? *orig : cbl_refer_t() )
--- 945,956 ----
    subst_fl_t first_last;
    cbl_refer_t orig, replacement;
  
!   cbl_substitute_t()
!     : anycase(false)
!     , first_last(subst_all_e)
!   {}
!   cbl_substitute_t( bool anycase, char first_last,
!                     cbl_refer_t *orig, cbl_refer_t *replacement )
      : anycase(anycase)
      , first_last(subst_fl_t(first_last))
      , orig( orig? *orig : cbl_refer_t() )
*************** struct cbl_num_result_t {
*** 943,949 ****
    enum cbl_round_t rounded;
    struct cbl_refer_t refer;
  
!   static cbl_refer_t refer_of( const cbl_num_result_t& res ) { return res.refer; }
  };
  
  void parser_symbol_add( struct cbl_field_t *new_var );
--- 983,992 ----
    enum cbl_round_t rounded;
    struct cbl_refer_t refer;
  
!   static const cbl_refer_t&
!   refer_of( const cbl_num_result_t& res ) {
!     return res.refer;
!   }
  };
  
  void parser_symbol_add( struct cbl_field_t *new_var );
*************** struct cbl_ffi_arg_t {
*** 955,962 ****
    cbl_ffi_arg_attr_t attr;
    cbl_refer_t refer; // refer::field == NULL is OMITTED
  
!   cbl_ffi_arg_t( cbl_refer_t* refer = NULL,
!                  cbl_ffi_arg_attr_t attr = none_of_e );
    cbl_ffi_arg_t( cbl_ffi_crv_t crv,
                   cbl_refer_t* refer,
                   cbl_ffi_arg_attr_t attr = none_of_e );
--- 998,1006 ----
    cbl_ffi_arg_attr_t attr;
    cbl_refer_t refer; // refer::field == NULL is OMITTED
  
!   cbl_ffi_arg_t();
!   cbl_ffi_arg_t( cbl_refer_t* refer,
!                  cbl_ffi_arg_attr_t attr );
    cbl_ffi_arg_t( cbl_ffi_crv_t crv,
                   cbl_refer_t* refer,
                   cbl_ffi_arg_attr_t attr = none_of_e );
*************** class temporaries_t {
*** 1169,1176 ****
    struct literal_an {
      bool is_quoted;
      std::string value;
!     literal_an( const char value[] = "???", bool is_quoted = false )
        : is_quoted(is_quoted), value(value) {}
      literal_an& operator=( const literal_an& that ) {
        is_quoted = that.is_quoted;
        value = that.value;
--- 1213,1223 ----
    struct literal_an {
      bool is_quoted;
      std::string value;
!     literal_an() : is_quoted(false), value("???") {}
!     literal_an( const char value[], bool is_quoted )
        : is_quoted(is_quoted), value(value) {}
+     literal_an( const literal_an& that )
+       : is_quoted(that.is_quoted), value(that.value) {}
      literal_an& operator=( const literal_an& that ) {
        is_quoted = that.is_quoted;
        value = that.value;
*************** class temporaries_t {
*** 1192,1198 ****
  public:
    cbl_field_t * literal( const char value[], uint32_t len, cbl_field_attr_t attr  = none_e );
    cbl_field_t * reuse( cbl_field_type_t type );
!   cbl_field_t * acquire( cbl_field_type_t type );
    cbl_field_t *  add( cbl_field_t *field );
    bool keep( cbl_field_t *field ) { return 1 == used[field->type].erase(field); }
    void dump() const;
--- 1239,1245 ----
  public:
    cbl_field_t * literal( const char value[], uint32_t len, cbl_field_attr_t attr  = none_e );
    cbl_field_t * reuse( cbl_field_type_t type );
!   cbl_field_t * acquire( cbl_field_type_t type, const cbl_name_t name = nullptr );
    cbl_field_t *  add( cbl_field_t *field );
    bool keep( cbl_field_t *field ) { return 1 == used[field->type].erase(field); }
    void dump() const;
*************** struct function_descr_t {
*** 1273,1279 ****
    static function_descr_t init( const char name[] ) {
      function_descr_t descr = {};
      if( -1 == snprintf( descr.name, sizeof(descr.name), "%s", name ) ) {
!       dbgmsg("name truncated to '%s' (max %zu characters)", name);
      }
      return descr;  // truncation also reported elsewhere ?
    }
--- 1320,1327 ----
    static function_descr_t init( const char name[] ) {
      function_descr_t descr = {};
      if( -1 == snprintf( descr.name, sizeof(descr.name), "%s", name ) ) {
!       dbgmsg("name truncated to '%s' (max " HOST_SIZE_T_PRINT_UNSIGNED
!              " characters)", name, (fmt_size_t)sizeof(descr.name));
      }
      return descr;  // truncation also reported elsewhere ?
    }
*************** struct cbl_alphabet_t {
*** 1416,1425 ****
    add_sequence( const YYLTYPE& loc, const unsigned char seq[] ) {
      if( low_index == 0 ) low_index = seq[0];
  
!     unsigned char high_value = last_index > 0? alphabet[last_index] + 1 : 0;
  
      for( const unsigned char *p = seq; !end_of_string(p); p++  ) {
!       assign(loc, *p, high_value++);
      }
    }
  
--- 1464,1473 ----
    add_sequence( const YYLTYPE& loc, const unsigned char seq[] ) {
      if( low_index == 0 ) low_index = seq[0];
  
!     unsigned char last = last_index > 0? alphabet[last_index] + 1 : 0;
  
      for( const unsigned char *p = seq; !end_of_string(p); p++  ) {
!       assign(loc, *p, last++);
      }
    }
  
*************** struct cbl_alphabet_t {
*** 1427,1436 ****
    add_interval( const YYLTYPE& loc, unsigned char low, unsigned char high ) {
      if( low_index == 0 ) low_index = low;
  
!     unsigned char high_value = alphabet[last_index];
  
      for( unsigned char ch = low; ch < high; ch++  ) {
!       assign(loc, ch, high_value++);
      }
    }
  
--- 1475,1484 ----
    add_interval( const YYLTYPE& loc, unsigned char low, unsigned char high ) {
      if( low_index == 0 ) low_index = low;
  
!     unsigned char last = alphabet[last_index];
  
      for( unsigned char ch = low; ch < high; ch++  ) {
!       assign(loc, ch, last++);
      }
    }
  
*************** struct cbl_alphabet_t {
*** 1449,1455 ****
    }
  
    void dump() const {
!     yywarn("'%s': %s, '%c' to '%c' (low 0x%02x, high 0x%02x)",
            name, encoding_str(encoding),
            low_index, last_index, low_index, high_index);
      if( encoding == custom_encoding_e ) {
--- 1497,1503 ----
    }
  
    void dump() const {
!     yywarn("%qs: %s, %<%c%> to %<%c%> (low 0x%x, high 0x%x)",
            name, encoding_str(encoding),
            low_index, last_index, low_index, high_index);
      if( encoding == custom_encoding_e ) {
*************** struct cbl_alphabet_t {
*** 1472,1485 ****
    }
  };
  
- // a function pointer
- typedef void ( *cbl_function_ptr ) ( void );
- 
- struct cbl_function_t {
-   char name[NAME_MAX];
-   cbl_function_ptr func;
- };
- 
  static inline const char *
  file_org_str( enum cbl_file_org_t org ) {
    switch ( org ) {
--- 1520,1525 ----
*************** struct cbl_file_key_t {
*** 1518,1526 ****
    cbl_name_t name;
    size_t leftmost; // START or READ named leftmost field in key
    size_t nfield;
!   size_t *fields;
  
!   cbl_file_key_t( size_t field = 0, bool unique = true )
      : unique(unique)
      , leftmost(0)
      , nfield(1)
--- 1558,1576 ----
    cbl_name_t name;
    size_t leftmost; // START or READ named leftmost field in key
    size_t nfield;
!   size_t *fields; // cppcheck-suppress unsafeClassCanLeak
  
!   cbl_file_key_t()
!     : unique(true)
!     , leftmost(0)
!     , nfield(0)
!     , fields(nullptr)
!   {
!     memset(name, '\0', sizeof(name));
!   }
! 
!   // Construct a key of length 1 having a single field. 
!   explicit cbl_file_key_t( size_t field, bool unique = true )
      : unique(unique)
      , leftmost(0)
      , nfield(1)
*************** struct cbl_file_key_t {
*** 1529,1548 ****
      fields[0] = field;
      memset(name, '\0', sizeof(name));
    }
-   cbl_file_key_t( const cbl_file_key_t *that )
-     : unique(that->unique)
-     , leftmost(that->leftmost)
-     , nfield(that->nfield)
-   {
-     memcpy(name, that->name, sizeof(name));
-     fields = new size_t[nfield];
-     std::copy( that->fields, that->fields + that->nfield, fields );
-   }
  
    cbl_file_key_t( cbl_name_t name,
                    const std::list<cbl_field_t *>& fields,
                    bool is_unique );
  
    uint32_t size();
    void deforward( size_t ifile );
    char * str() const;
--- 1579,1612 ----
      fields[0] = field;
      memset(name, '\0', sizeof(name));
    }
  
    cbl_file_key_t( cbl_name_t name,
                    const std::list<cbl_field_t *>& fields,
                    bool is_unique );
  
+   // The copy constructor and assignment operator exist to quell reports from
+   // cppcheck. When these objects are copied, the copy still points to the
+   // original data.
+   cbl_file_key_t( const cbl_file_key_t& that )
+     : unique(that.unique)
+     , leftmost(that.leftmost)
+     , nfield(that.nfield)
+       // cppcheck-suppress copyCtorPointerCopying
+     , fields(that.fields)
+   {
+     strcpy(name, that.name);
+   }
+   ~cbl_file_key_t() {}
+   cbl_file_key_t& operator=( const cbl_file_key_t& that ) {
+     unique = that.unique;
+     leftmost = that.leftmost;
+     nfield = that.nfield;
+     // cppcheck-suppress copyCtorPointerCopying
+     fields = that.fields;
+     strcpy(name, that.name);
+     return *this;
+   }
+ 
    uint32_t size();
    void deforward( size_t ifile );
    char * str() const;
*************** struct cbl_file_key_t {
*** 1556,1567 ****
  struct cbl_file_lock_t {
    bool multiple;
    enum lock_mode_t { unlocked_e, manual_e, record_e, automatic_e } mode;
    bool mode_set( int token );
    bool locked() const { return mode != unlocked_e; }
  };
  
  struct cbl_file_t {
-   static cbl_file_key_t no_key;
    enum cbl_file_org_t org;
    enum file_entry_type_t entry_type;
    uint32_t attr;
--- 1620,1631 ----
  struct cbl_file_lock_t {
    bool multiple;
    enum lock_mode_t { unlocked_e, manual_e, record_e, automatic_e } mode;
+   cbl_file_lock_t() : multiple(false), mode(unlocked_e) {}
    bool mode_set( int token );
    bool locked() const { return mode != unlocked_e; }
  };
  
  struct cbl_file_t {
    enum cbl_file_org_t org;
    enum file_entry_type_t entry_type;
    uint32_t attr;
*************** struct cbl_file_t {
*** 1588,1602 ****
    tree var_decl_node;           // GENERIC tag for the run-time FIELD structure
  
    cbl_file_t()
!     : org(file_disorganized_e),
!       access(file_access_seq_e)
    {
!     keys = &no_key;
    }
    
    bool varies() const { return varying_size.min != varying_size.max; }
    bool validate() const;
    void deforward();
    char * keys_str() const;
    int  key_one( cbl_field_t *field ) const {
      auto ekey = keys + nkey, p = ekey;
--- 1652,1683 ----
    tree var_decl_node;           // GENERIC tag for the run-time FIELD structure
  
    cbl_file_t()
!     : org(file_disorganized_e)
!     , entry_type(fd_e)
!     , attr(0), reserve(0), same_record_as(0)
!     , padding('\0')
!     , optional(false)
!     , varying_size{ false, 0, 0 }
!     , access(file_access_seq_e)
!     , filename(0)
!     , default_record(0)
!     , nkey(0)
!     , keys(nullptr)
!     , password(0), user_status(0), vsam_status(0), record_length(0)
!     , line(0)
!     , addresses(nullptr)
!     , var_decl_node(nullptr)
    {
!     memset(name, '\0', sizeof(name));
    }
    
    bool varies() const { return varying_size.min != varying_size.max; }
    bool validate() const;
    void deforward();
+   cbl_file_key_t * keys_update( cbl_file_key_t * keys ) {
+     if( this->keys ) delete[] this->keys;
+     return this->keys = keys;
+   }
    char * keys_str() const;
    int  key_one( cbl_field_t *field ) const {
      auto ekey = keys + nkey, p = ekey;
*************** struct symbol_elem_t {
*** 1635,1654 ****
    size_t program;
    union symbol_elem_u {
      char *filename;
-     cbl_function_t     function;
      cbl_field_t        field;
      cbl_label_t        label;
      cbl_special_name_t special;
      cbl_alphabet_t     alphabet;
      cbl_file_t         file;
      cbl_section_t      section;
!     symbol_elem_u() {
!       static const cbl_field_t empty = {};
!       field = empty;
!     }
    } elem;
    
!   symbol_elem_t( symbol_type_t type = SymField, size_t program = 0 )
      : type(type), program(program)
    {}
  
--- 1716,1732 ----
    size_t program;
    union symbol_elem_u {
      char *filename;
      cbl_field_t        field;
      cbl_label_t        label;
      cbl_special_name_t special;
      cbl_alphabet_t     alphabet;
      cbl_file_t         file;
      cbl_section_t      section;
!     symbol_elem_u() : field() {}
    } elem;
    
!   symbol_elem_t() : type(SymField), program(0) {}
!   explicit symbol_elem_t( symbol_type_t type, size_t program = 0 )
      : type(type), program(program)
    {}
  
*************** struct symbol_elem_t {
*** 1689,1697 ****
      case SymFilename:
        elem.filename = that.elem.filename;
        break;
-     case SymFunction:
-       elem.function = that.elem.function;
-       break;
      case SymField:
        elem.field = that.elem.field;
        break;
--- 1767,1772 ----
*************** static inline symbol_elem_t *
*** 1721,1726 ****
--- 1796,1802 ----
  symbol_elem_of( cbl_label_t *label ) {
    size_t n = offsetof(struct symbol_elem_t, elem.label);
    return
+     // cppcheck-suppress cstyleCast
      reinterpret_cast<struct symbol_elem_t *>((char*)label - n);
  }
  
*************** static inline const symbol_elem_t *
*** 1728,1733 ****
--- 1804,1810 ----
  symbol_elem_of( const cbl_label_t *label ) {
    size_t n = offsetof(symbol_elem_t, elem.label);
    return
+     // cppcheck-suppress cstyleCast
      reinterpret_cast<const symbol_elem_t *>((const char*)label - n);
  }
  
*************** static inline symbol_elem_t *
*** 1735,1740 ****
--- 1812,1818 ----
  symbol_elem_of( cbl_special_name_t *special ) {
    size_t n = offsetof(symbol_elem_t, elem.special);
    return
+     // cppcheck-suppress cstyleCast
      reinterpret_cast<symbol_elem_t *>((char*)special - n);
  }
  
*************** static inline symbol_elem_t *
*** 1742,1747 ****
--- 1820,1826 ----
  symbol_elem_of( cbl_alphabet_t *alphabet ) {
    size_t n = offsetof(symbol_elem_t, elem.alphabet);
    return
+     // cppcheck-suppress cstyleCast
      reinterpret_cast<symbol_elem_t *>((char*)alphabet - n);
  }
  
*************** static inline symbol_elem_t *
*** 1749,1760 ****
--- 1828,1841 ----
  symbol_elem_of( cbl_file_t *file ) {
    size_t n = offsetof(struct symbol_elem_t, elem.file);
    return
+     // cppcheck-suppress cstyleCast
      reinterpret_cast<struct symbol_elem_t *>((char*)file - n);
  }
  static inline const symbol_elem_t *
  symbol_elem_of( const cbl_file_t *file ) {
    size_t n = offsetof(symbol_elem_t, elem.file);
    return
+     // cppcheck-suppress cstyleCast
      reinterpret_cast<const symbol_elem_t *>((const char*)file - n);
  }
  
*************** static inline symbol_elem_t *
*** 1762,1779 ****
  symbol_elem_of( cbl_field_t *field ) {
    size_t n = offsetof(struct symbol_elem_t, elem.field);
    return
      reinterpret_cast<struct symbol_elem_t *>((char*)field - n);
  }
  static inline const symbol_elem_t *
  symbol_elem_of( const cbl_field_t *field ) {
    size_t n = offsetof(symbol_elem_t, elem.field);
    return
      reinterpret_cast<const symbol_elem_t *>((const char*)field - n);
  }
  
  symbol_elem_t * symbols_begin( size_t first = 0 );
  symbol_elem_t * symbols_end(void);
! cbl_field_t   * symbol_redefines( const struct cbl_field_t *field );
  
  void build_symbol_map();
  bool update_symbol_map( symbol_elem_t *e );
--- 1843,1862 ----
  symbol_elem_of( cbl_field_t *field ) {
    size_t n = offsetof(struct symbol_elem_t, elem.field);
    return
+     // cppcheck-suppress cstyleCast
      reinterpret_cast<struct symbol_elem_t *>((char*)field - n);
  }
  static inline const symbol_elem_t *
  symbol_elem_of( const cbl_field_t *field ) {
    size_t n = offsetof(symbol_elem_t, elem.field);
    return
+     // cppcheck-suppress cstyleCast
      reinterpret_cast<const symbol_elem_t *>((const char*)field - n);
  }
  
  symbol_elem_t * symbols_begin( size_t first = 0 );
  symbol_elem_t * symbols_end(void);
! cbl_field_t   * symbol_redefines( const cbl_field_t *field );
  
  void build_symbol_map();
  bool update_symbol_map( symbol_elem_t *e );
*************** symbol_find( size_t program, std::list<c
*** 1789,1795 ****
  symbol_elem_t * symbol_find_of( size_t program,
                                  std::list<const char *> names, size_t group );
  
! struct cbl_field_t *symbol_find_odo( cbl_field_t * field );
  size_t dimensions( const cbl_field_t *field );
  
  const symbol_elem_t * symbol_field_current_record();
--- 1872,1878 ----
  symbol_elem_t * symbol_find_of( size_t program,
                                  std::list<const char *> names, size_t group );
  
! struct cbl_field_t *symbol_find_odo( const cbl_field_t * field );
  size_t dimensions( const cbl_field_t *field );
  
  const symbol_elem_t * symbol_field_current_record();
*************** const cbl_label_t * symbol_program_local
*** 1811,1873 ****
  
  bool redefine_field( cbl_field_t *field );
  
! // Functions to correctly extract the underlying type.
! static inline struct cbl_function_t *
! cbl_function_of( struct symbol_elem_t *e ) {
!   assert(e->type == SymFunction);
!   return &e->elem.function;
! }
  
  static inline struct cbl_section_t *
  cbl_section_of( struct symbol_elem_t *e ) {
!   assert(e->type == SymDataSection);
    return &e->elem.section;
  }
  
  static inline struct cbl_field_t *
  cbl_field_of( struct symbol_elem_t *e ) {
!   assert(e->type == SymField);
    return &e->elem.field;
  }
! static inline const struct cbl_field_t *
! cbl_field_of( const struct symbol_elem_t *e ) {
!   assert(e->type == SymField);
    return &e->elem.field;
  }
  
  static inline struct cbl_label_t *
  cbl_label_of( struct symbol_elem_t *e ) {
!   assert(e->type == SymLabel);
    return &e->elem.label;
  }
  
! static inline const struct cbl_label_t *
! cbl_label_of( const struct symbol_elem_t *e ) {
!   assert(e->type == SymLabel);
    return &e->elem.label;
  }
  
  static inline struct cbl_special_name_t *
  cbl_special_name_of( struct symbol_elem_t *e ) {
!   assert(e->type == SymSpecial);
    return &e->elem.special;
  }
  
  static inline struct cbl_alphabet_t *
  cbl_alphabet_of( struct symbol_elem_t *e ) {
!   assert(e->type == SymAlphabet);
    return &e->elem.alphabet;
  }
  
  static inline struct cbl_file_t *
  cbl_file_of( struct symbol_elem_t *e ) {
!   assert(e->type == SymFile);
    return &e->elem.file;
  }
  
! static inline const struct cbl_file_t *
! cbl_file_of( const struct symbol_elem_t *e ) {
!   assert(e->type == SymFile);
    return &e->elem.file;
  }
  
--- 1894,1953 ----
  
  bool redefine_field( cbl_field_t *field );
  
! const cbl_field_t * 
! symbol_unresolved_file_key( const cbl_file_t * file,
!                             const cbl_name_t key_field_name );
  
  static inline struct cbl_section_t *
  cbl_section_of( struct symbol_elem_t *e ) {
!   assert(e && e->type == SymDataSection);
    return &e->elem.section;
  }
  
  static inline struct cbl_field_t *
  cbl_field_of( struct symbol_elem_t *e ) {
!   assert(e && e->type == SymField);
    return &e->elem.field;
  }
! static inline const cbl_field_t *
! cbl_field_of( const symbol_elem_t *e ) {
!   assert(e && e->type == SymField);
    return &e->elem.field;
  }
  
  static inline struct cbl_label_t *
  cbl_label_of( struct symbol_elem_t *e ) {
!   assert(e && e->type == SymLabel);
    return &e->elem.label;
  }
  
! static inline const cbl_label_t *
! cbl_label_of( const symbol_elem_t *e ) {
!   assert(e && e->type == SymLabel);
    return &e->elem.label;
  }
  
  static inline struct cbl_special_name_t *
  cbl_special_name_of( struct symbol_elem_t *e ) {
!   assert(e && e->type == SymSpecial);
    return &e->elem.special;
  }
  
  static inline struct cbl_alphabet_t *
  cbl_alphabet_of( struct symbol_elem_t *e ) {
!   assert(e && e->type == SymAlphabet);
    return &e->elem.alphabet;
  }
  
  static inline struct cbl_file_t *
  cbl_file_of( struct symbol_elem_t *e ) {
!   assert(e && e->type == SymFile);
    return &e->elem.file;
  }
  
! static inline const cbl_file_t *
! cbl_file_of( const symbol_elem_t *e ) {
!   assert(e && e->type == SymFile);
    return &e->elem.file;
  }
  
*************** is_procedure( const symbol_elem_t& e ) {
*** 1886,1928 ****
  }
  
  static inline bool
! is_figconst(const struct cbl_field_t *field ) {
!     return ((field->attr & FIGCONST_MASK) != 0 );
  }
  
  static inline bool
! is_figconst_low( const struct cbl_field_t *field ) {
!   return ((field->attr & FIGCONST_MASK) == low_value_e );
  }
  
  static inline bool
! is_figconst_zero( const struct cbl_field_t *field ) {
!   return ((field->attr & FIGCONST_MASK) == zero_value_e );
  }
  
  static inline bool
! is_figconst_space( const struct cbl_field_t *field ) {
!   return ((field->attr & FIGCONST_MASK) == space_value_e );
  }
  
  static inline bool
! is_figconst_quote( const struct cbl_field_t *field ) {
!   return ((field->attr & FIGCONST_MASK) == quote_value_e );
  }
  
  static inline bool
! is_figconst_high( const struct cbl_field_t *field ) {
!   return ((field->attr & FIGCONST_MASK) == high_value_e );
  }
  
  static inline bool
! is_space_value( const struct cbl_field_t *field ) {
!   return( (strcmp(field->name, "SPACE") == 0)
!             || (strcmp(field->name, "SPACES") == 0) );
  }
  
  static inline bool
! is_quoted( const struct cbl_field_t *field ) {
    return field->has_attr(quoted_e);
  }
  
--- 1966,2008 ----
  }
  
  static inline bool
! is_figconst(const cbl_field_t *field ) {
!     return (field->attr & FIGCONST_MASK) != 0;
  }
  
  static inline bool
! is_figconst_low( const cbl_field_t *field ) {
!   return (field->attr & FIGCONST_MASK) == low_value_e;
  }
  
  static inline bool
! is_figconst_zero( const cbl_field_t *field ) {
!   return (field->attr & FIGCONST_MASK) == zero_value_e;
  }
  
  static inline bool
! is_figconst_space( const cbl_field_t *field ) {
!   return (field->attr & FIGCONST_MASK) == space_value_e;
  }
  
  static inline bool
! is_figconst_quote( const cbl_field_t *field ) {
!   return (field->attr & FIGCONST_MASK) == quote_value_e;
  }
  
  static inline bool
! is_figconst_high( const cbl_field_t *field ) {
!   return (field->attr & FIGCONST_MASK) == high_value_e;
  }
  
  static inline bool
! is_space_value( const cbl_field_t *field ) {
!   return (strcmp(field->name, "SPACE") == 0)
!       || (strcmp(field->name, "SPACES") == 0);
  }
  
  static inline bool
! is_quoted( const cbl_field_t *field ) {
    return field->has_attr(quoted_e);
  }
  
*************** struct cbl_until_addresses_t {
*** 1942,1948 ****
      struct cbl_label_addresses_t test;  // The test at the bottom of the body
      struct cbl_label_addresses_t testA; // Starting point of a TEST_AFTER loop
      struct cbl_label_addresses_t setup; // The actual entry point
!     size_t number_of_conditionals;
      struct cbl_label_addresses_t condover[MAXIMUM_UNTILS];  // Jumping over the conditional
      struct cbl_label_addresses_t condinto[MAXIMUM_UNTILS];  // Jumping into the conditional
      struct cbl_label_addresses_t condback[MAXIMUM_UNTILS];  // Jumping back from the conditional
--- 2022,2028 ----
      struct cbl_label_addresses_t test;  // The test at the bottom of the body
      struct cbl_label_addresses_t testA; // Starting point of a TEST_AFTER loop
      struct cbl_label_addresses_t setup; // The actual entry point
!     unsigned int number_of_conditionals;
      struct cbl_label_addresses_t condover[MAXIMUM_UNTILS];  // Jumping over the conditional
      struct cbl_label_addresses_t condinto[MAXIMUM_UNTILS];  // Jumping into the conditional
      struct cbl_label_addresses_t condback[MAXIMUM_UNTILS];  // Jumping back from the conditional
*************** struct cbl_until_addresses_t {
*** 1950,1956 ****
  };
  
  size_t symbol_index(); // nth after first program symbol
! size_t symbol_index( const struct symbol_elem_t *e );
  struct symbol_elem_t * symbol_at( size_t index );
  
  struct cbl_options_t {
--- 2030,2036 ----
  };
  
  size_t symbol_index(); // nth after first program symbol
! size_t symbol_index( const symbol_elem_t *e );
  struct symbol_elem_t * symbol_at( size_t index );
  
  struct cbl_options_t {
*************** symbol_field_forward_add( size_t program
*** 2002,2018 ****
  struct cbl_field_t * symbol_field_forward( size_t index );
  
  struct cbl_prog_hier_t {
-   size_t nlabel;
    struct program_label_t {
      size_t ordinal;
      cbl_label_t label;
!     program_label_t() : ordinal(0) {}
!     program_label_t( const symbol_elem_t& e ) {
        ordinal = symbol_index(&e);
        label = e.elem.label;
      }
!   } *labels;
! 
    cbl_prog_hier_t();
  };
  
--- 2082,2101 ----
  struct cbl_field_t * symbol_field_forward( size_t index );
  
  struct cbl_prog_hier_t {
    struct program_label_t {
      size_t ordinal;
      cbl_label_t label;
!     program_label_t() : ordinal(0), label() {}
!     // because std::copy_if:
!     // cppcheck-suppress noExplicitConstructor 
!     program_label_t( const symbol_elem_t& e ) { 
!       assert(is_program(e));
        ordinal = symbol_index(&e);
        label = e.elem.label;
      }
!   };
!   std::vector<program_label_t> labels;
!   
    cbl_prog_hier_t();
  };
  
*************** struct cbl_prog_hier_t {
*** 2024,2036 ****
  struct cbl_perform_tgt_t {
    struct cbl_until_addresses_t addresses;
  
!   cbl_perform_tgt_t() : ifrom(0), ito(0) {}
!   cbl_perform_tgt_t( cbl_label_t * from, cbl_label_t *to = NULL )
!     : ifrom( from? symbol_index(symbol_elem_of(from)) : 0 )
      , ito( to? symbol_index(symbol_elem_of(to)) : 0 )
!   {
!     addresses = {};
!   }
  
    cbl_label_t * from( cbl_label_t * label ) {
      ifrom = symbol_index(symbol_elem_of(label));
--- 2107,2117 ----
  struct cbl_perform_tgt_t {
    struct cbl_until_addresses_t addresses;
  
!   cbl_perform_tgt_t() : addresses(), ifrom(0), ito(0) {}
!   explicit cbl_perform_tgt_t( cbl_label_t * from, cbl_label_t *to = NULL )
!     : addresses(), ifrom( from? symbol_index(symbol_elem_of(from)) : 0 )
      , ito( to? symbol_index(symbol_elem_of(to)) : 0 )
!   {}
  
    cbl_label_t * from( cbl_label_t * label ) {
      ifrom = symbol_index(symbol_elem_of(label));
*************** struct cbl_perform_tgt_t {
*** 2049,2059 ****
    void dump() const {
      assert(ifrom);
      if( !ito ) {
!       dbgmsg( "%s:%d: #%3zu %s", __PRETTY_FUNCTION__, __LINE__,
!              ifrom, from()->str() );
      } else {
!       dbgmsg( "%s:%d: #%3zu %s THRU #%3zu %s", __PRETTY_FUNCTION__, __LINE__,
!              ifrom, from()->str(), ito, to()->str() );
      }
    }
  
--- 2130,2141 ----
    void dump() const {
      assert(ifrom);
      if( !ito ) {
!       dbgmsg( "%s:%d: #%3" GCC_PRISZ "u %s", __PRETTY_FUNCTION__, __LINE__,
!              (fmt_size_t)ifrom, from()->str() );
      } else {
!       dbgmsg( "%s:%d: #%3" GCC_PRISZ "u %s THRU #%3" GCC_PRISZ "u %s",
!              __PRETTY_FUNCTION__, __LINE__,
!              (fmt_size_t)ifrom, from()->str(), (fmt_size_t)ito, to()->str() );
      }
    }
  
*************** struct cbl_perform_vary_t {
*** 2067,2076 ****
    struct cbl_refer_t  by;       // numeric
    struct cbl_field_t *until;    // FldConditional
  
!   cbl_perform_vary_t( const cbl_refer_t& varying = cbl_refer_t(),
!                       const cbl_refer_t& from = cbl_refer_t(),
!                       const cbl_refer_t& by = cbl_refer_t(),
!                       cbl_field_t *until = NULL )
      : varying(varying)
      , from(from)
      , by(by)
--- 2149,2159 ----
    struct cbl_refer_t  by;       // numeric
    struct cbl_field_t *until;    // FldConditional
  
!   cbl_perform_vary_t() : until(nullptr) {}
!   cbl_perform_vary_t( const cbl_refer_t& varying,
!                       const cbl_refer_t& from,
!                       const cbl_refer_t& by,
!                       cbl_field_t *until )
      : varying(varying)
      , from(from)
      , by(by)
*************** is_literal( const cbl_field_t *field ) {
*** 2092,2103 ****
  }
  
  static inline bool
! is_signable( const struct cbl_field_t *field ) {
    return field->attr & signable_e;
  }
  
  static inline bool
! is_temporary( const struct cbl_field_t *field ) {
    return field->attr & intermediate_e;
  }
  
--- 2175,2186 ----
  }
  
  static inline bool
! is_signable( const cbl_field_t *field ) {
    return field->attr & signable_e;
  }
  
  static inline bool
! is_temporary( const cbl_field_t *field ) {
    return field->attr & intermediate_e;
  }
  
*************** is_numeric( const cbl_field_t *field ) {
*** 2118,2124 ****
  bool cobol_filename( const char *name );
  const char * cobol_filename();
  
! const char * cobol_fileline_set( const char line[] );
  
  char *cobol_name_mangler(const char *cobol_name);
  
--- 2201,2207 ----
  bool cobol_filename( const char *name );
  const char * cobol_filename();
  
! int cobol_fileline_set( const char line[] );
  
  char *cobol_name_mangler(const char *cobol_name);
  
*************** class name_queue_t : private std::queue<
*** 2205,2210 ****
--- 2288,2297 ----
  
  };
  
+ const std::string& keyword_alias_add( const std::string& keyword,
+ 				      const std::string& alias );
+ int binary_integer_usage_of( const char name[] );
+   
  void tee_up_empty();
  void tee_up_name( const YYLTYPE& loc, const char name[] );
  cbl_namelist_t teed_up_names();
*************** struct symbol_elem_t * symbol_special( s
*** 2228,2234 ****
  struct symbol_elem_t * symbol_alphabet( size_t program, const char name[] );
  
  struct symbol_elem_t * symbol_file( size_t program, const char name[] );
! struct cbl_field_t   * symbol_file_record( struct cbl_file_t *file );
  cbl_file_t::varying_t symbol_file_record_sizes( struct cbl_file_t *file );
  struct cbl_section_t * symbol_section( size_t program,
                                         struct cbl_section_t *section );
--- 2315,2321 ----
  struct symbol_elem_t * symbol_alphabet( size_t program, const char name[] );
  
  struct symbol_elem_t * symbol_file( size_t program, const char name[] );
! struct cbl_field_t   * symbol_file_record( const cbl_file_t *file );
  cbl_file_t::varying_t symbol_file_record_sizes( struct cbl_file_t *file );
  struct cbl_section_t * symbol_section( size_t program,
                                         struct cbl_section_t *section );
*************** size_t symbol_label_id( const cbl_label_
*** 2238,2244 ****
  struct cbl_field_t * parent_of( const cbl_field_t *f );
   const cbl_field_t * occurs_in( const cbl_field_t *f );
  
! cbl_field_t *rename_not_ok( cbl_field_t *first, cbl_field_t *last);
  bool immediately_follows( const cbl_field_t *first );
  bool is_variable_length( const cbl_field_t *field );
  
--- 2325,2331 ----
  struct cbl_field_t * parent_of( const cbl_field_t *f );
   const cbl_field_t * occurs_in( const cbl_field_t *f );
  
! cbl_field_t *rename_not_ok( const cbl_field_t *first, const cbl_field_t *last);
  bool immediately_follows( const cbl_field_t *first );
  bool is_variable_length( const cbl_field_t *field );
  
*************** cbl_file_t * symbol_record_file( const c
*** 2246,2257 ****
  
  struct cbl_field_t * symbol_find_odo( const cbl_field_t * field );
  
! size_t numeric_group_attrs( const cbl_field_t *field );
  
  static inline struct cbl_field_t *
  field_at( size_t index ) {
    struct symbol_elem_t *e = symbol_at(index);
!   assert(e->type == SymField);
  
    return &e->elem.field;
  }
--- 2333,2344 ----
  
  struct cbl_field_t * symbol_find_odo( const cbl_field_t * field );
  
! uint64_t numeric_group_attrs( const cbl_field_t *field );
  
  static inline struct cbl_field_t *
  field_at( size_t index ) {
    struct symbol_elem_t *e = symbol_at(index);
!   assert(e && e->type == SymField);
  
    return &e->elem.field;
  }
*************** size_t symbols_update( size_t first, boo
*** 2263,2283 ****
  void symbol_table_init(void);
  void symbol_table_check(void);
  
! struct symbol_elem_t * symbol_typedef_add( size_t program,
!                                            struct cbl_field_t *field );
! struct symbol_elem_t * symbol_field_add( size_t program,
!                                          struct cbl_field_t *field );
! struct cbl_label_t *   symbol_label_add( size_t program,
!                                          struct cbl_label_t *label );
! struct cbl_label_t *   symbol_program_add( size_t program, cbl_label_t *input );
! struct symbol_elem_t * symbol_special_add( size_t program,
!                                          struct cbl_special_name_t *special );
! struct symbol_elem_t * symbol_alphabet_add( size_t program,
!                                          struct cbl_alphabet_t *alphabet );
! struct symbol_elem_t * symbol_file_add( size_t program,
!                                          struct cbl_file_t *file );
! struct symbol_elem_t * symbol_section_add( size_t program,
!                                          struct cbl_section_t *section );
  
  void symbol_field_location( size_t ifield, const YYLTYPE& loc );
  YYLTYPE symbol_field_location( size_t ifield );
--- 2350,2370 ----
  void symbol_table_init(void);
  void symbol_table_check(void);
  
! symbol_elem_t * symbol_typedef_add( size_t program,
!                                     cbl_field_t *field );
! symbol_elem_t * symbol_field_add( size_t program,
!                                   cbl_field_t *field );
! cbl_label_t *   symbol_label_add( size_t program,
!                                   cbl_label_t *label );
! cbl_label_t *   symbol_program_add( size_t program, cbl_label_t *input );
! symbol_elem_t * symbol_special_add( size_t program,
! 				    cbl_special_name_t *special );
! symbol_elem_t * symbol_alphabet_add( size_t program,
! 				     const cbl_alphabet_t *alphabet );
! symbol_elem_t * symbol_file_add( size_t program,
! 				 cbl_file_t *file );
! symbol_elem_t * symbol_section_add( size_t program,
! 				    cbl_section_t *section );
  
  void symbol_field_location( size_t ifield, const YYLTYPE& loc );
  YYLTYPE symbol_field_location( size_t ifield );
*************** enum cbl_call_convention_t {
*** 2304,2320 ****
    cbl_call_cobol_e = 'N', // native
  };
  
  cbl_call_convention_t current_call_convention();
  
! cbl_call_convention_t
  current_call_convention( cbl_call_convention_t convention);
  
  class procref_base_t {
  private:
    const char *section_name, *paragraph_name;
  public:
!   procref_base_t( const char *section_name = NULL,
!                   const char *paragraph_name = NULL )
      : section_name(section_name)
      , paragraph_name(paragraph_name)
    {}
--- 2391,2568 ----
    cbl_call_cobol_e = 'N', // native
  };
  
+ int keyword_tok( const char * text, bool include_intrinsics = false );
+ int redefined_token( const cbl_name_t name );
+ 
+ class current_tokens_t {
+   class tokenset_t {
+     // token_names is initialized from a generated header file. 
+     std::vector<const char *>token_names;  // position indicates token value
+     std::map <std::string, int> tokens;    // aliases
+     std::set<std::string> cobol_words;  // Anything in COBOL-WORDS may appear only once. 
+   public:
+     static std::string
+     lowercase( const cbl_name_t name ) {
+       cbl_name_t lname;
+       std::transform(name, name + strlen(name) + 1, lname, ftolower);
+       return lname;
+     }
+     static std::string
+     uppercase( const cbl_name_t name ) {
+       cbl_name_t uname;
+       std::transform(name, name + strlen(name) + 1, uname, ftoupper);
+       return uname;
+     }
+ 
+   public:
+     tokenset_t();
+     int find( const cbl_name_t name, bool include_intrinsics );
+ 
+     bool equate( const YYLTYPE& loc, int token,
+                  const cbl_name_t name, const cbl_name_t verb = "EQUATE") {
+       auto lname( lowercase(name) );
+       auto cw = cobol_words.insert(lname);
+       if( ! cw.second ) {
+         error_msg(loc, "COBOL-WORDS %s: %s may appear but once", verb, name);
+         return false;
+       }
+       auto p = tokens.find(lowercase(name));
+       bool fOK = p == tokens.end();
+       if( fOK ) { // name not already in use
+         tokens[lname] = token;
+         dbgmsg("%s:%d: %d has alias %s", __func__, __LINE__, token, name);
+       } else {
+         error_msg(loc, "%s: %s already defined as a token", verb, name);
+       }
+       return fOK;
+     }
+     bool undefine( const YYLTYPE& loc,
+                    const cbl_name_t name, const cbl_name_t verb = "UNDEFINE" ) {
+       auto lname( lowercase(name) );
+       auto cw = cobol_words.insert(lname);
+       if( ! cw.second ) {
+         error_msg(loc, "COBOL-WORDS %s: %s may appear but once", verb, name);
+         return false;
+       }
+ 
+       // Do not erase generic, multi-type tokens COMPUTATIONAL and BINARY_INTEGER.
+       if( binary_integer_usage_of(name) ) {
+         dbgmsg("%s:%d: generic %s remains valid as a token", __func__, __LINE__, name);
+         return true;
+       }
+ 
+       auto p = tokens.find(lname);
+       bool fOK = p != tokens.end();
+       if( fOK ) { // name in use
+         tokens.erase(p);
+       } else {
+         error_msg(loc, "%s: %s not defined as a token", verb, name);
+       }
+       dbgmsg("%s:%d: %s removed as a valid token name", __func__, __LINE__, name);
+       return fOK;
+     }
+   
+     bool substitute( const YYLTYPE& loc,
+                      const cbl_name_t extant, int token, const cbl_name_t name ) {
+       return
+         equate( loc, token, name, "SUBSTITUTE" )
+         &&
+         undefine( loc, extant, "SUBSTITUTE" );
+     }
+     bool reserve( const YYLTYPE& loc, const cbl_name_t name ) {
+       auto lname( lowercase(name) );
+       auto cw = cobol_words.insert(lname);
+       if( ! cw.second ) {
+         error_msg(loc, "COBOL-WORDS RESERVE: %s may appear but once", name);
+         return false;
+       }
+       tokens[lname] = -42;
+       return true;
+     }
+     int redefined_as( const cbl_name_t name ) {
+       auto lname( lowercase(name) );
+       if( cobol_words.find(lname) != cobol_words.end() ) {
+         auto p = tokens.find(lname);
+         if( p != tokens.end() ) {
+           return p->second;
+         }
+       }
+       return 0;
+     }
+     const char * name_of( int tok ) const {
+       tok -= (255 + 3);
+       gcc_assert(0 <= tok && size_t(tok) < token_names.size());
+       return tok < 0? "???" : token_names[tok];
+     }
+   };
+ 
+   tokenset_t tokens;
+  public:
+   current_tokens_t() {}
+   int find( const cbl_name_t name, bool include_intrinsics ) {
+     return tokens.find(name, include_intrinsics);
+   }
+   bool equate( const YYLTYPE& loc, const cbl_name_t keyword, const cbl_name_t alias ) {
+     int token; 
+     if( 0 == (token = binary_integer_usage_of(keyword)) ) {
+       if( 0 == (token = keyword_tok(keyword)) ) {
+ 	error_msg(loc, "EQUATE %s: not a valid token", keyword);
+ 	return false;
+       }
+     }
+     auto name = keyword_alias_add(tokens.uppercase(keyword),
+ 				  tokens.uppercase(alias));
+     if( name != keyword ) {
+       error_msg(loc, "EQUATE: %s is already an alias for %s", alias, name.c_str());
+       return false;
+     } 
+     return tokens.equate(loc, token, alias);
+   }
+   bool undefine( const YYLTYPE& loc, cbl_name_t keyword ) {
+     return tokens.undefine(loc, keyword);
+   }
+   bool substitute( const YYLTYPE& loc, const cbl_name_t keyword, const cbl_name_t alias ) {
+     int token; 
+     if( 0 == (token = binary_integer_usage_of(keyword)) ) {
+       if( 0 == (token = keyword_tok(keyword)) ) {
+ 	error_msg(loc, "SUBSTITUTE %s: not a valid token", keyword);
+ 	return false;
+       }
+     }
+     auto name = keyword_alias_add(tokens.uppercase(keyword),
+ 				  tokens.uppercase(alias));
+     if( name != keyword ) {
+       error_msg(loc, "SUBSTITUTE: %s is already an alias for %s", alias, name.c_str());
+       return false;
+     } 
+ 
+     dbgmsg("%s:%d: %s (%d) will have alias %s", __func__, __LINE__, keyword, token, alias);
+     return tokens.substitute(loc, keyword, token, alias);
+   }
+   bool reserve( const YYLTYPE& loc, const cbl_name_t name ) {
+     return tokens.reserve(loc, name);
+   }
+   int redefined_as( const cbl_name_t name ) {
+     return tokens.redefined_as(name);
+   }
+   const char * name_of( int tok ) const {
+     return tokens.name_of(tok);
+   }
+ };
+ 
  cbl_call_convention_t current_call_convention();
+ current_tokens_t& cdf_current_tokens();
  
! void
  current_call_convention( cbl_call_convention_t convention);
  
  class procref_base_t {
  private:
    const char *section_name, *paragraph_name;
  public:
!   procref_base_t() : section_name(nullptr) , paragraph_name(nullptr) {}
!   procref_base_t( const char *section_name,
!                   const char *paragraph_name )
      : section_name(section_name)
      , paragraph_name(paragraph_name)
    {}
*************** public:
*** 2349,2357 ****
    int line_number() const { return line; }
  };
  
- int keyword_tok( const char * text, bool include_intrinsics = false );
- int redefined_token( const cbl_name_t name );
- 
  void procedure_definition_add( size_t program, const cbl_label_t *procedure );
  void procedure_reference_add( const char *sect, const char *para,
                                int line, size_t context );
--- 2597,2602 ----
*************** symbol_field_same_as( cbl_field_t *tgt,
*** 2367,2378 ****
  
  size_t symbol_file_same_record_area( std::list<cbl_file_t*>& files );
  
- cbl_field_t *
- symbol_valid_udf_args( size_t function,
-                        std::list<cbl_refer_t> args = std::list<cbl_refer_t>() );
- 
  bool symbol_currency_add( const char symbol[], const char sign[] = NULL );
! const char * symbol_currency( char symbol );
  
  const char * symbol_type_str( enum symbol_type_t type );
  const char * cbl_field_type_str( enum cbl_field_type_t type );
--- 2612,2619 ----
  
  size_t symbol_file_same_record_area( std::list<cbl_file_t*>& files );
  
  bool symbol_currency_add( const char symbol[], const char sign[] = NULL );
! const char * symbol_currency( char symbol = '\0' );
  
  const char * symbol_type_str( enum symbol_type_t type );
  const char * cbl_field_type_str( enum cbl_field_type_t type );
*************** refer_type_str( const cbl_refer_t *r ) {
*** 2385,2391 ****
  
  enum cbl_field_type_t symbol_field_type( size_t program, const char name[] );
  
! struct symbol_elem_t * symbol_parent( const struct symbol_elem_t *e );
  
  int length_of_picture(const char *picture);
  int rdigits_of_picture(const char *picture);
--- 2626,2632 ----
  
  enum cbl_field_type_t symbol_field_type( size_t program, const char name[] );
  
! struct symbol_elem_t * symbol_parent( const symbol_elem_t *e );
  
  int length_of_picture(const char *picture);
  int rdigits_of_picture(const char *picture);
*************** void gcc_location_set( const LOC& loc );
*** 2400,2403 ****
--- 2641,2646 ----
  //  create an entire .h module.  So, I stuck it here.
  size_t count_characters(const char *in, size_t length);
  
+ void current_enabled_ecs( tree ena );
+ 
  #endif
diff -Nrcpad gcc-15-20250726/gcc/cobol/symfind.cc gcc-15-20250809/gcc/cobol/symfind.cc
*** gcc-15-20250726/gcc/cobol/symfind.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/symfind.cc	Sat Aug  9 22:32:37 2025
*************** extern int yydebug;
*** 48,54 ****
  static bool
  is_data_field( symbol_elem_t& e ) {
    if( e.type != SymField ) return false;
!   auto f = cbl_field_of(&e);
    if( f->name[0] == '\0' ) return false;
    if( is_filler(f) ) return false;
  
--- 48,54 ----
  static bool
  is_data_field( symbol_elem_t& e ) {
    if( e.type != SymField ) return false;
!   const cbl_field_t *f = cbl_field_of(&e);
    if( f->name[0] == '\0' ) return false;
    if( is_filler(f) ) return false;
  
*************** finalize_symbol_map2() {
*** 129,135 ****
    for( auto& elem : symbol_map2 ) {
      auto& fields( elem.second );
      fields.remove_if( []( auto isym ) {
! 			auto f = cbl_field_of(symbol_at(isym));
  			return f->type == FldInvalid;
  		      } );
      if( fields.empty() ) empties.insert(elem.first);
--- 129,135 ----
    for( auto& elem : symbol_map2 ) {
      auto& fields( elem.second );
      fields.remove_if( []( auto isym ) {
! 			const cbl_field_t *f = cbl_field_of(symbol_at(isym));
  			return f->type == FldInvalid;
  		      } );
      if( fields.empty() ) empties.insert(elem.first);
*************** dump_symbol_map2( const field_key_t& key
*** 147,159 ****
  
    for( auto candidate : candidates ) {
      char *tmp = fields;
!     fields = xasprintf("%s%s %3zu", tmp? tmp : "", sep, candidate);
      sep[0] = ',';
      free(tmp);
    }
  
!   dbgmsg( "%s:%d: %3zu %s {%s}", __func__, __LINE__,
!           key.program, key.name, fields );
    free(fields);
  }
  
--- 147,160 ----
  
    for( auto candidate : candidates ) {
      char *tmp = fields;
!     fields = xasprintf("%s%s %3" GCC_PRISZ "u",
!                        tmp? tmp : "", sep, (fmt_size_t)candidate);
      sep[0] = ',';
      free(tmp);
    }
  
!   dbgmsg( "%s:%d: %3" GCC_PRISZ "u %s {%s}", __func__, __LINE__,
!           (fmt_size_t)key.program, key.name, fields );
    free(fields);
  }
  
*************** dump_symbol_map_value( const char name[]
*** 179,185 ****
  
    for( ; p != value.second.end(); p++ ) {
      char *tmp = ancestry;
!     ancestry = xasprintf("%s%s %3zu", tmp? tmp : "", sep, *p);
      sep[0] = ',';
      free(tmp);
    }
--- 180,187 ----
  
    for( ; p != value.second.end(); p++ ) {
      char *tmp = ancestry;
!     ancestry = xasprintf("%s%s %3" GCC_PRISZ "u",
!                          tmp? tmp : "", sep, (fmt_size_t)*p);
      sep[0] = ',';
      free(tmp);
    }
*************** build_symbol_map() {
*** 256,263 ****
    symbol_map.erase(sym_name_t(""));
  
    if( yydebug ) {
!     dbgmsg( "%s:%d: %zu of %zu symbols inserted into %zu in symbol_map",
!            __func__, __LINE__, nsym, end, symbol_map.size() );
    }
  }
  
--- 258,268 ----
    symbol_map.erase(sym_name_t(""));
  
    if( yydebug ) {
!     dbgmsg( "%s:%d: " HOST_SIZE_T_PRINT_UNSIGNED " of "
!             HOST_SIZE_T_PRINT_UNSIGNED " symbols inserted into "
!             HOST_SIZE_T_PRINT_UNSIGNED " in symbol_map",
!             __func__, __LINE__, (fmt_size_t)nsym, (fmt_size_t)end,
!             (fmt_size_t)symbol_map.size() );
    }
  }
  
*************** update_symbol_map( symbol_elem_t *e ) {
*** 270,284 ****
  class is_name {
    const char *name;
  public:
!   is_name( const char *name ) : name(name) {}
!   bool operator()( symbol_map_t::value_type& elem ) {
      const bool tf = elem.first == name;
      return tf;
    }
    protected:
      void dump_key( const char tag[], const symbol_map_t::key_type& key ) const {
!       dbgmsg( "symbol_map key: %s { %3zu %3zu %s }",
!              tag, key.program, key.parent, key.name );
    }
  };
  
--- 275,289 ----
  class is_name {
    const char *name;
  public:
!   explicit is_name( const char *name ) : name(name) {}
!   bool operator()( const symbol_map_t::value_type& elem ) {
      const bool tf = elem.first == name;
      return tf;
    }
    protected:
      void dump_key( const char tag[], const symbol_map_t::key_type& key ) const {
!       dbgmsg( "symbol_map key: %s { %3" GCC_PRISZ "u %3" GCC_PRISZ "u %s }",
!              tag, (fmt_size_t)key.program, (fmt_size_t)key.parent, key.name );
    }
  };
  
*************** class reduce_ancestry {
*** 293,299 ****
    static symbol_map_t::mapped_type
      candidates_only( const symbol_map_t::value_type& elem ) { return elem.second; }
  public:
!   reduce_ancestry( const symbol_map_t& groups )
      : candidates( groups.size() )
      {
        std::transform( groups.begin(), groups.end(), candidates.begin(),
--- 298,304 ----
    static symbol_map_t::mapped_type
      candidates_only( const symbol_map_t::value_type& elem ) { return elem.second; }
  public:
!   explicit reduce_ancestry( const symbol_map_t& groups )
      : candidates( groups.size() )
      {
        std::transform( groups.begin(), groups.end(), candidates.begin(),
*************** public:
*** 311,319 ****
        if( p != item.second.end() ) {
          // Preserve symbol's index at front of ancestor list.
          symbol_map_t::mapped_type shorter(1 + ancestors->size());
!         auto p = shorter.begin();
!         *p = item.second.front();
!         shorter.insert( ++p, ancestors->begin(), ancestors->end() );
          return make_pair(item.first, shorter);
        }
      }
--- 316,324 ----
        if( p != item.second.end() ) {
          // Preserve symbol's index at front of ancestor list.
          symbol_map_t::mapped_type shorter(1 + ancestors->size());
!         auto p_l = shorter.begin();
!         *p_l = item.second.front();
!         shorter.insert( ++p_l, ancestors->begin(), ancestors->end() );
          return make_pair(item.first, shorter);
        }
      }
*************** public:
*** 326,332 ****
  class different_program {
    size_t program;
  public:
!   different_program( size_t program ) : program(program) {}
    bool operator()( const symbol_map_t::value_type& item ) const {
      return ! item.first.same_program(program);
    }
--- 331,337 ----
  class different_program {
    size_t program;
  public:
!   explicit different_program( size_t program ) : program(program) {}
    bool operator()( const symbol_map_t::value_type& item ) const {
      return ! item.first.same_program(program);
    }
*************** class in_scope {
*** 336,351 ****
    size_t program;
  
    static size_t prog_of( size_t program ) {
!     auto L = cbl_label_of(symbol_at(program));
      return L->parent;
    }
  
  public:
!   in_scope( size_t program ) : program(program) {}
  
    // A symbol is in scope if it's defined by this program or by an ancestor.
    bool operator()( const symbol_map_t::value_type& item ) const {
!     symbol_elem_t *e = symbol_at(item.second.front());
      for( size_t prog = this->program; prog != 0; prog = prog_of(prog) ) {
        if( e->program == prog ) return true;
      }
--- 341,356 ----
    size_t program;
  
    static size_t prog_of( size_t program ) {
!     const cbl_label_t *L = cbl_label_of(symbol_at(program));
      return L->parent;
    }
  
  public:
!   explicit in_scope( size_t program ) : program(program) {}
  
    // A symbol is in scope if it's defined by this program or by an ancestor.
    bool operator()( const symbol_map_t::value_type& item ) const {
!     const symbol_elem_t *e = symbol_at(item.second.front());
      for( size_t prog = this->program; prog != 0; prog = prog_of(prog) ) {
        if( e->program == prog ) return true;
      }
*************** size_t end_of_group( size_t igroup );
*** 416,422 ****
  
  static std::vector<size_t>
  symbol_match2( size_t program,
!                std::list<const char *> names, bool local = true )
  {
    std::vector<size_t> fields;
  
--- 421,427 ----
  
  static std::vector<size_t>
  symbol_match2( size_t program,
!                const std::list<const char *>& names, bool local = true )
  {
    std::vector<size_t> fields;
  
*************** symbol_match2( size_t program,
*** 425,431 ****
    auto plist = symbol_map2.find(key);
    if( plist != symbol_map2.end() ) {
      for( auto candidate : plist->second ) {
!       auto e = symbol_at(candidate);
        if( name_has_names( e, names, local ) ) {
          fields.push_back( symbol_index(e) );
        }
--- 430,436 ----
    auto plist = symbol_map2.find(key);
    if( plist != symbol_map2.end() ) {
      for( auto candidate : plist->second ) {
!       const symbol_elem_t *e = symbol_at(candidate);
        if( name_has_names( e, names, local ) ) {
          fields.push_back( symbol_index(e) );
        }
*************** symbol_match2( size_t program,
*** 459,472 ****
        sep = "";
        for( auto field : fields ) {
          char *partial = fieldstr;
!         int asret = asprintf(&fieldstr, "%s%s%zu", partial? partial : "", sep, field);
          assert(asret);
          sep = ", ";
          assert(fieldstr);
          free(partial);
        }
  
!       dbgmsg("%s: '%s' matches %zu fields: {%s}", __func__, ancestry, fields.size(), fieldstr);
        free(fieldstr);
      }
      free(ancestry);
--- 464,479 ----
        sep = "";
        for( auto field : fields ) {
          char *partial = fieldstr;
!         int asret = asprintf(&fieldstr, "%s%s" HOST_SIZE_T_PRINT_UNSIGNED,
!                              partial? partial : "", sep, (fmt_size_t)field);
          assert(asret);
          sep = ", ";
          assert(fieldstr);
          free(partial);
        }
  
!       dbgmsg("%s: '%s' matches " HOST_SIZE_T_PRINT_UNSIGNED " fields: {%s}",
!              __func__, ancestry, (fmt_size_t)fields.size(), fieldstr);
        free(fieldstr);
      }
      free(ancestry);
*************** symbol_match2( size_t program,
*** 481,487 ****
   * N-1.
   */
  static symbol_map_t
! symbol_match( size_t program, std::list<const char *> names ) {
    auto matched = symbol_match2( program, names );
    symbol_map_t output;
  
--- 488,494 ----
   * N-1.
   */
  static symbol_map_t
! symbol_match( size_t program, const std::list<const char *>& names ) {
    auto matched = symbol_match2( program, names );
    symbol_map_t output;
  
*************** symbol_match( size_t program, std::list<
*** 497,503 ****
      }
      auto inserted = output.insert(*p);
      if( ! inserted.second ) {
!       yyerror("%s is not a unique reference", key.name);
      }
    }
    return output;
--- 504,510 ----
      }
      auto inserted = output.insert(*p);
      if( ! inserted.second ) {
!       error_msg_direct("%s is not a unique reference", key.name);
      }
    }
    return output;
*************** symbol_find( size_t program, std::list<c
*** 537,544 ****
        return std::pair<symbol_elem_t *, bool>(NULL, false);
      }
      if( yydebug ) {
!       dbgmsg( "%s:%d: '%s' has %zu possible matches",
!              __func__, __LINE__, names.back(), items.size() );
        std::for_each( items.begin(), items.end(), dump_symbol_map_value1 );
      }
    }
--- 544,551 ----
        return std::pair<symbol_elem_t *, bool>(NULL, false);
      }
      if( yydebug ) {
!       dbgmsg( "%s:%d: '%s' has " HOST_SIZE_T_PRINT_UNSIGNED " possible matches",
!              __func__, __LINE__, names.back(), (fmt_size_t)items.size() );
        std::for_each( items.begin(), items.end(), dump_symbol_map_value1 );
      }
    }
*************** symbol_find( size_t program, std::list<c
*** 554,560 ****
  class in_group {
    size_t group;
  public:
!   in_group( size_t group ) : group(group) {}
  
    bool operator()( symbol_map_t::const_reference elem ) const {
      return 0 < std::count( elem.second.begin(),
--- 561,567 ----
  class in_group {
    size_t group;
  public:
!   explicit in_group( size_t group ) : group(group) {}
  
    bool operator()( symbol_map_t::const_reference elem ) const {
      return 0 < std::count( elem.second.begin(),
*************** symbol_find_of( size_t program, std::lis
*** 577,584 ****
    }
  
    if( yydebug ) {
!     dbgmsg( "%s:%d: '%s' has %zu possible matches",
!            __func__, __LINE__, names.back(), input.size() );
      std::for_each( input.begin(), input.end(), dump_symbol_map_value1 );
    }
  
--- 584,591 ----
    }
  
    if( yydebug ) {
!     dbgmsg( "%s:%d: '%s' has " HOST_SIZE_T_PRINT_UNSIGNED " possible matches",
!            __func__, __LINE__, names.back(), (fmt_size_t)input.size() );
      std::for_each( input.begin(), input.end(), dump_symbol_map_value1 );
    }
  
diff -Nrcpad gcc-15-20250726/gcc/cobol/token_names.h gcc-15-20250809/gcc/cobol/token_names.h
*** gcc-15-20250726/gcc/cobol/token_names.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/token_names.h	Sat Aug  9 22:32:37 2025
***************
*** 1,1373 ****
  // generated by ./token_names.h.gen ../../build/gcc/cobol/parse.h
! // Fri Mar 21 10:13:54 CET 2025
  tokens = {
!         { "identification", IDENTIFICATION_DIV }, // 258
!         { "environment", ENVIRONMENT_DIV }, // 259
!         { "procedure", PROCEDURE_DIV }, // 260
!         { "data", DATA_DIV }, // 261
!         { "file", FILE_SECT }, // 262
!         { "input-output", INPUT_OUTPUT_SECT }, // 263
!         { "linkage", LINKAGE_SECT }, // 264
!         { "local-storage", LOCAL_STORAGE_SECT }, // 265
!         { "working-storage", WORKING_STORAGE_SECT }, // 266
!         { "object-computer", OBJECT_COMPUTER }, // 267
!         { "display-of", DISPLAY_OF }, // 268
!         { "end-function", END_FUNCTION }, // 269
!         { "end-program", END_PROGRAM }, // 270
!         { "end-subprogram", END_SUBPROGRAM }, // 271
!         { "justified", JUSTIFIED }, // 272
!         { "returning", RETURNING }, // 273
!         { "no-condition", NO_CONDITION }, // 274
!         { "alnum", ALNUM }, // 275
!         { "alphed", ALPHED }, // 276
!         { "error", ERROR }, // 277
!         { "exception", EXCEPTION }, // 278
!         { "size-error", SIZE_ERROR }, // 279
!         { "exception-name", EXCEPTION_NAME }, // 280
!         { "level", LEVEL }, // 281
!         { "level66", LEVEL66 }, // 282
!         { "level78", LEVEL78 }, // 283
!         { "level88", LEVEL88 }, // 284
!         { "class-name", CLASS_NAME }, // 285
!         { "name", NAME }, // 286
!         { "name88", NAME88 }, // 287
!         { "nume", NUME }, // 288
!         { "numed", NUMED }, // 289
!         { "numed-cr", NUMED_CR }, // 290
!         { "numed-db", NUMED_DB }, // 291
!         { "ninedot", NINEDOT }, // 292
!         { "nines", NINES }, // 293
!         { "ninev", NINEV }, // 294
!         { "pic-p", PIC_P }, // 295
!         { "spaces", SPACES }, // 296
!         { "space", SPACES }, // 296
!         { "literal", LITERAL }, // 297
!         { "end", END }, // 298
!         { "eop", EOP }, // 299
!         { "filename", FILENAME }, // 300
!         { "invalid", INVALID }, // 301
!         { "number", NUMBER }, // 302
!         { "negative", NEGATIVE }, // 303
!         { "numstr", NUMSTR }, // 304
!         { "overflow", OVERFLOW_kw }, // 305
!         { "computational", COMPUTATIONAL }, // 306
!         { "perform", PERFORM }, // 307
!         { "backward", BACKWARD }, // 308
!         { "positive", POSITIVE }, // 309
!         { "pointer", POINTER }, // 310
!         { "section", SECTION }, // 311
!         { "standard-alphabet", STANDARD_ALPHABET }, // 312
!         { "switch", SWITCH }, // 313
!         { "upsi", UPSI }, // 314
!         { "zero", ZERO }, // 315
!         { "zeros", ZERO }, // 315
!         { "zeroes", ZERO }, // 315
!         { "sysin", SYSIN }, // 316
!         { "sysipt", SYSIPT }, // 317
!         { "sysout", SYSOUT }, // 318
!         { "syslist", SYSLIST }, // 319
!         { "syslst", SYSLST }, // 320
!         { "syspunch", SYSPUNCH }, // 321
!         { "syspch", SYSPCH }, // 322
!         { "console", CONSOLE }, // 323
!         { "c01", C01 }, // 324
!         { "c02", C02 }, // 325
!         { "c03", C03 }, // 326
!         { "c04", C04 }, // 327
!         { "c05", C05 }, // 328
!         { "c06", C06 }, // 329
!         { "c07", C07 }, // 330
!         { "c08", C08 }, // 331
!         { "c09", C09 }, // 332
!         { "c10", C10 }, // 333
!         { "c11", C11 }, // 334
!         { "c12", C12 }, // 335
!         { "csp", CSP }, // 336
!         { "s01", S01 }, // 337
!         { "s02", S02 }, // 338
!         { "s03", S03 }, // 339
!         { "s04", S04 }, // 340
!         { "s05", S05 }, // 341
!         { "afp-5a", AFP_5A }, // 342
!         { "stdin", STDIN }, // 343
!         { "stdout", STDOUT }, // 344
!         { "stderr", STDERR }, // 345
!         { "list", LIST }, // 346
!         { "map", MAP }, // 347
!         { "nolist", NOLIST }, // 348
!         { "nomap", NOMAP }, // 349
!         { "nosource", NOSOURCE }, // 350
!         { "might-be", MIGHT_BE }, // 351
!         { "function-udf", FUNCTION_UDF }, // 352
!         { "function-udf-0", FUNCTION_UDF_0 }, // 353
!         { "date-fmt", DATE_FMT }, // 354
!         { "time-fmt", TIME_FMT }, // 355
!         { "datetime-fmt", DATETIME_FMT }, // 356
!         { "basis", BASIS }, // 357
!         { "cbl", CBL }, // 358
!         { "constant", CONSTANT }, // 359
!         { "copy", COPY }, // 360
!         { "defined", DEFINED }, // 361
!         { "enter", ENTER }, // 362
!         { "feature", FEATURE }, // 363
!         { "insertt", INSERTT }, // 364
!         { "lsub", LSUB }, // 365
!         { "parameter", PARAMETER_kw }, // 366
!         { "override", OVERRIDE }, // 367
!         { "ready", READY }, // 368
!         { "reset", RESET }, // 369
!         { "rsub", RSUB }, // 370
!         { "service-reload", SERVICE_RELOAD }, // 371
!         { "star-cbl", STAR_CBL }, // 372
!         { "subscript", SUBSCRIPT }, // 373
!         { "suppress", SUPPRESS }, // 374
!         { "title", TITLE }, // 375
!         { "trace", TRACE }, // 376
!         { "use", USE }, // 377
!         { "cobol-words", COBOL_WORDS }, // 378
!         { "equate", EQUATE }, // 379
!         { "undefine", UNDEFINE }, // 380
!         { "cdf-define", CDF_DEFINE }, // 381
!         { "cdf-display", CDF_DISPLAY }, // 382
!         { "cdf-if", CDF_IF }, // 383
!         { "cdf-else", CDF_ELSE }, // 384
!         { "cdf-end-if", CDF_END_IF }, // 385
!         { "cdf-evaluate", CDF_EVALUATE }, // 386
!         { "cdf-when", CDF_WHEN }, // 387
!         { "cdf-end-evaluate", CDF_END_EVALUATE }, // 388
!         { "call-cobol", CALL_COBOL }, // 389
!         { "call-verbatim", CALL_VERBATIM }, // 390
!         { "if", IF }, // 391
!         { "then", THEN }, // 392
!         { "else", ELSE }, // 393
!         { "sentence", SENTENCE }, // 394
!         { "accept", ACCEPT }, // 395
!         { "add", ADD }, // 396
!         { "alter", ALTER }, // 397
!         { "call", CALL }, // 398
!         { "cancel", CANCEL }, // 399
!         { "close", CLOSE }, // 400
!         { "compute", COMPUTE }, // 401
!         { "continue", CONTINUE }, // 402
!         { "delete", DELETE }, // 403
!         { "display", DISPLAY }, // 404
!         { "divide", DIVIDE }, // 405
!         { "evaluate", EVALUATE }, // 406
!         { "exit", EXIT }, // 407
!         { "filler", FILLER_kw }, // 408
!         { "goback", GOBACK }, // 409
!         { "goto", GOTO }, // 410
!         { "initialize", INITIALIZE }, // 411
!         { "inspect", INSPECT }, // 412
!         { "merge", MERGE }, // 413
!         { "move", MOVE }, // 414
!         { "multiply", MULTIPLY }, // 415
!         { "open", OPEN }, // 416
!         { "paragraph", PARAGRAPH }, // 417
!         { "read", READ }, // 418
!         { "release", RELEASE }, // 419
!         { "return", RETURN }, // 420
!         { "rewrite", REWRITE }, // 421
!         { "search", SEARCH }, // 422
!         { "set", SET }, // 423
!         { "select", SELECT }, // 424
!         { "sort", SORT }, // 425
!         { "sort-merge", SORT_MERGE }, // 426
!         { "string", STRING_kw }, // 427
!         { "stop", STOP }, // 428
!         { "subtract", SUBTRACT }, // 429
!         { "start", START }, // 430
!         { "unstring", UNSTRING }, // 431
!         { "write", WRITE }, // 432
!         { "when", WHEN }, // 433
!         { "abs", ABS }, // 434
!         { "access", ACCESS }, // 435
!         { "acos", ACOS }, // 436
!         { "actual", ACTUAL }, // 437
!         { "advancing", ADVANCING }, // 438
!         { "after", AFTER }, // 439
!         { "all", ALL }, // 440
!         { "allocate", ALLOCATE }, // 441
!         { "alphabet", ALPHABET }, // 442
!         { "alphabetic", ALPHABETIC }, // 443
!         { "alphabetic-lower", ALPHABETIC_LOWER }, // 444
!         { "alphabetic-upper", ALPHABETIC_UPPER }, // 445
!         { "alphanumeric", ALPHANUMERIC }, // 446
!         { "alphanumeric-edited", ALPHANUMERIC_EDITED }, // 447
!         { "also", ALSO }, // 448
!         { "alternate", ALTERNATE }, // 449
!         { "annuity", ANNUITY }, // 450
!         { "anum", ANUM }, // 451
!         { "any", ANY }, // 452
!         { "anycase", ANYCASE }, // 453
!         { "apply", APPLY }, // 454
!         { "are", ARE }, // 455
!         { "area", AREA }, // 456
!         { "areas", AREAS }, // 457
!         { "as", AS }, // 458
!         { "ascending", ASCENDING }, // 459
!         { "activating", ACTIVATING }, // 460
!         { "asin", ASIN }, // 461
!         { "assign", ASSIGN }, // 462
!         { "at", AT }, // 463
!         { "atan", ATAN }, // 464
!         { "based", BASED }, // 465
!         { "baseconvert", BASECONVERT }, // 466
!         { "before", BEFORE }, // 467
!         { "binary", BINARY }, // 468
!         { "bit", BIT }, // 469
!         { "bit-of", BIT_OF }, // 470
!         { "bit-to-char", BIT_TO_CHAR }, // 471
!         { "blank", BLANK }, // 472
!         { "block", BLOCK_kw }, // 473
!         { "boolean-of-integer", BOOLEAN_OF_INTEGER }, // 474
!         { "bottom", BOTTOM }, // 475
!         { "by", BY }, // 476
!         { "byte", BYTE }, // 477
!         { "byte-length", BYTE_LENGTH }, // 478
!         { "cf", CF }, // 479
!         { "ch", CH }, // 480
!         { "changed", CHANGED }, // 481
!         { "char", CHAR }, // 482
!         { "char-national", CHAR_NATIONAL }, // 483
!         { "character", CHARACTER }, // 484
!         { "characters", CHARACTERS }, // 485
!         { "checking", CHECKING }, // 486
!         { "class", CLASS }, // 487
!         { "cobol", COBOL }, // 488
!         { "code", CODE }, // 489
!         { "code-set", CODESET }, // 490
!         { "collating", COLLATING }, // 491
!         { "column", COLUMN }, // 492
!         { "combined-datetime", COMBINED_DATETIME }, // 493
!         { "comma", COMMA }, // 494
!         { "command-line", COMMAND_LINE }, // 495
!         { "command-line-count", COMMAND_LINE_COUNT }, // 496
!         { "commit", COMMIT }, // 497
!         { "common", COMMON }, // 498
!         { "concat", CONCAT }, // 499
!         { "condition", CONDITION }, // 500
!         { "configuration", CONFIGURATION_SECT }, // 501
!         { "contains", CONTAINS }, // 502
!         { "content", CONTENT }, // 503
!         { "control", CONTROL }, // 504
!         { "controls", CONTROLS }, // 505
!         { "convert", CONVERT }, // 506
!         { "converting", CONVERTING }, // 507
!         { "corresponding", CORRESPONDING }, // 508
!         { "cos", COS }, // 509
!         { "count", COUNT }, // 510
!         { "currency", CURRENCY }, // 511
!         { "current", CURRENT }, // 512
!         { "current-date", CURRENT_DATE }, // 513
!         { "data", DATA }, // 514
!         { "date", DATE }, // 515
!         { "date-compiled", DATE_COMPILED }, // 516
!         { "date-of-integer", DATE_OF_INTEGER }, // 517
!         { "date-to-yyyymmdd", DATE_TO_YYYYMMDD }, // 518
!         { "date-written", DATE_WRITTEN }, // 519
!         { "day", DAY }, // 520
!         { "day-of-integer", DAY_OF_INTEGER }, // 521
!         { "day-of-week", DAY_OF_WEEK }, // 522
!         { "day-to-yyyyddd", DAY_TO_YYYYDDD }, // 523
!         { "dbcs", DBCS }, // 524
!         { "de", DE }, // 525
!         { "debugging", DEBUGGING }, // 526
!         { "decimal-point", DECIMAL_POINT }, // 527
!         { "declaratives", DECLARATIVES }, // 528
!         { "default", DEFAULT }, // 529
!         { "delimited", DELIMITED }, // 530
!         { "delimiter", DELIMITER }, // 531
!         { "depending", DEPENDING }, // 532
!         { "descending", DESCENDING }, // 533
!         { "detail", DETAIL }, // 534
!         { "direct", DIRECT }, // 535
!         { "direct-access", DIRECT_ACCESS }, // 536
!         { "down", DOWN }, // 537
!         { "duplicates", DUPLICATES }, // 538
!         { "dynamic", DYNAMIC }, // 539
!         { "e", E }, // 540
!         { "ebcdic", EBCDIC }, // 541
!         { "ec", EC }, // 542
!         { "egcs", EGCS }, // 543
!         { "entry", ENTRY }, // 544
!         { "environment", ENVIRONMENT }, // 545
!         { "equal", EQUAL }, // 546
!         { "every", EVERY }, // 547
!         { "examine", EXAMINE }, // 548
!         { "exhibit", EXHIBIT }, // 549
!         { "exp", EXP }, // 550
!         { "exp10", EXP10 }, // 551
!         { "extend", EXTEND }, // 552
!         { "external", EXTERNAL }, // 553
!         { "exception-file", EXCEPTION_FILE }, // 554
!         { "exception-file-n", EXCEPTION_FILE_N }, // 555
!         { "exception-location", EXCEPTION_LOCATION }, // 556
!         { "exception-location-n", EXCEPTION_LOCATION_N }, // 557
!         { "exception-statement", EXCEPTION_STATEMENT }, // 558
!         { "exception-status", EXCEPTION_STATUS }, // 559
!         { "factorial", FACTORIAL }, // 560
!         { "false", FALSE_kw }, // 561
!         { "fd", FD }, // 562
!         { "file-control", FILE_CONTROL }, // 563
!         { "file", FILE_KW }, // 564
!         { "file-limit", FILE_LIMIT }, // 565
!         { "final", FINAL }, // 566
!         { "finally", FINALLY }, // 567
!         { "find-string", FIND_STRING }, // 568
!         { "first", FIRST }, // 569
!         { "fixed", FIXED }, // 570
!         { "footing", FOOTING }, // 571
!         { "for", FOR }, // 572
!         { "formatted-current-date", FORMATTED_CURRENT_DATE }, // 573
!         { "formatted-date", FORMATTED_DATE }, // 574
!         { "formatted-datetime", FORMATTED_DATETIME }, // 575
!         { "formatted-time", FORMATTED_TIME }, // 576
!         { "form-overflow", FORM_OVERFLOW }, // 577
!         { "free", FREE }, // 578
!         { "fraction-part", FRACTION_PART }, // 579
!         { "from", FROM }, // 580
!         { "function", FUNCTION }, // 581
!         { "generate", GENERATE }, // 582
!         { "giving", GIVING }, // 583
!         { "global", GLOBAL }, // 584
!         { "go", GO }, // 585
!         { "group", GROUP }, // 586
!         { "heading", HEADING }, // 587
!         { "hex", HEX }, // 588
!         { "hex-of", HEX_OF }, // 589
!         { "hex-to-char", HEX_TO_CHAR }, // 590
!         { "high-values", HIGH_VALUES }, // 591
!         { "highest-algebraic", HIGHEST_ALGEBRAIC }, // 592
!         { "hold", HOLD }, // 593
!         { "ibm-360", IBM_360 }, // 594
!         { "in", IN }, // 595
!         { "include", INCLUDE }, // 596
!         { "index", INDEX }, // 597
!         { "indexed", INDEXED }, // 598
!         { "indicate", INDICATE }, // 599
!         { "initial", INITIAL_kw }, // 600
!         { "initiate", INITIATE }, // 601
!         { "input", INPUT }, // 602
!         { "installation", INSTALLATION }, // 603
!         { "interface", INTERFACE }, // 604
!         { "integer", INTEGER }, // 605
!         { "integer-of-boolean", INTEGER_OF_BOOLEAN }, // 606
!         { "integer-of-date", INTEGER_OF_DATE }, // 607
!         { "integer-of-day", INTEGER_OF_DAY }, // 608
!         { "integer-of-formatted-date", INTEGER_OF_FORMATTED_DATE }, // 609
!         { "integer-part", INTEGER_PART }, // 610
!         { "into", INTO }, // 611
!         { "intrinsic", INTRINSIC }, // 612
!         { "invoke", INVOKE }, // 613
!         { "i-o", IO }, // 614
!         { "i-o-control", IO_CONTROL }, // 615
!         { "is", IS }, // 616
!         { "isnt", ISNT }, // 617
!         { "kanji", KANJI }, // 618
!         { "key", KEY }, // 619
!         { "label", LABEL }, // 620
!         { "last", LAST }, // 621
!         { "leading", LEADING }, // 622
!         { "left", LEFT }, // 623
!         { "length", LENGTH }, // 624
!         { "length-of", LENGTH_OF }, // 625
!         { "limit", LIMIT }, // 626
!         { "limits", LIMITS }, // 627
!         { "line", LINE }, // 628
!         { "lines", LINES }, // 629
!         { "line-counter", LINE_COUNTER }, // 630
!         { "linage", LINAGE }, // 631
!         { "linkage", LINKAGE }, // 632
!         { "locale", LOCALE }, // 633
!         { "locale-compare", LOCALE_COMPARE }, // 634
!         { "locale-date", LOCALE_DATE }, // 635
!         { "locale-time", LOCALE_TIME }, // 636
!         { "locale-time-from-seconds", LOCALE_TIME_FROM_SECONDS }, // 637
!         { "local-storage", LOCAL_STORAGE }, // 638
!         { "location", LOCATION }, // 639
!         { "lock", LOCK }, // 640
!         { "lock-on", LOCK_ON }, // 641
!         { "log", LOG }, // 642
!         { "log10", LOG10 }, // 643
!         { "lower-case", LOWER_CASE }, // 644
!         { "low-values", LOW_VALUES }, // 645
!         { "lowest-algebraic", LOWEST_ALGEBRAIC }, // 646
!         { "lparen", LPAREN }, // 647
!         { "manual", MANUAL }, // 648
!         { "maxx", MAXX }, // 649
!         { "mean", MEAN }, // 650
!         { "median", MEDIAN }, // 651
!         { "midrange", MIDRANGE }, // 652
!         { "minn", MINN }, // 653
!         { "multiple", MULTIPLE }, // 654
!         { "mod", MOD }, // 655
!         { "mode", MODE }, // 656
!         { "module-name", MODULE_NAME }, // 657
!         { "named", NAMED }, // 658
!         { "nat", NAT }, // 659
!         { "national", NATIONAL }, // 660
!         { "national-edited", NATIONAL_EDITED }, // 661
!         { "national-of", NATIONAL_OF }, // 662
!         { "native", NATIVE }, // 663
!         { "nested", NESTED }, // 664
!         { "next", NEXT }, // 665
!         { "no", NO }, // 666
!         { "note", NOTE }, // 667
!         { "nulls", NULLS }, // 668
!         { "null", NULLS }, // 668
!         { "nullptr", NULLPTR }, // 669
!         { "numeric", NUMERIC }, // 670
!         { "numeric-edited", NUMERIC_EDITED }, // 671
!         { "numval", NUMVAL }, // 672
!         { "numval-c", NUMVAL_C }, // 673
!         { "numval-f", NUMVAL_F }, // 674
!         { "occurs", OCCURS }, // 675
!         { "of", OF }, // 676
!         { "off", OFF }, // 677
!         { "omitted", OMITTED }, // 678
!         { "on", ON }, // 679
!         { "only", ONLY }, // 680
!         { "optional", OPTIONAL }, // 681
!         { "options", OPTIONS }, // 682
!         { "ord", ORD }, // 683
!         { "order", ORDER }, // 684
!         { "ord-max", ORD_MAX }, // 685
!         { "ord-min", ORD_MIN }, // 686
!         { "organization", ORGANIZATION }, // 687
!         { "other", OTHER }, // 688
!         { "otherwise", OTHERWISE }, // 689
!         { "output", OUTPUT }, // 690
!         { "packed-decimal", PACKED_DECIMAL }, // 691
!         { "padding", PADDING }, // 692
!         { "page", PAGE }, // 693
!         { "page-counter", PAGE_COUNTER }, // 694
!         { "pf", PF }, // 695
!         { "ph", PH }, // 696
!         { "pi", PI }, // 697
!         { "pic", PIC }, // 698
!         { "picture", PICTURE }, // 699
!         { "plus", PLUS }, // 700
!         { "present-value", PRESENT_VALUE }, // 701
!         { "print-switch", PRINT_SWITCH }, // 702
!         { "procedure", PROCEDURE }, // 703
!         { "procedures", PROCEDURES }, // 704
!         { "proceed", PROCEED }, // 705
!         { "process", PROCESS }, // 706
!         { "program-id", PROGRAM_ID }, // 707
!         { "program", PROGRAM_kw }, // 708
!         { "property", PROPERTY }, // 709
!         { "prototype", PROTOTYPE }, // 710
!         { "pseudotext", PSEUDOTEXT }, // 711
!         { "quotes", QUOTES }, // 712
!         { "quote", QUOTES }, // 712
!         { "random", RANDOM }, // 713
!         { "random-seed", RANDOM_SEED }, // 714
!         { "range", RANGE }, // 715
!         { "raise", RAISE }, // 716
!         { "raising", RAISING }, // 717
!         { "rd", RD }, // 718
!         { "record", RECORD }, // 719
!         { "recording", RECORDING }, // 720
!         { "records", RECORDS }, // 721
!         { "recursive", RECURSIVE }, // 722
!         { "redefines", REDEFINES }, // 723
!         { "reel", REEL }, // 724
!         { "reference", REFERENCE }, // 725
!         { "relative", RELATIVE }, // 726
!         { "rem", REM }, // 727
!         { "remainder", REMAINDER }, // 728
!         { "remarks", REMARKS }, // 729
!         { "removal", REMOVAL }, // 730
!         { "renames", RENAMES }, // 731
!         { "replace", REPLACE }, // 732
!         { "replacing", REPLACING }, // 733
!         { "report", REPORT }, // 734
!         { "reporting", REPORTING }, // 735
!         { "reports", REPORTS }, // 736
!         { "repository", REPOSITORY }, // 737
!         { "rerun", RERUN }, // 738
!         { "reserve", RESERVE }, // 739
!         { "restricted", RESTRICTED }, // 740
!         { "resume", RESUME }, // 741
!         { "reverse", REVERSE }, // 742
!         { "reversed", REVERSED }, // 743
!         { "rewind", REWIND }, // 744
!         { "rf", RF }, // 745
!         { "rh", RH }, // 746
!         { "right", RIGHT }, // 747
!         { "rounded", ROUNDED }, // 748
!         { "run", RUN }, // 749
!         { "same", SAME }, // 750
!         { "screen", SCREEN }, // 751
!         { "sd", SD }, // 752
!         { "seconds-from-formatted-time", SECONDS_FROM_FORMATTED_TIME }, // 753
!         { "seconds-past-midnight", SECONDS_PAST_MIDNIGHT }, // 754
!         { "security", SECURITY }, // 755
!         { "separate", SEPARATE }, // 756
!         { "sequence", SEQUENCE }, // 757
!         { "sequential", SEQUENTIAL }, // 758
!         { "sharing", SHARING }, // 759
!         { "simple-exit", SIMPLE_EXIT }, // 760
!         { "sign", SIGN }, // 761
!         { "sin", SIN }, // 762
!         { "size", SIZE }, // 763
!         { "smallest-algebraic", SMALLEST_ALGEBRAIC }, // 764
!         { "source", SOURCE }, // 765
!         { "source-computer", SOURCE_COMPUTER }, // 766
!         { "special-names", SPECIAL_NAMES }, // 767
!         { "sqrt", SQRT }, // 768
!         { "stack", STACK }, // 769
!         { "standard", STANDARD }, // 770
!         { "standard-1", STANDARD_1 }, // 771
!         { "standard-deviation", STANDARD_DEVIATION }, // 772
!         { "standard-compare", STANDARD_COMPARE }, // 773
!         { "status", STATUS }, // 774
!         { "strong", STRONG }, // 775
!         { "substitute", SUBSTITUTE }, // 776
!         { "sum", SUM }, // 777
!         { "symbol", SYMBOL }, // 778
!         { "symbolic", SYMBOLIC }, // 779
!         { "synchronized", SYNCHRONIZED }, // 780
!         { "tally", TALLY }, // 781
!         { "tallying", TALLYING }, // 782
!         { "tan", TAN }, // 783
!         { "terminate", TERMINATE }, // 784
!         { "test", TEST }, // 785
!         { "test-date-yyyymmdd", TEST_DATE_YYYYMMDD }, // 786
!         { "test-day-yyyyddd", TEST_DAY_YYYYDDD }, // 787
!         { "test-formatted-datetime", TEST_FORMATTED_DATETIME }, // 788
!         { "test-numval", TEST_NUMVAL }, // 789
!         { "test-numval-c", TEST_NUMVAL_C }, // 790
!         { "test-numval-f", TEST_NUMVAL_F }, // 791
!         { "than", THAN }, // 792
!         { "time", TIME }, // 793
!         { "times", TIMES }, // 794
!         { "to", TO }, // 795
!         { "top", TOP }, // 796
!         { "top-level", TOP_LEVEL }, // 797
!         { "tracks", TRACKS }, // 798
!         { "track-area", TRACK_AREA }, // 799
!         { "trailing", TRAILING }, // 800
!         { "transform", TRANSFORM }, // 801
!         { "trim", TRIM }, // 802
!         { "true", TRUE_kw }, // 803
!         { "try", TRY }, // 804
!         { "turn", TURN }, // 805
!         { "type", TYPE }, // 806
!         { "typedef", TYPEDEF }, // 807
!         { "ulength", ULENGTH }, // 808
!         { "unbounded", UNBOUNDED }, // 809
!         { "unit", UNIT }, // 810
!         { "units", UNITS }, // 811
!         { "unit-record", UNIT_RECORD }, // 812
!         { "until", UNTIL }, // 813
!         { "up", UP }, // 814
!         { "upon", UPON }, // 815
!         { "upos", UPOS }, // 816
!         { "upper-case", UPPER_CASE }, // 817
!         { "usage", USAGE }, // 818
!         { "using", USING }, // 819
!         { "usubstr", USUBSTR }, // 820
!         { "usupplementary", USUPPLEMENTARY }, // 821
!         { "utility", UTILITY }, // 822
!         { "uuid4", UUID4 }, // 823
!         { "uvalid", UVALID }, // 824
!         { "uwidth", UWIDTH }, // 825
!         { "value", VALUE }, // 826
!         { "variance", VARIANCE }, // 827
!         { "varying", VARYING }, // 828
!         { "volatile", VOLATILE }, // 829
!         { "when-compiled", WHEN_COMPILED }, // 830
!         { "with", WITH }, // 831
!         { "working-storage", WORKING_STORAGE }, // 832
!         { "xml", XML }, // 833
!         { "xmlgenerate", XMLGENERATE }, // 834
!         { "xmlparse", XMLPARSE }, // 835
!         { "year-to-yyyy", YEAR_TO_YYYY }, // 836
!         { "yyyyddd", YYYYDDD }, // 837
!         { "yyyymmdd", YYYYMMDD }, // 838
!         { "arithmetic", ARITHMETIC }, // 839
!         { "attribute", ATTRIBUTE }, // 840
!         { "auto", AUTO }, // 841
!         { "automatic", AUTOMATIC }, // 842
!         { "away-from-zero", AWAY_FROM_ZERO }, // 843
!         { "background-color", BACKGROUND_COLOR }, // 844
!         { "bell", BELL }, // 845
!         { "binary-encoding", BINARY_ENCODING }, // 846
!         { "blink", BLINK }, // 847
!         { "capacity", CAPACITY }, // 848
!         { "center", CENTER }, // 849
!         { "classification", CLASSIFICATION }, // 850
!         { "cycle", CYCLE }, // 851
!         { "decimal-encoding", DECIMAL_ENCODING }, // 852
!         { "entry-convention", ENTRY_CONVENTION }, // 853
!         { "eol", EOL }, // 854
!         { "eos", EOS }, // 855
!         { "erase", ERASE }, // 856
!         { "expands", EXPANDS }, // 857
!         { "float-binary", FLOAT_BINARY }, // 858
!         { "float-decimal", FLOAT_DECIMAL }, // 859
!         { "foreground-color", FOREGROUND_COLOR }, // 860
!         { "forever", FOREVER }, // 861
!         { "full", FULL }, // 862
!         { "highlight", HIGHLIGHT }, // 863
!         { "high-order-left", HIGH_ORDER_LEFT }, // 864
!         { "high-order-right", HIGH_ORDER_RIGHT }, // 865
!         { "ignoring", IGNORING }, // 866
!         { "implements", IMPLEMENTS }, // 867
!         { "initialized", INITIALIZED }, // 868
!         { "intermediate", INTERMEDIATE }, // 869
!         { "lc-all", LC_ALL_kw }, // 870
!         { "lc-collate", LC_COLLATE_kw }, // 871
!         { "lc-ctype", LC_CTYPE_kw }, // 872
!         { "lc-messages", LC_MESSAGES_kw }, // 873
!         { "lc-monetary", LC_MONETARY_kw }, // 874
!         { "lc-numeric", LC_NUMERIC_kw }, // 875
!         { "lc-time", LC_TIME_kw }, // 876
!         { "lowlight", LOWLIGHT }, // 877
!         { "nearest-away-from-zero", NEAREST_AWAY_FROM_ZERO }, // 878
!         { "nearest-even", NEAREST_EVEN }, // 879
!         { "nearest-toward-zero", NEAREST_TOWARD_ZERO }, // 880
!         { "none", NONE }, // 881
!         { "normal", NORMAL }, // 882
!         { "numbers", NUMBERS }, // 883
!         { "prefixed", PREFIXED }, // 884
!         { "previous", PREVIOUS }, // 885
!         { "prohibited", PROHIBITED }, // 886
!         { "relation", RELATION }, // 887
!         { "required", REQUIRED }, // 888
!         { "reverse-video", REVERSE_VIDEO }, // 889
!         { "rounding", ROUNDING }, // 890
!         { "seconds", SECONDS }, // 891
!         { "secure", SECURE }, // 892
!         { "short", SHORT }, // 893
!         { "signed", SIGNED_kw }, // 894
!         { "standard-binary", STANDARD_BINARY }, // 895
!         { "standard-decimal", STANDARD_DECIMAL }, // 896
!         { "statement", STATEMENT }, // 897
!         { "step", STEP }, // 898
!         { "structure", STRUCTURE }, // 899
!         { "toward-greater", TOWARD_GREATER }, // 900
!         { "toward-lesser", TOWARD_LESSER }, // 901
!         { "truncation", TRUNCATION }, // 902
!         { "ucs-4", UCS_4 }, // 903
!         { "underline", UNDERLINE }, // 904
!         { "unsigned", UNSIGNED_kw }, // 905
!         { "utf-16", UTF_16 }, // 906
!         { "utf-8", UTF_8 }, // 907
!         { "address", ADDRESS }, // 908
!         { "end-accept", END_ACCEPT }, // 909
!         { "end-add", END_ADD }, // 910
!         { "end-call", END_CALL }, // 911
!         { "end-compute", END_COMPUTE }, // 912
!         { "end-delete", END_DELETE }, // 913
!         { "end-display", END_DISPLAY }, // 914
!         { "end-divide", END_DIVIDE }, // 915
!         { "end-evaluate", END_EVALUATE }, // 916
!         { "end-multiply", END_MULTIPLY }, // 917
!         { "end-perform", END_PERFORM }, // 918
!         { "end-read", END_READ }, // 919
!         { "end-return", END_RETURN }, // 920
!         { "end-rewrite", END_REWRITE }, // 921
!         { "end-search", END_SEARCH }, // 922
!         { "end-start", END_START }, // 923
!         { "end-string", END_STRING }, // 924
!         { "end-subtract", END_SUBTRACT }, // 925
!         { "end-unstring", END_UNSTRING }, // 926
!         { "end-write", END_WRITE }, // 927
!         { "end-if", END_IF }, // 928
!         { "thru", THRU }, // 929
!         { "through", THRU }, // 929
!         { "or", OR }, // 930
!         { "and", AND }, // 931
!         { "not", NOT }, // 932
!         { "ne", NE }, // 933
!         { "le", LE }, // 934
!         { "ge", GE }, // 935
!         { "pow", POW }, // 936
!         { "neg", NEG }, // 937
  };
  
  token_names = {
!         "IDENTIFICATION", // 0 (258)
!         "ENVIRONMENT", // 1 (259)
!         "PROCEDURE", // 2 (260)
!         "DATA", // 3 (261)
!         "FILE", // 4 (262)
!         "INPUT-OUTPUT", // 5 (263)
!         "LINKAGE", // 6 (264)
!         "LOCAL-STORAGE", // 7 (265)
!         "WORKING-STORAGE", // 8 (266)
!         "OBJECT-COMPUTER", // 9 (267)
!         "DISPLAY-OF", // 10 (268)
!         "END-FUNCTION", // 11 (269)
!         "END-PROGRAM", // 12 (270)
!         "END-SUBPROGRAM", // 13 (271)
!         "JUSTIFIED", // 14 (272)
!         "RETURNING", // 15 (273)
!         "NO-CONDITION", // 16 (274)
!         "ALNUM", // 17 (275)
!         "ALPHED", // 18 (276)
!         "ERROR", // 19 (277)
!         "EXCEPTION", // 20 (278)
!         "SIZE-ERROR", // 21 (279)
!         "EXCEPTION-NAME", // 22 (280)
!         "LEVEL", // 23 (281)
!         "LEVEL66", // 24 (282)
!         "LEVEL78", // 25 (283)
!         "LEVEL88", // 26 (284)
!         "CLASS-NAME", // 27 (285)
!         "NAME", // 28 (286)
!         "NAME88", // 29 (287)
!         "NUME", // 30 (288)
!         "NUMED", // 31 (289)
!         "NUMED-CR", // 32 (290)
!         "NUMED-DB", // 33 (291)
!         "NINEDOT", // 34 (292)
!         "NINES", // 35 (293)
!         "NINEV", // 36 (294)
!         "PIC-P", // 37 (295)
!         "SPACES", // 38 (296)
!         "LITERAL", // 39 (297)
!         "END", // 40 (298)
!         "EOP", // 41 (299)
!         "FILENAME", // 42 (300)
!         "INVALID", // 43 (301)
!         "NUMBER", // 44 (302)
!         "NEGATIVE", // 45 (303)
!         "NUMSTR", // 46 (304)
!         "OVERFLOW", // 47 (305)
!         "COMPUTATIONAL", // 48 (306)
!         "PERFORM", // 49 (307)
!         "BACKWARD", // 50 (308)
!         "POSITIVE", // 51 (309)
!         "POINTER", // 52 (310)
!         "SECTION", // 53 (311)
!         "STANDARD-ALPHABET", // 54 (312)
!         "SWITCH", // 55 (313)
!         "UPSI", // 56 (314)
!         "ZERO", // 57 (315)
!         "SYSIN", // 58 (316)
!         "SYSIPT", // 59 (317)
!         "SYSOUT", // 60 (318)
!         "SYSLIST", // 61 (319)
!         "SYSLST", // 62 (320)
!         "SYSPUNCH", // 63 (321)
!         "SYSPCH", // 64 (322)
!         "CONSOLE", // 65 (323)
!         "C01", // 66 (324)
!         "C02", // 67 (325)
!         "C03", // 68 (326)
!         "C04", // 69 (327)
!         "C05", // 70 (328)
!         "C06", // 71 (329)
!         "C07", // 72 (330)
!         "C08", // 73 (331)
!         "C09", // 74 (332)
!         "C10", // 75 (333)
!         "C11", // 76 (334)
!         "C12", // 77 (335)
!         "CSP", // 78 (336)
!         "S01", // 79 (337)
!         "S02", // 80 (338)
!         "S03", // 81 (339)
!         "S04", // 82 (340)
!         "S05", // 83 (341)
!         "AFP-5A", // 84 (342)
!         "STDIN", // 85 (343)
!         "STDOUT", // 86 (344)
!         "STDERR", // 87 (345)
!         "LIST", // 88 (346)
!         "MAP", // 89 (347)
!         "NOLIST", // 90 (348)
!         "NOMAP", // 91 (349)
!         "NOSOURCE", // 92 (350)
!         "MIGHT-BE", // 93 (351)
!         "FUNCTION-UDF", // 94 (352)
!         "FUNCTION-UDF-0", // 95 (353)
!         "DATE-FMT", // 96 (354)
!         "TIME-FMT", // 97 (355)
!         "DATETIME-FMT", // 98 (356)
!         "BASIS", // 99 (357)
!         "CBL", // 100 (358)
!         "CONSTANT", // 101 (359)
!         "COPY", // 102 (360)
!         "DEFINED", // 103 (361)
!         "ENTER", // 104 (362)
!         "FEATURE", // 105 (363)
!         "INSERTT", // 106 (364)
!         "LSUB", // 107 (365)
!         "PARAMETER", // 108 (366)
!         "OVERRIDE", // 109 (367)
!         "READY", // 110 (368)
!         "RESET", // 111 (369)
!         "RSUB", // 112 (370)
!         "SERVICE-RELOAD", // 113 (371)
!         "STAR-CBL", // 114 (372)
!         "SUBSCRIPT", // 115 (373)
!         "SUPPRESS", // 116 (374)
!         "TITLE", // 117 (375)
!         "TRACE", // 118 (376)
!         "USE", // 119 (377)
!         "COBOL-WORDS", // 120 (378)
!         "EQUATE", // 121 (379)
!         "UNDEFINE", // 122 (380)
!         "CDF-DEFINE", // 123 (381)
!         "CDF-DISPLAY", // 124 (382)
!         "CDF-IF", // 125 (383)
!         "CDF-ELSE", // 126 (384)
!         "CDF-END-IF", // 127 (385)
!         "CDF-EVALUATE", // 128 (386)
!         "CDF-WHEN", // 129 (387)
!         "CDF-END-EVALUATE", // 130 (388)
!         "CALL-COBOL", // 131 (389)
!         "CALL-VERBATIM", // 132 (390)
!         "IF", // 133 (391)
!         "THEN", // 134 (392)
!         "ELSE", // 135 (393)
!         "SENTENCE", // 136 (394)
!         "ACCEPT", // 137 (395)
!         "ADD", // 138 (396)
!         "ALTER", // 139 (397)
!         "CALL", // 140 (398)
!         "CANCEL", // 141 (399)
!         "CLOSE", // 142 (400)
!         "COMPUTE", // 143 (401)
!         "CONTINUE", // 144 (402)
!         "DELETE", // 145 (403)
!         "DISPLAY", // 146 (404)
!         "DIVIDE", // 147 (405)
!         "EVALUATE", // 148 (406)
!         "EXIT", // 149 (407)
!         "FILLER", // 150 (408)
!         "GOBACK", // 151 (409)
!         "GOTO", // 152 (410)
!         "INITIALIZE", // 153 (411)
!         "INSPECT", // 154 (412)
!         "MERGE", // 155 (413)
!         "MOVE", // 156 (414)
!         "MULTIPLY", // 157 (415)
!         "OPEN", // 158 (416)
!         "PARAGRAPH", // 159 (417)
!         "READ", // 160 (418)
!         "RELEASE", // 161 (419)
!         "RETURN", // 162 (420)
!         "REWRITE", // 163 (421)
!         "SEARCH", // 164 (422)
!         "SET", // 165 (423)
!         "SELECT", // 166 (424)
!         "SORT", // 167 (425)
!         "SORT-MERGE", // 168 (426)
!         "STRING", // 169 (427)
!         "STOP", // 170 (428)
!         "SUBTRACT", // 171 (429)
!         "START", // 172 (430)
!         "UNSTRING", // 173 (431)
!         "WRITE", // 174 (432)
!         "WHEN", // 175 (433)
!         "ABS", // 176 (434)
!         "ACCESS", // 177 (435)
!         "ACOS", // 178 (436)
!         "ACTUAL", // 179 (437)
!         "ADVANCING", // 180 (438)
!         "AFTER", // 181 (439)
!         "ALL", // 182 (440)
!         "ALLOCATE", // 183 (441)
!         "ALPHABET", // 184 (442)
!         "ALPHABETIC", // 185 (443)
!         "ALPHABETIC-LOWER", // 186 (444)
!         "ALPHABETIC-UPPER", // 187 (445)
!         "ALPHANUMERIC", // 188 (446)
!         "ALPHANUMERIC-EDITED", // 189 (447)
!         "ALSO", // 190 (448)
!         "ALTERNATE", // 191 (449)
!         "ANNUITY", // 192 (450)
!         "ANUM", // 193 (451)
!         "ANY", // 194 (452)
!         "ANYCASE", // 195 (453)
!         "APPLY", // 196 (454)
!         "ARE", // 197 (455)
!         "AREA", // 198 (456)
!         "AREAS", // 199 (457)
!         "AS", // 200 (458)
!         "ASCENDING", // 201 (459)
!         "ACTIVATING", // 202 (460)
!         "ASIN", // 203 (461)
!         "ASSIGN", // 204 (462)
!         "AT", // 205 (463)
!         "ATAN", // 206 (464)
!         "BASED", // 207 (465)
!         "BASECONVERT", // 208 (466)
!         "BEFORE", // 209 (467)
!         "BINARY", // 210 (468)
!         "BIT", // 211 (469)
!         "BIT-OF", // 212 (470)
!         "BIT-TO-CHAR", // 213 (471)
!         "BLANK", // 214 (472)
!         "BLOCK", // 215 (473)
!         "BOOLEAN-OF-INTEGER", // 216 (474)
!         "BOTTOM", // 217 (475)
!         "BY", // 218 (476)
!         "BYTE", // 219 (477)
!         "BYTE-LENGTH", // 220 (478)
!         "CF", // 221 (479)
!         "CH", // 222 (480)
!         "CHANGED", // 223 (481)
!         "CHAR", // 224 (482)
!         "CHAR-NATIONAL", // 225 (483)
!         "CHARACTER", // 226 (484)
!         "CHARACTERS", // 227 (485)
!         "CHECKING", // 228 (486)
!         "CLASS", // 229 (487)
!         "COBOL", // 230 (488)
!         "CODE", // 231 (489)
!         "CODE-SET", // 232 (490)
!         "COLLATING", // 233 (491)
!         "COLUMN", // 234 (492)
!         "COMBINED-DATETIME", // 235 (493)
!         "COMMA", // 236 (494)
!         "COMMAND-LINE", // 237 (495)
!         "COMMAND-LINE-COUNT", // 238 (496)
!         "COMMIT", // 239 (497)
!         "COMMON", // 240 (498)
!         "CONCAT", // 241 (499)
!         "CONDITION", // 242 (500)
!         "CONFIGURATION", // 243 (501)
!         "CONTAINS", // 244 (502)
!         "CONTENT", // 245 (503)
!         "CONTROL", // 246 (504)
!         "CONTROLS", // 247 (505)
!         "CONVERT", // 248 (506)
!         "CONVERTING", // 249 (507)
!         "CORRESPONDING", // 250 (508)
!         "COS", // 251 (509)
!         "COUNT", // 252 (510)
!         "CURRENCY", // 253 (511)
!         "CURRENT", // 254 (512)
!         "CURRENT-DATE", // 255 (513)
!         "DATA", // 256 (514)
!         "DATE", // 257 (515)
!         "DATE-COMPILED", // 258 (516)
!         "DATE-OF-INTEGER", // 259 (517)
!         "DATE-TO-YYYYMMDD", // 260 (518)
!         "DATE-WRITTEN", // 261 (519)
!         "DAY", // 262 (520)
!         "DAY-OF-INTEGER", // 263 (521)
!         "DAY-OF-WEEK", // 264 (522)
!         "DAY-TO-YYYYDDD", // 265 (523)
!         "DBCS", // 266 (524)
!         "DE", // 267 (525)
!         "DEBUGGING", // 268 (526)
!         "DECIMAL-POINT", // 269 (527)
!         "DECLARATIVES", // 270 (528)
!         "DEFAULT", // 271 (529)
!         "DELIMITED", // 272 (530)
!         "DELIMITER", // 273 (531)
!         "DEPENDING", // 274 (532)
!         "DESCENDING", // 275 (533)
!         "DETAIL", // 276 (534)
!         "DIRECT", // 277 (535)
!         "DIRECT-ACCESS", // 278 (536)
!         "DOWN", // 279 (537)
!         "DUPLICATES", // 280 (538)
!         "DYNAMIC", // 281 (539)
!         "E", // 282 (540)
!         "EBCDIC", // 283 (541)
!         "EC", // 284 (542)
!         "EGCS", // 285 (543)
!         "ENTRY", // 286 (544)
!         "ENVIRONMENT", // 287 (545)
!         "EQUAL", // 288 (546)
!         "EVERY", // 289 (547)
!         "EXAMINE", // 290 (548)
!         "EXHIBIT", // 291 (549)
!         "EXP", // 292 (550)
!         "EXP10", // 293 (551)
!         "EXTEND", // 294 (552)
!         "EXTERNAL", // 295 (553)
!         "EXCEPTION-FILE", // 296 (554)
!         "EXCEPTION-FILE-N", // 297 (555)
!         "EXCEPTION-LOCATION", // 298 (556)
!         "EXCEPTION-LOCATION-N", // 299 (557)
!         "EXCEPTION-STATEMENT", // 300 (558)
!         "EXCEPTION-STATUS", // 301 (559)
!         "FACTORIAL", // 302 (560)
!         "FALSE", // 303 (561)
!         "FD", // 304 (562)
!         "FILE-CONTROL", // 305 (563)
!         "FILE", // 306 (564)
!         "FILE-LIMIT", // 307 (565)
!         "FINAL", // 308 (566)
!         "FINALLY", // 309 (567)
!         "FIND-STRING", // 310 (568)
!         "FIRST", // 311 (569)
!         "FIXED", // 312 (570)
!         "FOOTING", // 313 (571)
!         "FOR", // 314 (572)
!         "FORMATTED-CURRENT-DATE", // 315 (573)
!         "FORMATTED-DATE", // 316 (574)
!         "FORMATTED-DATETIME", // 317 (575)
!         "FORMATTED-TIME", // 318 (576)
!         "FORM-OVERFLOW", // 319 (577)
!         "FREE", // 320 (578)
!         "FRACTION-PART", // 321 (579)
!         "FROM", // 322 (580)
!         "FUNCTION", // 323 (581)
!         "GENERATE", // 324 (582)
!         "GIVING", // 325 (583)
!         "GLOBAL", // 326 (584)
!         "GO", // 327 (585)
!         "GROUP", // 328 (586)
!         "HEADING", // 329 (587)
!         "HEX", // 330 (588)
!         "HEX-OF", // 331 (589)
!         "HEX-TO-CHAR", // 332 (590)
!         "HIGH-VALUES", // 333 (591)
!         "HIGHEST-ALGEBRAIC", // 334 (592)
!         "HOLD", // 335 (593)
!         "IBM-360", // 336 (594)
!         "IN", // 337 (595)
!         "INCLUDE", // 338 (596)
!         "INDEX", // 339 (597)
!         "INDEXED", // 340 (598)
!         "INDICATE", // 341 (599)
!         "INITIAL", // 342 (600)
!         "INITIATE", // 343 (601)
!         "INPUT", // 344 (602)
!         "INSTALLATION", // 345 (603)
!         "INTERFACE", // 346 (604)
!         "INTEGER", // 347 (605)
!         "INTEGER-OF-BOOLEAN", // 348 (606)
!         "INTEGER-OF-DATE", // 349 (607)
!         "INTEGER-OF-DAY", // 350 (608)
!         "INTEGER-OF-FORMATTED-DATE", // 351 (609)
!         "INTEGER-PART", // 352 (610)
!         "INTO", // 353 (611)
!         "INTRINSIC", // 354 (612)
!         "INVOKE", // 355 (613)
!         "I-O", // 356 (614)
!         "I-O-CONTROL", // 357 (615)
!         "IS", // 358 (616)
!         "ISNT", // 359 (617)
!         "KANJI", // 360 (618)
!         "KEY", // 361 (619)
!         "LABEL", // 362 (620)
!         "LAST", // 363 (621)
!         "LEADING", // 364 (622)
!         "LEFT", // 365 (623)
!         "LENGTH", // 366 (624)
!         "LENGTH-OF", // 367 (625)
!         "LIMIT", // 368 (626)
!         "LIMITS", // 369 (627)
!         "LINE", // 370 (628)
!         "LINES", // 371 (629)
!         "LINE-COUNTER", // 372 (630)
!         "LINAGE", // 373 (631)
!         "LINKAGE", // 374 (632)
!         "LOCALE", // 375 (633)
!         "LOCALE-COMPARE", // 376 (634)
!         "LOCALE-DATE", // 377 (635)
!         "LOCALE-TIME", // 378 (636)
!         "LOCALE-TIME-FROM-SECONDS", // 379 (637)
!         "LOCAL-STORAGE", // 380 (638)
!         "LOCATION", // 381 (639)
!         "LOCK", // 382 (640)
!         "LOCK-ON", // 383 (641)
!         "LOG", // 384 (642)
!         "LOG10", // 385 (643)
!         "LOWER-CASE", // 386 (644)
!         "LOW-VALUES", // 387 (645)
!         "LOWEST-ALGEBRAIC", // 388 (646)
!         "LPAREN", // 389 (647)
!         "MANUAL", // 390 (648)
!         "MAXX", // 391 (649)
!         "MEAN", // 392 (650)
!         "MEDIAN", // 393 (651)
!         "MIDRANGE", // 394 (652)
!         "MINN", // 395 (653)
!         "MULTIPLE", // 396 (654)
!         "MOD", // 397 (655)
!         "MODE", // 398 (656)
!         "MODULE-NAME", // 399 (657)
!         "NAMED", // 400 (658)
!         "NAT", // 401 (659)
!         "NATIONAL", // 402 (660)
!         "NATIONAL-EDITED", // 403 (661)
!         "NATIONAL-OF", // 404 (662)
!         "NATIVE", // 405 (663)
!         "NESTED", // 406 (664)
!         "NEXT", // 407 (665)
!         "NO", // 408 (666)
!         "NOTE", // 409 (667)
!         "NULLS", // 410 (668)
!         "NULLPTR", // 411 (669)
!         "NUMERIC", // 412 (670)
!         "NUMERIC-EDITED", // 413 (671)
!         "NUMVAL", // 414 (672)
!         "NUMVAL-C", // 415 (673)
!         "NUMVAL-F", // 416 (674)
!         "OCCURS", // 417 (675)
!         "OF", // 418 (676)
!         "OFF", // 419 (677)
!         "OMITTED", // 420 (678)
!         "ON", // 421 (679)
!         "ONLY", // 422 (680)
!         "OPTIONAL", // 423 (681)
!         "OPTIONS", // 424 (682)
!         "ORD", // 425 (683)
!         "ORDER", // 426 (684)
!         "ORD-MAX", // 427 (685)
!         "ORD-MIN", // 428 (686)
!         "ORGANIZATION", // 429 (687)
!         "OTHER", // 430 (688)
!         "OTHERWISE", // 431 (689)
!         "OUTPUT", // 432 (690)
!         "PACKED-DECIMAL", // 433 (691)
!         "PADDING", // 434 (692)
!         "PAGE", // 435 (693)
!         "PAGE-COUNTER", // 436 (694)
!         "PF", // 437 (695)
!         "PH", // 438 (696)
!         "PI", // 439 (697)
!         "PIC", // 440 (698)
!         "PICTURE", // 441 (699)
!         "PLUS", // 442 (700)
!         "PRESENT-VALUE", // 443 (701)
!         "PRINT-SWITCH", // 444 (702)
!         "PROCEDURE", // 445 (703)
!         "PROCEDURES", // 446 (704)
!         "PROCEED", // 447 (705)
!         "PROCESS", // 448 (706)
!         "PROGRAM-ID", // 449 (707)
!         "PROGRAM", // 450 (708)
!         "PROPERTY", // 451 (709)
!         "PROTOTYPE", // 452 (710)
!         "PSEUDOTEXT", // 453 (711)
!         "QUOTES", // 454 (712)
!         "RANDOM", // 455 (713)
!         "RANDOM-SEED", // 456 (714)
!         "RANGE", // 457 (715)
!         "RAISE", // 458 (716)
!         "RAISING", // 459 (717)
!         "RD", // 460 (718)
!         "RECORD", // 461 (719)
!         "RECORDING", // 462 (720)
!         "RECORDS", // 463 (721)
!         "RECURSIVE", // 464 (722)
!         "REDEFINES", // 465 (723)
!         "REEL", // 466 (724)
!         "REFERENCE", // 467 (725)
!         "RELATIVE", // 468 (726)
!         "REM", // 469 (727)
!         "REMAINDER", // 470 (728)
!         "REMARKS", // 471 (729)
!         "REMOVAL", // 472 (730)
!         "RENAMES", // 473 (731)
!         "REPLACE", // 474 (732)
!         "REPLACING", // 475 (733)
!         "REPORT", // 476 (734)
!         "REPORTING", // 477 (735)
!         "REPORTS", // 478 (736)
!         "REPOSITORY", // 479 (737)
!         "RERUN", // 480 (738)
!         "RESERVE", // 481 (739)
!         "RESTRICTED", // 482 (740)
!         "RESUME", // 483 (741)
!         "REVERSE", // 484 (742)
!         "REVERSED", // 485 (743)
!         "REWIND", // 486 (744)
!         "RF", // 487 (745)
!         "RH", // 488 (746)
!         "RIGHT", // 489 (747)
!         "ROUNDED", // 490 (748)
!         "RUN", // 491 (749)
!         "SAME", // 492 (750)
!         "SCREEN", // 493 (751)
!         "SD", // 494 (752)
!         "SECONDS-FROM-FORMATTED-TIME", // 495 (753)
!         "SECONDS-PAST-MIDNIGHT", // 496 (754)
!         "SECURITY", // 497 (755)
!         "SEPARATE", // 498 (756)
!         "SEQUENCE", // 499 (757)
!         "SEQUENTIAL", // 500 (758)
!         "SHARING", // 501 (759)
!         "SIMPLE-EXIT", // 502 (760)
!         "SIGN", // 503 (761)
!         "SIN", // 504 (762)
!         "SIZE", // 505 (763)
!         "SMALLEST-ALGEBRAIC", // 506 (764)
!         "SOURCE", // 507 (765)
!         "SOURCE-COMPUTER", // 508 (766)
!         "SPECIAL-NAMES", // 509 (767)
!         "SQRT", // 510 (768)
!         "STACK", // 511 (769)
!         "STANDARD", // 512 (770)
!         "STANDARD-1", // 513 (771)
!         "STANDARD-DEVIATION", // 514 (772)
!         "STANDARD-COMPARE", // 515 (773)
!         "STATUS", // 516 (774)
!         "STRONG", // 517 (775)
!         "SUBSTITUTE", // 518 (776)
!         "SUM", // 519 (777)
!         "SYMBOL", // 520 (778)
!         "SYMBOLIC", // 521 (779)
!         "SYNCHRONIZED", // 522 (780)
!         "TALLY", // 523 (781)
!         "TALLYING", // 524 (782)
!         "TAN", // 525 (783)
!         "TERMINATE", // 526 (784)
!         "TEST", // 527 (785)
!         "TEST-DATE-YYYYMMDD", // 528 (786)
!         "TEST-DAY-YYYYDDD", // 529 (787)
!         "TEST-FORMATTED-DATETIME", // 530 (788)
!         "TEST-NUMVAL", // 531 (789)
!         "TEST-NUMVAL-C", // 532 (790)
!         "TEST-NUMVAL-F", // 533 (791)
!         "THAN", // 534 (792)
!         "TIME", // 535 (793)
!         "TIMES", // 536 (794)
!         "TO", // 537 (795)
!         "TOP", // 538 (796)
!         "TOP-LEVEL", // 539 (797)
!         "TRACKS", // 540 (798)
!         "TRACK-AREA", // 541 (799)
!         "TRAILING", // 542 (800)
!         "TRANSFORM", // 543 (801)
!         "TRIM", // 544 (802)
!         "TRUE", // 545 (803)
!         "TRY", // 546 (804)
!         "TURN", // 547 (805)
!         "TYPE", // 548 (806)
!         "TYPEDEF", // 549 (807)
!         "ULENGTH", // 550 (808)
!         "UNBOUNDED", // 551 (809)
!         "UNIT", // 552 (810)
!         "UNITS", // 553 (811)
!         "UNIT-RECORD", // 554 (812)
!         "UNTIL", // 555 (813)
!         "UP", // 556 (814)
!         "UPON", // 557 (815)
!         "UPOS", // 558 (816)
!         "UPPER-CASE", // 559 (817)
!         "USAGE", // 560 (818)
!         "USING", // 561 (819)
!         "USUBSTR", // 562 (820)
!         "USUPPLEMENTARY", // 563 (821)
!         "UTILITY", // 564 (822)
!         "UUID4", // 565 (823)
!         "UVALID", // 566 (824)
!         "UWIDTH", // 567 (825)
!         "VALUE", // 568 (826)
!         "VARIANCE", // 569 (827)
!         "VARYING", // 570 (828)
!         "VOLATILE", // 571 (829)
!         "WHEN-COMPILED", // 572 (830)
!         "WITH", // 573 (831)
!         "WORKING-STORAGE", // 574 (832)
!         "XML", // 575 (833)
!         "XMLGENERATE", // 576 (834)
!         "XMLPARSE", // 577 (835)
!         "YEAR-TO-YYYY", // 578 (836)
!         "YYYYDDD", // 579 (837)
!         "YYYYMMDD", // 580 (838)
!         "ARITHMETIC", // 581 (839)
!         "ATTRIBUTE", // 582 (840)
!         "AUTO", // 583 (841)
!         "AUTOMATIC", // 584 (842)
!         "AWAY-FROM-ZERO", // 585 (843)
!         "BACKGROUND-COLOR", // 586 (844)
!         "BELL", // 587 (845)
!         "BINARY-ENCODING", // 588 (846)
!         "BLINK", // 589 (847)
!         "CAPACITY", // 590 (848)
!         "CENTER", // 591 (849)
!         "CLASSIFICATION", // 592 (850)
!         "CYCLE", // 593 (851)
!         "DECIMAL-ENCODING", // 594 (852)
!         "ENTRY-CONVENTION", // 595 (853)
!         "EOL", // 596 (854)
!         "EOS", // 597 (855)
!         "ERASE", // 598 (856)
!         "EXPANDS", // 599 (857)
!         "FLOAT-BINARY", // 600 (858)
!         "FLOAT-DECIMAL", // 601 (859)
!         "FOREGROUND-COLOR", // 602 (860)
!         "FOREVER", // 603 (861)
!         "FULL", // 604 (862)
!         "HIGHLIGHT", // 605 (863)
!         "HIGH-ORDER-LEFT", // 606 (864)
!         "HIGH-ORDER-RIGHT", // 607 (865)
!         "IGNORING", // 608 (866)
!         "IMPLEMENTS", // 609 (867)
!         "INITIALIZED", // 610 (868)
!         "INTERMEDIATE", // 611 (869)
!         "LC-ALL", // 612 (870)
!         "LC-COLLATE", // 613 (871)
!         "LC-CTYPE", // 614 (872)
!         "LC-MESSAGES", // 615 (873)
!         "LC-MONETARY", // 616 (874)
!         "LC-NUMERIC", // 617 (875)
!         "LC-TIME", // 618 (876)
!         "LOWLIGHT", // 619 (877)
!         "NEAREST-AWAY-FROM-ZERO", // 620 (878)
!         "NEAREST-EVEN", // 621 (879)
!         "NEAREST-TOWARD-ZERO", // 622 (880)
!         "NONE", // 623 (881)
!         "NORMAL", // 624 (882)
!         "NUMBERS", // 625 (883)
!         "PREFIXED", // 626 (884)
!         "PREVIOUS", // 627 (885)
!         "PROHIBITED", // 628 (886)
!         "RELATION", // 629 (887)
!         "REQUIRED", // 630 (888)
!         "REVERSE-VIDEO", // 631 (889)
!         "ROUNDING", // 632 (890)
!         "SECONDS", // 633 (891)
!         "SECURE", // 634 (892)
!         "SHORT", // 635 (893)
!         "SIGNED", // 636 (894)
!         "STANDARD-BINARY", // 637 (895)
!         "STANDARD-DECIMAL", // 638 (896)
!         "STATEMENT", // 639 (897)
!         "STEP", // 640 (898)
!         "STRUCTURE", // 641 (899)
!         "TOWARD-GREATER", // 642 (900)
!         "TOWARD-LESSER", // 643 (901)
!         "TRUNCATION", // 644 (902)
!         "UCS-4", // 645 (903)
!         "UNDERLINE", // 646 (904)
!         "UNSIGNED", // 647 (905)
!         "UTF-16", // 648 (906)
!         "UTF-8", // 649 (907)
!         "ADDRESS", // 650 (908)
!         "END-ACCEPT", // 651 (909)
!         "END-ADD", // 652 (910)
!         "END-CALL", // 653 (911)
!         "END-COMPUTE", // 654 (912)
!         "END-DELETE", // 655 (913)
!         "END-DISPLAY", // 656 (914)
!         "END-DIVIDE", // 657 (915)
!         "END-EVALUATE", // 658 (916)
!         "END-MULTIPLY", // 659 (917)
!         "END-PERFORM", // 660 (918)
!         "END-READ", // 661 (919)
!         "END-RETURN", // 662 (920)
!         "END-REWRITE", // 663 (921)
!         "END-SEARCH", // 664 (922)
!         "END-START", // 665 (923)
!         "END-STRING", // 666 (924)
!         "END-SUBTRACT", // 667 (925)
!         "END-UNSTRING", // 668 (926)
!         "END-WRITE", // 669 (927)
!         "END-IF", // 670 (928)
!         "THRU", // 671 (929)
!         "OR", // 672 (930)
!         "AND", // 673 (931)
!         "NOT", // 674 (932)
!         "NE", // 675 (933)
!         "LE", // 676 (934)
!         "GE", // 677 (935)
!         "POW", // 678 (936)
!         "NEG", // 679 (937)
  };
--- 1,1394 ----
  // generated by ./token_names.h.gen ../../build/gcc/cobol/parse.h
! // Tue Jul  8 19:21:28 EDT 2025
  tokens = {
! 	{ "identification", IDENTIFICATION_DIV }, // 258
! 	{ "environment", ENVIRONMENT_DIV }, // 259
! 	{ "procedure", PROCEDURE_DIV }, // 260
! 	{ "data", DATA_DIV }, // 261
! 	{ "file", FILE_SECT }, // 262
! 	{ "input-output", INPUT_OUTPUT_SECT }, // 263
! 	{ "linkage", LINKAGE_SECT }, // 264
! 	{ "local-storage", LOCAL_STORAGE_SECT }, // 265
! 	{ "working-storage", WORKING_STORAGE_SECT }, // 266
! 	{ "object-computer", OBJECT_COMPUTER }, // 267
! 	{ "display-of", DISPLAY_OF }, // 268
! 	{ "end-function", END_FUNCTION }, // 269
! 	{ "end-program", END_PROGRAM }, // 270
! 	{ "end-subprogram", END_SUBPROGRAM }, // 271
! 	{ "justified", JUSTIFIED }, // 272
! 	{ "returning", RETURNING }, // 273
! 	{ "no-condition", NO_CONDITION }, // 274
! 	{ "alnum", ALNUM }, // 275
! 	{ "alphed", ALPHED }, // 276
! 	{ "error", ERROR }, // 277
! 	{ "exception", EXCEPTION }, // 278
! 	{ "size-error", SIZE_ERROR }, // 279
! 	{ "exception-name", EXCEPTION_NAME }, // 280
! 	{ "level", LEVEL }, // 281
! 	{ "level66", LEVEL66 }, // 282
! 	{ "level78", LEVEL78 }, // 283
! 	{ "level88", LEVEL88 }, // 284
! 	{ "class-name", CLASS_NAME }, // 285
! 	{ "name", NAME }, // 286
! 	{ "name88", NAME88 }, // 287
! 	{ "nume", NUME }, // 288
! 	{ "numed", NUMED }, // 289
! 	{ "numed-cr", NUMED_CR }, // 290
! 	{ "numed-db", NUMED_DB }, // 291
! 	{ "ninedot", NINEDOT }, // 292
! 	{ "nines", NINES }, // 293
! 	{ "ninev", NINEV }, // 294
! 	{ "pic-p", PIC_P }, // 295
! 	{ "ones", ONES }, // 296
! 	{ "spaces", SPACES }, // 297
! 	{ "space", SPACES }, // 297
! 	{ "literal", LITERAL }, // 298
! 	{ "end", END }, // 299
! 	{ "eop", EOP }, // 300
! 	{ "filename", FILENAME }, // 301
! 	{ "invalid", INVALID }, // 302
! 	{ "number", NUMBER }, // 303
! 	{ "negative", NEGATIVE }, // 304
! 	{ "numstr", NUMSTR }, // 305
! 	{ "overflow", OVERFLOW_kw }, // 306
! 	{ "binary-integer", BINARY_INTEGER }, // 307
! 	{ "computational", COMPUTATIONAL }, // 308
! 	{ "perform", PERFORM }, // 309
! 	{ "backward", BACKWARD }, // 310
! 	{ "positive", POSITIVE }, // 311
! 	{ "pointer", POINTER }, // 312
! 	{ "section", SECTION }, // 313
! 	{ "standard-alphabet", STANDARD_ALPHABET }, // 314
! 	{ "switch", SWITCH }, // 315
! 	{ "upsi", UPSI }, // 316
! 	{ "zero", ZERO }, // 317
! 	{ "zeros", ZERO }, // 317
! 	{ "zeroes", ZERO }, // 317
! 	{ "sysin", SYSIN }, // 318
! 	{ "sysipt", SYSIPT }, // 319
! 	{ "sysout", SYSOUT }, // 320
! 	{ "syslist", SYSLIST }, // 321
! 	{ "syslst", SYSLST }, // 322
! 	{ "syspunch", SYSPUNCH }, // 323
! 	{ "syspch", SYSPCH }, // 324
! 	{ "console", CONSOLE }, // 325
! 	{ "c01", C01 }, // 326
! 	{ "c02", C02 }, // 327
! 	{ "c03", C03 }, // 328
! 	{ "c04", C04 }, // 329
! 	{ "c05", C05 }, // 330
! 	{ "c06", C06 }, // 331
! 	{ "c07", C07 }, // 332
! 	{ "c08", C08 }, // 333
! 	{ "c09", C09 }, // 334
! 	{ "c10", C10 }, // 335
! 	{ "c11", C11 }, // 336
! 	{ "c12", C12 }, // 337
! 	{ "csp", CSP }, // 338
! 	{ "s01", S01 }, // 339
! 	{ "s02", S02 }, // 340
! 	{ "s03", S03 }, // 341
! 	{ "s04", S04 }, // 342
! 	{ "s05", S05 }, // 343
! 	{ "afp-5a", AFP_5A }, // 344
! 	{ "stdin", STDIN }, // 345
! 	{ "stdout", STDOUT }, // 346
! 	{ "stderr", STDERR }, // 347
! 	{ "list", LIST }, // 348
! 	{ "map", MAP }, // 349
! 	{ "nolist", NOLIST }, // 350
! 	{ "nomap", NOMAP }, // 351
! 	{ "nosource", NOSOURCE }, // 352
! 	{ "might-be", MIGHT_BE }, // 353
! 	{ "function-udf", FUNCTION_UDF }, // 354
! 	{ "function-udf-0", FUNCTION_UDF_0 }, // 355
! 	{ "date-fmt", DATE_FMT }, // 356
! 	{ "time-fmt", TIME_FMT }, // 357
! 	{ "datetime-fmt", DATETIME_FMT }, // 358
! 	{ "basis", BASIS }, // 359
! 	{ "cbl", CBL }, // 360
! 	{ "constant", CONSTANT }, // 361
! 	{ "copy", COPY }, // 362
! 	{ "defined", DEFINED }, // 363
! 	{ "enter", ENTER }, // 364
! 	{ "feature", FEATURE }, // 365
! 	{ "insertt", INSERTT }, // 366
! 	{ "lsub", LSUB }, // 367
! 	{ "parameter", PARAMETER_kw }, // 368
! 	{ "override", OVERRIDE }, // 369
! 	{ "ready", READY }, // 370
! 	{ "reset", RESET }, // 371
! 	{ "rsub", RSUB }, // 372
! 	{ "service-reload", SERVICE_RELOAD }, // 373
! 	{ "star-cbl", STAR_CBL }, // 374
! 	{ "subscript", SUBSCRIPT }, // 375
! 	{ "suppress", SUPPRESS }, // 376
! 	{ "title", TITLE }, // 377
! 	{ "trace", TRACE }, // 378
! 	{ "use", USE }, // 379
! 	{ "cobol-words", COBOL_WORDS }, // 380
! 	{ "equate", EQUATE }, // 381
! 	{ "undefine", UNDEFINE }, // 382
! 	{ "cdf-define", CDF_DEFINE }, // 383
! 	{ "cdf-display", CDF_DISPLAY }, // 384
! 	{ "cdf-if", CDF_IF }, // 385
! 	{ "cdf-else", CDF_ELSE }, // 386
! 	{ "cdf-end-if", CDF_END_IF }, // 387
! 	{ "cdf-evaluate", CDF_EVALUATE }, // 388
! 	{ "cdf-when", CDF_WHEN }, // 389
! 	{ "cdf-end-evaluate", CDF_END_EVALUATE }, // 390
! 	{ "call-convention", CALL_CONVENTION }, // 391
! 	{ "call-cobol", CALL_COBOL }, // 392
! 	{ "call-verbatim", CALL_VERBATIM }, // 393
! 	{ "cdf-push", CDF_PUSH }, // 394
! 	{ "cdf-pop", CDF_POP }, // 395
! 	{ "source-format", SOURCE_FORMAT }, // 396
! 	{ "if", IF }, // 397
! 	{ "then", THEN }, // 398
! 	{ "else", ELSE }, // 399
! 	{ "sentence", SENTENCE }, // 400
! 	{ "accept", ACCEPT }, // 401
! 	{ "add", ADD }, // 402
! 	{ "alter", ALTER }, // 403
! 	{ "call", CALL }, // 404
! 	{ "cancel", CANCEL }, // 405
! 	{ "close", CLOSE }, // 406
! 	{ "compute", COMPUTE }, // 407
! 	{ "continue", CONTINUE }, // 408
! 	{ "delete", DELETE }, // 409
! 	{ "display", DISPLAY }, // 410
! 	{ "divide", DIVIDE }, // 411
! 	{ "evaluate", EVALUATE }, // 412
! 	{ "exit", EXIT }, // 413
! 	{ "filler", FILLER_kw }, // 414
! 	{ "goback", GOBACK }, // 415
! 	{ "goto", GOTO }, // 416
! 	{ "initialize", INITIALIZE }, // 417
! 	{ "inspect", INSPECT }, // 418
! 	{ "merge", MERGE }, // 419
! 	{ "move", MOVE }, // 420
! 	{ "multiply", MULTIPLY }, // 421
! 	{ "open", OPEN }, // 422
! 	{ "paragraph", PARAGRAPH }, // 423
! 	{ "read", READ }, // 424
! 	{ "release", RELEASE }, // 425
! 	{ "return", RETURN }, // 426
! 	{ "rewrite", REWRITE }, // 427
! 	{ "search", SEARCH }, // 428
! 	{ "set", SET }, // 429
! 	{ "select", SELECT }, // 430
! 	{ "sort", SORT }, // 431
! 	{ "sort-merge", SORT_MERGE }, // 432
! 	{ "string", STRING_kw }, // 433
! 	{ "stop", STOP }, // 434
! 	{ "subtract", SUBTRACT }, // 435
! 	{ "start", START }, // 436
! 	{ "unstring", UNSTRING }, // 437
! 	{ "write", WRITE }, // 438
! 	{ "when", WHEN }, // 439
! 	{ "argument-number", ARGUMENT_NUMBER }, // 440
! 	{ "argument-value", ARGUMENT_VALUE }, // 441
! 	{ "environment-name", ENVIRONMENT_NAME }, // 442
! 	{ "environment-value", ENVIRONMENT_VALUE }, // 443
! 	{ "abs", ABS }, // 444
! 	{ "access", ACCESS }, // 445
! 	{ "acos", ACOS }, // 446
! 	{ "actual", ACTUAL }, // 447
! 	{ "advancing", ADVANCING }, // 448
! 	{ "after", AFTER }, // 449
! 	{ "all", ALL }, // 450
! 	{ "allocate", ALLOCATE }, // 451
! 	{ "alphabet", ALPHABET }, // 452
! 	{ "alphabetic", ALPHABETIC }, // 453
! 	{ "alphabetic-lower", ALPHABETIC_LOWER }, // 454
! 	{ "alphabetic-upper", ALPHABETIC_UPPER }, // 455
! 	{ "alphanumeric", ALPHANUMERIC }, // 456
! 	{ "alphanumeric-edited", ALPHANUMERIC_EDITED }, // 457
! 	{ "also", ALSO }, // 458
! 	{ "alternate", ALTERNATE }, // 459
! 	{ "annuity", ANNUITY }, // 460
! 	{ "anum", ANUM }, // 461
! 	{ "any", ANY }, // 462
! 	{ "anycase", ANYCASE }, // 463
! 	{ "apply", APPLY }, // 464
! 	{ "are", ARE }, // 465
! 	{ "area", AREA }, // 466
! 	{ "areas", AREAS }, // 467
! 	{ "as", AS }, // 468
! 	{ "ascending", ASCENDING }, // 469
! 	{ "activating", ACTIVATING }, // 470
! 	{ "asin", ASIN }, // 471
! 	{ "assign", ASSIGN }, // 472
! 	{ "at", AT }, // 473
! 	{ "atan", ATAN }, // 474
! 	{ "based", BASED }, // 475
! 	{ "baseconvert", BASECONVERT }, // 476
! 	{ "before", BEFORE }, // 477
! 	{ "binary", BINARY }, // 478
! 	{ "bit", BIT }, // 479
! 	{ "bit-of", BIT_OF }, // 480
! 	{ "bit-to-char", BIT_TO_CHAR }, // 481
! 	{ "blank", BLANK }, // 482
! 	{ "block", BLOCK_kw }, // 483
! 	{ "boolean-of-integer", BOOLEAN_OF_INTEGER }, // 484
! 	{ "bottom", BOTTOM }, // 485
! 	{ "by", BY }, // 486
! 	{ "byte", BYTE }, // 487
! 	{ "byte-length", BYTE_LENGTH }, // 488
! 	{ "cf", CF }, // 489
! 	{ "ch", CH }, // 490
! 	{ "changed", CHANGED }, // 491
! 	{ "char", CHAR }, // 492
! 	{ "char-national", CHAR_NATIONAL }, // 493
! 	{ "character", CHARACTER }, // 494
! 	{ "characters", CHARACTERS }, // 495
! 	{ "checking", CHECKING }, // 496
! 	{ "class", CLASS }, // 497
! 	{ "cobol", COBOL }, // 498
! 	{ "code", CODE }, // 499
! 	{ "code-set", CODESET }, // 500
! 	{ "collating", COLLATING }, // 501
! 	{ "column", COLUMN }, // 502
! 	{ "combined-datetime", COMBINED_DATETIME }, // 503
! 	{ "comma", COMMA }, // 504
! 	{ "command-line", COMMAND_LINE }, // 505
! 	{ "command-line-count", COMMAND_LINE_COUNT }, // 506
! 	{ "commit", COMMIT }, // 507
! 	{ "common", COMMON }, // 508
! 	{ "concat", CONCAT }, // 509
! 	{ "condition", CONDITION }, // 510
! 	{ "configuration", CONFIGURATION_SECT }, // 511
! 	{ "contains", CONTAINS }, // 512
! 	{ "content", CONTENT }, // 513
! 	{ "control", CONTROL }, // 514
! 	{ "controls", CONTROLS }, // 515
! 	{ "convert", CONVERT }, // 516
! 	{ "converting", CONVERTING }, // 517
! 	{ "corresponding", CORRESPONDING }, // 518
! 	{ "cos", COS }, // 519
! 	{ "count", COUNT }, // 520
! 	{ "currency", CURRENCY }, // 521
! 	{ "current", CURRENT }, // 522
! 	{ "current-date", CURRENT_DATE }, // 523
! 	{ "data", DATA }, // 524
! 	{ "date", DATE }, // 525
! 	{ "date-compiled", DATE_COMPILED }, // 526
! 	{ "date-of-integer", DATE_OF_INTEGER }, // 527
! 	{ "date-to-yyyymmdd", DATE_TO_YYYYMMDD }, // 528
! 	{ "date-written", DATE_WRITTEN }, // 529
! 	{ "day", DAY }, // 530
! 	{ "day-of-integer", DAY_OF_INTEGER }, // 531
! 	{ "day-of-week", DAY_OF_WEEK }, // 532
! 	{ "day-to-yyyyddd", DAY_TO_YYYYDDD }, // 533
! 	{ "dbcs", DBCS }, // 534
! 	{ "de", DE }, // 535
! 	{ "debugging", DEBUGGING }, // 536
! 	{ "decimal-point", DECIMAL_POINT }, // 537
! 	{ "declaratives", DECLARATIVES }, // 538
! 	{ "default", DEFAULT }, // 539
! 	{ "delimited", DELIMITED }, // 540
! 	{ "delimiter", DELIMITER }, // 541
! 	{ "depending", DEPENDING }, // 542
! 	{ "descending", DESCENDING }, // 543
! 	{ "detail", DETAIL }, // 544
! 	{ "direct", DIRECT }, // 545
! 	{ "direct-access", DIRECT_ACCESS }, // 546
! 	{ "down", DOWN }, // 547
! 	{ "duplicates", DUPLICATES }, // 548
! 	{ "dynamic", DYNAMIC }, // 549
! 	{ "e", E }, // 550
! 	{ "ebcdic", EBCDIC }, // 551
! 	{ "ec", EC }, // 552
! 	{ "egcs", EGCS }, // 553
! 	{ "entry", ENTRY }, // 554
! 	{ "environment", ENVIRONMENT }, // 555
! 	{ "equal", EQUAL }, // 556
! 	{ "every", EVERY }, // 557
! 	{ "examine", EXAMINE }, // 558
! 	{ "exhibit", EXHIBIT }, // 559
! 	{ "exp", EXP }, // 560
! 	{ "exp10", EXP10 }, // 561
! 	{ "extend", EXTEND }, // 562
! 	{ "external", EXTERNAL }, // 563
! 	{ "exception-file", EXCEPTION_FILE }, // 564
! 	{ "exception-file-n", EXCEPTION_FILE_N }, // 565
! 	{ "exception-location", EXCEPTION_LOCATION }, // 566
! 	{ "exception-location-n", EXCEPTION_LOCATION_N }, // 567
! 	{ "exception-statement", EXCEPTION_STATEMENT }, // 568
! 	{ "exception-status", EXCEPTION_STATUS }, // 569
! 	{ "factorial", FACTORIAL }, // 570
! 	{ "false", FALSE_kw }, // 571
! 	{ "fd", FD }, // 572
! 	{ "file-control", FILE_CONTROL }, // 573
! 	{ "file", FILE_KW }, // 574
! 	{ "file-limit", FILE_LIMIT }, // 575
! 	{ "final", FINAL }, // 576
! 	{ "finally", FINALLY }, // 577
! 	{ "find-string", FIND_STRING }, // 578
! 	{ "first", FIRST }, // 579
! 	{ "fixed", FIXED }, // 580
! 	{ "footing", FOOTING }, // 581
! 	{ "for", FOR }, // 582
! 	{ "formatted-current-date", FORMATTED_CURRENT_DATE }, // 583
! 	{ "formatted-date", FORMATTED_DATE }, // 584
! 	{ "formatted-datetime", FORMATTED_DATETIME }, // 585
! 	{ "formatted-time", FORMATTED_TIME }, // 586
! 	{ "form-overflow", FORM_OVERFLOW }, // 587
! 	{ "free", FREE }, // 588
! 	{ "fraction-part", FRACTION_PART }, // 589
! 	{ "from", FROM }, // 590
! 	{ "function", FUNCTION }, // 591
! 	{ "generate", GENERATE }, // 592
! 	{ "giving", GIVING }, // 593
! 	{ "global", GLOBAL }, // 594
! 	{ "go", GO }, // 595
! 	{ "group", GROUP }, // 596
! 	{ "heading", HEADING }, // 597
! 	{ "hex", HEX }, // 598
! 	{ "hex-of", HEX_OF }, // 599
! 	{ "hex-to-char", HEX_TO_CHAR }, // 600
! 	{ "high-values", HIGH_VALUES }, // 601
! 	{ "highest-algebraic", HIGHEST_ALGEBRAIC }, // 602
! 	{ "hold", HOLD }, // 603
! 	{ "ibm-360", IBM_360 }, // 604
! 	{ "in", IN }, // 605
! 	{ "include", INCLUDE }, // 606
! 	{ "index", INDEX }, // 607
! 	{ "indexed", INDEXED }, // 608
! 	{ "indicate", INDICATE }, // 609
! 	{ "initial", INITIAL_kw }, // 610
! 	{ "initiate", INITIATE }, // 611
! 	{ "input", INPUT }, // 612
! 	{ "installation", INSTALLATION }, // 613
! 	{ "interface", INTERFACE }, // 614
! 	{ "integer", INTEGER }, // 615
! 	{ "integer-of-boolean", INTEGER_OF_BOOLEAN }, // 616
! 	{ "integer-of-date", INTEGER_OF_DATE }, // 617
! 	{ "integer-of-day", INTEGER_OF_DAY }, // 618
! 	{ "integer-of-formatted-date", INTEGER_OF_FORMATTED_DATE }, // 619
! 	{ "integer-part", INTEGER_PART }, // 620
! 	{ "into", INTO }, // 621
! 	{ "intrinsic", INTRINSIC }, // 622
! 	{ "invoke", INVOKE }, // 623
! 	{ "i-o", IO }, // 624
! 	{ "i-o-control", IO_CONTROL }, // 625
! 	{ "is", IS }, // 626
! 	{ "isnt", ISNT }, // 627
! 	{ "kanji", KANJI }, // 628
! 	{ "key", KEY }, // 629
! 	{ "label", LABEL }, // 630
! 	{ "last", LAST }, // 631
! 	{ "leading", LEADING }, // 632
! 	{ "left", LEFT }, // 633
! 	{ "length", LENGTH }, // 634
! 	{ "length-of", LENGTH_OF }, // 635
! 	{ "limit", LIMIT }, // 636
! 	{ "limits", LIMITS }, // 637
! 	{ "line", LINE }, // 638
! 	{ "lines", LINES }, // 639
! 	{ "line-counter", LINE_COUNTER }, // 640
! 	{ "linage", LINAGE }, // 641
! 	{ "linkage", LINKAGE }, // 642
! 	{ "locale", LOCALE }, // 643
! 	{ "locale-compare", LOCALE_COMPARE }, // 644
! 	{ "locale-date", LOCALE_DATE }, // 645
! 	{ "locale-time", LOCALE_TIME }, // 646
! 	{ "locale-time-from-seconds", LOCALE_TIME_FROM_SECONDS }, // 647
! 	{ "local-storage", LOCAL_STORAGE }, // 648
! 	{ "location", LOCATION }, // 649
! 	{ "lock", LOCK }, // 650
! 	{ "lock-on", LOCK_ON }, // 651
! 	{ "log", LOG }, // 652
! 	{ "log10", LOG10 }, // 653
! 	{ "lower-case", LOWER_CASE }, // 654
! 	{ "low-values", LOW_VALUES }, // 655
! 	{ "lowest-algebraic", LOWEST_ALGEBRAIC }, // 656
! 	{ "lparen", LPAREN }, // 657
! 	{ "manual", MANUAL }, // 658
! 	{ "maxx", MAXX }, // 659
! 	{ "mean", MEAN }, // 660
! 	{ "median", MEDIAN }, // 661
! 	{ "midrange", MIDRANGE }, // 662
! 	{ "minn", MINN }, // 663
! 	{ "multiple", MULTIPLE }, // 664
! 	{ "mod", MOD }, // 665
! 	{ "mode", MODE }, // 666
! 	{ "module-name", MODULE_NAME }, // 667
! 	{ "named", NAMED }, // 668
! 	{ "nat", NAT }, // 669
! 	{ "national", NATIONAL }, // 670
! 	{ "national-edited", NATIONAL_EDITED }, // 671
! 	{ "national-of", NATIONAL_OF }, // 672
! 	{ "native", NATIVE }, // 673
! 	{ "nested", NESTED }, // 674
! 	{ "next", NEXT }, // 675
! 	{ "no", NO }, // 676
! 	{ "note", NOTE }, // 677
! 	{ "nulls", NULLS }, // 678
! 	{ "null", NULLS }, // 678
! 	{ "nullptr", NULLPTR }, // 679
! 	{ "numeric", NUMERIC }, // 680
! 	{ "numeric-edited", NUMERIC_EDITED }, // 681
! 	{ "numval", NUMVAL }, // 682
! 	{ "numval-c", NUMVAL_C }, // 683
! 	{ "numval-f", NUMVAL_F }, // 684
! 	{ "occurs", OCCURS }, // 685
! 	{ "of", OF }, // 686
! 	{ "off", OFF }, // 687
! 	{ "omitted", OMITTED }, // 688
! 	{ "on", ON }, // 689
! 	{ "only", ONLY }, // 690
! 	{ "optional", OPTIONAL }, // 691
! 	{ "options", OPTIONS }, // 692
! 	{ "ord", ORD }, // 693
! 	{ "order", ORDER }, // 694
! 	{ "ord-max", ORD_MAX }, // 695
! 	{ "ord-min", ORD_MIN }, // 696
! 	{ "organization", ORGANIZATION }, // 697
! 	{ "other", OTHER }, // 698
! 	{ "otherwise", OTHERWISE }, // 699
! 	{ "output", OUTPUT }, // 700
! 	{ "packed-decimal", PACKED_DECIMAL }, // 701
! 	{ "padding", PADDING }, // 702
! 	{ "page", PAGE }, // 703
! 	{ "page-counter", PAGE_COUNTER }, // 704
! 	{ "pf", PF }, // 705
! 	{ "ph", PH }, // 706
! 	{ "pi", PI }, // 707
! 	{ "pic", PIC }, // 708
! 	{ "picture", PICTURE }, // 709
! 	{ "plus", PLUS }, // 710
! 	{ "present-value", PRESENT_VALUE }, // 711
! 	{ "print-switch", PRINT_SWITCH }, // 712
! 	{ "procedure", PROCEDURE }, // 713
! 	{ "procedures", PROCEDURES }, // 714
! 	{ "proceed", PROCEED }, // 715
! 	{ "process", PROCESS }, // 716
! 	{ "program-id", PROGRAM_ID }, // 717
! 	{ "program", PROGRAM_kw }, // 718
! 	{ "property", PROPERTY }, // 719
! 	{ "prototype", PROTOTYPE }, // 720
! 	{ "pseudotext", PSEUDOTEXT }, // 721
! 	{ "quotes", QUOTES }, // 722
! 	{ "quote", QUOTES }, // 722
! 	{ "random", RANDOM }, // 723
! 	{ "random-seed", RANDOM_SEED }, // 724
! 	{ "range", RANGE }, // 725
! 	{ "raise", RAISE }, // 726
! 	{ "raising", RAISING }, // 727
! 	{ "rd", RD }, // 728
! 	{ "record", RECORD }, // 729
! 	{ "recording", RECORDING }, // 730
! 	{ "records", RECORDS }, // 731
! 	{ "recursive", RECURSIVE }, // 732
! 	{ "redefines", REDEFINES }, // 733
! 	{ "reel", REEL }, // 734
! 	{ "reference", REFERENCE }, // 735
! 	{ "relative", RELATIVE }, // 736
! 	{ "rem", REM }, // 737
! 	{ "remainder", REMAINDER }, // 738
! 	{ "remarks", REMARKS }, // 739
! 	{ "removal", REMOVAL }, // 740
! 	{ "renames", RENAMES }, // 741
! 	{ "replace", REPLACE }, // 742
! 	{ "replacing", REPLACING }, // 743
! 	{ "report", REPORT }, // 744
! 	{ "reporting", REPORTING }, // 745
! 	{ "reports", REPORTS }, // 746
! 	{ "repository", REPOSITORY }, // 747
! 	{ "rerun", RERUN }, // 748
! 	{ "reserve", RESERVE }, // 749
! 	{ "restricted", RESTRICTED }, // 750
! 	{ "resume", RESUME }, // 751
! 	{ "reverse", REVERSE }, // 752
! 	{ "reversed", REVERSED }, // 753
! 	{ "rewind", REWIND }, // 754
! 	{ "rf", RF }, // 755
! 	{ "rh", RH }, // 756
! 	{ "right", RIGHT }, // 757
! 	{ "rounded", ROUNDED }, // 758
! 	{ "run", RUN }, // 759
! 	{ "same", SAME }, // 760
! 	{ "screen", SCREEN }, // 761
! 	{ "sd", SD }, // 762
! 	{ "seconds-from-formatted-time", SECONDS_FROM_FORMATTED_TIME }, // 763
! 	{ "seconds-past-midnight", SECONDS_PAST_MIDNIGHT }, // 764
! 	{ "security", SECURITY }, // 765
! 	{ "separate", SEPARATE }, // 766
! 	{ "sequence", SEQUENCE }, // 767
! 	{ "sequential", SEQUENTIAL }, // 768
! 	{ "sharing", SHARING }, // 769
! 	{ "simple-exit", SIMPLE_EXIT }, // 770
! 	{ "sign", SIGN }, // 771
! 	{ "sin", SIN }, // 772
! 	{ "size", SIZE }, // 773
! 	{ "smallest-algebraic", SMALLEST_ALGEBRAIC }, // 774
! 	{ "source", SOURCE }, // 775
! 	{ "source-computer", SOURCE_COMPUTER }, // 776
! 	{ "special-names", SPECIAL_NAMES }, // 777
! 	{ "sqrt", SQRT }, // 778
! 	{ "stack", STACK }, // 779
! 	{ "standard", STANDARD }, // 780
! 	{ "standard-1", STANDARD_1 }, // 781
! 	{ "standard-deviation", STANDARD_DEVIATION }, // 782
! 	{ "standard-compare", STANDARD_COMPARE }, // 783
! 	{ "status", STATUS }, // 784
! 	{ "strong", STRONG }, // 785
! 	{ "substitute", SUBSTITUTE }, // 786
! 	{ "sum", SUM }, // 787
! 	{ "symbol", SYMBOL }, // 788
! 	{ "symbolic", SYMBOLIC }, // 789
! 	{ "synchronized", SYNCHRONIZED }, // 790
! 	{ "tally", TALLY }, // 791
! 	{ "tallying", TALLYING }, // 792
! 	{ "tan", TAN }, // 793
! 	{ "terminate", TERMINATE }, // 794
! 	{ "test", TEST }, // 795
! 	{ "test-date-yyyymmdd", TEST_DATE_YYYYMMDD }, // 796
! 	{ "test-day-yyyyddd", TEST_DAY_YYYYDDD }, // 797
! 	{ "test-formatted-datetime", TEST_FORMATTED_DATETIME }, // 798
! 	{ "test-numval", TEST_NUMVAL }, // 799
! 	{ "test-numval-c", TEST_NUMVAL_C }, // 800
! 	{ "test-numval-f", TEST_NUMVAL_F }, // 801
! 	{ "than", THAN }, // 802
! 	{ "time", TIME }, // 803
! 	{ "times", TIMES }, // 804
! 	{ "to", TO }, // 805
! 	{ "top", TOP }, // 806
! 	{ "top-level", TOP_LEVEL }, // 807
! 	{ "tracks", TRACKS }, // 808
! 	{ "track-area", TRACK_AREA }, // 809
! 	{ "trailing", TRAILING }, // 810
! 	{ "transform", TRANSFORM }, // 811
! 	{ "trim", TRIM }, // 812
! 	{ "true", TRUE_kw }, // 813
! 	{ "try", TRY }, // 814
! 	{ "turn", TURN }, // 815
! 	{ "type", TYPE }, // 816
! 	{ "typedef", TYPEDEF }, // 817
! 	{ "ulength", ULENGTH }, // 818
! 	{ "unbounded", UNBOUNDED }, // 819
! 	{ "unit", UNIT }, // 820
! 	{ "units", UNITS }, // 821
! 	{ "unit-record", UNIT_RECORD }, // 822
! 	{ "until", UNTIL }, // 823
! 	{ "up", UP }, // 824
! 	{ "upon", UPON }, // 825
! 	{ "upos", UPOS }, // 826
! 	{ "upper-case", UPPER_CASE }, // 827
! 	{ "usage", USAGE }, // 828
! 	{ "using", USING }, // 829
! 	{ "usubstr", USUBSTR }, // 830
! 	{ "usupplementary", USUPPLEMENTARY }, // 831
! 	{ "utility", UTILITY }, // 832
! 	{ "uuid4", UUID4 }, // 833
! 	{ "uvalid", UVALID }, // 834
! 	{ "uwidth", UWIDTH }, // 835
! 	{ "value", VALUE }, // 836
! 	{ "variance", VARIANCE }, // 837
! 	{ "varying", VARYING }, // 838
! 	{ "volatile", VOLATILE }, // 839
! 	{ "when-compiled", WHEN_COMPILED }, // 840
! 	{ "with", WITH }, // 841
! 	{ "working-storage", WORKING_STORAGE }, // 842
! 	{ "xml", XML }, // 843
! 	{ "xmlgenerate", XMLGENERATE }, // 844
! 	{ "xmlparse", XMLPARSE }, // 845
! 	{ "year-to-yyyy", YEAR_TO_YYYY }, // 846
! 	{ "yyyyddd", YYYYDDD }, // 847
! 	{ "yyyymmdd", YYYYMMDD }, // 848
! 	{ "arithmetic", ARITHMETIC }, // 849
! 	{ "attribute", ATTRIBUTE }, // 850
! 	{ "auto", AUTO }, // 851
! 	{ "automatic", AUTOMATIC }, // 852
! 	{ "away-from-zero", AWAY_FROM_ZERO }, // 853
! 	{ "background-color", BACKGROUND_COLOR }, // 854
! 	{ "bell", BELL }, // 855
! 	{ "binary-encoding", BINARY_ENCODING }, // 856
! 	{ "blink", BLINK }, // 857
! 	{ "capacity", CAPACITY }, // 858
! 	{ "center", CENTER }, // 859
! 	{ "classification", CLASSIFICATION }, // 860
! 	{ "cycle", CYCLE }, // 861
! 	{ "decimal-encoding", DECIMAL_ENCODING }, // 862
! 	{ "entry-convention", ENTRY_CONVENTION }, // 863
! 	{ "eol", EOL }, // 864
! 	{ "eos", EOS }, // 865
! 	{ "erase", ERASE }, // 866
! 	{ "expands", EXPANDS }, // 867
! 	{ "float-binary", FLOAT_BINARY }, // 868
! 	{ "float-decimal", FLOAT_DECIMAL }, // 869
! 	{ "foreground-color", FOREGROUND_COLOR }, // 870
! 	{ "forever", FOREVER }, // 871
! 	{ "full", FULL }, // 872
! 	{ "highlight", HIGHLIGHT }, // 873
! 	{ "high-order-left", HIGH_ORDER_LEFT }, // 874
! 	{ "high-order-right", HIGH_ORDER_RIGHT }, // 875
! 	{ "ignoring", IGNORING }, // 876
! 	{ "implements", IMPLEMENTS }, // 877
! 	{ "initialized", INITIALIZED }, // 878
! 	{ "intermediate", INTERMEDIATE }, // 879
! 	{ "lc-all", LC_ALL_kw }, // 880
! 	{ "lc-collate", LC_COLLATE_kw }, // 881
! 	{ "lc-ctype", LC_CTYPE_kw }, // 882
! 	{ "lc-messages", LC_MESSAGES_kw }, // 883
! 	{ "lc-monetary", LC_MONETARY_kw }, // 884
! 	{ "lc-numeric", LC_NUMERIC_kw }, // 885
! 	{ "lc-time", LC_TIME_kw }, // 886
! 	{ "lowlight", LOWLIGHT }, // 887
! 	{ "nearest-away-from-zero", NEAREST_AWAY_FROM_ZERO }, // 888
! 	{ "nearest-even", NEAREST_EVEN }, // 889
! 	{ "nearest-toward-zero", NEAREST_TOWARD_ZERO }, // 890
! 	{ "none", NONE }, // 891
! 	{ "normal", NORMAL }, // 892
! 	{ "numbers", NUMBERS }, // 893
! 	{ "prefixed", PREFIXED }, // 894
! 	{ "previous", PREVIOUS }, // 895
! 	{ "prohibited", PROHIBITED }, // 896
! 	{ "relation", RELATION }, // 897
! 	{ "required", REQUIRED }, // 898
! 	{ "reverse-video", REVERSE_VIDEO }, // 899
! 	{ "rounding", ROUNDING }, // 900
! 	{ "seconds", SECONDS }, // 901
! 	{ "secure", SECURE }, // 902
! 	{ "short", SHORT }, // 903
! 	{ "signed", SIGNED_kw }, // 904
! 	{ "standard-binary", STANDARD_BINARY }, // 905
! 	{ "standard-decimal", STANDARD_DECIMAL }, // 906
! 	{ "statement", STATEMENT }, // 907
! 	{ "step", STEP }, // 908
! 	{ "structure", STRUCTURE }, // 909
! 	{ "toward-greater", TOWARD_GREATER }, // 910
! 	{ "toward-lesser", TOWARD_LESSER }, // 911
! 	{ "truncation", TRUNCATION }, // 912
! 	{ "ucs-4", UCS_4 }, // 913
! 	{ "underline", UNDERLINE }, // 914
! 	{ "unsigned", UNSIGNED_kw }, // 915
! 	{ "utf-16", UTF_16 }, // 916
! 	{ "utf-8", UTF_8 }, // 917
! 	{ "address", ADDRESS }, // 918
! 	{ "end-accept", END_ACCEPT }, // 919
! 	{ "end-add", END_ADD }, // 920
! 	{ "end-call", END_CALL }, // 921
! 	{ "end-compute", END_COMPUTE }, // 922
! 	{ "end-delete", END_DELETE }, // 923
! 	{ "end-display", END_DISPLAY }, // 924
! 	{ "end-divide", END_DIVIDE }, // 925
! 	{ "end-evaluate", END_EVALUATE }, // 926
! 	{ "end-multiply", END_MULTIPLY }, // 927
! 	{ "end-perform", END_PERFORM }, // 928
! 	{ "end-read", END_READ }, // 929
! 	{ "end-return", END_RETURN }, // 930
! 	{ "end-rewrite", END_REWRITE }, // 931
! 	{ "end-search", END_SEARCH }, // 932
! 	{ "end-start", END_START }, // 933
! 	{ "end-string", END_STRING }, // 934
! 	{ "end-subtract", END_SUBTRACT }, // 935
! 	{ "end-unstring", END_UNSTRING }, // 936
! 	{ "end-write", END_WRITE }, // 937
! 	{ "end-if", END_IF }, // 938
! 	{ "thru", THRU }, // 939
! 	{ "through", THRU }, // 939
! 	{ "or", OR }, // 940
! 	{ "and", AND }, // 941
! 	{ "not", NOT }, // 942
! 	{ "ne", NE }, // 943
! 	{ "le", LE }, // 944
! 	{ "ge", GE }, // 945
! 	{ "pow", POW }, // 946
! 	{ "neg", NEG }, // 947
  };
  
+ // cppcheck-suppress useInitializationList
  token_names = {
! 	"IDENTIFICATION", // 0 (258)
! 	"ENVIRONMENT", // 1 (259)
! 	"PROCEDURE", // 2 (260)
! 	"DATA", // 3 (261)
! 	"FILE", // 4 (262)
! 	"INPUT-OUTPUT", // 5 (263)
! 	"LINKAGE", // 6 (264)
! 	"LOCAL-STORAGE", // 7 (265)
! 	"WORKING-STORAGE", // 8 (266)
! 	"OBJECT-COMPUTER", // 9 (267)
! 	"DISPLAY-OF", // 10 (268)
! 	"END-FUNCTION", // 11 (269)
! 	"END-PROGRAM", // 12 (270)
! 	"END-SUBPROGRAM", // 13 (271)
! 	"JUSTIFIED", // 14 (272)
! 	"RETURNING", // 15 (273)
! 	"NO-CONDITION", // 16 (274)
! 	"ALNUM", // 17 (275)
! 	"ALPHED", // 18 (276)
! 	"ERROR", // 19 (277)
! 	"EXCEPTION", // 20 (278)
! 	"SIZE-ERROR", // 21 (279)
! 	"EXCEPTION-NAME", // 22 (280)
! 	"LEVEL", // 23 (281)
! 	"LEVEL66", // 24 (282)
! 	"LEVEL78", // 25 (283)
! 	"LEVEL88", // 26 (284)
! 	"CLASS-NAME", // 27 (285)
! 	"NAME", // 28 (286)
! 	"NAME88", // 29 (287)
! 	"NUME", // 30 (288)
! 	"NUMED", // 31 (289)
! 	"NUMED-CR", // 32 (290)
! 	"NUMED-DB", // 33 (291)
! 	"NINEDOT", // 34 (292)
! 	"NINES", // 35 (293)
! 	"NINEV", // 36 (294)
! 	"PIC-P", // 37 (295)
! 	"ONES", // 38 (296)
! 	"SPACES", // 39 (297)
! 	"LITERAL", // 40 (298)
! 	"END", // 41 (299)
! 	"EOP", // 42 (300)
! 	"FILENAME", // 43 (301)
! 	"INVALID", // 44 (302)
! 	"NUMBER", // 45 (303)
! 	"NEGATIVE", // 46 (304)
! 	"NUMSTR", // 47 (305)
! 	"OVERFLOW", // 48 (306)
! 	"BINARY-INTEGER", // 49 (307)
! 	"COMPUTATIONAL", // 50 (308)
! 	"PERFORM", // 51 (309)
! 	"BACKWARD", // 52 (310)
! 	"POSITIVE", // 53 (311)
! 	"POINTER", // 54 (312)
! 	"SECTION", // 55 (313)
! 	"STANDARD-ALPHABET", // 56 (314)
! 	"SWITCH", // 57 (315)
! 	"UPSI", // 58 (316)
! 	"ZERO", // 59 (317)
! 	"SYSIN", // 60 (318)
! 	"SYSIPT", // 61 (319)
! 	"SYSOUT", // 62 (320)
! 	"SYSLIST", // 63 (321)
! 	"SYSLST", // 64 (322)
! 	"SYSPUNCH", // 65 (323)
! 	"SYSPCH", // 66 (324)
! 	"CONSOLE", // 67 (325)
! 	"C01", // 68 (326)
! 	"C02", // 69 (327)
! 	"C03", // 70 (328)
! 	"C04", // 71 (329)
! 	"C05", // 72 (330)
! 	"C06", // 73 (331)
! 	"C07", // 74 (332)
! 	"C08", // 75 (333)
! 	"C09", // 76 (334)
! 	"C10", // 77 (335)
! 	"C11", // 78 (336)
! 	"C12", // 79 (337)
! 	"CSP", // 80 (338)
! 	"S01", // 81 (339)
! 	"S02", // 82 (340)
! 	"S03", // 83 (341)
! 	"S04", // 84 (342)
! 	"S05", // 85 (343)
! 	"AFP-5A", // 86 (344)
! 	"STDIN", // 87 (345)
! 	"STDOUT", // 88 (346)
! 	"STDERR", // 89 (347)
! 	"LIST", // 90 (348)
! 	"MAP", // 91 (349)
! 	"NOLIST", // 92 (350)
! 	"NOMAP", // 93 (351)
! 	"NOSOURCE", // 94 (352)
! 	"MIGHT-BE", // 95 (353)
! 	"FUNCTION-UDF", // 96 (354)
! 	"FUNCTION-UDF-0", // 97 (355)
! 	"DATE-FMT", // 98 (356)
! 	"TIME-FMT", // 99 (357)
! 	"DATETIME-FMT", // 100 (358)
! 	"BASIS", // 101 (359)
! 	"CBL", // 102 (360)
! 	"CONSTANT", // 103 (361)
! 	"COPY", // 104 (362)
! 	"DEFINED", // 105 (363)
! 	"ENTER", // 106 (364)
! 	"FEATURE", // 107 (365)
! 	"INSERTT", // 108 (366)
! 	"LSUB", // 109 (367)
! 	"PARAMETER", // 110 (368)
! 	"OVERRIDE", // 111 (369)
! 	"READY", // 112 (370)
! 	"RESET", // 113 (371)
! 	"RSUB", // 114 (372)
! 	"SERVICE-RELOAD", // 115 (373)
! 	"STAR-CBL", // 116 (374)
! 	"SUBSCRIPT", // 117 (375)
! 	"SUPPRESS", // 118 (376)
! 	"TITLE", // 119 (377)
! 	"TRACE", // 120 (378)
! 	"USE", // 121 (379)
! 	"COBOL-WORDS", // 122 (380)
! 	"EQUATE", // 123 (381)
! 	"UNDEFINE", // 124 (382)
! 	"CDF-DEFINE", // 125 (383)
! 	"CDF-DISPLAY", // 126 (384)
! 	"CDF-IF", // 127 (385)
! 	"CDF-ELSE", // 128 (386)
! 	"CDF-END-IF", // 129 (387)
! 	"CDF-EVALUATE", // 130 (388)
! 	"CDF-WHEN", // 131 (389)
! 	"CDF-END-EVALUATE", // 132 (390)
! 	"CALL-CONVENTION", // 133 (391)
! 	"CALL-COBOL", // 134 (392)
! 	"CALL-VERBATIM", // 135 (393)
! 	"CDF-PUSH", // 136 (394)
! 	"CDF-POP", // 137 (395)
! 	"SOURCE-FORMAT", // 138 (396)
! 	"IF", // 139 (397)
! 	"THEN", // 140 (398)
! 	"ELSE", // 141 (399)
! 	"SENTENCE", // 142 (400)
! 	"ACCEPT", // 143 (401)
! 	"ADD", // 144 (402)
! 	"ALTER", // 145 (403)
! 	"CALL", // 146 (404)
! 	"CANCEL", // 147 (405)
! 	"CLOSE", // 148 (406)
! 	"COMPUTE", // 149 (407)
! 	"CONTINUE", // 150 (408)
! 	"DELETE", // 151 (409)
! 	"DISPLAY", // 152 (410)
! 	"DIVIDE", // 153 (411)
! 	"EVALUATE", // 154 (412)
! 	"EXIT", // 155 (413)
! 	"FILLER", // 156 (414)
! 	"GOBACK", // 157 (415)
! 	"GOTO", // 158 (416)
! 	"INITIALIZE", // 159 (417)
! 	"INSPECT", // 160 (418)
! 	"MERGE", // 161 (419)
! 	"MOVE", // 162 (420)
! 	"MULTIPLY", // 163 (421)
! 	"OPEN", // 164 (422)
! 	"PARAGRAPH", // 165 (423)
! 	"READ", // 166 (424)
! 	"RELEASE", // 167 (425)
! 	"RETURN", // 168 (426)
! 	"REWRITE", // 169 (427)
! 	"SEARCH", // 170 (428)
! 	"SET", // 171 (429)
! 	"SELECT", // 172 (430)
! 	"SORT", // 173 (431)
! 	"SORT-MERGE", // 174 (432)
! 	"STRING", // 175 (433)
! 	"STOP", // 176 (434)
! 	"SUBTRACT", // 177 (435)
! 	"START", // 178 (436)
! 	"UNSTRING", // 179 (437)
! 	"WRITE", // 180 (438)
! 	"WHEN", // 181 (439)
! 	"ARGUMENT-NUMBER", // 182 (440)
! 	"ARGUMENT-VALUE", // 183 (441)
! 	"ENVIRONMENT-NAME", // 184 (442)
! 	"ENVIRONMENT-VALUE", // 185 (443)
! 	"ABS", // 186 (444)
! 	"ACCESS", // 187 (445)
! 	"ACOS", // 188 (446)
! 	"ACTUAL", // 189 (447)
! 	"ADVANCING", // 190 (448)
! 	"AFTER", // 191 (449)
! 	"ALL", // 192 (450)
! 	"ALLOCATE", // 193 (451)
! 	"ALPHABET", // 194 (452)
! 	"ALPHABETIC", // 195 (453)
! 	"ALPHABETIC-LOWER", // 196 (454)
! 	"ALPHABETIC-UPPER", // 197 (455)
! 	"ALPHANUMERIC", // 198 (456)
! 	"ALPHANUMERIC-EDITED", // 199 (457)
! 	"ALSO", // 200 (458)
! 	"ALTERNATE", // 201 (459)
! 	"ANNUITY", // 202 (460)
! 	"ANUM", // 203 (461)
! 	"ANY", // 204 (462)
! 	"ANYCASE", // 205 (463)
! 	"APPLY", // 206 (464)
! 	"ARE", // 207 (465)
! 	"AREA", // 208 (466)
! 	"AREAS", // 209 (467)
! 	"AS", // 210 (468)
! 	"ASCENDING", // 211 (469)
! 	"ACTIVATING", // 212 (470)
! 	"ASIN", // 213 (471)
! 	"ASSIGN", // 214 (472)
! 	"AT", // 215 (473)
! 	"ATAN", // 216 (474)
! 	"BASED", // 217 (475)
! 	"BASECONVERT", // 218 (476)
! 	"BEFORE", // 219 (477)
! 	"BINARY", // 220 (478)
! 	"BIT", // 221 (479)
! 	"BIT-OF", // 222 (480)
! 	"BIT-TO-CHAR", // 223 (481)
! 	"BLANK", // 224 (482)
! 	"BLOCK", // 225 (483)
! 	"BOOLEAN-OF-INTEGER", // 226 (484)
! 	"BOTTOM", // 227 (485)
! 	"BY", // 228 (486)
! 	"BYTE", // 229 (487)
! 	"BYTE-LENGTH", // 230 (488)
! 	"CF", // 231 (489)
! 	"CH", // 232 (490)
! 	"CHANGED", // 233 (491)
! 	"CHAR", // 234 (492)
! 	"CHAR-NATIONAL", // 235 (493)
! 	"CHARACTER", // 236 (494)
! 	"CHARACTERS", // 237 (495)
! 	"CHECKING", // 238 (496)
! 	"CLASS", // 239 (497)
! 	"COBOL", // 240 (498)
! 	"CODE", // 241 (499)
! 	"CODE-SET", // 242 (500)
! 	"COLLATING", // 243 (501)
! 	"COLUMN", // 244 (502)
! 	"COMBINED-DATETIME", // 245 (503)
! 	"COMMA", // 246 (504)
! 	"COMMAND-LINE", // 247 (505)
! 	"COMMAND-LINE-COUNT", // 248 (506)
! 	"COMMIT", // 249 (507)
! 	"COMMON", // 250 (508)
! 	"CONCAT", // 251 (509)
! 	"CONDITION", // 252 (510)
! 	"CONFIGURATION", // 253 (511)
! 	"CONTAINS", // 254 (512)
! 	"CONTENT", // 255 (513)
! 	"CONTROL", // 256 (514)
! 	"CONTROLS", // 257 (515)
! 	"CONVERT", // 258 (516)
! 	"CONVERTING", // 259 (517)
! 	"CORRESPONDING", // 260 (518)
! 	"COS", // 261 (519)
! 	"COUNT", // 262 (520)
! 	"CURRENCY", // 263 (521)
! 	"CURRENT", // 264 (522)
! 	"CURRENT-DATE", // 265 (523)
! 	"DATA", // 266 (524)
! 	"DATE", // 267 (525)
! 	"DATE-COMPILED", // 268 (526)
! 	"DATE-OF-INTEGER", // 269 (527)
! 	"DATE-TO-YYYYMMDD", // 270 (528)
! 	"DATE-WRITTEN", // 271 (529)
! 	"DAY", // 272 (530)
! 	"DAY-OF-INTEGER", // 273 (531)
! 	"DAY-OF-WEEK", // 274 (532)
! 	"DAY-TO-YYYYDDD", // 275 (533)
! 	"DBCS", // 276 (534)
! 	"DE", // 277 (535)
! 	"DEBUGGING", // 278 (536)
! 	"DECIMAL-POINT", // 279 (537)
! 	"DECLARATIVES", // 280 (538)
! 	"DEFAULT", // 281 (539)
! 	"DELIMITED", // 282 (540)
! 	"DELIMITER", // 283 (541)
! 	"DEPENDING", // 284 (542)
! 	"DESCENDING", // 285 (543)
! 	"DETAIL", // 286 (544)
! 	"DIRECT", // 287 (545)
! 	"DIRECT-ACCESS", // 288 (546)
! 	"DOWN", // 289 (547)
! 	"DUPLICATES", // 290 (548)
! 	"DYNAMIC", // 291 (549)
! 	"E", // 292 (550)
! 	"EBCDIC", // 293 (551)
! 	"EC", // 294 (552)
! 	"EGCS", // 295 (553)
! 	"ENTRY", // 296 (554)
! 	"ENVIRONMENT", // 297 (555)
! 	"EQUAL", // 298 (556)
! 	"EVERY", // 299 (557)
! 	"EXAMINE", // 300 (558)
! 	"EXHIBIT", // 301 (559)
! 	"EXP", // 302 (560)
! 	"EXP10", // 303 (561)
! 	"EXTEND", // 304 (562)
! 	"EXTERNAL", // 305 (563)
! 	"EXCEPTION-FILE", // 306 (564)
! 	"EXCEPTION-FILE-N", // 307 (565)
! 	"EXCEPTION-LOCATION", // 308 (566)
! 	"EXCEPTION-LOCATION-N", // 309 (567)
! 	"EXCEPTION-STATEMENT", // 310 (568)
! 	"EXCEPTION-STATUS", // 311 (569)
! 	"FACTORIAL", // 312 (570)
! 	"FALSE", // 313 (571)
! 	"FD", // 314 (572)
! 	"FILE-CONTROL", // 315 (573)
! 	"FILE", // 316 (574)
! 	"FILE-LIMIT", // 317 (575)
! 	"FINAL", // 318 (576)
! 	"FINALLY", // 319 (577)
! 	"FIND-STRING", // 320 (578)
! 	"FIRST", // 321 (579)
! 	"FIXED", // 322 (580)
! 	"FOOTING", // 323 (581)
! 	"FOR", // 324 (582)
! 	"FORMATTED-CURRENT-DATE", // 325 (583)
! 	"FORMATTED-DATE", // 326 (584)
! 	"FORMATTED-DATETIME", // 327 (585)
! 	"FORMATTED-TIME", // 328 (586)
! 	"FORM-OVERFLOW", // 329 (587)
! 	"FREE", // 330 (588)
! 	"FRACTION-PART", // 331 (589)
! 	"FROM", // 332 (590)
! 	"FUNCTION", // 333 (591)
! 	"GENERATE", // 334 (592)
! 	"GIVING", // 335 (593)
! 	"GLOBAL", // 336 (594)
! 	"GO", // 337 (595)
! 	"GROUP", // 338 (596)
! 	"HEADING", // 339 (597)
! 	"HEX", // 340 (598)
! 	"HEX-OF", // 341 (599)
! 	"HEX-TO-CHAR", // 342 (600)
! 	"HIGH-VALUES", // 343 (601)
! 	"HIGHEST-ALGEBRAIC", // 344 (602)
! 	"HOLD", // 345 (603)
! 	"IBM-360", // 346 (604)
! 	"IN", // 347 (605)
! 	"INCLUDE", // 348 (606)
! 	"INDEX", // 349 (607)
! 	"INDEXED", // 350 (608)
! 	"INDICATE", // 351 (609)
! 	"INITIAL", // 352 (610)
! 	"INITIATE", // 353 (611)
! 	"INPUT", // 354 (612)
! 	"INSTALLATION", // 355 (613)
! 	"INTERFACE", // 356 (614)
! 	"INTEGER", // 357 (615)
! 	"INTEGER-OF-BOOLEAN", // 358 (616)
! 	"INTEGER-OF-DATE", // 359 (617)
! 	"INTEGER-OF-DAY", // 360 (618)
! 	"INTEGER-OF-FORMATTED-DATE", // 361 (619)
! 	"INTEGER-PART", // 362 (620)
! 	"INTO", // 363 (621)
! 	"INTRINSIC", // 364 (622)
! 	"INVOKE", // 365 (623)
! 	"I-O", // 366 (624)
! 	"I-O-CONTROL", // 367 (625)
! 	"IS", // 368 (626)
! 	"ISNT", // 369 (627)
! 	"KANJI", // 370 (628)
! 	"KEY", // 371 (629)
! 	"LABEL", // 372 (630)
! 	"LAST", // 373 (631)
! 	"LEADING", // 374 (632)
! 	"LEFT", // 375 (633)
! 	"LENGTH", // 376 (634)
! 	"LENGTH-OF", // 377 (635)
! 	"LIMIT", // 378 (636)
! 	"LIMITS", // 379 (637)
! 	"LINE", // 380 (638)
! 	"LINES", // 381 (639)
! 	"LINE-COUNTER", // 382 (640)
! 	"LINAGE", // 383 (641)
! 	"LINKAGE", // 384 (642)
! 	"LOCALE", // 385 (643)
! 	"LOCALE-COMPARE", // 386 (644)
! 	"LOCALE-DATE", // 387 (645)
! 	"LOCALE-TIME", // 388 (646)
! 	"LOCALE-TIME-FROM-SECONDS", // 389 (647)
! 	"LOCAL-STORAGE", // 390 (648)
! 	"LOCATION", // 391 (649)
! 	"LOCK", // 392 (650)
! 	"LOCK-ON", // 393 (651)
! 	"LOG", // 394 (652)
! 	"LOG10", // 395 (653)
! 	"LOWER-CASE", // 396 (654)
! 	"LOW-VALUES", // 397 (655)
! 	"LOWEST-ALGEBRAIC", // 398 (656)
! 	"LPAREN", // 399 (657)
! 	"MANUAL", // 400 (658)
! 	"MAXX", // 401 (659)
! 	"MEAN", // 402 (660)
! 	"MEDIAN", // 403 (661)
! 	"MIDRANGE", // 404 (662)
! 	"MINN", // 405 (663)
! 	"MULTIPLE", // 406 (664)
! 	"MOD", // 407 (665)
! 	"MODE", // 408 (666)
! 	"MODULE-NAME", // 409 (667)
! 	"NAMED", // 410 (668)
! 	"NAT", // 411 (669)
! 	"NATIONAL", // 412 (670)
! 	"NATIONAL-EDITED", // 413 (671)
! 	"NATIONAL-OF", // 414 (672)
! 	"NATIVE", // 415 (673)
! 	"NESTED", // 416 (674)
! 	"NEXT", // 417 (675)
! 	"NO", // 418 (676)
! 	"NOTE", // 419 (677)
! 	"NULLS", // 420 (678)
! 	"NULLPTR", // 421 (679)
! 	"NUMERIC", // 422 (680)
! 	"NUMERIC-EDITED", // 423 (681)
! 	"NUMVAL", // 424 (682)
! 	"NUMVAL-C", // 425 (683)
! 	"NUMVAL-F", // 426 (684)
! 	"OCCURS", // 427 (685)
! 	"OF", // 428 (686)
! 	"OFF", // 429 (687)
! 	"OMITTED", // 430 (688)
! 	"ON", // 431 (689)
! 	"ONLY", // 432 (690)
! 	"OPTIONAL", // 433 (691)
! 	"OPTIONS", // 434 (692)
! 	"ORD", // 435 (693)
! 	"ORDER", // 436 (694)
! 	"ORD-MAX", // 437 (695)
! 	"ORD-MIN", // 438 (696)
! 	"ORGANIZATION", // 439 (697)
! 	"OTHER", // 440 (698)
! 	"OTHERWISE", // 441 (699)
! 	"OUTPUT", // 442 (700)
! 	"PACKED-DECIMAL", // 443 (701)
! 	"PADDING", // 444 (702)
! 	"PAGE", // 445 (703)
! 	"PAGE-COUNTER", // 446 (704)
! 	"PF", // 447 (705)
! 	"PH", // 448 (706)
! 	"PI", // 449 (707)
! 	"PIC", // 450 (708)
! 	"PICTURE", // 451 (709)
! 	"PLUS", // 452 (710)
! 	"PRESENT-VALUE", // 453 (711)
! 	"PRINT-SWITCH", // 454 (712)
! 	"PROCEDURE", // 455 (713)
! 	"PROCEDURES", // 456 (714)
! 	"PROCEED", // 457 (715)
! 	"PROCESS", // 458 (716)
! 	"PROGRAM-ID", // 459 (717)
! 	"PROGRAM", // 460 (718)
! 	"PROPERTY", // 461 (719)
! 	"PROTOTYPE", // 462 (720)
! 	"PSEUDOTEXT", // 463 (721)
! 	"QUOTES", // 464 (722)
! 	"RANDOM", // 465 (723)
! 	"RANDOM-SEED", // 466 (724)
! 	"RANGE", // 467 (725)
! 	"RAISE", // 468 (726)
! 	"RAISING", // 469 (727)
! 	"RD", // 470 (728)
! 	"RECORD", // 471 (729)
! 	"RECORDING", // 472 (730)
! 	"RECORDS", // 473 (731)
! 	"RECURSIVE", // 474 (732)
! 	"REDEFINES", // 475 (733)
! 	"REEL", // 476 (734)
! 	"REFERENCE", // 477 (735)
! 	"RELATIVE", // 478 (736)
! 	"REM", // 479 (737)
! 	"REMAINDER", // 480 (738)
! 	"REMARKS", // 481 (739)
! 	"REMOVAL", // 482 (740)
! 	"RENAMES", // 483 (741)
! 	"REPLACE", // 484 (742)
! 	"REPLACING", // 485 (743)
! 	"REPORT", // 486 (744)
! 	"REPORTING", // 487 (745)
! 	"REPORTS", // 488 (746)
! 	"REPOSITORY", // 489 (747)
! 	"RERUN", // 490 (748)
! 	"RESERVE", // 491 (749)
! 	"RESTRICTED", // 492 (750)
! 	"RESUME", // 493 (751)
! 	"REVERSE", // 494 (752)
! 	"REVERSED", // 495 (753)
! 	"REWIND", // 496 (754)
! 	"RF", // 497 (755)
! 	"RH", // 498 (756)
! 	"RIGHT", // 499 (757)
! 	"ROUNDED", // 500 (758)
! 	"RUN", // 501 (759)
! 	"SAME", // 502 (760)
! 	"SCREEN", // 503 (761)
! 	"SD", // 504 (762)
! 	"SECONDS-FROM-FORMATTED-TIME", // 505 (763)
! 	"SECONDS-PAST-MIDNIGHT", // 506 (764)
! 	"SECURITY", // 507 (765)
! 	"SEPARATE", // 508 (766)
! 	"SEQUENCE", // 509 (767)
! 	"SEQUENTIAL", // 510 (768)
! 	"SHARING", // 511 (769)
! 	"SIMPLE-EXIT", // 512 (770)
! 	"SIGN", // 513 (771)
! 	"SIN", // 514 (772)
! 	"SIZE", // 515 (773)
! 	"SMALLEST-ALGEBRAIC", // 516 (774)
! 	"SOURCE", // 517 (775)
! 	"SOURCE-COMPUTER", // 518 (776)
! 	"SPECIAL-NAMES", // 519 (777)
! 	"SQRT", // 520 (778)
! 	"STACK", // 521 (779)
! 	"STANDARD", // 522 (780)
! 	"STANDARD-1", // 523 (781)
! 	"STANDARD-DEVIATION", // 524 (782)
! 	"STANDARD-COMPARE", // 525 (783)
! 	"STATUS", // 526 (784)
! 	"STRONG", // 527 (785)
! 	"SUBSTITUTE", // 528 (786)
! 	"SUM", // 529 (787)
! 	"SYMBOL", // 530 (788)
! 	"SYMBOLIC", // 531 (789)
! 	"SYNCHRONIZED", // 532 (790)
! 	"TALLY", // 533 (791)
! 	"TALLYING", // 534 (792)
! 	"TAN", // 535 (793)
! 	"TERMINATE", // 536 (794)
! 	"TEST", // 537 (795)
! 	"TEST-DATE-YYYYMMDD", // 538 (796)
! 	"TEST-DAY-YYYYDDD", // 539 (797)
! 	"TEST-FORMATTED-DATETIME", // 540 (798)
! 	"TEST-NUMVAL", // 541 (799)
! 	"TEST-NUMVAL-C", // 542 (800)
! 	"TEST-NUMVAL-F", // 543 (801)
! 	"THAN", // 544 (802)
! 	"TIME", // 545 (803)
! 	"TIMES", // 546 (804)
! 	"TO", // 547 (805)
! 	"TOP", // 548 (806)
! 	"TOP-LEVEL", // 549 (807)
! 	"TRACKS", // 550 (808)
! 	"TRACK-AREA", // 551 (809)
! 	"TRAILING", // 552 (810)
! 	"TRANSFORM", // 553 (811)
! 	"TRIM", // 554 (812)
! 	"TRUE", // 555 (813)
! 	"TRY", // 556 (814)
! 	"TURN", // 557 (815)
! 	"TYPE", // 558 (816)
! 	"TYPEDEF", // 559 (817)
! 	"ULENGTH", // 560 (818)
! 	"UNBOUNDED", // 561 (819)
! 	"UNIT", // 562 (820)
! 	"UNITS", // 563 (821)
! 	"UNIT-RECORD", // 564 (822)
! 	"UNTIL", // 565 (823)
! 	"UP", // 566 (824)
! 	"UPON", // 567 (825)
! 	"UPOS", // 568 (826)
! 	"UPPER-CASE", // 569 (827)
! 	"USAGE", // 570 (828)
! 	"USING", // 571 (829)
! 	"USUBSTR", // 572 (830)
! 	"USUPPLEMENTARY", // 573 (831)
! 	"UTILITY", // 574 (832)
! 	"UUID4", // 575 (833)
! 	"UVALID", // 576 (834)
! 	"UWIDTH", // 577 (835)
! 	"VALUE", // 578 (836)
! 	"VARIANCE", // 579 (837)
! 	"VARYING", // 580 (838)
! 	"VOLATILE", // 581 (839)
! 	"WHEN-COMPILED", // 582 (840)
! 	"WITH", // 583 (841)
! 	"WORKING-STORAGE", // 584 (842)
! 	"XML", // 585 (843)
! 	"XMLGENERATE", // 586 (844)
! 	"XMLPARSE", // 587 (845)
! 	"YEAR-TO-YYYY", // 588 (846)
! 	"YYYYDDD", // 589 (847)
! 	"YYYYMMDD", // 590 (848)
! 	"ARITHMETIC", // 591 (849)
! 	"ATTRIBUTE", // 592 (850)
! 	"AUTO", // 593 (851)
! 	"AUTOMATIC", // 594 (852)
! 	"AWAY-FROM-ZERO", // 595 (853)
! 	"BACKGROUND-COLOR", // 596 (854)
! 	"BELL", // 597 (855)
! 	"BINARY-ENCODING", // 598 (856)
! 	"BLINK", // 599 (857)
! 	"CAPACITY", // 600 (858)
! 	"CENTER", // 601 (859)
! 	"CLASSIFICATION", // 602 (860)
! 	"CYCLE", // 603 (861)
! 	"DECIMAL-ENCODING", // 604 (862)
! 	"ENTRY-CONVENTION", // 605 (863)
! 	"EOL", // 606 (864)
! 	"EOS", // 607 (865)
! 	"ERASE", // 608 (866)
! 	"EXPANDS", // 609 (867)
! 	"FLOAT-BINARY", // 610 (868)
! 	"FLOAT-DECIMAL", // 611 (869)
! 	"FOREGROUND-COLOR", // 612 (870)
! 	"FOREVER", // 613 (871)
! 	"FULL", // 614 (872)
! 	"HIGHLIGHT", // 615 (873)
! 	"HIGH-ORDER-LEFT", // 616 (874)
! 	"HIGH-ORDER-RIGHT", // 617 (875)
! 	"IGNORING", // 618 (876)
! 	"IMPLEMENTS", // 619 (877)
! 	"INITIALIZED", // 620 (878)
! 	"INTERMEDIATE", // 621 (879)
! 	"LC-ALL", // 622 (880)
! 	"LC-COLLATE", // 623 (881)
! 	"LC-CTYPE", // 624 (882)
! 	"LC-MESSAGES", // 625 (883)
! 	"LC-MONETARY", // 626 (884)
! 	"LC-NUMERIC", // 627 (885)
! 	"LC-TIME", // 628 (886)
! 	"LOWLIGHT", // 629 (887)
! 	"NEAREST-AWAY-FROM-ZERO", // 630 (888)
! 	"NEAREST-EVEN", // 631 (889)
! 	"NEAREST-TOWARD-ZERO", // 632 (890)
! 	"NONE", // 633 (891)
! 	"NORMAL", // 634 (892)
! 	"NUMBERS", // 635 (893)
! 	"PREFIXED", // 636 (894)
! 	"PREVIOUS", // 637 (895)
! 	"PROHIBITED", // 638 (896)
! 	"RELATION", // 639 (897)
! 	"REQUIRED", // 640 (898)
! 	"REVERSE-VIDEO", // 641 (899)
! 	"ROUNDING", // 642 (900)
! 	"SECONDS", // 643 (901)
! 	"SECURE", // 644 (902)
! 	"SHORT", // 645 (903)
! 	"SIGNED", // 646 (904)
! 	"STANDARD-BINARY", // 647 (905)
! 	"STANDARD-DECIMAL", // 648 (906)
! 	"STATEMENT", // 649 (907)
! 	"STEP", // 650 (908)
! 	"STRUCTURE", // 651 (909)
! 	"TOWARD-GREATER", // 652 (910)
! 	"TOWARD-LESSER", // 653 (911)
! 	"TRUNCATION", // 654 (912)
! 	"UCS-4", // 655 (913)
! 	"UNDERLINE", // 656 (914)
! 	"UNSIGNED", // 657 (915)
! 	"UTF-16", // 658 (916)
! 	"UTF-8", // 659 (917)
! 	"ADDRESS", // 660 (918)
! 	"END-ACCEPT", // 661 (919)
! 	"END-ADD", // 662 (920)
! 	"END-CALL", // 663 (921)
! 	"END-COMPUTE", // 664 (922)
! 	"END-DELETE", // 665 (923)
! 	"END-DISPLAY", // 666 (924)
! 	"END-DIVIDE", // 667 (925)
! 	"END-EVALUATE", // 668 (926)
! 	"END-MULTIPLY", // 669 (927)
! 	"END-PERFORM", // 670 (928)
! 	"END-READ", // 671 (929)
! 	"END-RETURN", // 672 (930)
! 	"END-REWRITE", // 673 (931)
! 	"END-SEARCH", // 674 (932)
! 	"END-START", // 675 (933)
! 	"END-STRING", // 676 (934)
! 	"END-SUBTRACT", // 677 (935)
! 	"END-UNSTRING", // 678 (936)
! 	"END-WRITE", // 679 (937)
! 	"END-IF", // 680 (938)
! 	"THRU", // 681 (939)
! 	"OR", // 682 (940)
! 	"AND", // 683 (941)
! 	"NOT", // 684 (942)
! 	"NE", // 685 (943)
! 	"LE", // 686 (944)
! 	"GE", // 687 (945)
! 	"POW", // 688 (946)
! 	"NEG", // 689 (947)
  };
diff -Nrcpad gcc-15-20250726/gcc/cobol/udf/stored-char-length.cbl gcc-15-20250809/gcc/cobol/udf/stored-char-length.cbl
*** gcc-15-20250726/gcc/cobol/udf/stored-char-length.cbl	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/udf/stored-char-length.cbl	Sat Aug  9 22:32:37 2025
***************
*** 1,3 ****
--- 1,6 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
        *  This function is in public domain.
        *  Contributed by James K. Lowden of Cobolworx in August 2024
  
***************
*** 13,15 ****
--- 16,19 ----
              to Output-Value. 
          End Function STORED-CHAR-LENGTH.
  
+         >> pop source format
\ No newline at end of file
diff -Nrcpad gcc-15-20250726/gcc/cobol/util.cc gcc-15-20250809/gcc/cobol/util.cc
*** gcc-15-20250726/gcc/cobol/util.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/util.cc	Sat Aug  9 22:32:37 2025
***************
*** 34,62 ****
   * header files.
   */
  
! #include "cobol-system.h"
! #include "coretypes.h"
! #include "tree.h"
  #undef yy_flex_debug
  
  #include <langinfo.h>
  
! #include "coretypes.h"
! #include "version.h"
! #include "demangle.h"
! #include "intl.h"
! #include "backtrace.h"
! #include "diagnostic.h"
! #include "diagnostic-color.h"
! #include "diagnostic-url.h"
! #include "diagnostic-metadata.h"
! #include "diagnostic-path.h"
! #include "edit-context.h"
! #include "selftest.h"
! #include "selftest-diagnostic.h"
! #include "opts.h"
  #include "util.h"
  #include "cbldiag.h"
  #include "lexio.h"
  
  #include "../../libgcobol/ec.h"
--- 34,65 ----
   * header files.
   */
  
! #include <cobol-system.h>
! #include <coretypes.h>
! #include <tree.h>
  #undef yy_flex_debug
  
  #include <langinfo.h>
  
! #include <coretypes.h>
! #include <version.h>
! #include <demangle.h>
! #include <intl.h>
! #include <backtrace.h>
! #include <diagnostic.h>
! #include <diagnostic-color.h>
! #include <diagnostic-url.h>
! #include <diagnostic-metadata.h>
! #include <diagnostic-path.h>
! #include <edit-context.h>
! #include <selftest.h>
! #include <selftest-diagnostic.h>
! #include <opts.h>
! 
  #include "util.h"
+ 
  #include "cbldiag.h"
+ #include "cdfval.h"
  #include "lexio.h"
  
  #include "../../libgcobol/ec.h"
***************
*** 65,70 ****
--- 68,74 ----
  #include "inspect.h"
  #include "../../libgcobol/io.h"
  #include "genapi.h"
+ #include "genutil.h"
  
  #pragma GCC diagnostic ignored "-Wunused-result"
  #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
*************** static inline char *
*** 89,107 ****
  get_current_dir_name ()
  {
    /* Use libiberty's allocator here.  */
!   char *buf = (char *) xmalloc (PATH_MAX);
    return getcwd (buf, PATH_MAX);
  }
  #endif
  
  const char *
  symbol_type_str( enum symbol_type_t type )
  {
      switch(type) {
      case SymFilename:
          return "SymFilename";
-     case SymFunction:
-         return "SymFunction";
      case SymField:
          return "SymField";
      case SymLabel:
--- 93,277 ----
  get_current_dir_name ()
  {
    /* Use libiberty's allocator here.  */
!   char *buf = static_cast<char *>(xmalloc (PATH_MAX));
    return getcwd (buf, PATH_MAX);
  }
  #endif
  
+ /*
+  * For printing messages, usually the size of the thing is some kind of string
+  * length, and doesn't really need a size_t.  For message formatting, use a
+  * simple unsigned long, and warn if that's no good.  "gb4" here stands for
+  * "4 Gigabytes".
+  */
+ unsigned long
+ gb4( size_t input ) {
+   if( input != static_cast<unsigned long>(input) ) {
+     yywarn("size too large to print: %lx:%lx",
+ 	   (unsigned long)(input >> (4 * sizeof(unsigned long))),
+ 	   static_cast<unsigned long>(input));
+   }
+   return input;
+ }
+ 
+ /*
+  * Most CDF Directives -- those that have state -- can be pushed and popped.
+  * This class maintains stacks of them, with each stack having a "default
+  * value" that may be updated, without push/pop, via a CDF directive or
+  * command-line option.  A push to a stack pushes the default value onto it; a
+  * pop copies the top of the stack to the default value.
+  *
+  * Supported:
+  *   CALL-CONVENTION
+  *   COBOL-WORDS
+  *   DEFINE
+  *   DISPLAY
+  *   IF
+  *   POP
+  *   PUSH
+  *   SOURCE FORMAT
+  *   TURN
+  * not supported
+  *   EVALUATE
+  *   FLAG-02
+  *   FLAG-14
+  *   LEAP-SECOND
+  *   LISTING
+  *   PAGE
+  *   PROPAGATE
+  *   REF-MOD-ZERO-LENGTH
+  *
+  * >>PUSH ALL calls the class's push() method.
+  * >>POP ALL calls the class's pop() method.
+  */
+ class cdf_directives_t
+ {
+   template <typename T>
+   class cdf_stack_t : private std::stack<T> { // cppcheck-suppress noConstructor
+     T default_value;
+     const T& top() const { return std::stack<T>::top(); }
+     bool empty() const { return std::stack<T>::empty(); }
+    public:
+     void value( const T& value ) {
+       T& output( empty()? default_value : std::stack<T>::top() ); // cppcheck-suppress constVariableReference
+       output = value;
+       dbgmsg("cdf_directives_t::%s: %s", __func__, str(output).c_str());
+     }
+     T& value() {
+       return empty()? default_value : std::stack<T>::top();
+     }
+     void push() {
+       std::stack<T>::push(value());
+       dbgmsg("cdf_directives_t::%s: %s", __func__, str(top()).c_str());
+     }
+     void pop() {
+       if( empty() ) {
+         error_msg(YYLTYPE(), "CDF stack empty"); // cppcheck-suppress syntaxError
+         return;
+       }
+       default_value = top();
+       std::stack<T>::pop();
+       dbgmsg("cdf_directives_t::%s: %s", __func__, str(default_value).c_str());
+     }
+   protected:
+     static std::string str(cbl_call_convention_t arg) {
+       char output[2] = { static_cast<char>(arg) };
+       return std::string("call-convention ") + output;
+     }
+     static std::string str(current_tokens_t) {
+       return "<cobol-words>";
+     }
+     static std::string str(cdf_values_t) {
+       return "<dictionary>";
+     }
+     static std::string str(source_format_t arg) {
+       return arg.description();
+     }
+     static std::string str(cbl_enabled_exceptions_t) {
+       return "<enabled_exceptions>";
+     }
+   };
+ 
+  public:
+   cdf_stack_t<cbl_call_convention_t> call_convention;
+   cdf_stack_t<current_tokens_t> cobol_words;
+   cdf_stack_t<cdf_values_t> dictionary;   // DEFINE
+   cdf_stack_t<source_format_t> source_format;
+   cdf_stack_t<cbl_enabled_exceptions_t> enabled_exceptions;
+ 
+   cdf_directives_t() {
+     call_convention.value() = cbl_call_cobol_e;
+   }
+ 
+   void push() {
+     call_convention.push();
+     cobol_words.push();
+     dictionary.push();
+     source_format.push();
+     enabled_exceptions.push();
+   }
+   void pop() {
+     call_convention.pop();
+     cobol_words.pop();
+     dictionary.pop();
+     source_format.pop();
+     enabled_exceptions.pop();
+   }
+ };
+ static cdf_directives_t cdf_directives;
+ 
+ void
+ current_call_convention( cbl_call_convention_t convention) {
+   cdf_directives.call_convention.value(convention);
+ }
+ cbl_call_convention_t
+ current_call_convention() {
+   return cdf_directives.call_convention.value();
+ }
+ 
+ current_tokens_t&
+ cdf_current_tokens() {
+   return cdf_directives.cobol_words.value();
+ }
+ 
+ cdf_values_t&
+ cdf_dictionary() {
+   return cdf_directives.dictionary.value();
+ }
+ 
+ void
+ cobol_set_indicator_column( int column ) {
+   cdf_directives.source_format.value().indicator_column_set(column);
+ }
+ source_format_t& cdf_source_format() {
+   return cdf_directives.source_format.value();
+ }
+ 
+ cbl_enabled_exceptions_t&
+ cdf_enabled_exceptions() {
+   return cdf_directives.enabled_exceptions.value();
+ }
+ 
+ void cdf_push() { cdf_directives.push(); }
+ void cdf_push_call_convention() { cdf_directives.call_convention.push(); }
+ void cdf_push_current_tokens() { cdf_directives.cobol_words.push(); }
+ void cdf_push_dictionary() { cdf_directives.dictionary.push(); }
+ void cdf_push_enabled_exceptions() { cdf_directives.enabled_exceptions.push(); }
+ void cdf_push_source_format() { cdf_directives.source_format.push(); }
+ 
+ void cdf_pop() { cdf_directives.pop(); }
+ void cdf_pop_call_convention() { cdf_directives.call_convention.pop(); }
+ void cdf_pop_current_tokens() { cdf_directives.cobol_words.pop(); }
+ void cdf_pop_dictionary() { cdf_directives.dictionary.pop(); }
+ void cdf_pop_enabled_exceptions() { cdf_directives.enabled_exceptions.pop(); }
+ void cdf_pop_source_format() { cdf_directives.source_format.pop(); }
+ 
  const char *
  symbol_type_str( enum symbol_type_t type )
  {
      switch(type) {
      case SymFilename:
          return "SymFilename";
      case SymField:
          return "SymField";
      case SymLabel:
*************** symbol_type_str( enum symbol_type_t type
*** 115,121 ****
      case SymDataSection:
          return "SymDataSection";
      }
!     dbgmsg("%s:%d: invalid symbol_type_t %d", __func__, __LINE__, type);
      return "???";
  }
  
--- 285,291 ----
      case SymDataSection:
          return "SymDataSection";
      }
!     cbl_internal_error("%s:%d: invalid %<symbol_type_t%> %d", __func__, __LINE__, type);
      return "???";
  }
  
*************** cbl_field_type_str( enum cbl_field_type_
*** 164,170 ****
    case FldBlob:
      return "FldBlob";
   }
!   dbgmsg("%s:%d: invalid symbol_type_t %d", __func__, __LINE__, type);
    return "???";
  }
  
--- 334,340 ----
    case FldBlob:
      return "FldBlob";
   }
!   cbl_internal_error("%s:%d: invalid %<symbol_type_t%> %d", __func__, __LINE__, type);
    return "???";
  }
  
*************** is_numeric_edited( const char picture[]
*** 324,331 ****
        break;
      default:
        numed_message = xasprintf("invalid PICTURE character "
!                                 "'%c' at offset %zu in '%s'",
!                                 *p, p - picture, picture);
        break;
      }
  
--- 494,502 ----
        break;
      default:
        numed_message = xasprintf("invalid PICTURE character "
!                                 "'%c' at offset " HOST_SIZE_T_PRINT_UNSIGNED
!                                 " in '%s'",
!                                 *p, (fmt_size_t)(p - picture), picture);
        break;
      }
  
*************** normalize_picture( char picture[] )
*** 349,397 ****
      regmatch_t pmatch[4];
  
      if( (erc = regcomp(preg, regex, cflags)) != 0 ) {
!         regerror(erc, preg, regexmsg, sizeof(regexmsg));
!         dbgmsg( "%s:%d: could not compile regex: %s", __func__, __LINE__, regexmsg );
!         return picture;
      }
  
      while( (erc = regexec(preg, picture, COUNT_OF(pmatch), pmatch, 0)) == 0 ) {
!         assert(pmatch[1].rm_so != -1 && pmatch[1].rm_so < pmatch[1].rm_eo);
!         size_t len = pmatch[1].rm_eo - pmatch[1].rm_so;
!         assert(len == 1);
!         const char *start = picture + pmatch[1].rm_so;
  
!         assert(pmatch[2].rm_so != -2 && pmatch[2].rm_so < pmatch[2].rm_eo);
!         len = pmatch[2].rm_eo - pmatch[2].rm_so;
!         assert(len > 0);
  
!         /*
!          * Overwrite e.g. A(4) with AAAA.
!          */
!         assert(pmatch[2].rm_so == pmatch[1].rm_eo + 1); // character paren number
!         p = picture + pmatch[2].rm_so;
!         len = 0;
!         if( 1 != sscanf(p, "%zu", &len) ) {
!             dbgmsg("%s:%d: no number found in '%s'", __func__, __LINE__, p);
!             goto irregular;
!         }
!         if( len == 0 ) {
!             dbgmsg("%s:%d: ZERO length found in '%s'", __func__, __LINE__, p);
!             goto irregular;
!         }
  
! 	std::vector <char> pic(len + 1, '\0');
!         memset(pic.data(), *start, len);
!         const char *finish = picture + pmatch[2].rm_eo,
!                     *eopicture = picture + strlen(picture);
  
!         p = xasprintf( "%*s%s%*s",
! 		       (int)(start - picture), picture,
! 		       pic.data(),
! 		       (int)(eopicture - finish), finish );
  
!         free(picture);
!         picture = p;
!         continue;
      }
      assert(erc == REG_NOMATCH);
  
--- 520,569 ----
      regmatch_t pmatch[4];
  
      if( (erc = regcomp(preg, regex, cflags)) != 0 ) {
!       regerror(erc, preg, regexmsg, sizeof(regexmsg));
!       dbgmsg( "%s:%d: could not compile regex: %s", __func__, __LINE__, regexmsg );
!       return picture;
      }
  
      while( (erc = regexec(preg, picture, COUNT_OF(pmatch), pmatch, 0)) == 0 ) {
!       assert(pmatch[1].rm_so != -1 && pmatch[1].rm_so < pmatch[1].rm_eo);
!       size_t len = pmatch[1].rm_eo - pmatch[1].rm_so;
!       assert(len == 1);
!       const char *start = picture + pmatch[1].rm_so;
  
!       assert(pmatch[2].rm_so != -2 && pmatch[2].rm_so < pmatch[2].rm_eo);
!       len = pmatch[2].rm_eo - pmatch[2].rm_so;
!       assert(len > 0);
  
!       /*
!        * Overwrite e.g. A(4) with AAAA.
!        */
!       assert(pmatch[2].rm_so == pmatch[1].rm_eo + 1); // character paren number
!       p = picture + pmatch[2].rm_so;
!       len = 0;
!       fmt_size_t lenf = 0;
!       if( 1 != sscanf(p, "%" GCC_PRISZ "u", &lenf) ) {
!         dbgmsg("%s:%d: no number found in '%s'", __func__, __LINE__, p);
!         goto irregular;
!       }
!       len = lenf;
!       if( len == 0 ) {
!         dbgmsg("%s:%d: ZERO length found in '%s'", __func__, __LINE__, p);
!         goto irregular;
!       }
  
!       std::vector <char> pic(len + 1, '\0');
!       memset(pic.data(), *start, len);
!       const char *finish = picture + pmatch[2].rm_eo,
!         *eopicture = picture + strlen(picture);
  
!       p = xasprintf( "%*s%s%*s",
!                      (int)(start - picture), picture,
!                      pic.data(),
!                      (int)(eopicture - finish), finish );
  
!       free(picture);
!       picture = p;
      }
      assert(erc == REG_NOMATCH);
  
*************** is_elementary( enum cbl_field_type_t typ
*** 462,468 ****
      case FldFloat:
        return true; // takes up space
      }
!     dbgmsg("%s:%d: invalid symbol_type_t %d", __func__, __LINE__, type);
      return false;
  }
  
--- 634,640 ----
      case FldFloat:
        return true; // takes up space
      }
!     cbl_internal_error("%s:%d: invalid %<symbol_type_t%> %d", __func__, __LINE__, type);
      return false;
  }
  
*************** symbol_field_type_update( cbl_field_t *f
*** 774,780 ****
  
  bool
  redefine_field( cbl_field_t *field ) {
!   cbl_field_t *primary = symbol_redefines(field);
    bool fOK = true;
  
    if( !primary ) return false;
--- 946,952 ----
  
  bool
  redefine_field( cbl_field_t *field ) {
!   const cbl_field_t *primary = symbol_redefines(field);
    bool fOK = true;
  
    if( !primary ) return false;
*************** cbl_field_t::report_invalid_initial_valu
*** 822,828 ****
          // 8 or more, we need do no further testing because we assume
          // everything fits.
          if( data.capacity < 8 ) {
!           auto p = strchr(data.initial, symbol_decimal_point());
            if( p && atoll(p+1) != 0 ) {
              error_msg(loc, "integer type %s VALUE '%s' "
                       "requires integer VALUE",
--- 994,1000 ----
          // 8 or more, we need do no further testing because we assume
          // everything fits.
          if( data.capacity < 8 ) {
!           const char *p = strchr(data.initial, symbol_decimal_point());
            if( p && atoll(p+1) != 0 ) {
              error_msg(loc, "integer type %s VALUE '%s' "
                       "requires integer VALUE",
*************** cbl_field_t::report_invalid_initial_valu
*** 885,892 ****
                                                   return TOUPPER(ch) == 'E';
                                                 } );
                if( !has_exponent && data.precision() < pend - p ) {
!                 error_msg(loc, "%s cannot represent  VALUE '%s' exactly (max .%zu)",
!                          name, data.initial, pend - p);
                }
              }
            }
--- 1057,1064 ----
                                                   return TOUPPER(ch) == 'E';
                                                 } );
                if( !has_exponent && data.precision() < pend - p ) {
!                 error_msg(loc, "%s cannot represent VALUE %qs exactly (max %c%ld)",
!                           name, data.initial, '.', (long)(pend - p));
                }
              }
            }
*************** const cbl_field_t *
*** 944,951 ****
  literal_subscript_oob( const cbl_refer_t& r, size_t& isub /* output */)  {
    // Verify literal subscripts if dimensions are correct.
    size_t ndim(dimensions(r.field));
!   if( ndim == 0 || ndim != r.nsubscript ) return NULL;
!   cbl_refer_t *esub = r.subscripts + r.nsubscript;
    std::vector<cbl_field_t *> dims( ndim, NULL );
    auto pdim = dims.end();
  
--- 1116,1122 ----
  literal_subscript_oob( const cbl_refer_t& r, size_t& isub /* output */)  {
    // Verify literal subscripts if dimensions are correct.
    size_t ndim(dimensions(r.field));
!   if( ndim == 0 || ndim != r.nsubscript() ) return NULL;
    std::vector<cbl_field_t *> dims( ndim, NULL );
    auto pdim = dims.end();
  
*************** literal_subscript_oob( const cbl_refer_t
*** 963,994 ****
     * for the corresponding dimension.  Return the first subscript not
     * meeting those criteria, if any.
     */
!   auto p = std::find_if( r.subscripts, esub,
!                          [&pdim]( const cbl_refer_t& r ) {
                             const auto& occurs((*pdim)->occurs);
                             pdim++;
                             return ! occurs.subscript_ok(r.field);
                           } );
!   isub = p - r.subscripts;
!   return p == esub? NULL : dims[isub];
  }
  
  size_t
  cbl_refer_t::subscripts_set( const std::list<cbl_refer_t>& subs ) {
!   nsubscript = subs.size();
!   subscripts = new cbl_refer_t[nsubscript];
!   std::copy( subs.begin(), subs.end(), subscripts );
! 
    return dimensions(field);
  }
  
  const char *
  cbl_refer_t::str() const {
!   static char subscripts[64];
!   sprintf(subscripts, "(%u of %zu dimensions)", nsubscript, dimensions(field));
    char *output = xasprintf("%s %s %s",
                             field? field_str(field) : "(none)",
!                            0 < dimensions(field)? subscripts : "",
                             is_refmod_reference()? "(refmod)" : "" );
    return output;
  }
--- 1134,1164 ----
     * for the corresponding dimension.  Return the first subscript not
     * meeting those criteria, if any.
     */
!   auto psub = std::find_if( r.subscripts.begin(), r.subscripts.end(),
!                          [pdim]( const cbl_refer_t& r ) mutable {
                             const auto& occurs((*pdim)->occurs);
                             pdim++;
                             return ! occurs.subscript_ok(r.field);
                           } );
!   isub = psub - r.subscripts.begin();
!   return psub == r.subscripts.end()? NULL : dims[isub];
  }
  
  size_t
  cbl_refer_t::subscripts_set( const std::list<cbl_refer_t>& subs ) {
!   subscripts.clear();
!   std::copy( subs.begin(), subs.end(), std::back_inserter(subscripts) );
    return dimensions(field);
  }
  
  const char *
  cbl_refer_t::str() const {
!   static char subscripts_l[64];
!   sprintf(subscripts_l, "(%u of " HOST_SIZE_T_PRINT_UNSIGNED " dimensions)",
!           nsubscript(), (fmt_size_t)dimensions(field));
    char *output = xasprintf("%s %s %s",
                             field? field_str(field) : "(none)",
!                            0 < dimensions(field)? subscripts_l : "",
                             is_refmod_reference()? "(refmod)" : "" );
    return output;
  }
*************** cbl_refer_t::name() const {
*** 1001,1018 ****
  
  const char *
  cbl_refer_t::deref_str() const {
!   std::vector<char> dimstr(nsubscript * 16, '\0');
    dimstr.at(0) = '(';
    auto p = dimstr.begin() + 1;
  
    if( !field ) return name();
  
!   for( auto sub = subscripts; sub <  subscripts + nsubscript; sub++ ) {
!     auto initial = sub->field->data.initial ? sub->field->data.initial : "?";
      size_t len = dimstr.end() - p;
      p += snprintf( &*p, len, "%s ", initial );
    }
!   if( 0 < nsubscript ) {
      *--p = ')';
    }
    char *output = xasprintf("%s%s", field->name, dimstr.data());
--- 1171,1188 ----
  
  const char *
  cbl_refer_t::deref_str() const {
!   std::vector<char> dimstr(nsubscript() * 16, '\0');
    dimstr.at(0) = '(';
    auto p = dimstr.begin() + 1;
  
    if( !field ) return name();
  
!   for( const auto& sub : subscripts ) {
!     auto initial = sub.field->data.initial ? sub.field->data.initial : "?";
      size_t len = dimstr.end() - p;
      p += snprintf( &*p, len, "%s ", initial );
    }
!   if( ! subscripts.empty() ) {
      *--p = ')';
    }
    char *output = xasprintf("%s%s", field->name, dimstr.data());
*************** struct move_corresponding_field {
*** 1031,1040 ****
      tgt.field = cbl_field_of(symbol_at(elem.second));
  
      if( yydebug ) {
!       dbgmsg("move_corresponding:%d: SRC: %3zu %s", __LINE__,
!             elem.first, src.str());
!       dbgmsg("move_corresponding:%d:   to %3zu %s", __LINE__,
!             elem.second, tgt.str());
      }
  
      parser_move(tgt, src);
--- 1201,1210 ----
      tgt.field = cbl_field_of(symbol_at(elem.second));
  
      if( yydebug ) {
!       dbgmsg("move_corresponding:%d: SRC: %3" GCC_PRISZ "u %s", __LINE__,
!             (fmt_size_t)elem.first, src.str());
!       dbgmsg("move_corresponding:%d:   to %3" GCC_PRISZ "u %s", __LINE__,
!             (fmt_size_t)elem.second, tgt.str());
      }
  
      parser_move(tgt, src);
*************** valid_move( const struct cbl_field_t *tg
*** 1089,1098 ****
    static_assert(sizeof(matrix[0]) == COUNT_OF(matrix[0]),
                  "matrix should be square");
  
!   for( const cbl_field_t *args[] = {tgt, src}, **p=args;
!        p < args + COUNT_OF(args); p++ ) {
!     auto& f(**p);
!     switch(f.type) {
      case FldClass:
      case FldConditional:
      case FldIndex:
--- 1259,1266 ----
    static_assert(sizeof(matrix[0]) == COUNT_OF(matrix[0]),
                  "matrix should be square");
  
!   for( auto field : { src, tgt } ) {
!     switch(field->type) {
      case FldClass:
      case FldConditional:
      case FldIndex:
*************** valid_move( const struct cbl_field_t *tg
*** 1104,1112 ****
      case FldForward:
      case FldBlob:
      default:
!       if( sizeof(matrix[0]) < f.type ) {
          cbl_internal_error("logic error: MOVE %s %s invalid type:",
!                            cbl_field_type_str(f.type), f.name);
        }
        break;
      }
--- 1272,1280 ----
      case FldForward:
      case FldBlob:
      default:
!       if( sizeof(matrix[0]) < field->type ) {
          cbl_internal_error("logic error: MOVE %s %s invalid type:",
!                            cbl_field_type_str(field->type), field->name);
        }
        break;
      }
*************** valid_move( const struct cbl_field_t *tg
*** 1138,1145 ****
          if( yydebug && ! retval ) {
            auto bad = std::find_if( p, pend,
                                     []( char ch ) { return ! ISDIGIT(ch); } );
!           dbgmsg("%s:%d: offending character '%c' at position %zu",
!                 __func__, __LINE__, *bad, bad - p);
          }
        }
        break;
--- 1306,1314 ----
          if( yydebug && ! retval ) {
            auto bad = std::find_if( p, pend,
                                     []( char ch ) { return ! ISDIGIT(ch); } );
!           dbgmsg("%s:%d: offending character '%c' at position "
!                  HOST_SIZE_T_PRINT_UNSIGNED,
!                  __func__, __LINE__, *bad, (fmt_size_t)(bad - p));
          }
        }
        break;
*************** public:
*** 1363,1369 ****
    {
      assert(isym);
    }
!   procdef_t( const procref_base_t& ref )
      : procref_base_t(ref)
      , isym(0)
    {}
--- 1532,1538 ----
    {
      assert(isym);
    }
!   explicit procdef_t( const procref_base_t& ref )
      : procref_base_t(ref)
      , isym(0)
    {}
*************** public:
*** 1372,1384 ****
      return procref_base_t(*this) < procref_base_t(that);
    }
  
-   bool operator<( const procref_base_t& that ) const {
-     if( that.has_section() ) {
-       return procref_base_t(*this) < that;
-     }
-     return strcasecmp(paragraph(), that.paragraph()) < 0;
-   }
- 
    cbl_label_t * label_of() const {
      return isym == 0? NULL : cbl_label_of(symbol_at(isym));
    }
--- 1541,1546 ----
*************** static procedures_t::iterator current_pr
*** 1409,1415 ****
  class procedure_match {
    const procref_base_t& ref;
  public:
!   procedure_match( const procref_base_t& ref ) : ref(ref) {}
    // Match a 2-name reference to section & paragraph, else to one or the other.
    bool operator()( procedures_t::const_reference elem ) {
      const procdef_t& key = elem.first;
--- 1571,1577 ----
  class procedure_match {
    const procref_base_t& ref;
  public:
!   explicit procedure_match( const procref_base_t& ref ) : ref(ref) {}
    // Match a 2-name reference to section & paragraph, else to one or the other.
    bool operator()( procedures_t::const_reference elem ) {
      const procdef_t& key = elem.first;
*************** locally_unique( size_t program, const pr
*** 1437,1443 ****
    const char *section_name = ref.has_section()? ref.section() : key.section();
    procref_base_t full_ref(section_name, ref.paragraph());
  
!   return 1 == procedures.count(full_ref);
  }
  
  // Add each section and paragraph to the map as it occurs in the Cobol text.
--- 1599,1605 ----
    const char *section_name = ref.has_section()? ref.section() : key.section();
    procref_base_t full_ref(section_name, ref.paragraph());
  
!   return 1 == procedures.count(procdef_t(full_ref));
  }
  
  // Add each section and paragraph to the map as it occurs in the Cobol text.
*************** ambiguous_reference( size_t program ) {
*** 1498,1506 ****
                                 is_unique(program, proc.first) );
      if( proc.second.end() != ambiguous ) {
        if( yydebug ) {
!         dbgmsg("%s: %s of '%s' has %zu potential matches", __func__,
!               ambiguous->paragraph(), ambiguous->section(),
!               procedures.count(*ambiguous));
        }
        return new procref_t(*ambiguous);
      }
--- 1660,1669 ----
                                 is_unique(program, proc.first) );
      if( proc.second.end() != ambiguous ) {
        if( yydebug ) {
!         dbgmsg("%s: %s of '%s' has " HOST_SIZE_T_PRINT_UNSIGNED
!                "potential matches", __func__,
!                ambiguous->paragraph(), ambiguous->section(),
!                (fmt_size_t)procedures.count(procdef_t(*ambiguous)));
        }
        return new procref_t(*ambiguous);
      }
*************** intradeclarative_reference() {
*** 1527,1533 ****
  class next_group {
    size_t isym;
  public:
!   next_group( symbol_elem_t *group ) : isym(symbol_index(group)) {}
  
    // return true if elem is not a member of the group
    bool operator()( const symbol_elem_t& elem ) {
--- 1690,1696 ----
  class next_group {
    size_t isym;
  public:
!  explicit next_group( const symbol_elem_t *group ) : isym(symbol_index(group)) {}
  
    // return true if elem is not a member of the group
    bool operator()( const symbol_elem_t& elem ) {
*************** parent_names( const symbol_elem_t *elem,
*** 1543,1551 ****
  
    if( is_filler(cbl_field_of(elem)) ) return;
  
!   // dbgmsg("%s: asked about %s of %s (%zu away)", __func__,
    //       cbl_field_of(elem)->name,
!   //       cbl_field_of(group)->name, elem - group);
  
    for( const symbol_elem_t *e=elem; e && group < e; e = symbol_parent(e) ) {
      names.push_front( cbl_field_of(e)->name );
--- 1706,1714 ----
  
    if( is_filler(cbl_field_of(elem)) ) return;
  
!   // dbgmsg("%s: asked about %s of %s (" HOST_SIZE_T_PRINT_UNSIGNED " away)", __func__,
    //       cbl_field_of(elem)->name,
!   //       cbl_field_of(group)->name, (fmt_size_t)(elem - group));
  
    for( const symbol_elem_t *e=elem; e && group < e; e = symbol_parent(e) ) {
      names.push_front( cbl_field_of(e)->name );
*************** public:
*** 1564,1578 ****
                        symbol_elem_t *rgroup, type_t type )
      : lgroup(lgroup), rgroup(rgroup), type(type)
    {
!     dbgmsg( "%s:%d: for #%zu %s and #%zu %s on line %d", __func__, __LINE__,
!              symbol_index(lgroup), cbl_field_of(lgroup)->name,
!              symbol_index(rgroup), cbl_field_of(rgroup)->name, yylineno );
    }
  
    static bool
    any_redefines( const cbl_field_t& field, const symbol_elem_t *group ) {
      for( const cbl_field_t *f = &field; f && f->parent > 0; f = parent_of(f) ) {
!       symbol_elem_t *e = symbol_at(f->parent);
        if( e == group || e->type != SymField ) break;
        if( symbol_redefines(f) ) return true;
      }
--- 1727,1743 ----
                        symbol_elem_t *rgroup, type_t type )
      : lgroup(lgroup), rgroup(rgroup), type(type)
    {
!     dbgmsg( "%s:%d: for #" HOST_SIZE_T_PRINT_UNSIGNED
!             " %s and #" HOST_SIZE_T_PRINT_UNSIGNED " %s on line %d",
!             __func__, __LINE__,
!             (fmt_size_t)symbol_index(lgroup), cbl_field_of(lgroup)->name,
!             (fmt_size_t)symbol_index(rgroup), cbl_field_of(rgroup)->name, yylineno );
    }
  
    static bool
    any_redefines( const cbl_field_t& field, const symbol_elem_t *group ) {
      for( const cbl_field_t *f = &field; f && f->parent > 0; f = parent_of(f) ) {
!       const symbol_elem_t *e = symbol_at(f->parent);
        if( e == group || e->type != SymField ) break;
        if( symbol_redefines(f) ) return true;
      }
*************** corresponding_fields( cbl_field_t *lhs,
*** 1643,1650 ****
    lhsg.a = symbols_begin(field_index(lhs));
    lhsg.z = std::find_if( lhsg.a, symbols_end(), next_group(lhsg.a) );
  
!   dbgmsg("%s:%d: examining %zu symbols after %s", __func__, __LINE__,
!           lhsg.z - lhsg.a, lhs->name);
  
    find_corresponding finder( symbol_at(field_index(lhs)),
                               symbol_at(field_index(rhs)), type );
--- 1808,1816 ----
    lhsg.a = symbols_begin(field_index(lhs));
    lhsg.z = std::find_if( lhsg.a, symbols_end(), next_group(lhsg.a) );
  
!   dbgmsg("%s:%d: examining " HOST_SIZE_T_PRINT_UNSIGNED " symbols after %s",
!           __func__, __LINE__,
!           (fmt_size_t)(lhsg.z - lhsg.a), lhs->name);
  
    find_corresponding finder( symbol_at(field_index(lhs)),
                               symbol_at(field_index(rhs)), type );
*************** corresponding_fields( cbl_field_t *lhs,
*** 1652,1659 ****
  
    output.erase(0);
  
!   dbgmsg( "%s:%d: %s and %s have %zu corresponding fields",
!           __func__, __LINE__, lhs->name, rhs->name, output.size() );
  
    return output;
  }
--- 1818,1826 ----
  
    output.erase(0);
  
!   dbgmsg( "%s:%d: %s and %s have " HOST_SIZE_T_PRINT_UNSIGNED
!           " corresponding fields",
!           __func__, __LINE__, lhs->name, rhs->name, (fmt_size_t)output.size() );
  
    return output;
  }
*************** date_time_fmt( const char input[] ) {
*** 1693,1704 ****
      { regex_t(), 'd', "^(" DATE_FMT_B "|" DATE_FMT_E ")$" },
      { regex_t(), 't', "^(" TIME_FMT_B "|" TIME_FMT_E ")$" },
    };
!   int erc, cflags = REG_EXTENDED | REG_ICASE, eflags=0;
    regmatch_t m[5];
    char result = 0;
  
    if( ! compiled ) {
      for( auto& fmt : fmts ) {
        if( (erc = regcomp(&fmt.reg, fmt.pattern, cflags)) != 0 ) {
          char msg[80];
          regerror(erc, &fmt.reg, msg, sizeof(msg));
--- 1860,1872 ----
      { regex_t(), 'd', "^(" DATE_FMT_B "|" DATE_FMT_E ")$" },
      { regex_t(), 't', "^(" TIME_FMT_B "|" TIME_FMT_E ")$" },
    };
!   int cflags = REG_EXTENDED | REG_ICASE, eflags=0;
    regmatch_t m[5];
    char result = 0;
  
    if( ! compiled ) {
      for( auto& fmt : fmts ) {
+       int erc;
        if( (erc = regcomp(&fmt.reg, fmt.pattern, cflags)) != 0 ) {
          char msg[80];
          regerror(erc, &fmt.reg, msg, sizeof(msg));
*************** struct input_file_t {
*** 1731,1741 ****
    ino_t inode;
    int lineno;
    const char *name;
-   const line_map *lines;
  
    input_file_t( const char *name, ino_t inode,
!                 int lineno=1, const line_map *lines = NULL )
!     : inode(inode), lineno(lineno), name(name), lines(lines)
    {
      if( inode == 0 ) inode_set();
    }
--- 1899,1908 ----
    ino_t inode;
    int lineno;
    const char *name;
  
    input_file_t( const char *name, ino_t inode,
!                 int lineno=1 )
!     : inode(inode), lineno(lineno), name(name)
    {
      if( inode == 0 ) inode_set();
    }
*************** struct input_file_t {
*** 1754,1767 ****
  
  class unique_stack : public std::stack<input_file_t>
  {
   public:
    bool push( const value_type& value ) {
      auto ok = std::none_of( c.cbegin(), c.cend(),
!                             [value]( auto& that ) {
                                return value == that;
                                  } );
      if( ok ) {
        std::stack<input_file_t>::push(value);
        return true;
      }
      size_t n = c.size();
--- 1921,1949 ----
  
  class unique_stack : public std::stack<input_file_t>
  {
+   friend void cobol_set_pp_option(int opt);
+   bool option_m;
+   std::set<std::string> all_names;
+ 
+   const char *
+   no_wd( const char *wd, const char *name ) {
+     int i;
+     for( i=0; wd[i] == name[i]; i++ ) i++;
+     if( wd[i] == '\0' && name[i] == '/' ) i++;
+     return yydebug? name : name + i;
+   }
+ 
   public:
+   unique_stack() : option_m(false) {}
+ 
    bool push( const value_type& value ) {
      auto ok = std::none_of( c.cbegin(), c.cend(),
!                             [value]( const auto& that ) {
                                return value == that;
                                  } );
      if( ok ) {
        std::stack<input_file_t>::push(value);
+       all_names.insert(value.name);
        return true;
      }
      size_t n = c.size();
*************** class unique_stack : public std::stack<i
*** 1772,1792 ****
                  "----- ---- --------"
                  "----------------------------------------");
          for( const auto& v : c ) {
!           dbgmsg( " %4zu %4d %s", c.size() - --n, v.lineno, no_wd(wd, v.name) );
          }
        } else {
!         dbgmsg("unable to get current working directory: %m");
        }
        free(wd);
      }
      return false;
    }
!   const char *
!   no_wd( const char *wd, const char *name ) {
!     int i;
!     for( i=0; wd[i] == name[i]; i++ ) i++;
!     if( wd[i] == '\0' && name[i] == '/' ) i++;
!     return yydebug? name : name + i;
    }
  };
  
--- 1954,1992 ----
                  "----- ---- --------"
                  "----------------------------------------");
          for( const auto& v : c ) {
!           dbgmsg( " %4" GCC_PRISZ "u %4d %s",
!                   (fmt_size_t)(c.size() - --n), v.lineno, no_wd(wd, v.name) );
          }
        } else {
!         dbgmsg("unable to get current working directory: %s", xstrerror(errno));
        }
        free(wd);
      }
      return false;
    }
! 
!   // Look down into the stack. peek(0) == top()
!   const input_file_t& peek( size_t n ) const {
!     gcc_assert( n < size() );
!     return c.at(size() - ++n);
!   }
! 
!   void option( int opt ) { // capture other preprocessor options eventually
!     assert(opt == 'M');
!     option_m = true;
!   }
!   int option() const {
!     return option_m?  'M' : 0;
!   }
! 
!   void print() const {
!     std::string input( top().name );
!     printf( "%s: ", input.c_str() );
!     for( const auto& name : all_names ) {
!       if( name != input )
! 	printf( "\\\n\t%s ", name.c_str() );
!     }
!     printf("\n");
    }
  };
  
*************** static unique_stack input_filenames;
*** 1795,1800 ****
--- 1995,2006 ----
  static std::map<std::string, ino_t> old_filenames;
  static const unsigned int sysp = 0;  // not a C header file, cf. line-map.h
  
+ void cobol_set_pp_option(int opt) {
+   // capture other preprocessor options eventually
+   assert(opt == 'M');
+   input_filenames.option_m = true;
+ }
+ 
  /*
   * Maintain a stack of input filenames.  Ensure the files are unique (by
   * inode), to prevent copybook cycles. Before pushing a new name, Record the
*************** static const unsigned int sysp = 0;  //
*** 1805,1843 ****
   * to enforce uniqueness, and the scanner to maintain line numbers.
   */
  bool cobol_filename( const char *name, ino_t inode ) {
!   line_map *lines = NULL;
    if( inode == 0 ) {
      auto p = old_filenames.find(name);
      if( p == old_filenames.end() ) {
        for( auto& elem : old_filenames ) {
!         dbgmsg("%6zu %-30s", elem.second, elem.first.c_str());
        }
        cbl_errx( "logic error: missing inode for %s", name);
      }
!     inode = p->second;
!     assert(inode != 0);
    }
    linemap_add(line_table, LC_ENTER, sysp, name, 1);
    input_filename_vestige = name;
!   bool pushed = input_filenames.push( input_file_t(name, inode, 1, lines) );
!   input_filenames.top().lineno = yylineno = 1;
    return pushed;
  }
  
  const char *
! cobol_lineno_save() {
    if( input_filenames.empty() ) return NULL;
    auto& input( input_filenames.top() );
!   input.lineno = yylineno;
    return input.name;
  }
  
  const char *
  cobol_filename() {
    return input_filenames.empty()? input_filename_vestige : input_filenames.top().name;
  }
  
! const char *
  cobol_filename_restore() {
    assert(!input_filenames.empty());
    const input_file_t& top( input_filenames.top() );
--- 2011,2069 ----
   * to enforce uniqueness, and the scanner to maintain line numbers.
   */
  bool cobol_filename( const char *name, ino_t inode ) {
!   //const line_map *lines = NULL;
    if( inode == 0 ) {
      auto p = old_filenames.find(name);
      if( p == old_filenames.end() ) {
        for( auto& elem : old_filenames ) {
!         dbgmsg("%6" GCC_PRISZ "u %-30s",
!                (fmt_size_t)elem.second, elem.first.c_str());
        }
        cbl_errx( "logic error: missing inode for %s", name);
      }
!     else {
!       inode = p->second;
!       assert(inode != 0);
!     }
    }
    linemap_add(line_table, LC_ENTER, sysp, name, 1);
    input_filename_vestige = name;
!   bool pushed = input_filenames.push( input_file_t(name, inode, 1) );
    return pushed;
  }
  
  const char *
! cobol_lineno( int lineno ) {
    if( input_filenames.empty() ) return NULL;
    auto& input( input_filenames.top() );
!   input.lineno = lineno;
    return input.name;
  }
  
+ /*
+  * This function is called from the scanner, usually when a copybook is on top
+  * of the input stack, before the parser retrieves the token and resets the
+  * current filename.  For that reason, we normaly want to line number of the
+  * file that is about to become the current one, which is the one behind top().
+  *
+  * If somehow we arrive here when there is nothing underneath, we return the
+  * current line nubmer, or zero if there's no input.  The only consequence is
+  * that the reported line number might be wrong.
+  */
+ int
+ cobol_lineno() {
+   if( input_filenames.empty() ) return 0;
+   size_t n = input_filenames.size() < 2? 0 : 1;
+   const auto& input( input_filenames.peek(n) );
+   return input.lineno;
+ }
+ 
  const char *
  cobol_filename() {
    return input_filenames.empty()? input_filename_vestige : input_filenames.top().name;
  }
  
! void
  cobol_filename_restore() {
    assert(!input_filenames.empty());
    const input_file_t& top( input_filenames.top() );
*************** cobol_filename_restore() {
*** 1845,1867 ****
    input_filename_vestige = top.name;
  
    input_filenames.pop();
!   if( input_filenames.empty() ) return NULL;
! 
!   auto& input = input_filenames.top();
  
!   input.lines = linemap_add(line_table, LC_LEAVE, sysp, NULL, 0);
  
!   yylineno = input.lineno;
!   return input.name;
  }
  
! static location_t token_location;
  
  template <typename LOC>
  static void
  gcc_location_set_impl( const LOC& loc ) {
!   token_location = linemap_line_start( line_table, loc.last_line, 80 );
    token_location = linemap_position_for_column( line_table, loc.first_column);
    location_dump(__func__, __LINE__, "parser", loc);
  }
  
--- 2071,2122 ----
    input_filename_vestige = top.name;
  
    input_filenames.pop();
!   if( input_filenames.empty() ) return;
  
!   const auto& input = input_filenames.top();
  
!   linemap_add(line_table, LC_LEAVE, sysp, NULL, 0);
  }
  
! static int first_line_minus_1 = 0;
! static location_t token_location_minus_1 = 0;
! static location_t token_location = 0;
! 
! location_t current_token_location() { return token_location; }
! location_t current_location_minus_one() { return token_location_minus_1; }
! void current_location_minus_one_clear()
!   {
!   first_line_minus_1 = 0;
!   }
  
  template <typename LOC>
  static void
  gcc_location_set_impl( const LOC& loc ) {
!   // Set the position to the first line & column in the location.
!   if( getenv("KILROY") )
!     {
!     fprintf(stderr, "********** KILROY %d\n", loc.first_line);
!     }
! 
!  static location_t loc_m_1 = 0;
! 
!   token_location = linemap_line_start( line_table, loc.first_line, 80 );
    token_location = linemap_position_for_column( line_table, loc.first_column);
+ 
+   if( loc.first_line > first_line_minus_1 )
+     {
+     // In order for GDB-COBOL to be able to step through COBOL code properly,
+     // it is sometimes necessary for the code at the beginning of a COBOL
+     // line to be using the location_t of the previous line.  This is true, for
+     // example, when laying down the infrastructure code between the last
+     // statement of a paragraph and the code created at the beginning of the
+     // following paragragh.  This code assumes that token_location values of
+     // interest are monotonic, and stores that prior value.
+     first_line_minus_1 = loc.first_line;
+     token_location_minus_1 = loc_m_1;
+     loc_m_1 = token_location;
+     }
+ 
    location_dump(__func__, __LINE__, "parser", loc);
  }
  
*************** verify_format( const char gmsgid[] ) {
*** 1884,1894 ****
    static regex_t re;
    static int cflags = REG_EXTENDED;
    static int status = regcomp( &re, pattern, cflags );
-   static char errbuf[80];
- 
- 
  
    if( status != 0 ) {
      int n = regerror(status, &re, errbuf, sizeof(errbuf));
      gcc_assert(size_t(n) < sizeof(errbuf));
      fprintf(stderr, "%s:%d: %s", __func__, __LINE__, errbuf);
--- 2139,2147 ----
    static regex_t re;
    static int cflags = REG_EXTENDED;
    static int status = regcomp( &re, pattern, cflags );
  
    if( status != 0 ) {
+     static char errbuf[80];
      int n = regerror(status, &re, errbuf, sizeof(errbuf));
      gcc_assert(size_t(n) < sizeof(errbuf));
      fprintf(stderr, "%s:%d: %s", __func__, __LINE__, errbuf);
*************** verify_format( const char gmsgid[] ) {
*** 1907,1912 ****
--- 2160,2172 ----
  static const diagnostic_option_id option_zero;
  size_t parse_error_inc();
  
+ void gcc_location_dump() {
+     linemap_dump_location( line_table, token_location, stderr );
+ }
+ 
+ 
+ void ydferror( const char gmsgid[], ... ) ATTRIBUTE_GCOBOL_DIAG(1, 2);
+ 
  void
  ydferror( const char gmsgid[], ... ) {
    verify_format(gmsgid);
*************** ydferror( const char gmsgid[], ... ) {
*** 1915,1922 ****
    va_list ap;
    va_start (ap, gmsgid);
    rich_location richloc (line_table, token_location);
!   bool ret = global_dc->diagnostic_impl (&richloc, nullptr, option_zero,
!                                          gmsgid, &ap, DK_ERROR);
    va_end (ap);
  }
  
--- 2175,2182 ----
    va_list ap;
    va_start (ap, gmsgid);
    rich_location richloc (line_table, token_location);
!   /*bool ret =*/ global_dc->diagnostic_impl (&richloc, nullptr, option_zero,
!                                              gmsgid, &ap, DK_ERROR);
    va_end (ap);
  }
  
*************** extern YYLTYPE yylloc;
*** 1929,1935 ****
   * the global token_location, which is passed to the diagnostic framework. The
   * original value is restored when the instantiated variable goes out of scope.
   */
! class temp_loc_t : protected YYLTYPE {
    location_t orig;
   public:
    temp_loc_t() : orig(token_location) {
--- 2189,2195 ----
   * the global token_location, which is passed to the diagnostic framework. The
   * original value is restored when the instantiated variable goes out of scope.
   */
! class temp_loc_t {
    location_t orig;
   public:
    temp_loc_t() : orig(token_location) {
*************** class temp_loc_t : protected YYLTYPE {
*** 1937,1950 ****
  
      gcc_location_set(yylloc); // use lookahead location
    }
!   temp_loc_t( const YYLTYPE& loc) : orig(token_location) {
      gcc_location_set(loc);
    }
!   temp_loc_t( const YDFLTYPE& loc) : orig(token_location) {
!     YYLTYPE lloc = {
!       loc.first_line, loc.first_column,
!       loc.last_line,  loc.last_column };
!     gcc_location_set(lloc);
    }
    ~temp_loc_t() {
      if( orig != token_location ) {
--- 2197,2207 ----
  
      gcc_location_set(yylloc); // use lookahead location
    }
!   explicit temp_loc_t( const YYLTYPE& loc) : orig(token_location) {
      gcc_location_set(loc);
    }
!   explicit temp_loc_t( const YDFLTYPE& loc) : orig(token_location) {
!     gcc_location_set(loc);
    }
    ~temp_loc_t() {
      if( orig != token_location ) {
*************** void error_msg( const YYLTYPE& loc, cons
*** 1983,2000 ****
    ERROR_MSG_BODY
  }
  
  void error_msg( const YDFLTYPE& loc, const char gmsgid[], ... ) {
    ERROR_MSG_BODY
  }
  
! void
! cdf_location_set(YYLTYPE loc) {
!   extern YDFLTYPE ydflloc;
  
!   ydflloc.first_line =   loc.first_line;
!   ydflloc.first_column = loc.first_column;
!   ydflloc.last_line =    loc.last_line;
!   ydflloc.last_column =  loc.last_column;
  }
  
  void
--- 2240,2275 ----
    ERROR_MSG_BODY
  }
  
+ void error_msg( const YDFLTYPE& loc, const char gmsgid[], ... )
+   ATTRIBUTE_GCOBOL_DIAG(2, 3);
+ 
  void error_msg( const YDFLTYPE& loc, const char gmsgid[], ... ) {
    ERROR_MSG_BODY
  }
  
! bool
! warn_msg( const YYLTYPE& loc, const char gmsgid[], ... ) {
!   temp_loc_t looker(loc);
!   verify_format(gmsgid);
!   auto_diagnostic_group d;
!   va_list ap;
!   va_start (ap, gmsgid);
!   rich_location richloc (line_table, token_location);
!   auto ret = emit_diagnostic_valist( DK_WARNING, token_location,
!                                      option_zero, gmsgid, &ap );
!   va_end (ap);
!   return ret;
! }
  
! void error_msg_direct( const char gmsgid[], ... ) {
!   verify_format(gmsgid);
!   parse_error_inc();
!   auto_diagnostic_group d;
!   va_list ap;
!   va_start (ap, gmsgid);
!   /*auto ret = */emit_diagnostic_valist( DK_ERROR, token_location,
!                                          option_zero, gmsgid, &ap );
!   va_end (ap);
  }
  
  void
*************** yyerror( const char gmsgid[], ... ) {
*** 2006,2013 ****
    va_list ap;
    va_start (ap, gmsgid);
    rich_location richloc (line_table, token_location);
!   bool ret = global_dc->diagnostic_impl (&richloc, nullptr, option_zero,
!                                          gmsgid, &ap, DK_ERROR);
    va_end (ap);
    global_dc->end_group();
  }
--- 2281,2291 ----
    va_list ap;
    va_start (ap, gmsgid);
    rich_location richloc (line_table, token_location);
!   /*bool ret =*/ global_dc->diagnostic_impl ( &richloc,
!                                               nullptr,
!                                               option_zero,
!                                               gmsgid,
!                                               &ap, DK_ERROR);
    va_end (ap);
    global_dc->end_group();
  }
*************** yyerrorvl( int line, const char *filenam
*** 2050,2056 ****
  static inline size_t
  matched_length( const regmatch_t& rm ) { return rm.rm_eo - rm.rm_so; }
  
! const char *
  cobol_fileline_set( const char line[] ) {
    static const char pattern[] = "#line +([[:alnum:]]+) +[\"']([^\"']+). *\n";
    static const int cflags = REG_EXTENDED | REG_ICASE;
--- 2328,2334 ----
  static inline size_t
  matched_length( const regmatch_t& rm ) { return rm.rm_eo - rm.rm_so; }
  
! int
  cobol_fileline_set( const char line[] ) {
    static const char pattern[] = "#line +([[:alnum:]]+) +[\"']([^\"']+). *\n";
    static const int cflags = REG_EXTENDED | REG_ICASE;
*************** cobol_fileline_set( const char line[] )
*** 2063,2069 ****
      if( (erc = regcomp(&re, pattern, cflags)) != 0 ) {
          regerror(erc, &re, regexmsg, sizeof(regexmsg));
          dbgmsg( "%s:%d: could not compile regex: %s", __func__, __LINE__, regexmsg );
!         return line;
      }
      preg = &re;
    }
--- 2341,2347 ----
      if( (erc = regcomp(&re, pattern, cflags)) != 0 ) {
          regerror(erc, &re, regexmsg, sizeof(regexmsg));
          dbgmsg( "%s:%d: could not compile regex: %s", __func__, __LINE__, regexmsg );
!         return 0;
      }
      preg = &re;
    }
*************** cobol_fileline_set( const char line[] )
*** 2071,2080 ****
      if( erc != REG_NOMATCH ) {
        regerror(erc, preg, regexmsg, sizeof(regexmsg));
        dbgmsg( "%s:%d: could not compile regex: %s", __func__, __LINE__, regexmsg );
!       return line;
      }
!     error_msg(yylloc, "invalid #line directive: %s", line );
!     return line;
    }
  
    const char
--- 2349,2358 ----
      if( erc != REG_NOMATCH ) {
        regerror(erc, preg, regexmsg, sizeof(regexmsg));
        dbgmsg( "%s:%d: could not compile regex: %s", __func__, __LINE__, regexmsg );
!       return 0;
      }
!     error_msg(yylloc, "invalid %<#line%> directive: %s", line );
!     return 0;
    }
  
    const char
*************** cobol_fileline_set( const char line[] )
*** 2083,2120 ****
    int fileline;
  
    if( 1 != sscanf(line_str, "%d", &fileline) )
!     yywarn("could not parse line number %s from #line directive", line_str);
  
    input_file_t input_file( filename, ino_t(0), fileline ); // constructor sets inode
  
    if( input_filenames.empty() ) {
-     input_file.lines = linemap_add(line_table, LC_ENTER, sysp, filename, 1);
      input_filenames.push(input_file);
    }
  
    input_file_t& file = input_filenames.top();
    file = input_file;
-   yylineno = file.lineno;
  
!   return file.name;
  }
  
  class cbl_timespec {
!   struct timespec now;
   public:
    cbl_timespec() {
!     clock_gettime(CLOCK_MONOTONIC, &now);
    }
    double ns() const {
!     return now.tv_sec * 1000000000 + now.tv_nsec;
    }
    friend double operator-( const cbl_timespec& now, const cbl_timespec& then );
  };
  
  double
! operator-( const cbl_timespec& then, const cbl_timespec& now ) {
    return (now.ns() - then.ns()) / 1000000000;
  }
  
  static int
  parse_file( const char filename[] )
--- 2361,2399 ----
    int fileline;
  
    if( 1 != sscanf(line_str, "%d", &fileline) )
!     yywarn("could not parse line number %s from %<#line%> directive", line_str);
  
    input_file_t input_file( filename, ino_t(0), fileline ); // constructor sets inode
  
    if( input_filenames.empty() ) {
      input_filenames.push(input_file);
    }
  
    input_file_t& file = input_filenames.top();
    file = input_file;
  
!   return file.lineno;
  }
  
+ //#define TIMING_PARSE
+ #ifdef TIMING_PARSE
  class cbl_timespec {
!   uint64_t now; // Nanoseconds
   public:
    cbl_timespec() {
!     now = get_time_nanoseconds();
    }
    double ns() const {
!     return now;
    }
    friend double operator-( const cbl_timespec& now, const cbl_timespec& then );
  };
  
  double
! operator-( const cbl_timespec& now, const cbl_timespec& then ) {
    return (now.ns() - then.ns()) / 1000000000;
  }
+ #endif
  
  static int
  parse_file( const char filename[] )
*************** parse_file( const char filename[] )
*** 2125,2139 ****
  
    parser_enter_file(filename);
  
    cbl_timespec start;
  
    int erc = yyparse();
  
    cbl_timespec finish;
    double dt  = finish - start;
    parser_leave_file();
  
-   //printf("Overall parse & generate time is %.6f seconds\n", dt);
  
    fclose (yyin);
  
--- 2404,2428 ----
  
    parser_enter_file(filename);
  
+   if( input_filenames.option() == 'M' ) {
+     input_filenames.print();
+     return 0;
+   }
+ 
+ #ifdef TIMING_PARSE
    cbl_timespec start;
+ #endif
  
    int erc = yyparse();
  
+ #ifdef TIMING_PARSE
    cbl_timespec finish;
    double dt  = finish - start;
+   printf("Overall parse & generate time is %.6f seconds\n", dt);
+ #endif
+ 
    parser_leave_file();
  
  
    fclose (yyin);
  
*************** cobol_set_debugging( bool flex, bool yac
*** 2157,2186 ****
    yy_flex_debug = flex? 1 : 0;
    ydfdebug = yydebug = yacc? 1 : 0;
    f_trace_debug = parser? 1 : 0;
- 
-   char *ind = getenv("INDICATOR_COLUMN");
-   if( ind ) {
-     int col;
-     if( 1 != sscanf(ind, "%d", &col) ) {
-       yywarn("ignored non-integer value for INDICATOR_COLUMN=%s", ind);
-     }
-     cobol_set_indicator_column(col);
-   }
  }
  
! os_locale_t os_locale = { "UTF-8", xstrdup("C.UTF-8") };
! 
  
  void
  cobol_parse_files (int nfile, const char **files)
  {
!   char * opaque = setlocale(LC_CTYPE, "");
    if( ! opaque ) {
      yywarn("setlocale: unable to initialize LOCALE");
    } else {
      char *codeset = nl_langinfo(CODESET);
      if( ! codeset ) {
!       yywarn("nl_langinfo failed after setlocale succeeded");
      } else {
        os_locale.codeset = codeset;
      }
--- 2446,2465 ----
    yy_flex_debug = flex? 1 : 0;
    ydfdebug = yydebug = yacc? 1 : 0;
    f_trace_debug = parser? 1 : 0;
  }
  
! os_locale_t os_locale = { "UTF-8", "C.UTF-8" };
  
  void
  cobol_parse_files (int nfile, const char **files)
  {
!   const char * opaque = setlocale(LC_CTYPE, "");
    if( ! opaque ) {
      yywarn("setlocale: unable to initialize LOCALE");
    } else {
      char *codeset = nl_langinfo(CODESET);
      if( ! codeset ) {
!       yywarn("%<nl_langinfo%> failed after %<setlocale()%> succeeded");
      } else {
        os_locale.codeset = codeset;
      }
*************** cbl_message(int fd, const char *format_s
*** 2202,2207 ****
--- 2481,2487 ----
    char *ostring = xvasprintf(format_string, ap);
    va_end(ap);
    write(fd, ostring, strlen(ostring));
+   write(fd, "\n", 1);
    free(ostring);
    }
  
*************** cbl_internal_error(const char *gmsgid, .
*** 2216,2221 ****
--- 2496,2503 ----
    va_start(ap, gmsgid);
    emit_diagnostic_valist( DK_ICE, token_location, option_zero, gmsgid, &ap );
    va_end(ap);
+   abort();  // This unnecessary statement is needed so that [[noreturn]]
+   //        // doesn't cause a warning.
  }
  
  void
*************** cbl_unimplemented_at( const YYLTYPE& loc
*** 2249,2256 ****
    va_end(ap);
  }
  
! /* 
!  * analogs to err(3) and errx(3). 
   */
  
  #pragma GCC diagnostic push
--- 2531,2538 ----
    va_end(ap);
  }
  
! /*
!  * analogs to err(3) and errx(3).
   */
  
  #pragma GCC diagnostic push
*************** dbgmsg(const char *msg, ...) {
*** 2291,2297 ****
  
  void
  dialect_error( const YYLTYPE& loc, const char term[], const char dialect[] ) {
!   error_msg(loc, "%s is not ISO syntax, requires -dialect %s",
             term, dialect);
  }
  
--- 2573,2579 ----
  
  void
  dialect_error( const YYLTYPE& loc, const char term[], const char dialect[] ) {
!   error_msg(loc, "%s is not ISO syntax, requires %<-dialect %s%>",
             term, dialect);
  }
  
*************** bool fisdigit(int c)
*** 2302,2313 ****
  bool fisspace(int c)
    {
    return ISSPACE(c);
!   };
  int  ftolower(int c)
    {
    return TOLOWER(c);
    }
  bool fisprint(int c)
    {
    return ISPRINT(c);
!   };
--- 2584,3204 ----
  bool fisspace(int c)
    {
    return ISSPACE(c);
!   }
  int  ftolower(int c)
    {
    return TOLOWER(c);
    }
+ int  ftoupper(int c)
+   {
+   return TOUPPER(c);
+   }
  bool fisprint(int c)
    {
    return ISPRINT(c);
!   }
! 
! // 8.9 Reserved words
! static const std::set<std::string> reserved_words = {
!   // GCC COBOL keywords
!   "COMMAND-LINE",
!   "COMMAND-LINE-COUNT",
! 
!   // GCC device names
!   "C01",
!   "C02",
!   "C03",
!   "C04",
!   "C05",
!   "C06",
!   "C07",
!   "C08",
!   "C09",
!   "C10",
!   "C11",
!   "C12",
!   "CONSOLE",
!   "S01",
!   "S02",
!   "S03",
!   "S04",
!   "S05",
!   "STDERR",
!   "STDIN",
!   "STDOUT",
!   "SYSIN",
!   "SYSIPT",
!   "SYSLIST",
!   "SYSLST",
!   "SYSOUT",
!   "SYSPCH",
!   "SYSPUNCH",
!   "UPSI",
! 
!   // IBM keywords that GCC recognizes
!   "BASIS",
!   "CBL",
!   "ENTER",
!   "READY",
!   "TITLE",
!   "TRACE",
!   "ALTER",
!   "COBOL",
!   "DATE-COMPILED",
!   "DATE-WRITTEN",
!   "DBCS",
!   "DEBUGGING",
!   "EGCS",
!   "ENTRY",
!   "EVERY",
!   "INSTALLATION",
!   "I-O-CONTROL",
!   "KANJI",
!   "LABEL",
!   "NULLS",
!   "PADDING",
!   "PROCEDURES",
!   "PROCEED",
!   "RECORDING",
!   "RERUN",
!   "REVERSED",
!   "SECURITY",
!   "TALLY",
!   "VOLATILE",
!   "XML",
!   "END-START",
! 
!   // ISO 2023 keywords
!   "ACCEPT",
!   "ACCESS",
!   "ACTIVE-CLASS",
!   "ADD",
!   "ADDRESS",
!   "ADVANCING",
!   "AFTER",
!   "ALIGNED",
!   "ALL",
!   "ALLOCATE",
!   "ALPHABET",
!   "ALPHABETIC",
!   "ALPHABETIC-LOWER",
!   "ALPHABETIC-UPPER",
!   "ALPHANUMERIC",
!   "ALPHANUMERIC-EDITED",
!   "ALSO",
!   "ALTERNATE",
!   "AND",
!   "ANY",
!   "ANYCASE",
!   "ARE",
!   "AREA",
!   "AREAS",
!   "AS",
!   "ASCENDING",
!   "ASSIGN",
!   "AT",
!   "B-AND",
!   "B-NOT",
!   "B-OR",
!   "B-SHIFT-L",
!   "B-SHIFT-LC",
!   "B-SHIFT-R",
!   "B-SHIFT-RC",
!   "B-XOR",
!   "BASED",
!   "BEFORE",
!   "BINARY",
!   "BINARY-CHAR",
!   "BINARY-DOUBLE",
!   "BINARY-LONG",
!   "BINARY-SHORT",
!   "BIT",
!   "BLANK",
!   "BLOCK",
!   "BOOLEAN",
!   "BOTTOM",
!   "BY",
!   "CALL",
!   "CANCEL",
!   "CF",
!   "CH",
!   "CHARACTER",
!   "CHARACTERS",
!   "CLASS",
!   "CLASS-ID",
!   "CLOSE",
!   "CODE",
!   "CODE-SET",
!   "COL",
!   "COLLATING",
!   "COLS",
!   "COLUMN",
!   "COLUMNS",
!   "COMMA",
!   "COMMIT",
!   "COMMON",
!   "COMP",
!   "COMPUTATIONAL",
!   "COMPUTE",
!   "CONDITION",
!   "CONFIGURATION",
!   "CONSTANT",
!   "CONTAINS",
!   "CONTENT",
!   "CONTINUE",
!   "CONTROL",
!   "CONTROLS",
!   "CONVERTING",
!   "COPY",
!   "CORR",
!   "CORRESPONDING",
!   "COUNT",
!   "CRT",
!   "CURRENCY",
!   "CURSOR",
!   "DATA",
!   "DATA-POINTER",
!   "DATE",
!   "DAY",
!   "DAY-OF-WEEK",
!   "DE",
!   "DECIMAL-POINT",
!   "DECLARATIVES",
!   "DEFAULT",
!   "DELETE",
!   "DELIMITED",
!   "DELIMITER",
!   "DEPENDING",
!   "DESCENDING",
!   "DESTINATION",
!   "DETAIL",
!   "DISPLAY",
!   "DIVIDE",
!   "DIVISION",
!   "DOWN",
!   "DUPLICATES",
!   "DYNAMIC",
!   "EC",
!   "EDITING",
!   "ELSE",
!   "EMD-START",
!   "END",
!   "END-ACCEPT",
!   "END-ADD",
!   "END-CALL",
!   "END-COMPUTE",
!   "END-DELETE",
!   "END-DISPLAY",
!   "END-DIVIDE",
!   "END-EVALUATE",
!   "END-IF",
!   "END-MULTIPLY",
!   "END-OF-PAGE",
!   "END-PERFORM",
!   "END-READ",
!   "END-RECEIVE",
!   "END-RETURN",
!   "END-REWRITE",
!   "END-SEARCH",
!   "END-SEND",
!   "END-STRING",
!   "END-SUBTRACT",
!   "END-UNSTRING",
!   "END-WRITE",
!   "ENVIRONMENT",
!   "EO",
!   "EOP",
!   "EQUAL",
!   "ERROR",
!   "EVALUATE",
!   "EXCEPTION",
!   "EXCEPTION-OBJECT",
!   "EXCLUSIVE-OR",
!   "EXIT",
!   "EXTEND",
!   "EXTERNAL",
!   "FACTORY",
!   "FALSE",
!   "FARTHEST-FROM-ZERO",
!   "FD",
!   "FILE",
!   "FILE-CONTROL",
!   "FILLER",
!   "FINAL",
!   "FINALLY",
!   "FIRST",
!   "FLOAT-BINARY-128",
!   "FLOAT-BINARY-32",
!   "FLOAT-BINARY-64",
!   "FLOAT-DECIMAL-16",
!   "FLOAT-DECIMAL-34",
!   "FLOAT-EXTENDED",
!   "FLOAT-INFINITY",
!   "FLOAT-LONG",
!   "FLOAT-NOT-A-NUMBER-",
!   "FLOAT-SHORT",
!   "FOOTING",
!   "FOR",
!   "FORMAT",
!   "FREE",
!   "FROM",
!   "FUNCTION",
!   "FUNCTION-ID",
!   "FUNCTION-POINTER",
!   "GENERATE",
!   "GET",
!   "GIVING",
!   "GLOBAL",
!   "GO",
!   "GOBACK",
!   "GREATER",
!   "GROUP",
!   "GROUP-USAGE",
!   "HEADING",
!   "HIGH-VALUE",
!   "HIGH-VALUES",
!   "I-O",
!   "I-OICONTROL",
!   "IDENTIFICATION",
!   "IF",
!   "IN",
!   "IN-ARITHMETIC-RANGE",
!   "INDEX",
!   "INDEXED",
!   "INDICATE",
!   "INHERITS",
!   "INITIAL",
!   "INITIALIZE",
!   "INITIATE",
!   "INPUT",
!   "INPUT-OUTPUT",
!   "INSPECT",
!   "INTERFACE",
!   "INTERFACE-ID",
!   "INTO",
!   "INVALID",
!   "INVOKE",
!   "IS",
!   "JUST",
!   "JUSTIFIED",
!   "KEY",
!   "LAST",
!   "LEADING",
!   "LEFT",
!   "LENGTH",
!   "LESS",
!   "LIMIT",
!   "LIMITS",
!   "LINAGE",
!   "LINAGE-COUNTER",
!   "LINE",
!   "LINE-COUNTER",
!   "LINES",
!   "LINKAGE",
!   "LOCAL-STORAGE",
!   "LOCALE",
!   "LOCATION",
!   "LOCK",
!   "LOW-VALUE",
!   "LOW-VALUES",
!   "MERGE",
!   "MESSAGE-TAG",
!   "METHOD-ID",
!   "MINUS",
!   "MODE",
!   "MOVE",
!   "MULTIPLY",
!   "NATIONAL",
!   "NATIONAL-EDITED",
!   "NATIVE",
!   "NEAREST-TO-ZERO",
!   "NEGATIVE",
!   "NESTED",
!   "NEXT",
!   "NO",
!   "NOT",
!   "NULL",
!   "NUMBER",
!   "NUMERIC",
!   "NUMERIC-EDITED",
!   "OBJECT",
!   "OBJECT-COMPUTER",
!   "OBJECT-REFERENCE",
!   "OCCURS",
!   "OF",
!   "OFF",
!   "OMITTED",
!   "ON",
!   "OPEN",
!   "OPTIONAL",
!   "OPTIONS",
!   "OR",
!   "ORDER",
!   "ORGANIZATION",
!   "OTHER",
!   "OUTPUT",
!   "OVERFLOW",
!   "OVERRIDE",
!   "PACKED-DECIMAL",
!   "PAGE",
!   "PAGE-COUNTER",
!   "PERFORM",
!   "PF",
!   "PH",
!   "PIC",
!   "PICTURE",
!   "PLUS",
!   "POINTER",
!   "POSITIVE",
!   "PRESENT",
!   "PRINTING",
!   "PROCEDURE",
!   "PROGRAM",
!   "PROGRAM-ID",
!   "PROGRAM-POINTER",
!   "PROPERTY",
!   "PROTOTYPE",
!   "QUIET",
!   "QUOTE",
!   "QUOTES",
!   "RAISE",
!   "RAISING",
!   "RANDOM",
!   "RD",
!   "READ",
!   "RECEIVE",
!   "RECORD",
!   "RECORDS",
!   "REDEFINES",
!   "REEL",
!   "REFERENCE",
!   "RELATIVE",
!   "RELEASE",
!   "REMAINDER",
!   "REMOVAL",
!   "RENAMES",
!   "REPLACE",
!   "REPLACING",
!   "REPORT",
!   "REPORTING",
!   "REPORTS",
!   "REPOSITORY",
!   "RESERVE",
!   "RESET",
!   "RESUME",
!   "RETRY",
!   "RETURN",
!   "RETURNING",
!   "REWIND",
!   "REWRITE",
!   "RF",
!   "RH",
!   "RIGHT",
!   "ROLLBACK",
!   "ROUNDED",
!   "RUN",
!   "SAME",
!   "SCREEN",
!   "SD",
!   "SEARCH",
!   "SECTION",
!   "SELECT",
!   "SELF",
!   "SEND",
!   "SENTENCE",
!   "SEPARATE",
!   "SEQUENCE",
!   "SEQUENTIAL",
!   "SET",
!   "SHARING",
!   "SIGN",
!   "SIGNALING",
!   "SIZE",
!   "SORT",
!   "SORT-MERGE",
!   "SOURCE",
!   "SOURCE-COMPUTER",
!   "SOURCES",
!   "SPACE",
!   "SPACES",
!   "SPECIAL-NAMES",
!   "STANDARD",
!   "STANDARD-1",
!   "STANDARD-2",
!   "START",
!   "STATUS",
!   "STOP",
!   "STRING",
!   "SUBTRACT",
!   "SUM",
!   "SUPER",
!   "SUPPRESS",
!   "SYMBOLIC",
!   "SYNC",
!   "SYNCHRONIZED",
!   "SYSTEM-DEFAULT",
!   "TABLE",
!   "TALLYING",
!   "TERMINATE",
!   "TEST",
!   "THAN",
!   "THEN",
!   "THROUGH",
!   "THRU",
!   "TIME",
!   "TIMES",
!   "TO",
!   "TOP",
!   "TRAILING",
!   "TRUE",
!   "TYPE",
!   "TYPEDEF",
!   "UNIT",
!   "UNIVERSAL",
!   "UNLOCK",
!   "UNSTRING",
!   "UNTIL",
!   "UP",
!   "UPON",
!   "USAGE",
!   "USE",
!   "USER-DEFAULT",
!   "USING",
!   "VAL-STATUS",
!   "VALID",
!   "VALIDATE",
!   "VALIDATE-STATUS",
!   "VALUE",
!   "VALUES",
!   "VARYING",
!   "WHEN",
!   "WITH",
!   "WORKING-STORAGE",
!   "WRITE",
!   "XOR",
!   "ZERO",
!   "ZEROES",
!   "ZEROS",
!   "+",
!   "-",
!   "*",
!   "/",
!   "**",
!   "<",
!   "<=",
!   "<>",
!   "=",
!   ">",
!   ">=",
!   "&",
!   "*>",
!   "::",
!   ">>",
! };
! 
! // 8.10 Context-sensitive words
! static const std::set<std::string> context_sensitive_words = {
!   "ACTIVATING",              // MODULE-NAME intrinsic function
!   "ANUM",                    // CONVERT intrinsic function
!   "APPLY",                   // I-O-CONTROL paragraph
!   "ARITHMETIC",              // OPTIONS paragraph
!   "ATTRIBUTE",               // SET statement
!   "AUTO",                    // screen description entry
!   "AUTOMATIC",               // LOCK MODE clause
!   "AWAY-FROM-ZERO",          // ROUNDED phrase
!   "BACKGROUND-COLOR",        // screen description entry
!   "BACKWARD",                // INSPECT statement
!   "BELL",                    // screen description entry and SET attribute statement
!   "BINARY-ENCODING",         // USAGE clause and FLOAT-DECIMAL clause
!   "BLINK",                   // screen description entry and SET attribute statement
!   "BYTE",                    // CONVERT intrinsic function
!   "BYTES",                   // RECORD clause
!   "BYTE-LENGTH",             // constant entry
!   "CAPACITY",                // OCCURS clause
!   "CENTER",                  // COLUMN clause
!   "CLASSIFICATION",          // OBJECT-COMPUTER paragraph
!   "CURRENT",                 // MODULE-NAME intrinsic function
!   "CYCLE",                   // EXIT statement
!   "DECIMAL-ENCODING",        // USAGE clause and FLOAT-DECIMAL clause
!   "EOL",                     // ERASE clause in a screen description entry
!   "EOS",                     // ERASE clause in a screen description entry
!   "ENTRY-CONVENTION",        // OPTIONS paragraph
!   "ERASE",                   // screen description entry
!   "EXPANDS",                 // class-specifier and interface-specifier of the REPOSITORY paragraph
!   "FLOAT-BINARY",            // OPTIONS paragraph
!   "FLOAT-DECIMAL",           // OPTIONS paragraph
!   "FOREGROUND-COLOR",        // screen description entry
!   "FOREVER",                 // RETRY phrase
!   "FULL",                    // screen description entry
!   "HEX",                     // CONVERT intrinsic function
!   "HIGH-ORDER-LEFT",         // FLOAT-BINARY clause, FLOAT-DECIMAL clause, and USAGE clause
!   "HIGH-ORDER-RIGHT",        // FLOAT-BINARY clause, FLOAT-DECIMAL clause, and USAGE clause
!   "HIGHLIGHT",               // screen description entry and SET attribute statement
!   "IGNORING",                // READ statement
!   "IMPLEMENTS",              // FACTORY paragraph and OBJECT paragraph
!   "INITIALIZED",             // ALLOCATE statement and OCCURS clause
!   "INTERMEDIATE",            // OPTIONS paragraph
!   "INTRINSIC",               // function-specifier of the REPOSITORY paragraph
!   "LC_ALL",                  // SET statement
!   "LC_COLLATE",              // SET statement
!   "LC_CTYPE",                // SET statement
!   "LC_MESSAGES",             // SET statement
!   "LC_MONETARY",             // SET statement
!   "LC_NUMERIC",              // SET statement
!   "LC_TIME",                 // SET statement
!   "LOWLIGHT",                // screen description entry and SET attribute statement
!   "MANUAL",                  // LOCK MODE clause
!   "MULTIPLE",                // LOCK ON phrase
!   "NAT",                     // CONVERT intrinsic function
!   "NEAREST-AWAY-FROM-ZERO",  // INTERMEDIATE ROUNDING clause and ROUNDED phrase
!   "NEAREST-EVEN",            // INTERMEDIATE ROUNDING clause and ROUNDED phrase
!   "NEAREST-TOWARD-ZERO",     // INTERMEDIATE ROUNDING clause and ROUNDED phrase
!   "NONE",                    // DEFAULT clause
!   "NORMAL",                  // STOP statement
!   "NUMBERS",                 // COLUMN clause and LINE clause
!   "ONLY",                    // Object-view, SHARING clause, SHARING phrase, and USAGE clause
!   "PARAGRAPH",               // EXIT statement
!   "PREFIXED",                // DYNAMIC LENGTH STRUCTURE clause
!   "PREVIOUS",                // READ statement
!   "PROHIBITED",              // INTERMEDIATE ROUNDING clause and ROUNDED phrase
!   "RECURSIVE",               // PROGRAM-ID paragraph
!   "RELATION",                // VALIDATE-STATUS clause
!   "REQUIRED",                // screen description entry
!   "REVERSE-VIDEO",           // screen description entry and SET attribute statement
!   "ROUNDING",                // OPTIONS paragraph
!   "SECONDS",                 // RETRY phrase, CONTINUE statement
!   "SECURE",                  // screen description entry
!   "SHORT",                   // DYNAMIC LENGTH STRUCTURE clause
!   "SIGNED",                  // DYNAMIC LENGTH STRUCTURE clause and USAGE clause
!   "STACK",                   // MODULE-NAME intrinsic function
!   "STANDARD-BINARY",         // ARITHMETIC clause
!   "STANDARD-DECIMAL",        // ARITHMETIC clause
!   "STATEMENT",               // RESUME statement
!   "STEP",                    // OCCURS clause
!   "STRONG",                  // TYPEDEF clause
!   "STRUCTURE",               // DYNAMIC LENGTH STRUCTURE clause
!   "SYMBOL",                  // CURRENCY clause
!   "TOP-LEVEL",               // MODULE-NAME intrinsic function
!   "TOWARD-GREATER",          // ROUNDED phrase
!   "TOWARD-LESSER",           // ROUNDED phrase
!   "TRUNCATION",              // INTERMEDIATE ROUNDING clause and ROUNDED phrase
!   "UCS-4",                   // ALPHABET clause
!   "UNDERLINE",               // screen description entry and SET attribute statement
!   "UNSIGNED",                // USAGE clause
!   "UTF-8",                   // ALPHABET clause
!   "UTF-16",                  // ALPHABET clause
!   "YYYYDDD",                 // ACCEPT statement
!   "YYYYMMDD",                // ACCEPT statement
! };
! 
! // Is the input a COBOL word, per ISO/IEC 1989:2023 (E) ?
! // We add a few GCC-specific keywords, and our supported IBM keywords.
! bool
! iso_cobol_word( const std::string& name, bool include_context ) {
!   auto ok = 1 == reserved_words.count(name);
!   if( include_context && !ok ) {
!     ok = 1 == context_sensitive_words.count(name);
!   }
!   return ok;
! }
! 
diff -Nrcpad gcc-15-20250726/gcc/cobol/util.h gcc-15-20250809/gcc/cobol/util.h
*** gcc-15-20250726/gcc/cobol/util.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/cobol/util.h	Sat Aug  9 22:32:37 2025
***************
*** 31,49 ****
  #ifndef _UTIL_H_
  #define _UTIL_H_
  
! void cbl_message(int fd, const char *format_string, ...);
! void cbl_internal_error(const char *format_string, ...);
  
! void cbl_err(const char *format_string, ...);
! void cbl_errx(const char *format_string, ...);
  
  bool fisdigit(int c);
  bool fisspace(int c);
  int  ftolower(int c);
  bool fisprint(int c);
  
! const char * cobol_filename_restore();
! const char * cobol_lineno_save();
  
  
  #endif
--- 31,128 ----
  #ifndef _UTIL_H_
  #define _UTIL_H_
  
! void cbl_message(int fd, const char *format_string, ...)
!   ATTRIBUTE_PRINTF_2;
! [[noreturn]] void cbl_internal_error(const char *format_string, ...)
!   ATTRIBUTE_GCOBOL_DIAG(1, 2);
  
! void cbl_err(const char *format_string, ...) ATTRIBUTE_GCOBOL_DIAG(1, 2);
! void cbl_errx(const char *format_string, ...) ATTRIBUTE_GCOBOL_DIAG(1, 2);
  
  bool fisdigit(int c);
  bool fisspace(int c);
  int  ftolower(int c);
+ int  ftoupper(int c);
  bool fisprint(int c);
  
! void cobol_set_pp_option(int opt);
! 
! void cobol_filename_restore();
! const char * cobol_lineno( int );
! int cobol_lineno(void);
! 
! unsigned long gb4( size_t input );
! 
! template <typename P>
! static inline const void *
! as_voidp( P p ) {
!   return static_cast<const void *>(p);
! }
  
+ /*
+  * The default source format, whether free or fixed, is determined
+  * heuristically by examining the PROGRAM-ID line, if it exists, in the first
+  * input file. If that file does not have such a line, the default is free
+  * format.  Else the format is set to fixed if anything appears on that line
+  * that would prohibit parsing it as free format,
+  */
+ class source_format_t {
+   bool first_file, explicitly;
+   int left, right;
+ public:
+   source_format_t()
+     : first_file(true), explicitly(false), left(0), right(0)
+   {}
+   void indicator_column_set( int column ) {
+     explicitly = true;
+     if( column == 0 ) right = 0;
+     if( column < 0 ) {
+       column = -column;
+       right = 73;
+     }
+     left = column;
+   }
+   
+   bool inference_pending() {
+     bool tf = first_file && !explicitly;
+     first_file = false;
+     return tf;
+   }
+ 
+   void infer( const char *bol, bool want_reference_format );
+   
+   inline bool is_fixed() const { return left == 7; }
+   inline bool is_reffmt() const { return is_fixed() && right == 73; }
+   inline bool is_free() const { return ! is_fixed(); }
+   
+   const char * description() const {
+     if( is_reffmt() ) return "REFERENCE";
+     if( is_fixed() ) return "FIXED";
+     if( is_free() ) return "FREE";
+     gcc_unreachable();
+   }    
+ 
+   inline int left_margin() {
+     return left == 0? left : left - 1;
+   }
+   inline int right_margin() {
+     return right == 0? right : right - 1;
+   }
+ }; 
+ 
+ 
+ void cdf_push();
+ void cdf_push_call_convention();
+ void cdf_push_current_tokens();
+ void cdf_push_dictionary();
+ void cdf_push_enabled_exceptions();
+ void cdf_push_source_format();
+ 
+ void cdf_pop();
+ void cdf_pop_call_convention();
+ void cdf_pop_current_tokens();
+ void cdf_pop_dictionary();
+ void cdf_pop_source_format();
+ void cdf_pop_enabled_exceptions();
  
  #endif
diff -Nrcpad gcc-15-20250726/gcc/common/config/avr/avr-common.cc gcc-15-20250809/gcc/common/config/avr/avr-common.cc
*** gcc-15-20250726/gcc/common/config/avr/avr-common.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/common/config/avr/avr-common.cc	Sat Aug  9 22:32:37 2025
*************** static const struct default_options avr_
*** 38,43 ****
--- 38,44 ----
      { OPT_LEVELS_1_PLUS, OPT_mmain_is_OS_task, NULL, 1 },
      { OPT_LEVELS_1_PLUS, OPT_mfuse_add_, NULL, 1 },
      { OPT_LEVELS_2_PLUS, OPT_mfuse_add_, NULL, 2 },
+     { OPT_LEVELS_1_PLUS, OPT_mfuse_move2, NULL, 1 },
      { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_mfuse_move_, NULL, 3 },
      { OPT_LEVELS_2_PLUS, OPT_mfuse_move_, NULL, 23 },
      { OPT_LEVELS_2_PLUS, OPT_msplit_bit_shift, NULL, 1 },
diff -Nrcpad gcc-15-20250726/gcc/config/aarch64/aarch64-cores.def gcc-15-20250809/gcc/config/aarch64/aarch64-cores.def
*** gcc-15-20250726/gcc/config/aarch64/aarch64-cores.def	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/aarch64/aarch64-cores.def	Sat Aug  9 22:32:37 2025
*************** AARCH64_CORE("neoverse-v3ae", neoversev3
*** 224,230 ****
  AARCH64_CORE("demeter", demeter, cortexa57, V9A, (I8MM, BF16, SVE2_BITPERM, RNG, MEMTAG, PROFILE), neoversev2, 0x41, 0xd4f, -1)
  
  /* NVIDIA ('N') cores. */
! AARCH64_CORE("olympus", olympus, cortexa57, V9_2A, (SVE2_BITPERM, RNG, LS64, MEMTAG, PROFILE, FAMINMAX, FP8FMA, FP8DOT2, FP8DOT4, LUT, SVE2_AES, SVE2_SHA3, SVE2_SM4), neoversev3, 0x4e, 0x10, -1)
  
  /* Armv9-A big.LITTLE processors.  */
  AARCH64_CORE("gb10",  gb10, cortexa57, V9_2A,  (SVE2_BITPERM, SVE2_AES, SVE2_SHA3, SVE2_SM4, MEMTAG, PROFILE), cortexx925, 0x41, AARCH64_BIG_LITTLE (0xd85, 0xd87), -1)
--- 224,230 ----
  AARCH64_CORE("demeter", demeter, cortexa57, V9A, (I8MM, BF16, SVE2_BITPERM, RNG, MEMTAG, PROFILE), neoversev2, 0x41, 0xd4f, -1)
  
  /* NVIDIA ('N') cores. */
! AARCH64_CORE("olympus", olympus, cortexa57, V9_2A, (SVE2_BITPERM, RNG, LS64, MEMTAG, PROFILE, FAMINMAX, FP8FMA, FP8DOT2, FP8DOT4, LUT, SVE2_AES, SVE2_SHA3, SVE2_SM4), olympus, 0x4e, 0x10, -1)
  
  /* Armv9-A big.LITTLE processors.  */
  AARCH64_CORE("gb10",  gb10, cortexa57, V9_2A,  (SVE2_BITPERM, SVE2_AES, SVE2_SHA3, SVE2_SM4, MEMTAG, PROFILE), cortexx925, 0x41, AARCH64_BIG_LITTLE (0xd85, 0xd87), -1)
diff -Nrcpad gcc-15-20250726/gcc/config/aarch64/aarch64-sme.md gcc-15-20250809/gcc/config/aarch64/aarch64-sme.md
*** gcc-15-20250726/gcc/config/aarch64/aarch64-sme.md	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/aarch64/aarch64-sme.md	Sat Aug  9 22:32:37 2025
***************
*** 61,66 ****
--- 61,70 ----
  ;; (b) they are sometimes used conditionally, particularly in streaming-
  ;; compatible code.
  ;;
+ ;; To prevent the latter from upsetting the assembler, we emit the literal
+ ;; encodings of "SMSTART SM" and "SMSTOP SM" when compiling without
+ ;; TARGET_SME.
+ ;;
  ;; =========================================================================
  
  ;; -------------------------------------------------------------------------
***************
*** 160,166 ****
     (clobber (reg:VNx16BI P14_REGNUM))
     (clobber (reg:VNx16BI P15_REGNUM))]
    ""
!   "smstart\tsm"
  )
  
  ;; Turn off streaming mode.  This clobbers all SVE state.
--- 164,172 ----
     (clobber (reg:VNx16BI P14_REGNUM))
     (clobber (reg:VNx16BI P15_REGNUM))]
    ""
!   {
!     return TARGET_SME ? "smstart\tsm" : ".inst 0xd503437f // smstart sm";
!   }
  )
  
  ;; Turn off streaming mode.  This clobbers all SVE state.
***************
*** 195,201 ****
     (clobber (reg:VNx16BI P14_REGNUM))
     (clobber (reg:VNx16BI P15_REGNUM))]
    ""
!   "smstop\tsm"
  )
  
  ;; -------------------------------------------------------------------------
--- 201,209 ----
     (clobber (reg:VNx16BI P14_REGNUM))
     (clobber (reg:VNx16BI P15_REGNUM))]
    ""
!   {
!     return TARGET_SME ? "smstop\tsm" : ".inst 0xd503427f // smstop sm";
!   }
  )
  
  ;; -------------------------------------------------------------------------
diff -Nrcpad gcc-15-20250726/gcc/config/aarch64/aarch64.cc gcc-15-20250809/gcc/config/aarch64/aarch64.cc
*** gcc-15-20250726/gcc/config/aarch64/aarch64.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/aarch64/aarch64.cc	Sat Aug  9 22:32:37 2025
*************** static const struct aarch64_flag_desc aa
*** 424,429 ****
--- 424,430 ----
  #include "tuning_models/neoversev2.h"
  #include "tuning_models/neoversev3.h"
  #include "tuning_models/neoversev3ae.h"
+ #include "tuning_models/olympus.h"
  #include "tuning_models/a64fx.h"
  #include "tuning_models/fujitsu_monaka.h"
  
diff -Nrcpad gcc-15-20250726/gcc/config/aarch64/tuning_models/olympus.h gcc-15-20250809/gcc/config/aarch64/tuning_models/olympus.h
*** gcc-15-20250726/gcc/config/aarch64/tuning_models/olympus.h	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/config/aarch64/tuning_models/olympus.h	Sat Aug  9 22:32:37 2025
***************
*** 0 ****
--- 1,210 ----
+ /* Tuning model description for the NVIDIA Olympus core.
+    Copyright The GNU Toolchain Authors.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_AARCH64_H_OLYMPUS
+ #define GCC_AARCH64_H_OLYMPUS
+ 
+ #include "generic.h"
+ 
+ static struct cpu_regmove_cost olympus_regmove_cost =
+ {
+   1, /* GP2GP  */
+   /* Spilling to int<->fp instead of memory is recommended so set
+      realistic costs compared to memmov_cost.  */
+   3, /* GP2FP  */
+   3, /* FP2GP  */
+   2 /* FP2FP  */
+ };
+ 
+ static advsimd_vec_cost olympus_advsimd_vector_cost =
+ {
+   2, /* int_stmt_cost  */
+   2, /* fp_stmt_cost  */
+   2, /* ld2_st2_permute_cost */
+   2, /* ld3_st3_permute_cost  */
+   3, /* ld4_st4_permute_cost  */
+   2, /* permute_cost  */
+   5, /* reduc_i8_cost  */
+   3, /* reduc_i16_cost  */
+   3, /* reduc_i32_cost  */
+   2, /* reduc_i64_cost  */
+   4, /* reduc_f16_cost  */
+   4, /* reduc_f32_cost  */
+   4, /* reduc_f64_cost  */
+   2, /* store_elt_extra_cost  */
+   8, /* vec_to_scalar_cost  */
+   4, /* scalar_to_vec_cost  */
+   6, /* align_load_cost  */
+   6, /* unalign_load_cost  */
+   1, /* unalign_store_cost  */
+   1  /* store_cost  */
+ };
+ 
+ static sve_vec_cost olympus_sve_vector_cost =
+ {
+   {
+     2, /* int_stmt_cost  */
+     2, /* fp_stmt_cost  */
+     2, /* ld2_st2_permute_cost  */
+     3, /* ld3_st3_permute_cost  */
+     3, /* ld4_st4_permute_cost  */
+     2, /* permute_cost  */
+     9, /* reduc_i8_cost  */
+     8, /* reduc_i16_cost  */
+     6, /* reduc_i32_cost  */
+     2, /* reduc_i64_cost  */
+     8, /* reduc_f16_cost  */
+     6, /* reduc_f32_cost  */
+     4, /* reduc_f64_cost  */
+     2, /* store_elt_extra_cost  */
+     8, /* vec_to_scalar_cost  */
+     4, /* scalar_to_vec_cost  */
+     4, /* align_load_cost  */
+     6, /* unalign_load_cost  */
+     1, /* unalign_store_cost  */
+     1  /* store_cost  */
+   },
+   3, /* clast_cost  */
+   10, /* fadda_f16_cost  */
+   6, /* fadda_f32_cost  */
+   4, /* fadda_f64_cost  */
+   14, /* gather_load_x32_cost  */
+   12, /* gather_load_x64_cost  */
+   42, /* gather_load_x32_init_cost  */
+   24, /* gather_load_x64_init_cost  */
+   1 /* scatter_store_elt_cost  */
+ };
+ 
+ static aarch64_scalar_vec_issue_info olympus_scalar_issue_info =
+ {
+   4, /* loads_stores_per_cycle  */
+   2, /* stores_per_cycle  */
+   8, /* general_ops_per_cycle  */
+   0, /* fp_simd_load_general_ops  */
+   1 /* fp_simd_store_general_ops  */
+ };
+ 
+ static aarch64_advsimd_vec_issue_info olympus_advsimd_issue_info =
+ {
+   {
+     3, /* loads_stores_per_cycle  */
+     2, /* stores_per_cycle  */
+     6, /* general_ops_per_cycle  */
+     0, /* fp_simd_load_general_ops  */
+     1 /* fp_simd_store_general_ops  */
+   },
+   2, /* ld2_st2_general_ops  */
+   2, /* ld3_st3_general_ops  */
+   3 /* ld4_st4_general_ops  */
+ };
+ 
+ static aarch64_sve_vec_issue_info olympus_sve_issue_info =
+ {
+   {
+     {
+       3, /* loads_stores_per_cycle  */
+       2, /* stores_per_cycle  */
+       6, /* general_ops_per_cycle  */
+       0, /* fp_simd_load_general_ops  */
+       1 /* fp_simd_store_general_ops  */
+     },
+     2, /* ld2_st2_general_ops  */
+     2, /* ld3_st3_general_ops  */
+     3 /* ld4_st4_general_ops  */
+   },
+   2, /* pred_ops_per_cycle  */
+   1, /* while_pred_ops  */
+   0, /* int_cmp_pred_ops  */
+   0, /* fp_cmp_pred_ops  */
+   1, /* gather_scatter_pair_general_ops  */
+   1 /* gather_scatter_pair_pred_ops  */
+ };
+ 
+ static aarch64_vec_issue_info olympus_vec_issue_info =
+ {
+   &olympus_scalar_issue_info,
+   &olympus_advsimd_issue_info,
+   &olympus_sve_issue_info
+ };
+ 
+ /* Olympus costs for vector insn classes.  */
+ static struct cpu_vector_cost olympus_vector_cost =
+ {
+   1, /* scalar_int_stmt_cost  */
+   2, /* scalar_fp_stmt_cost  */
+   4, /* scalar_load_cost  */
+   1, /* scalar_store_cost  */
+   1, /* cond_taken_branch_cost  */
+   1, /* cond_not_taken_branch_cost  */
+   &olympus_advsimd_vector_cost, /* advsimd  */
+   &olympus_sve_vector_cost, /* sve  */
+   &olympus_vec_issue_info /* issue_info  */
+ };
+ 
+ /* Olympus prefetch settings (which disable prefetch).  */
+ static cpu_prefetch_tune olympus_prefetch_tune =
+ {
+   0,			/* num_slots  */
+   -1,			/* l1_cache_size  */
+   64,			/* l1_cache_line_size  */
+   -1,			/* l2_cache_size  */
+   true,			/* prefetch_dynamic_strides */
+   -1,			/* minimum_stride */
+   -1			/* default_opt_level  */
+ };
+ 
+ static struct tune_params olympus_tunings =
+ {
+   &cortexa76_extra_costs,
+   &generic_armv9_a_addrcost_table,
+   &olympus_regmove_cost,
+   &olympus_vector_cost,
+   &generic_branch_cost,
+   &generic_approx_modes,
+   SVE_128, /* sve_width  */
+   { 4, /* load_int.  */
+     1, /* store_int.  */
+     6, /* load_fp.  */
+     3, /* store_fp.  */
+     5, /* load_pred.  */
+     1 /* store_pred.  */
+   }, /* memmov_cost.  */
+   10, /* issue_rate  */
+   AARCH64_FUSE_NEOVERSE_BASE, /* fusible_ops  */
+   "32:16",	/* function_align.  */
+   "4",		/* jump_align.  */
+   "32:16",	/* loop_align.  */
+   8,	/* int_reassoc_width.  */
+   6,	/* fp_reassoc_width.  */
+   4,	/* fma_reassoc_width.  */
+   6,	/* vec_reassoc_width.  */
+   2,	/* min_div_recip_mul_sf.  */
+   2,	/* min_div_recip_mul_df.  */
+   0,	/* max_case_values.  */
+   tune_params::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model.  */
+   (AARCH64_EXTRA_TUNE_BASE
+    | AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS
+    | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT
+    | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW),	/* tune_flags.  */
+   &olympus_prefetch_tune,
+   AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
+   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
+ };
+ 
+ #endif /* GCC_AARCH64_H_OLYMPUS.  */
diff -Nrcpad gcc-15-20250726/gcc/config/arm/predicates.md gcc-15-20250809/gcc/config/arm/predicates.md
*** gcc-15-20250726/gcc/config/arm/predicates.md	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/arm/predicates.md	Sat Aug  9 22:32:37 2025
***************
*** 907,913 ****
  
  (define_predicate "mem_noofs_operand"
    (and (match_code "mem")
!        (match_code "reg" "0")))
  
  (define_predicate "call_insn_operand"
    (ior (and (match_code "symbol_ref")
--- 907,914 ----
  
  (define_predicate "mem_noofs_operand"
    (and (match_code "mem")
!        (match_code "reg" "0")
!        (match_operand 0 "memory_operand")))
  
  (define_predicate "call_insn_operand"
    (ior (and (match_code "symbol_ref")
diff -Nrcpad gcc-15-20250726/gcc/config/avr/avr-passes.cc gcc-15-20250809/gcc/config/avr/avr-passes.cc
*** gcc-15-20250726/gcc/config/avr/avr-passes.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/avr/avr-passes.cc	Sat Aug  9 22:32:37 2025
*************** avr_pass_fuse_add::execute1 (function *f
*** 4849,4854 ****
--- 4849,4985 ----
  
  
  //////////////////////////////////////////////////////////////////////////////
+ // Fuse 2 move insns after combine.
+ 
+ static const pass_data avr_pass_data_2moves =
+ {
+   RTL_PASS,	    // type
+   "",		    // name (will be patched)
+   OPTGROUP_NONE,    // optinfo_flags
+   TV_DF_SCAN,	    // tv_id
+   0,		    // properties_required
+   0,		    // properties_provided
+   0,		    // properties_destroyed
+   0,		    // todo_flags_start
+   0		    // todo_flags_finish
+ };
+ 
+ class avr_pass_2moves : public rtl_opt_pass
+ {
+ public:
+   avr_pass_2moves (gcc::context *ctxt, const char *name)
+     : rtl_opt_pass (avr_pass_data_2moves, ctxt)
+   {
+     this->name = name;
+   }
+ 
+   unsigned int execute (function *func) final override
+   {
+     if (optimize && avropt_fuse_move2)
+       {
+ 	bool changed = false;
+ 	basic_block bb;
+ 
+ 	FOR_EACH_BB_FN (bb, func)
+ 	  {
+ 	    changed |= optimize_2moves_bb (bb);
+ 	  }
+ 
+ 	if (changed)
+ 	  {
+ 	    df_note_add_problem ();
+ 	    df_analyze ();
+ 	  }
+       }
+ 
+     return 0;
+   }
+ 
+   bool optimize_2moves (rtx_insn *, rtx_insn *);
+   bool optimize_2moves_bb (basic_block);
+ }; // avr_pass_2moves
+ 
+ bool
+ avr_pass_2moves::optimize_2moves_bb (basic_block bb)
+ {
+   bool changed = false;
+   rtx_insn *insn1 = nullptr;
+   rtx_insn *insn2 = nullptr;
+   rtx_insn *curr;
+ 
+   FOR_BB_INSNS (bb, curr)
+     {
+       if (insn1 && INSN_P (insn1)
+ 	  && insn2 && INSN_P (insn2))
+ 	changed |= optimize_2moves (insn1, insn2);
+ 
+       insn1 = insn2;
+       insn2 = curr;
+     }
+ 
+   return changed;
+ }
+ 
+ bool
+ avr_pass_2moves::optimize_2moves (rtx_insn *insn1, rtx_insn *insn2)
+ {
+   bool good = false;
+   bool bad = false;
+   rtx set1, dest1, src1;
+   rtx set2, dest2, src2;
+ 
+   if ((set1 = single_set (insn1))
+       && (set2 = single_set (insn2))
+       && (src1 = SET_SRC (set1))
+       && REG_P (src2 = SET_SRC (set2))
+       && REG_P (dest1 = SET_DEST (set1))
+       && REG_P (dest2 = SET_DEST (set2))
+       && rtx_equal_p (dest1, src2)
+       // Now we have:
+       // insn1: dest1 = src1
+       // insn2: dest2 = dest1
+       && REGNO (dest1) >= FIRST_PSEUDO_REGISTER
+       // Paranoia.
+       && GET_CODE (PATTERN (insn1)) != PARALLEL
+       && GET_CODE (PATTERN (insn2)) != PARALLEL
+       && (rtx_equal_p (dest2, src1)
+ 	  || !reg_overlap_mentioned_p (dest2, src1)))
+     {
+       avr_dump ("\n;; Found 2moves:\n%r\n%r\n", insn1, insn2);
+       avr_dump (";; reg %d: insn uses uids:", REGNO (dest1));
+ 
+       // Go check that dest1 is used exactly once, namely by insn2.
+ 
+       df_ref use = DF_REG_USE_CHAIN (REGNO (dest1));
+       for (; use; use = DF_REF_NEXT_REG (use))
+ 	{
+ 	  rtx_insn *user = DF_REF_INSN (use);
+ 	  avr_dump (" %d", INSN_UID (user));
+ 	  good |= INSN_UID (user) == INSN_UID (insn2);
+ 	  bad |= INSN_UID (user) != INSN_UID (insn2);
+ 	}
+       avr_dump (".\n");
+ 
+       if (good && !bad
+ 	  // Propagate src1 to insn2:
+ 	  // insn1: # Deleted
+ 	  // insn2: dest2 = src1
+ 	  && validate_change (insn2, &SET_SRC (set2), src1, false))
+ 	{
+ 	  SET_INSN_DELETED (insn1);
+ 	  return true;
+ 	}
+     }
+ 
+   if (good && !bad)
+     avr_dump (";; Failed\n");
+ 
+   return false;
+ }
+ 
+ 
+ 
+ //////////////////////////////////////////////////////////////////////////////
  // Split insns with nonzero_bits() after combine.
  
  static const pass_data avr_pass_data_split_nzb =
*************** make_avr_pass_casesi (gcc::context *ctxt
*** 5710,5715 ****
--- 5841,5854 ----
    return new avr_pass_casesi (ctxt, "avr-casesi");
  }
  
+ // Optimize 2 consecutive moves after combine.
+ 
+ rtl_opt_pass *
+ make_avr_pass_2moves (gcc::context *ctxt)
+ {
+   return new avr_pass_2moves (ctxt, "avr-2moves");
+ }
+ 
  rtl_opt_pass *
  make_avr_pass_split_nzb (gcc::context *ctxt)
  {
diff -Nrcpad gcc-15-20250726/gcc/config/avr/avr-passes.def gcc-15-20250809/gcc/config/avr/avr-passes.def
*** gcc-15-20250726/gcc/config/avr/avr-passes.def	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/avr/avr-passes.def	Sat Aug  9 22:32:37 2025
*************** INSERT_PASS_BEFORE (pass_free_cfg, 1, av
*** 74,79 ****
--- 74,87 ----
  
  INSERT_PASS_AFTER (pass_expand, 1, avr_pass_casesi);
  
+ /* Insn combine may come up with superfluous reg-reg moves, where the combine
+    people say that these are no problem since reg-alloc is supposed to optimize
+    them.  The issue is that the lower-subreg pass sitting between combine and
+    reg-alloc may split such moves, coming up with a zoo of subregs which are
+    only handled poorly by the register allocator.  */
+ 
+ INSERT_PASS_AFTER (pass_combine, 1, avr_pass_2moves);
+ 
  /* Some combine insns have nonzero_bits() in their condition, though insns
     should not use such stuff in their condition.  Therefore, we split such
     insn into something without nonzero_bits() in their condition right after
diff -Nrcpad gcc-15-20250726/gcc/config/avr/avr-protos.h gcc-15-20250809/gcc/config/avr/avr-protos.h
*** gcc-15-20250726/gcc/config/avr/avr-protos.h	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/avr/avr-protos.h	Sat Aug  9 22:32:37 2025
*************** extern rtl_opt_pass *make_avr_pass_cases
*** 208,213 ****
--- 208,214 ----
  extern rtl_opt_pass *make_avr_pass_ifelse (gcc::context *);
  extern rtl_opt_pass *make_avr_pass_split_nzb (gcc::context *);
  extern rtl_opt_pass *make_avr_pass_split_after_peephole2 (gcc::context *);
+ extern rtl_opt_pass *make_avr_pass_2moves (gcc::context *);
  #ifdef RTX_CODE
  extern bool avr_casei_sequence_check_operands (rtx *xop);
  extern bool avr_split_fake_addressing_move (rtx_insn *insn, rtx *operands);
diff -Nrcpad gcc-15-20250726/gcc/config/avr/avr.cc gcc-15-20250809/gcc/config/avr/avr.cc
*** gcc-15-20250726/gcc/config/avr/avr.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/avr/avr.cc	Sat Aug  9 22:32:37 2025
*************** avr_output_addr_vec (rtx_insn *labl, rtx
*** 14422,14427 ****
--- 14422,14434 ----
    // Output the label that precedes the table.
  
    ASM_OUTPUT_ALIGN (stream, 1);
+ 
+   char s_labl[40];
+   targetm.asm_out.generate_internal_label (s_labl, "L",
+ 					   CODE_LABEL_NUMBER (labl));
+   ASM_OUTPUT_TYPE_DIRECTIVE (stream, s_labl,
+ 			     AVR_HAVE_JMP_CALL ? "object" : "function");
+ 
    targetm.asm_out.internal_label (stream, "L", CODE_LABEL_NUMBER (labl));
  
    // Output the table's content.
*************** avr_addr_space_convert (rtx src, tree ty
*** 14988,14997 ****
  
        /* Linearize memory: RAM has bit 23 set.  When as_new = __flashx then
  	 this is basically UB since __flashx mistreats RAM addresses, but there
! 	 is no way to bail out.  (Though -Waddr-space-convert will tell.)  */
  
        int msb = ADDR_SPACE_GENERIC_P (as_old)
! 	? 0x80
  	: avr_addrspace[as_old].segment;
  
        src = force_reg (Pmode, src);
--- 14995,15005 ----
  
        /* Linearize memory: RAM has bit 23 set.  When as_new = __flashx then
  	 this is basically UB since __flashx mistreats RAM addresses, but there
! 	 is no way to bail out.  (Though -Waddr-space-convert will tell.)
! 	 ...but PR121277 is confusing, in particular when NULL is coming in. */
  
        int msb = ADDR_SPACE_GENERIC_P (as_old)
! 	? as_new == ADDR_SPACE_MEMX ? 0x80 : 0x00
  	: avr_addrspace[as_old].segment;
  
        src = force_reg (Pmode, src);
*************** avr_convert_to_type (tree type, tree exp
*** 15089,15098 ****
  	  const char *name_old = avr_addrspace[as_old].name;
  	  const char *name_new = avr_addrspace[as_new].name;
  
! 	  warning (OPT_Waddr_space_convert,
! 		   "conversion from address space %qs to address space %qs",
! 		   ADDR_SPACE_GENERIC_P (as_old) ? "generic" : name_old,
! 		   ADDR_SPACE_GENERIC_P (as_new) ? "generic" : name_new);
  
  	  return fold_build1_loc (loc, ADDR_SPACE_CONVERT_EXPR, type, expr);
  	}
--- 15097,15112 ----
  	  const char *name_old = avr_addrspace[as_old].name;
  	  const char *name_new = avr_addrspace[as_new].name;
  
! 	  // Be relaxed when NULL is used, and when 0x0 stands for
! 	  // address 0x0.
! 	  bool nowarn = (expr == null_pointer_node
! 			 && (as_new == ADDR_SPACE_FLASHX
! 			     || as_new == ADDR_SPACE_FLASH));
! 	  if (!nowarn)
! 	    warning (OPT_Waddr_space_convert,
! 		     "conversion from address space %qs to address space %qs",
! 		     ADDR_SPACE_GENERIC_P (as_old) ? "generic" : name_old,
! 		     ADDR_SPACE_GENERIC_P (as_new) ? "generic" : name_new);
  
  	  return fold_build1_loc (loc, ADDR_SPACE_CONVERT_EXPR, type, expr);
  	}
diff -Nrcpad gcc-15-20250726/gcc/config/avr/avr.opt gcc-15-20250809/gcc/config/avr/avr.opt
*** gcc-15-20250726/gcc/config/avr/avr.opt	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/avr/avr.opt	Sat Aug  9 22:32:37 2025
*************** mfuse-move=
*** 164,169 ****
--- 164,173 ----
  Target Joined RejectNegative UInteger Var(avropt_fuse_move) Init(0) Optimization IntegerRange(0, 23)
  -mfuse-move=<0,23>	Optimization. Run a post-reload pass that tweaks move instructions.
  
+ mfuse-move2
+ Target Var(avropt_fuse_move2) Init(0) Optimization
+ Optimization. Fuse some move insns after insn combine.
+ 
  mabsdata
  Target Mask(ABSDATA)
  Assume that all data in static storage can be accessed by LDS / STS instructions.  This option is only useful for reduced Tiny devices like ATtiny40.
diff -Nrcpad gcc-15-20250726/gcc/config/avr/avr.opt.urls gcc-15-20250809/gcc/config/avr/avr.opt.urls
*** gcc-15-20250726/gcc/config/avr/avr.opt.urls	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/avr/avr.opt.urls	Sat Aug  9 22:32:37 2025
*************** UrlSuffix(gcc/AVR-Options.html#index-mfu
*** 92,97 ****
--- 92,100 ----
  mfuse-move=
  UrlSuffix(gcc/AVR-Options.html#index-mfuse-move)
  
+ mfuse-move2
+ UrlSuffix(gcc/AVR-Options.html#index-mfuse-move2)
+ 
  mabsdata
  UrlSuffix(gcc/AVR-Options.html#index-mabsdata)
  
diff -Nrcpad gcc-15-20250726/gcc/config/darwin-driver.cc gcc-15-20250809/gcc/config/darwin-driver.cc
*** gcc-15-20250726/gcc/config/darwin-driver.cc	Sat Jul 26 22:32:10 2025
--- gcc-15-20250809/gcc/config/darwin-driver.cc	Sat Aug  9 22:32:37 2025
*************** validate_macosx_version_min (const char
*** 64,70 ****
  
    major = strtoul (version_str, &end, 10);
  
!   /* macOS 10, 11, and 12 are known. clang accepts up to 99.  */
    if (major < 10 || major > 99)
      return NULL;
  
--- 64,71 ----
  
    major = strtoul (version_str, &end, 10);
  
!   /* macOS 10, 11, 12, 13, 14, 15 and 26 are known.
!      clang accepts up to 99.  */
    if (major < 10 || major > 99)
      return NULL;
  
*************** darwin_find_version_from_kernel (void)
*** 159,173 ****
    if (*version_p++ != '.')
      goto parse_failed;
  
!   /* Darwin20 sees a transition to macOS 11.  In this, it seems that the
!      mapping to macOS minor version and patch level is now always 0, 0
!      (at least for macOS 11 and 12).  */
!   if (major_vers >= 20)
!     {
!       /* Apple clang doesn't include the minor version or the patch level
! 	 in the object file, nor does it pass it to ld  */
!       asprintf (&new_flag, "%d.00.00", major_vers - 9);
!     }
    else if (major_vers - 4 <= 4)
      /* On 10.4 and earlier, the old linker is used which does not
         support three-component system versions.
--- 160,175 ----
    if (*version_p++ != '.')
      goto parse_failed;
  
!   /* Darwin25 saw a transition to macOS 26.  */
!   if (major_vers >= 25)
!     /* Apple clang doesn't include the minor version or the patch level
!        in the object file, nor does it pass it to ld  */
!     asprintf (&new_flag, "%d.00.00", major_vers + 1);
!   /* Darwin20 saw a transition to macOS 11.  */
!   else if (major_vers >= 20)
!     /* Apple clang doesn't include the minor version or the patch level
!        in the object file, nor does it pass it to ld  */
!     asprintf (&new_flag, "%d.00.00", major_vers - 9);
    else if (major_vers - 4 <= 4)
      /* On 10.4 and earlier, the old linker is used which does not
         support three-component system versions.
diff -Nrcpad gcc-15-20250726/gcc/config/i386/i386.md gcc-15-20250809/gcc/config/i386/i386.md
*** gcc-15-20250726/gcc/config/i386/i386.md	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/config/i386/i386.md	Sat Aug  9 22:32:38 2025
***************
*** 2427,2448 ****
     (set_attr "mode" "SI")
     (set_attr "length_immediate" "0")])
  
! (define_insn "*mov<mode>_and"
    [(set (match_operand:SWI248 0 "memory_operand" "=m")
  	(match_operand:SWI248 1 "const0_operand"))
     (clobber (reg:CC FLAGS_REG))]
    "reload_completed"
    "and{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "alu1")
     (set_attr "mode" "<MODE>")
     (set_attr "length_immediate" "1")])
  
! (define_insn "*mov<mode>_or"
    [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm")
  	(match_operand:SWI248 1 "constm1_operand"))
     (clobber (reg:CC FLAGS_REG))]
    "reload_completed"
    "or{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "alu1")
     (set_attr "mode" "<MODE>")
     (set_attr "length_immediate" "1")])
--- 2427,2458 ----
     (set_attr "mode" "SI")
     (set_attr "length_immediate" "0")])
  
! ;; Generate shorter "and $0,mem" for -Oz.  Split it to "mov $0,mem"
! ;; otherwise.
! (define_insn_and_split "*mov<mode>_and"
    [(set (match_operand:SWI248 0 "memory_operand" "=m")
  	(match_operand:SWI248 1 "const0_operand"))
     (clobber (reg:CC FLAGS_REG))]
    "reload_completed"
    "and{<imodesuffix>}\t{%1, %0|%0, %1}"
+   "&& !(optimize_insn_for_size_p () && optimize_size > 1)"
+   [(set (match_dup 0) (match_dup 1))]
+   ""
    [(set_attr "type" "alu1")
     (set_attr "mode" "<MODE>")
     (set_attr "length_immediate" "1")])
  
! ;; Generate shorter "or $-1,mem" for -Oz.  Split it to "mov $-1,mem"
! ;; otherwise.
! (define_insn_and_split "*mov<mode>_or"
    [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm")
  	(match_operand:SWI248 1 "constm1_operand"))
     (clobber (reg:CC FLAGS_REG))]
    "reload_completed"
    "or{<imodesuffix>}\t{%1, %0|%0, %1}"
+   "&& !(optimize_insn_for_size_p () && optimize_size > 1)"
+   [(set (match_dup 0) (match_dup 1))]
+   ""
    [(set_attr "type" "alu1")
     (set_attr "mode" "<MODE>")
     (set_attr "length_immediate" "1")])
***************
*** 2947,2952 ****
--- 2957,2964 ----
  	(match_operand:SWI248 1 "const_int_operand"))]
    "optimize_insn_for_size_p () && optimize_size > 1
     && operands[1] != const0_rtx
+    && (operands[1] != constm1_rtx
+        || (<MODE>mode == DImode && LEGACY_INT_REG_P (operands[0])))
     && IN_RANGE (INTVAL (operands[1]), -128, 127)
     && !ix86_red_zone_used
     && REGNO (operands[0]) != SP_REG"
***************
*** 18169,18185 ****
  	(any_rotate:SWI
  	  (match_operand:SWI 1 "const_int_operand")
  	  (subreg:QI
! 	    (and
! 	      (match_operand 2 "int248_register_operand")
! 	      (match_operand 3 "const_int_operand")) 0)))]
   "(INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode) - 1))
     == GET_MODE_BITSIZE (<MODE>mode) - 1"
!  [(set (match_dup 4) (match_dup 1))
    (set (match_dup 0)
!        (any_rotate:SWI (match_dup 4)
  		       (subreg:QI
! 			 (and:SI (match_dup 2) (match_dup 3)) 0)))]
!  "operands[4] = gen_reg_rtx (<MODE>mode);")
  
  (define_insn_and_split "*<insn><mode>3_mask_1"
    [(set (match_operand:SWI 0 "nonimmediate_operand")
--- 18181,18197 ----
  	(any_rotate:SWI
  	  (match_operand:SWI 1 "const_int_operand")
  	  (subreg:QI
! 	    (match_operator 4 "and_operator"
! 	      [(match_operand 2 "int248_register_operand")
! 	       (match_operand 3 "const_int_operand")]) 0)))]
   "(INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode) - 1))
     == GET_MODE_BITSIZE (<MODE>mode) - 1"
!  [(set (match_dup 5) (match_dup 1))
    (set (match_dup 0)
!        (any_rotate:SWI (match_dup 5)
  		       (subreg:QI
! 			 (match_op_dup 4 [(match_dup 2) (match_dup 3)]) 0)))]
!  "operands[5] = gen_reg_rtx (<MODE>mode);")
  
  (define_insn_and_split "*<insn><mode>3_mask_1"
    [(set (match_operand:SWI 0 "nonimmediate_operand")
diff -Nrcpad gcc-15-20250726/gcc/config/i386/predicates.md gcc-15-20250809/gcc/config/i386/predicates.md
*** gcc-15-20250726/gcc/config/i386/predicates.md	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/config/i386/predicates.md	Sat Aug  9 22:32:38 2025
***************
*** 1682,1691 ****
  (define_predicate "div_operator"
    (match_code "div"))
  
! ;; Return true if this is a and, ior or xor operation.
  (define_predicate "logic_operator"
    (match_code "and,ior,xor"))
  
  ;; Return true if this is a plus, minus, and, ior or xor operation.
  (define_predicate "plusminuslogic_operator"
    (match_code "plus,minus,and,ior,xor"))
--- 1682,1695 ----
  (define_predicate "div_operator"
    (match_code "div"))
  
! ;; Return true if this is an and, ior or xor operation.
  (define_predicate "logic_operator"
    (match_code "and,ior,xor"))
  
+ ;; Return true if this is an and operation.
+ (define_predicate "and_operator"
+   (match_code "and"))
+ 
  ;; Return true if this is a plus, minus, and, ior or xor operation.
  (define_predicate "plusminuslogic_operator"
    (match_code "plus,minus,and,ior,xor"))
diff -Nrcpad gcc-15-20250726/gcc/config/i386/sse.md gcc-15-20250809/gcc/config/i386/sse.md
*** gcc-15-20250726/gcc/config/i386/sse.md	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/config/i386/sse.md	Sat Aug  9 22:32:38 2025
***************
*** 21701,21706 ****
--- 21701,21719 ----
  	   (const_string "orig")))
     (set_attr "mode" "TI,TI,TI,TI,TI,TI,V4SF,V2SF,V2SF")])
  
+ ;; Eliminate redundancy caused by
+ ;; /* Special case TImode to 128-bit vector conversions via V2DI.  */
+ ;; in ix86_expand_vector_move
+ 
+ (define_split
+   [(set (match_operand:V2DI 0 "register_operand")
+ 	(vec_concat:V2DI
+ 	  (subreg:DI (match_operand:TI 1 "register_operand") 0)
+ 	  (subreg:DI (match_dup 1) 8)))]
+   "TARGET_SSE2 && ix86_pre_reload_split ()"
+   [(set (match_dup 0)
+ 	(subreg:V2DI (match_dup 1) 0))])
+ 
  (define_insn "*vec_concatv2di_0"
    [(set (match_operand:V2DI 0 "register_operand"     "=v,v ,x")
  	(vec_concat:V2DI
diff -Nrcpad gcc-15-20250726/gcc/config/loongarch/lasx.md gcc-15-20250809/gcc/config/loongarch/lasx.md
*** gcc-15-20250726/gcc/config/loongarch/lasx.md	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/config/loongarch/lasx.md	Sat Aug  9 22:32:38 2025
***************
*** 2060,2068 ****
    [(set_attr "type" "simd_int_arith")
     (set_attr "mode" "<MODE>")])
  
! (define_insn "lasx_xvshuf_<lasxfmt_f>"
    [(set (match_operand:LASX_DWH 0 "register_operand" "=f")
! 	(unspec:LASX_DWH [(match_operand:LASX_DWH 1 "register_operand" "0")
  			  (match_operand:LASX_DWH 2 "register_operand" "f")
  			  (match_operand:LASX_DWH 3 "register_operand" "f")]
  			UNSPEC_LASX_XVSHUF))]
--- 2060,2068 ----
    [(set_attr "type" "simd_int_arith")
     (set_attr "mode" "<MODE>")])
  
! (define_insn "@lasx_xvshuf_<lasxfmt_f>"
    [(set (match_operand:LASX_DWH 0 "register_operand" "=f")
! 	(unspec:LASX_DWH [(match_operand:<VIMODE> 1 "register_operand" "0")
  			  (match_operand:LASX_DWH 2 "register_operand" "f")
  			  (match_operand:LASX_DWH 3 "register_operand" "f")]
  			UNSPEC_LASX_XVSHUF))]
diff -Nrcpad gcc-15-20250726/gcc/config/loongarch/loongarch.cc gcc-15-20250809/gcc/config/loongarch/loongarch.cc
*** gcc-15-20250726/gcc/config/loongarch/loongarch.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/config/loongarch/loongarch.cc	Sat Aug  9 22:32:38 2025
*************** static bool
*** 8382,8388 ****
  loongarch_try_expand_lsx_vshuf_const (struct expand_vec_perm_d *d)
  {
    int i;
!   rtx target, op0, op1, sel, tmp;
    rtx rperm[MAX_VECT_LEN];
  
    if (GET_MODE_SIZE (d->vmode) == 16)
--- 8382,8388 ----
  loongarch_try_expand_lsx_vshuf_const (struct expand_vec_perm_d *d)
  {
    int i;
!   rtx target, op0, op1;
    rtx rperm[MAX_VECT_LEN];
  
    if (GET_MODE_SIZE (d->vmode) == 16)
*************** loongarch_try_expand_lsx_vshuf_const (st
*** 8401,8447 ****
        for (i = 0; i < d->nelt; i += 1)
  	  rperm[i] = GEN_INT (d->perm[i]);
  
!       if (d->vmode == E_V2DFmode)
! 	{
! 	  sel = gen_rtx_CONST_VECTOR (E_V2DImode, gen_rtvec_v (d->nelt, rperm));
! 	  tmp = simplify_gen_subreg (E_V2DImode, d->target, d->vmode, 0);
! 	  emit_move_insn (tmp, sel);
! 	}
!       else if (d->vmode == E_V4SFmode)
! 	{
! 	  sel = gen_rtx_CONST_VECTOR (E_V4SImode, gen_rtvec_v (d->nelt, rperm));
! 	  tmp = simplify_gen_subreg (E_V4SImode, d->target, d->vmode, 0);
! 	  emit_move_insn (tmp, sel);
! 	}
!       else
! 	{
! 	  sel = gen_rtx_CONST_VECTOR (d->vmode, gen_rtvec_v (d->nelt, rperm));
! 	  emit_move_insn (d->target, sel);
! 	}
  
!       switch (d->vmode)
! 	{
! 	case E_V2DFmode:
! 	  emit_insn (gen_lsx_vshuf_d_f (target, target, op1, op0));
! 	  break;
! 	case E_V2DImode:
! 	  emit_insn (gen_lsx_vshuf_d (target, target, op1, op0));
! 	  break;
! 	case E_V4SFmode:
! 	  emit_insn (gen_lsx_vshuf_w_f (target, target, op1, op0));
! 	  break;
! 	case E_V4SImode:
! 	  emit_insn (gen_lsx_vshuf_w (target, target, op1, op0));
! 	  break;
! 	case E_V8HImode:
! 	  emit_insn (gen_lsx_vshuf_h (target, target, op1, op0));
! 	  break;
! 	case E_V16QImode:
! 	  emit_insn (gen_lsx_vshuf_b (target, op1, op0, target));
! 	  break;
! 	default:
! 	  break;
! 	}
  
        return true;
      }
--- 8401,8423 ----
        for (i = 0; i < d->nelt; i += 1)
  	  rperm[i] = GEN_INT (d->perm[i]);
  
!       machine_mode sel_mode = related_int_vector_mode (d->vmode)
! 	.require ();
!       rtvec sel_v = gen_rtvec_v (d->nelt, rperm);
  
!       /* Despite vshuf.* (except vshuf.b) needs sel == target, we cannot
! 	 load sel into target right now: here we are dealing with
! 	 pseudo regs, and target may be the same pseudo as one of op0
! 	 or op1.  Then we'd clobber the input.  Instead, we use a new
! 	 pseudo reg here.  The reload pass will look at the constraint
! 	 of vshuf.* and move sel into target first if needed.  */
!       rtx sel = force_reg (sel_mode,
! 			   gen_rtx_CONST_VECTOR (sel_mode, sel_v));
! 
!       if (d->vmode == E_V16QImode)
! 	emit_insn (gen_lsx_vshuf_b (target, op1, op0, sel));
!       else
! 	emit_insn (gen_lsx_vshuf (d->vmode, target, sel, op1, op0));
  
        return true;
      }
*************** loongarch_expand_vec_perm_const (struct
*** 9437,9443 ****
    bool flag = false;
    unsigned int i;
    unsigned char idx;
!   rtx target, op0, op1, sel, tmp;
    rtx rperm[MAX_VECT_LEN];
    unsigned int remapped[MAX_VECT_LEN];
    unsigned char perm2[MAX_VECT_LEN];
--- 9413,9419 ----
    bool flag = false;
    unsigned int i;
    unsigned char idx;
!   rtx target, op0, op1;
    rtx rperm[MAX_VECT_LEN];
    unsigned int remapped[MAX_VECT_LEN];
    unsigned char perm2[MAX_VECT_LEN];
*************** loongarch_expand_vec_perm_const (struct
*** 9617,9679 ****
  expand_perm_const_end:
        if (flag)
  	{
- 	  /* Copy selector vector from memory to vector register for later insn
- 	     gen function.
- 	     If vector's element in floating point value, we cannot fit
- 	     selector argument into insn gen function directly, because of the
- 	     insn template definition.  As a solution, generate a integral mode
- 	     subreg of target, then copy selector vector (that is in integral
- 	     mode) to this subreg.  */
- 	  switch (d->vmode)
- 	    {
- 	    case E_V4DFmode:
- 	      sel = gen_rtx_CONST_VECTOR (E_V4DImode, gen_rtvec_v (d->nelt,
- 								   rperm));
- 	      tmp = simplify_gen_subreg (E_V4DImode, d->target, d->vmode, 0);
- 	      emit_move_insn (tmp, sel);
- 	      break;
- 	    case E_V8SFmode:
- 	      sel = gen_rtx_CONST_VECTOR (E_V8SImode, gen_rtvec_v (d->nelt,
- 								   rperm));
- 	      tmp = simplify_gen_subreg (E_V8SImode, d->target, d->vmode, 0);
- 	      emit_move_insn (tmp, sel);
- 	      break;
- 	    default:
- 	      sel = gen_rtx_CONST_VECTOR (d->vmode, gen_rtvec_v (d->nelt,
- 								 rperm));
- 	      emit_move_insn (d->target, sel);
- 	      break;
- 	    }
- 
  	  target = d->target;
  	  op0 = d->op0;
  	  op1 = d->one_vector_p ? d->op0 : d->op1;
  
! 	  /* We FINALLY can generate xvshuf.* insn.  */
! 	  switch (d->vmode)
! 	    {
! 	    case E_V4DFmode:
! 	      emit_insn (gen_lasx_xvshuf_d_f (target, target, op1, op0));
! 	      break;
! 	    case E_V4DImode:
! 	      emit_insn (gen_lasx_xvshuf_d (target, target, op1, op0));
! 	      break;
! 	    case E_V8SFmode:
! 	      emit_insn (gen_lasx_xvshuf_w_f (target, target, op1, op0));
! 	      break;
! 	    case E_V8SImode:
! 	      emit_insn (gen_lasx_xvshuf_w (target, target, op1, op0));
! 	      break;
! 	    case E_V16HImode:
! 	      emit_insn (gen_lasx_xvshuf_h (target, target, op1, op0));
! 	      break;
! 	    case E_V32QImode:
! 	      emit_insn (gen_lasx_xvshuf_b (target, op1, op0, target));
! 	      break;
! 	    default:
! 	      gcc_unreachable ();
! 	      break;
! 	    }
  
  	  return true;
  	}
--- 9593,9615 ----
  expand_perm_const_end:
        if (flag)
  	{
  	  target = d->target;
  	  op0 = d->op0;
  	  op1 = d->one_vector_p ? d->op0 : d->op1;
  
! 	  machine_mode sel_mode = related_int_vector_mode (d->vmode)
! 	    .require ();
! 	  rtvec sel_v = gen_rtvec_v (d->nelt, rperm);
! 
! 	  /* See the comment in loongarch_expand_lsx_shuffle for why
! 	     we don't simply use a SUBREG to pun target.  */
! 	  rtx sel = force_reg (sel_mode,
! 			       gen_rtx_CONST_VECTOR (sel_mode, sel_v));
! 
! 	  if (d->vmode == E_V32QImode)
! 	    emit_insn (gen_lasx_xvshuf_b (target, op1, op0, sel));
! 	  else
! 	    emit_insn (gen_lasx_xvshuf (d->vmode, target, sel, op1, op0));
  
  	  return true;
  	}
diff -Nrcpad gcc-15-20250726/gcc/config/loongarch/lsx.md gcc-15-20250809/gcc/config/loongarch/lsx.md
*** gcc-15-20250726/gcc/config/loongarch/lsx.md	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/config/loongarch/lsx.md	Sat Aug  9 22:32:38 2025
***************
*** 535,543 ****
    DONE;
  })
  
! (define_insn "lsx_vshuf_<lsxfmt_f>"
    [(set (match_operand:LSX_DWH 0 "register_operand" "=f")
! 	(unspec:LSX_DWH [(match_operand:LSX_DWH 1 "register_operand" "0")
  			 (match_operand:LSX_DWH 2 "register_operand" "f")
  			 (match_operand:LSX_DWH 3 "register_operand" "f")]
  			UNSPEC_LSX_VSHUF))]
--- 535,543 ----
    DONE;
  })
  
! (define_insn "@lsx_vshuf_<lsxfmt_f>"
    [(set (match_operand:LSX_DWH 0 "register_operand" "=f")
! 	(unspec:LSX_DWH [(match_operand:<VIMODE> 1 "register_operand" "0")
  			 (match_operand:LSX_DWH 2 "register_operand" "f")
  			 (match_operand:LSX_DWH 3 "register_operand" "f")]
  			UNSPEC_LSX_VSHUF))]
diff -Nrcpad gcc-15-20250726/gcc/config/riscv/riscv.cc gcc-15-20250809/gcc/config/riscv/riscv.cc
*** gcc-15-20250726/gcc/config/riscv/riscv.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/config/riscv/riscv.cc	Sat Aug  9 22:32:38 2025
*************** riscv_allocate_and_probe_stack_space (rt
*** 8686,8697 ****
        temp2 = riscv_force_temporary (temp2, gen_int_mode (rounded_size, Pmode));
        insn = emit_insn (gen_sub3_insn (temp2, stack_pointer_rtx, temp2));
  
        if (!frame_pointer_needed)
  	{
  	  /* We want the CFA independent of the stack pointer for the
  	     duration of the loop.  */
  	  add_reg_note (insn, REG_CFA_DEF_CFA,
! 			plus_constant (Pmode, temp1, rounded_size));
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	}
  
--- 8686,8705 ----
        temp2 = riscv_force_temporary (temp2, gen_int_mode (rounded_size, Pmode));
        insn = emit_insn (gen_sub3_insn (temp2, stack_pointer_rtx, temp2));
  
+       /* The size does not represent actual stack pointer address shift
+ 	 from the top of the frame, as it might be lowered before.
+ 	 To consider the correct SP addresses for the CFA notes, it is needed
+ 	 to correct them with the initial offset value.  */
+       HOST_WIDE_INT initial_cfa_offset
+ 	= cfun->machine->frame.total_size.to_constant () - size;
+ 
        if (!frame_pointer_needed)
  	{
  	  /* We want the CFA independent of the stack pointer for the
  	     duration of the loop.  */
  	  add_reg_note (insn, REG_CFA_DEF_CFA,
! 			plus_constant (Pmode, temp2,
! 				       initial_cfa_offset + rounded_size));
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	}
  
*************** riscv_allocate_and_probe_stack_space (rt
*** 8704,8710 ****
  	{
  	  insn = get_last_insn ();
  	  add_reg_note (insn, REG_CFA_DEF_CFA,
! 			plus_constant (Pmode, stack_pointer_rtx, rounded_size));
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	}
  
--- 8712,8719 ----
  	{
  	  insn = get_last_insn ();
  	  add_reg_note (insn, REG_CFA_DEF_CFA,
! 			plus_constant (Pmode, stack_pointer_rtx,
! 				       initial_cfa_offset + rounded_size));
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	}
  
diff -Nrcpad gcc-15-20250726/gcc/cp/ChangeLog gcc-15-20250809/gcc/cp/ChangeLog
*** gcc-15-20250726/gcc/cp/ChangeLog	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/ChangeLog	Sat Aug  9 22:32:38 2025
***************
*** 1,3 ****
--- 1,336 ----
+ 2025-08-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121351
+ 	PR c++/119859
+ 	* class.cc (add_method): Substitute outer template arguments
+ 	into constraints before comparing them if the declarations are
+ 	from different classes.
+ 
+ 2025-08-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/120620
+ 	* constexpr.cc (cxx_dynamic_cast_fn_p): Return true only
+ 	for synthesized __dynamic_cast.
+ 
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-08-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-08-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/108080
+ 	* module.cc (trees_out::core_vals): Warn when streaming
+ 	target/optimize node; adjust comments.
+ 	(trees_in::core_vals): Don't stream a target/optimize node.
+ 
+ 2025-08-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-08-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/121238
+ 	* module.cc (trees_in::fn_parms_fini): Merge properties for
+ 	definitions.
+ 
+ 2025-07-31  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-31  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120800
+ 	* constexpr.cc (cxx_eval_vec_init_1): Suppress access control.
+ 
+ 2025-07-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/120224
+ 	* pt.cc (tsubst_function_decl): Return error_mark_node if
+ 	substituting into the formal parameter list failed.
+ 	(tsubst_decl) <case PARM_DECL>: Return error_mark_node
+ 	upon TREE_TYPE substitution failure, when in a SFINAE
+ 	context.  Return error_mark_node upon DECL_CHAIN substitution
+ 	failure.
+ 
+ 2025-07-31  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-27  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/120756
+ 	* pt.cc (resolve_nondeduced_context): Pass complain to mark_used.
+ 
+ 2025-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121133
+ 	* parser.cc (cp_parser_unary_expression): Adjust
+ 	cp_parser_extension_opt caller and restore warn_long_long.
+ 	(cp_parser_declaration): Likewise.
+ 	(cp_parser_block_declaration): Likewise.
+ 	(cp_parser_member_declaration): Likewise.
+ 	(cp_parser_extension_opt): Add SAVED_LONG_LONG argument,
+ 	save previous warn_long_long state into it and clear it
+ 	for __extension__.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-07-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/121219
+ 	* coroutines.cc
+ 	(cp_coroutine_transform::build_ramp_function): Reorder the return
+ 	expressions for the 'normal' and 'allocation failed' cases so that
+ 	NRV constraints are met.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/115908
+ 	PR c++/118074
+ 	PR c++/95615
+ 	* coroutines.cc (coro_frame_refcount_id): New.
+ 	(coro_init_identifiers): Initialise coro_frame_refcount_id.
+ 	(build_actor_fn): Set up initial_await_resume_called.  Handle
+ 	decrementing of the frame reference count.  Return directly to
+ 	the caller if that is non-zero.
+ 	(cp_coroutine_transform::wrap_original_function_body): Use a
+ 	conditional eh-only cleanup around the initial await expression
+ 	to release the body use on exception before initial await
+ 	resume.
+ 	(cp_coroutine_transform::build_ramp_function): Wrap the called
+ 	body in a cleanup that releases a use of the frame when we
+ 	return to the ramp.  Implement frame, promise and argument copy
+ 	destruction via conditional cleanups when the frame use count
+ 	is zero.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (struct coroutine_info): Update comments.
+ 	(struct coro_aw_data): Remove self_handle and add in
+ 	information to create the handle in lowering.
+ 	(expand_one_await_expression): Build a temporary coroutine
+ 	handle.
+ 	(build_actor_fn): Remove reference to the frame copy of the
+ 	coroutine handle.
+ 	(cp_coroutine_transform::wrap_original_function_body): Remove
+ 	reference to the frame copy of the coroutine handle.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (analyze_expression_awaits): Elide assume
+ 	attributes containing await expressions, since these have
+ 	side effects.  Emit a diagnostic that this has been done.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (finish_co_await_expr): Do not allow in an
+ 	unevaluated context.
+ 	(finish_co_yield_expr): Likewise.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/120273
+ 	* coroutines.cc
+ 	(cp_coroutine_transform::wrap_original_function_body): Use
+ 	function start and end locations when synthesizing code.
+ 	(cp_coroutine_transform::cp_coroutine_transform): Set the
+ 	function end location.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (build_co_await): Identify diagnostics
+ 	for initial and final await expressions.
+ 	(cp_coroutine_transform::wrap_original_function_body): Do
+ 	not handle initial and final await expressions here ...
+ 	(cp_coroutine_transform::apply_transforms): ... handle them
+ 	here and avoid duplicate diagnostics.
+ 	* coroutines.h: Declare inital and final await expressions
+ 	in the transform class.  Save the function closing brace
+ 	location.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/116775
+ 	* coroutines.cc (analyze_expression_awaits): When we see
+ 	a builtin_constant_p call, and that contains one or more
+ 	await expressions, then replace the call with its result
+ 	and discard the unevaluated operand.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (build_actor_fn): Set can_throw.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/120495
+ 	PR c++/115605
+ 	* pt.cc (lookup_template_class): Honour provided namespace contexts
+ 	when looking up class templates.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (analyze_fn_parms): Move from free function..
+ 	(cp_coroutine_transform::analyze_fn_parms):... to method.
+ 	(cp_coroutine_transform::apply_transforms): Adjust call to
+ 	analyze_fn_parms.
+ 	* coroutines.h: Declare analyze_fn_parms.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (expand_one_await_expression): Set the
+ 	initial_await_resume_called flag here.
+ 	(build_actor_fn): Populate the frame accessor for the
+ 	initial_await_resume_called flag.
+ 	(cp_coroutine_transform::wrap_original_function_body): Do
+ 	not modify the initial_await expression to include the
+ 	initial_await_resume_called flag here.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-02  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (build_actor_fn): Remove an unused
+ 	label, guard the frame deallocation correctly, use
+ 	simpler APIs to build if and return statements.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-02  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/118903
+ 	* constexpr.cc (potential_constant_expression_1): Emit
+ 	an error when co_await et. al. are used in constexpr
+ 	contexts.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-02  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* error.cc (dump_expr): Add co_await, co_yield and co_return.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/109283
+ 	* coroutines.cc (find_any_await): Only save the statement
+ 	pointer if the caller passes a place for it.
+ 	(flatten_await_stmt): When checking that ternary expressions
+ 	have been handled, also check that they contain a co_await.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (analyze_fn_parms): No longer
+ 	create a parameter copy guard var.
+ 	(cp_coroutine_transform::build_ramp_function): Replace ramp
+ 	cleanup try-catch block with eh-only cleanup statements.
+ 	* coroutines.h (struct param_info): Remove the
+ 	entry for the parameter copy destructor guard.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc
+ 	(cp_coroutine_transform::build_ramp_function): Use
+ 	decltype(auto) to determine the type of the temporary
+ 	get_return_object.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/119916
+ 	* coroutines.cc
+ 	(cp_coroutine_transform::wrap_original_function_body): Do not
+ 	initialise initial_await_resume_called here...
+ 	(cp_coroutine_transform::build_ramp_function): ... but here.
+ 	When the coroutine is not void, initialize a GRO object from
+ 	promise.get_return_object().  Use this as the argument to the
+ 	return expression.  Use a regular cleanup for the GRO, since
+ 	it is ramp-local.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/120453
+ 	* cp-tree.h (DECL_RAMP_P): New.
+ 	* typeck.cc (check_return_expr): Use DECL_RAMP_P instead
+ 	of DECL_RAMP_FN.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-16  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* typeck.cc (check_return_expr): Suppress conversions for NVRO
+ 	in coroutine ramp functions.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-16  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* decl.cc (poplevel): Set BLOCK_OUTER_CURLY_BRACE_P on the
+ 	body block for functions with no subblocks.
+ 
  2025-07-25  Jason Merrill  <jason@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/gcc/cp/class.cc gcc-15-20250809/gcc/cp/class.cc
*** gcc-15-20250726/gcc/cp/class.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/class.cc	Sat Aug  9 22:32:38 2025
*************** add_method (tree type, tree method, bool
*** 1351,1357 ****
        if (!compparms (parms1, parms2))
  	continue;
  
!       if (!equivalently_constrained (fn, method))
  	{
  	  if (processing_template_decl)
  	    /* We can't check satisfaction in dependent context, wait until
--- 1351,1380 ----
        if (!compparms (parms1, parms2))
  	continue;
  
!       tree fn_constraints = get_constraints (fn);
!       tree method_constraints = get_constraints (method);
! 
!       if (fn_constraints && method_constraints
! 	  && DECL_CONTEXT (fn) != type
! 	  && !processing_template_decl)
! 	{
! 	  if (TREE_CODE (fn) == TEMPLATE_DECL)
! 	    ++processing_template_decl;
! 	  if (tree ti = CLASSTYPE_TEMPLATE_INFO (DECL_CONTEXT (fn)))
! 	    fn_constraints = tsubst_constraint_info (fn_constraints,
! 						     TI_ARGS (ti),
! 						     tf_warning_or_error,
! 						     fn);
! 	  if (tree ti = CLASSTYPE_TEMPLATE_INFO (DECL_CONTEXT (method)))
! 	    method_constraints = tsubst_constraint_info (method_constraints,
! 							 TI_ARGS (ti),
! 							 tf_warning_or_error,
! 							 method);
! 	  if (TREE_CODE (fn) == TEMPLATE_DECL)
! 	    --processing_template_decl;
! 	}
! 
!       if (!equivalent_constraints (fn_constraints, method_constraints))
  	{
  	  if (processing_template_decl)
  	    /* We can't check satisfaction in dependent context, wait until
diff -Nrcpad gcc-15-20250726/gcc/cp/constexpr.cc gcc-15-20250809/gcc/cp/constexpr.cc
*** gcc-15-20250726/gcc/cp/constexpr.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/constexpr.cc	Sat Aug  9 22:32:38 2025
*************** cxx_dynamic_cast_fn_p (tree fndecl)
*** 2459,2465 ****
  {
    return (cxx_dialect >= cxx20
  	  && id_equal (DECL_NAME (fndecl), "__dynamic_cast")
! 	  && CP_DECL_CONTEXT (fndecl) == abi_node);
  }
  
  /* Often, we have an expression in the form of address + offset, e.g.
--- 2459,2469 ----
  {
    return (cxx_dialect >= cxx20
  	  && id_equal (DECL_NAME (fndecl), "__dynamic_cast")
! 	  && CP_DECL_CONTEXT (fndecl) == abi_node
! 	  /* Only consider implementation-detail __dynamic_cast calls that
! 	     correspond to a dynamic_cast, and ignore direct calls to
! 	     abi::__dynamic_cast.  */
! 	  && DECL_ARTIFICIAL (fndecl));
  }
  
  /* Often, we have an expression in the form of address + offset, e.g.
*************** cxx_eval_vec_init_1 (const constexpr_ctx
*** 5654,5659 ****
--- 5658,5666 ----
      return cxx_eval_bare_aggregate (ctx, init, lval,
  				    non_constant_p, overflow_p);
  
+   /* We already checked access when building the VEC_INIT_EXPR.  */
+   deferring_access_check_sentinel acs (dk_deferred);
+ 
    /* For the default constructor, build up a call to the default
       constructor of the element type.  We only need to handle class types
       here, as for a constructor to be constexpr, all members must be
*************** potential_constant_expression_1 (tree t,
*** 11035,11040 ****
--- 11042,11050 ----
      case CO_AWAIT_EXPR:
      case CO_YIELD_EXPR:
      case CO_RETURN_EXPR:
+       if (flags & tf_error)
+ 	constexpr_error (cp_expr_loc_or_loc (t, input_location), fundef_p,
+ 			 "%qE is not a constant expression", t);
        return false;
  
      /* Assume a TU-local entity is not constant, we'll error later when
diff -Nrcpad gcc-15-20250726/gcc/cp/coroutines.cc gcc-15-20250809/gcc/cp/coroutines.cc
*** gcc-15-20250726/gcc/cp/coroutines.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/coroutines.cc	Sat Aug  9 22:32:38 2025
*************** static bool coro_promise_type_found_p (t
*** 191,198 ****
    just syntactic sugar for a co_await).
  
    We defer the analysis and transformation until template expansion is
!   complete so that we have complete types at that time.  */
  
  
  /* The state that we collect during parsing (and template expansion) for
     a coroutine.  */
--- 191,277 ----
    just syntactic sugar for a co_await).
  
    We defer the analysis and transformation until template expansion is
!   complete so that we have complete types at that time.
! 
!   ---------------------------------------------------------------------------
! 
!   Coroutine state, and responsibility for its release.
! 
!   As noted above, a coroutine has some state that persists across suspensions.
! 
!   The state has two components:
!     * State that is specified by the standard and persists for the entire
!       life of the coroutine.
!     * Local state that is constructed/destructed as scopes in the original
!       function body are entered/exited.  The destruction of local state is
!       always the responsibility of the body code.
! 
!   The persistent state (and the overall storage for the state) must be
!   managed in two places:
!     * The ramp function (which allocates and builds this - and can, in some
!       cases, be responsible for destroying it)
!     * The re-written function body which can destroy it when that body
!       completes its final suspend - or when the handle.destroy () is called.
! 
!   In all cases the ramp holds responsibility for constructing the standard-
!   mandated persistent state.
! 
!   There are four ways in which the ramp might be re-entered after starting
!   the function body:
!     A The body could suspend (one might expect that to be the 'normal' case
!       for most coroutines).
!     B The body might complete either synchronously or via continuations.
!     C An exception might be thrown during the setup of the initial await
!       expression, before the initial awaiter resumes.
!     D An exception might be processed by promise.unhandled_exception () and
!       that, in turn, might re-throw it (or throw something else).  In this
!       case, the coroutine is considered suspended at the final suspension
!       point.
! 
!   Until the ramp return value has been constructed, the ramp is considered
!   to have a use of the state.
! 
!   To manage these interacting conditions we allocate a reference counter
!   for the frame state.  This is initialised to 1 by the ramp as part of its
!   startup (note that failures/exceptions in the startup code are handled
!   locally to the ramp).
! 
!   When the body returns (either normally, or by exception) the ramp releases
!   its use.
! 
!   Once the rewritten coroutine body is started, the body is considered to
!   have a use of the frame.  This use (potentially) needs to be released if
!   an exception is thrown from the body.  We implement this using an eh-only
!   cleanup around the initial await and function body.  If we have the case
!   D above, then we do not release the use.
! 
!   In case:
! 
!     A, typically the ramp would be re-entered with the body holding a use,
!     and therefore the ramp should not destroy the state.
! 
!     B, both the body and ramp will have released their uses, and the ramp
!     should destroy the state.
! 
!     C, we must arrange for the body to release its use, because we require
!     the ramp to cleanup in this circumstance.
! 
!     D is an outlier, since the responsibility for destruction of the state
!     now rests with the user's code (via a handle.destroy() call).
! 
!     NOTE: In the case that the body has never suspended before such an
!     exception occurs, the only reasonable way for the user code to obtain the
!     necessary handle is if unhandled_exception() throws the handle or some
!     object that contains the handle.  That is outside of the designs here -
!     if the user code might need this corner-case, then such provision will
!     have to be made.
  
+   In the ramp, we implement destruction for the persistent frame state by
+   means of cleanups.  These are run conditionally when the reference count
+   is 0 signalling that both the body and the ramp have completed.
+ 
+   In the body, once we pass the final suspend, then we test the use and
+   delete the state if the use is 0.  */
  
  /* The state that we collect during parsing (and template expansion) for
     a coroutine.  */
*************** struct GTY((for_user)) coroutine_info
*** 206,216 ****
    tree traits_type;   /* The cached traits type for this function.  */
    tree handle_type;   /* The cached coroutine handle for this function.  */
    tree self_h_proxy;  /* A handle instance that is used as the proxy for the
! 			 one that will eventually be allocated in the coroutine
! 			 frame.  */
    tree promise_proxy; /* Likewise, a proxy promise instance.  */
!   tree from_address;  /* handle_type from_address function.  */
!   tree return_void;   /* The expression for p.return_void() if it exists.  */
    location_t first_coro_keyword; /* The location of the keyword that made this
  				    function into a coroutine.  */
  
--- 285,294 ----
    tree traits_type;   /* The cached traits type for this function.  */
    tree handle_type;   /* The cached coroutine handle for this function.  */
    tree self_h_proxy;  /* A handle instance that is used as the proxy for the
! 			 one that will eventually be built in lowering.  */
    tree promise_proxy; /* Likewise, a proxy promise instance.  */
!   tree from_address;  /* handle_type from_address() function.  */
!   tree return_void;   /* The expression for p.return_void(), if it exists.  */
    location_t first_coro_keyword; /* The location of the keyword that made this
  				    function into a coroutine.  */
  
*************** static GTY(()) tree coro_resume_index_id
*** 348,353 ****
--- 426,432 ----
  static GTY(()) tree coro_self_handle_id;
  static GTY(()) tree coro_actor_continue_id;
  static GTY(()) tree coro_frame_i_a_r_c_id;
+ static GTY(()) tree coro_frame_refcount_id;
  
  /* Create the identifiers used by the coroutines library interfaces and
     the implementation frame state.  */
*************** coro_init_identifiers ()
*** 385,390 ****
--- 464,470 ----
    coro_resume_index_id = get_identifier ("_Coro_resume_index");
    coro_self_handle_id = get_identifier ("_Coro_self_handle");
    coro_actor_continue_id = get_identifier ("_Coro_actor_continue");
+   coro_frame_refcount_id = get_identifier ("_Coro_frame_refcount");
  }
  
  /* Trees we only need to set up once.  */
*************** build_co_await (location_t loc, tree a,
*** 1277,1284 ****
  
    if (TREE_CODE (o_type) != RECORD_TYPE)
      {
!       error_at (loc, "awaitable type %qT is not a structure",
! 		o_type);
        return error_mark_node;
      }
  
--- 1357,1370 ----
  
    if (TREE_CODE (o_type) != RECORD_TYPE)
      {
!       if (suspend_kind == FINAL_SUSPEND_POINT)
! 	error_at (loc, "%qs awaitable type %qT is not a structure",
! 		  "final_suspend()", o_type);
!       else if (suspend_kind == INITIAL_SUSPEND_POINT)
! 	error_at (loc, "%qs awaitable type %qT is not a structure",
! 		  "initial_suspend()", o_type);
!       else
! 	error_at (loc, "awaitable type %qT is not a structure", o_type);
        return error_mark_node;
      }
  
*************** finish_co_await_expr (location_t kw, tre
*** 1461,1466 ****
--- 1547,1558 ----
    if (!expr || error_operand_p (expr))
      return error_mark_node;
  
+   if (cp_unevaluated_operand)
+     {
+       error_at (kw, "%qs cannot be used in an unevaluated context","co_await");
+       return error_mark_node;
+     }
+ 
    if (!coro_common_keyword_context_valid_p (current_function_decl, kw,
  					    "co_await"))
      return error_mark_node;
*************** finish_co_yield_expr (location_t kw, tre
*** 1541,1546 ****
--- 1633,1644 ----
    if (!expr || error_operand_p (expr))
      return error_mark_node;
  
+   if (cp_unevaluated_operand)
+     {
+       error_at (kw, "%qs cannot be used in an unevaluated context","co_yield");
+       return error_mark_node;
+     }
+ 
    /* Check the general requirements and simple syntax errors.  */
    if (!coro_common_keyword_context_valid_p (current_function_decl, kw,
  					    "co_yield"))
*************** struct coro_aw_data
*** 1979,1990 ****
    tree coro_fp;    /* Frame pointer var.  */
    tree resume_idx; /* This is the index var in the frame.  */
    tree i_a_r_c;    /* initial suspend await_resume() was called if true.  */
-   tree self_h;     /* This is a handle to the current coro (frame var).  */
    tree cleanup;    /* This is where to go once we complete local destroy.  */
    tree cororet;    /* This is where to go if we suspend.  */
    tree corocont;   /* This is where to go if we continue.  */
    tree dispatch;   /* This is where we go if we restart the dispatch.  */
    tree conthand;   /* This is the handle for a continuation.  */
    unsigned index;  /* This is our current resume index.  */
  };
  
--- 2077,2089 ----
    tree coro_fp;    /* Frame pointer var.  */
    tree resume_idx; /* This is the index var in the frame.  */
    tree i_a_r_c;    /* initial suspend await_resume() was called if true.  */
    tree cleanup;    /* This is where to go once we complete local destroy.  */
    tree cororet;    /* This is where to go if we suspend.  */
    tree corocont;   /* This is where to go if we continue.  */
    tree dispatch;   /* This is where we go if we restart the dispatch.  */
    tree conthand;   /* This is the handle for a continuation.  */
+   tree handle_type; /* Handle type for this coroutine...  */
+   tree hfa_m;       /* ... and handle.from_address() for this.  */
    unsigned index;  /* This is our current resume index.  */
  };
  
*************** expand_one_await_expression (tree *expr,
*** 2042,2049 ****
    tree awaiter_calls = TREE_OPERAND (saved_co_await, 3);
  
    tree source = TREE_OPERAND (saved_co_await, 4);
!   bool is_final = (source
! 		   && TREE_INT_CST_LOW (source) == (int) FINAL_SUSPEND_POINT);
  
    /* Build labels for the destinations of the control flow when we are resuming
       or destroying.  */
--- 2141,2150 ----
    tree awaiter_calls = TREE_OPERAND (saved_co_await, 3);
  
    tree source = TREE_OPERAND (saved_co_await, 4);
!   bool is_final
!     = (source && TREE_INT_CST_LOW (source) == (int) FINAL_SUSPEND_POINT);
!   bool is_initial
!     = (source && TREE_INT_CST_LOW (source) == (int) INITIAL_SUSPEND_POINT);
  
    /* Build labels for the destinations of the control flow when we are resuming
       or destroying.  */
*************** expand_one_await_expression (tree *expr,
*** 2100,2105 ****
--- 2201,2218 ----
  
    tree suspend = TREE_VEC_ELT (awaiter_calls, 1); /* await_suspend().  */
    tree susp_type = TREE_TYPE (suspend);
+   tree susp_call = suspend;
+   if (TREE_CODE (suspend) == TARGET_EXPR)
+     susp_call = TARGET_EXPR_INITIAL (suspend);
+   gcc_checking_assert (TREE_CODE (susp_call) == CALL_EXPR);
+   tree dummy_ch = build_dummy_object (data->handle_type);
+   r = fold_convert (build_pointer_type (void_type_node), data->coro_fp);
+   vec<tree, va_gc> *args = make_tree_vector_single (r);
+   tree hfa = cp_fold_rvalue (
+     build_new_method_call (dummy_ch, data->hfa_m, &args, NULL_TREE,
+ 			   LOOKUP_NORMAL, NULL, tf_warning_or_error));
+   release_tree_vector (args);
+   CALL_EXPR_ARG (susp_call, call_expr_nargs (susp_call) - 1) = hfa;
  
    bool is_cont = false;
    /* NOTE: final suspend can't resume; the "resume" label in that case
*************** expand_one_await_expression (tree *expr,
*** 2171,2176 ****
--- 2284,2296 ----
    /* Resume point.  */
    add_stmt (build_stmt (loc, LABEL_EXPR, resume_label));
  
+   if (is_initial && data->i_a_r_c)
+     {
+       r = cp_build_modify_expr (loc, data->i_a_r_c, NOP_EXPR, boolean_true_node,
+ 				tf_warning_or_error);
+       finish_expr_stmt (r);
+     }
+ 
    /* This will produce the value (if one is provided) from the co_await
       expression.  */
    tree resume_call = TREE_VEC_ELT (awaiter_calls, 2); /* await_resume().  */
*************** build_actor_fn (location_t loc, tree cor
*** 2412,2417 ****
--- 2532,2542 ----
    bool spf = start_preparsed_function (actor, NULL_TREE, SF_PRE_PARSED);
    gcc_checking_assert (spf);
    gcc_checking_assert (cfun && current_function_decl && TREE_STATIC (actor));
+   if (flag_exceptions)
+     /* We, unconditionally, add a try/catch and rethrow.
+        TODO: Determine if the combination of initial suspend and the original
+        body cannot throw, and elide these additions.  */
+     cp_function_chain->can_throw = true;
    tree stmt = begin_function_body ();
  
    tree actor_bind = build3 (BIND_EXPR, void_type_node, NULL, NULL, NULL);
*************** build_actor_fn (location_t loc, tree cor
*** 2558,2565 ****
  
    /* Finish the resume dispatcher.  */
    finish_switch_stmt (dispatcher);
-   finish_else_clause (lsb_if);
  
    finish_if_stmt (lsb_if);
  
    /* If we reach here then we've hit UB.  */
--- 2683,2690 ----
  
    /* Finish the resume dispatcher.  */
    finish_switch_stmt (dispatcher);
  
+   finish_else_clause (lsb_if);
    finish_if_stmt (lsb_if);
  
    /* If we reach here then we've hit UB.  */
*************** build_actor_fn (location_t loc, tree cor
*** 2569,2590 ****
    /* Now we start building the rewritten function body.  */
    add_stmt (build_stmt (loc, LABEL_EXPR, actor_begin_label));
  
!   /* actor's coroutine 'self handle'.  */
!   tree ash = coro_build_frame_access_expr (actor_frame, coro_self_handle_id,
! 					   false, tf_warning_or_error);
!   /* So construct the self-handle from the frame address.  */
!   tree hfa_m = get_coroutine_from_address (orig);
!   /* Should have been set earlier by coro_promise_type_found_p.  */
!   gcc_assert (hfa_m);
! 
!   tree r = build1 (CONVERT_EXPR, build_pointer_type (void_type_node), actor_fp);
!   vec<tree, va_gc> *args = make_tree_vector_single (r);
!   tree hfa = build_new_method_call (ash, hfa_m, &args, NULL_TREE, LOOKUP_NORMAL,
! 				    NULL, tf_warning_or_error);
!   r = cp_build_init_expr (ash, hfa);
!   r = coro_build_cvt_void_expr_stmt (r, loc);
!   add_stmt (r);
!   release_tree_vector (args);
  
    /* Now we know the real promise, and enough about the frame layout to
       decide where to put things.  */
--- 2694,2709 ----
    /* Now we start building the rewritten function body.  */
    add_stmt (build_stmt (loc, LABEL_EXPR, actor_begin_label));
  
!   tree i_a_r_c = NULL_TREE;
!   if (flag_exceptions)
!     {
!       i_a_r_c
! 	= coro_build_frame_access_expr (actor_frame, coro_frame_i_a_r_c_id,
! 					false, tf_warning_or_error);
!       tree m = cp_build_modify_expr (loc, i_a_r_c, NOP_EXPR,
! 				     boolean_false_node, tf_warning_or_error);
!       finish_expr_stmt (m);
!     }
  
    /* Now we know the real promise, and enough about the frame layout to
       decide where to put things.  */
*************** build_actor_fn (location_t loc, tree cor
*** 2599,2667 ****
    /* Add in our function body with the co_returns rewritten to final form.  */
    add_stmt (fnbody);
  
!   /* now do the tail of the function.  */
    r = build_stmt (loc, LABEL_EXPR, del_promise_label);
    add_stmt (r);
  
!   /* Destructors for the things we built explicitly.  */
    if (tree c = cxx_maybe_build_cleanup (promise_proxy, tf_warning_or_error))
!     add_stmt (c);
! 
!   tree del_frame_label
!     = create_named_label_with_ctx (loc, "coro.delete.frame", actor);
!   r = build_stmt (loc, LABEL_EXPR, del_frame_label);
!   add_stmt (r);
! 
!   /* Here deallocate the frame (if we allocated it), which we will have at
!      present.  */
!   tree fnf2_x
!    = coro_build_frame_access_expr (actor_frame, coro_frame_needs_free_id,
! 				   false, tf_warning_or_error);
  
!   tree need_free_if = begin_if_stmt ();
!   fnf2_x = build1 (CONVERT_EXPR, integer_type_node, fnf2_x);
!   tree cmp = build2 (NE_EXPR, integer_type_node, fnf2_x, integer_zero_node);
!   finish_if_stmt_cond (cmp, need_free_if);
    while (!param_dtor_list->is_empty ())
      {
        tree parm_id = param_dtor_list->pop ();
        tree a = coro_build_frame_access_expr (actor_frame, parm_id, false,
  					     tf_warning_or_error);
        if (tree dtor = cxx_maybe_build_cleanup (a, tf_warning_or_error))
! 	add_stmt (dtor);
      }
  
    /* Build the frame DTOR.  */
    tree del_coro_fr
      = build_coroutine_frame_delete_expr (actor_fp, frame_size,
  					 promise_type, loc);
    finish_expr_stmt (del_coro_fr);
    finish_then_clause (need_free_if);
!   tree scope = IF_SCOPE (need_free_if);
!   IF_SCOPE (need_free_if) = NULL;
!   r = do_poplevel (scope);
!   add_stmt (r);
  
!   /* done.  */
!   r = build_stmt (loc, RETURN_EXPR, NULL);
!   suppress_warning (r); /* We don't want a warning about this.  */
!   r = maybe_cleanup_point_expr_void (r);
!   add_stmt (r);
  
    /* This is the suspend return point.  */
!   r = build_stmt (loc, LABEL_EXPR, ret_label);
!   add_stmt (r);
  
!   r = build_stmt (loc, RETURN_EXPR, NULL);
!   suppress_warning (r); /* We don't want a warning about this.  */
!   r = maybe_cleanup_point_expr_void (r);
!   add_stmt (r);
  
    /* This is the 'continuation' return point.  For such a case we have a coro
       handle (from the await_suspend() call) and we want handle.resume() to
       execute as a tailcall allowing arbitrary chaining of coroutines.  */
!   r = build_stmt (loc, LABEL_EXPR, continue_label);
!   add_stmt (r);
  
    /* Should have been set earlier by the coro_initialized code.  */
    gcc_assert (void_coro_handle_address);
--- 2718,2791 ----
    /* Add in our function body with the co_returns rewritten to final form.  */
    add_stmt (fnbody);
  
!   /* We are done with the frame, but if the ramp still has a hold on it
!      we should not cleanup.  So decrement the refcount and then return to
!      the ramp if it is > 0.  */
!   tree coro_frame_refcount
!     = coro_build_frame_access_expr (actor_frame, coro_frame_refcount_id,
! 				    false, tf_warning_or_error);
!   tree released = build2_loc (loc, MINUS_EXPR, short_unsigned_type_node,
! 			      coro_frame_refcount,
! 			      build_int_cst (short_unsigned_type_node, 1));
!   tree r = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR, released,
! 				 tf_warning_or_error);
!   finish_expr_stmt (r);
!   tree cond = build2_loc (loc, NE_EXPR, short_unsigned_type_node,
! 			  coro_frame_refcount,
! 			  build_int_cst (short_unsigned_type_node, 0));
!   tree ramp_cu_if = begin_if_stmt ();
!   finish_if_stmt_cond (cond, ramp_cu_if);
!   finish_return_stmt (NULL_TREE);
!   finish_then_clause (ramp_cu_if);
!   finish_if_stmt (ramp_cu_if);
! 
!   /* Otherwise, do the tail of the function; first cleanups.  */
    r = build_stmt (loc, LABEL_EXPR, del_promise_label);
    add_stmt (r);
  
!   /* Destructors for the things we built explicitly.
!      promise... */
    if (tree c = cxx_maybe_build_cleanup (promise_proxy, tf_warning_or_error))
!     finish_expr_stmt (c);
  
!   /* Argument copies ...  */
    while (!param_dtor_list->is_empty ())
      {
        tree parm_id = param_dtor_list->pop ();
        tree a = coro_build_frame_access_expr (actor_frame, parm_id, false,
  					     tf_warning_or_error);
        if (tree dtor = cxx_maybe_build_cleanup (a, tf_warning_or_error))
! 	finish_expr_stmt (dtor);
      }
  
+   /* Here deallocate the frame (if we allocated it), which we will have at
+      present.  */
+   tree fnf2_x
+    = coro_build_frame_access_expr (actor_frame, coro_frame_needs_free_id,
+ 				   false, tf_warning_or_error);
+   tree need_free_if = begin_if_stmt ();
+   finish_if_stmt_cond (fnf2_x, need_free_if);
+ 
    /* Build the frame DTOR.  */
    tree del_coro_fr
      = build_coroutine_frame_delete_expr (actor_fp, frame_size,
  					 promise_type, loc);
    finish_expr_stmt (del_coro_fr);
    finish_then_clause (need_free_if);
!   finish_if_stmt (need_free_if);
  
!   /* Done.  */
!   finish_return_stmt (NULL_TREE);
  
    /* This is the suspend return point.  */
!   add_stmt (build_stmt (loc, LABEL_EXPR, ret_label));
  
!   finish_return_stmt (NULL_TREE);
  
    /* This is the 'continuation' return point.  For such a case we have a coro
       handle (from the await_suspend() call) and we want handle.resume() to
       execute as a tailcall allowing arbitrary chaining of coroutines.  */
!   add_stmt (build_stmt (loc, LABEL_EXPR, continue_label));
  
    /* Should have been set earlier by the coro_initialized code.  */
    gcc_assert (void_coro_handle_address);
*************** build_actor_fn (location_t loc, tree cor
*** 2685,2696 ****
    gcc_checking_assert (maybe_cleanup_point_expr_void (r) == r);
    add_stmt (r);
  
    /* We've now rewritten the tree and added the initial and final
       co_awaits.  Now pass over the tree and expand the co_awaits.  */
  
!   coro_aw_data data = {actor, actor_fp, resume_idx_var, NULL_TREE,
! 		       ash, del_promise_label, ret_label,
! 		       continue_label, restart_dispatch_label, continuation, 2};
    cp_walk_tree (&actor_body, await_statement_expander, &data, NULL);
  
    BIND_EXPR_BODY (actor_bind) = pop_stmt_list (actor_body);
--- 2809,2827 ----
    gcc_checking_assert (maybe_cleanup_point_expr_void (r) == r);
    add_stmt (r);
  
+   /* How to construct the handle for this coroutine from the frame address.  */
+   tree hfa_m = get_coroutine_from_address (orig);
+   /* Should have been set earlier by coro_promise_type_found_p.  */
+   gcc_assert (hfa_m);
+   tree handle_type = TREE_TYPE (get_coroutine_self_handle_proxy (orig));
+ 
    /* We've now rewritten the tree and added the initial and final
       co_awaits.  Now pass over the tree and expand the co_awaits.  */
  
!   coro_aw_data data = {actor, actor_fp, resume_idx_var, i_a_r_c,
! 		       del_promise_label, ret_label,
! 		       continue_label, restart_dispatch_label, continuation,
! 		       handle_type, hfa_m, 2};
    cp_walk_tree (&actor_body, await_statement_expander, &data, NULL);
  
    BIND_EXPR_BODY (actor_bind) = pop_stmt_list (actor_body);
*************** find_any_await (tree *stmt, int *dosub,
*** 2882,2889 ****
    if (TREE_CODE (*stmt) == CO_AWAIT_EXPR)
      {
        *dosub = 0; /* We don't need to consider this any further.  */
!       tree **p = (tree **) d;
!       *p = stmt;
        return *stmt;
      }
    return NULL_TREE;
--- 3013,3020 ----
    if (TREE_CODE (*stmt) == CO_AWAIT_EXPR)
      {
        *dosub = 0; /* We don't need to consider this any further.  */
!       if (d)
! 	*(tree **)d = stmt;
        return *stmt;
      }
    return NULL_TREE;
*************** flatten_await_stmt (var_nest_node *n, ha
*** 3133,3139 ****
  	  bool already_present = promoted->add (var);
  	  gcc_checking_assert (!already_present);
  	  tree inner = TARGET_EXPR_INITIAL (init);
! 	  gcc_checking_assert (TREE_CODE (inner) != COND_EXPR);
  	  init = cp_build_modify_expr (input_location, var, INIT_EXPR, init,
  				       tf_warning_or_error);
  	  /* Simplify for the case that we have an init containing the temp
--- 3264,3272 ----
  	  bool already_present = promoted->add (var);
  	  gcc_checking_assert (!already_present);
  	  tree inner = TARGET_EXPR_INITIAL (init);
! 	  gcc_checking_assert
! 	    (TREE_CODE (inner) != COND_EXPR
! 	     || !cp_walk_tree (&inner, find_any_await, nullptr, nullptr));
  	  init = cp_build_modify_expr (input_location, var, INIT_EXPR, init,
  				       tf_warning_or_error);
  	  /* Simplify for the case that we have an init containing the temp
*************** maybe_promote_temps (tree *stmt, void *d
*** 3438,3444 ****
    return cp_walk_tree (stmt, register_awaits, d, &visited);
  }
  
! /* Lightweight callback to determine two key factors:
     1) If the statement/expression contains any await expressions.
     2) If the statement/expression potentially requires a re-write to handle
        TRUTH_{AND,OR}IF_EXPRs since, in most cases, they will need expansion
--- 3571,3578 ----
    return cp_walk_tree (stmt, register_awaits, d, &visited);
  }
  
! /* Relatively lightweight callback to do initial assessment:
!    0) Rewrite some await expressions.
     1) If the statement/expression contains any await expressions.
     2) If the statement/expression potentially requires a re-write to handle
        TRUTH_{AND,OR}IF_EXPRs since, in most cases, they will need expansion
*************** analyze_expression_awaits (tree *stmt, i
*** 3455,3460 ****
--- 3589,3627 ----
    switch (TREE_CODE (*stmt))
      {
        default: return NULL_TREE;
+       case CALL_EXPR:
+ 	{
+ 	  tree fn = cp_get_callee_fndecl_nofold (*stmt);
+ 	  /* Special-cases where we want to re-write await expressions to some
+ 	     other value before they are otherwise processed.  */
+ 	  if (fn && DECL_IS_BUILTIN_CONSTANT_P (fn))
+ 	    {
+ 	      gcc_checking_assert (call_expr_nargs (*stmt) == 1);
+ 	      tree expr = CALL_EXPR_ARG (*stmt, 0);
+ 	      if (cp_walk_tree (&expr, find_any_await, nullptr, NULL))
+ 		{
+ 		  if (TREE_CONSTANT (maybe_constant_value (expr)))
+ 		    *stmt = integer_one_node;
+ 		  else
+ 		    *stmt = integer_zero_node;
+ 		}
+ 	      *do_subtree = 0;
+ 	    }
+ 	  else if (!fn && CALL_EXPR_IFN (*stmt) == IFN_ASSUME)
+ 	    {
+ 	      tree expr = CALL_EXPR_ARG (*stmt, 0);
+ 	      if (TREE_SIDE_EFFECTS (expr))
+ 		{
+ 		  location_t loc_e = cp_expr_location (expr);
+ 		  location_t loc_s = cp_expr_location (*stmt);
+ 		  location_t loc_n = make_location (loc_e, loc_s, loc_s);
+ 		  warning_at (loc_n, OPT_Wattributes,"assumption ignored"
+ 			      " because it contains an await-expression");
+ 		  *stmt = build_empty_stmt (loc_n);
+ 		}
+ 	    }
+ 	}
+ 	break;
        case CO_YIELD_EXPR:
  	/* co_yield is syntactic sugar, re-write it to co_await.  */
  	*stmt = TREE_OPERAND (*stmt, 1);
*************** rewrite_param_uses (tree *stmt, int *do_
*** 4045,4056 ****
  }
  
  /* Build up a set of info that determines how each param copy will be
!    handled.  */
  
! static void
! analyze_fn_parms (tree orig, hash_map<tree, param_info> *param_uses)
  {
!   if (!DECL_ARGUMENTS (orig))
      return;
  
    /* Build a hash map with an entry for each param.
--- 4212,4225 ----
  }
  
  /* Build up a set of info that determines how each param copy will be
!    handled.  We store this in a hash map so that we can access it from
!    a tree walk callback that re-writes the original parameters to their
!    copies.  */
  
! void
! cp_coroutine_transform::analyze_fn_parms ()
  {
!   if (!DECL_ARGUMENTS (orig_fn_decl))
      return;
  
    /* Build a hash map with an entry for each param.
*************** analyze_fn_parms (tree orig, hash_map<tr
*** 4060,4078 ****
       Then a tree list of the uses.
       The second two entries start out empty - and only get populated
       when we see uses.  */
!   bool lambda_p = LAMBDA_FUNCTION_P (orig);
  
    /* Count the param copies from 1 as per the std.  */
    unsigned parm_num = 1;
!   for (tree arg = DECL_ARGUMENTS (orig); arg != NULL;
         ++parm_num, arg = DECL_CHAIN (arg))
      {
        bool existed;
!       param_info &parm = param_uses->get_or_insert (arg, &existed);
        gcc_checking_assert (!existed);
        parm.body_uses = NULL;
        tree actual_type = TREE_TYPE (arg);
!       actual_type = complete_type_or_else (actual_type, orig);
        if (actual_type == NULL_TREE)
  	actual_type = error_mark_node;
        parm.orig_type = actual_type;
--- 4229,4247 ----
       Then a tree list of the uses.
       The second two entries start out empty - and only get populated
       when we see uses.  */
!   bool lambda_p = LAMBDA_FUNCTION_P (orig_fn_decl);
  
    /* Count the param copies from 1 as per the std.  */
    unsigned parm_num = 1;
!   for (tree arg = DECL_ARGUMENTS (orig_fn_decl); arg != NULL;
         ++parm_num, arg = DECL_CHAIN (arg))
      {
        bool existed;
!       param_info &parm = param_uses.get_or_insert (arg, &existed);
        gcc_checking_assert (!existed);
        parm.body_uses = NULL;
        tree actual_type = TREE_TYPE (arg);
!       actual_type = complete_type_or_else (actual_type, orig_fn_decl);
        if (actual_type == NULL_TREE)
  	actual_type = error_mark_node;
        parm.orig_type = actual_type;
*************** analyze_fn_parms (tree orig, hash_map<tr
*** 4106,4122 ****
  	}
        parm.field_id = name;
        if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (parm.frame_type))
! 	{
! 	  char *buf = xasprintf ("_Coro_q%u_%s_live", parm_num,
! 				 DECL_NAME (arg) ? IDENTIFIER_POINTER (name)
! 						 : "__unnamed");
! 	  parm.guard_var
! 	    = coro_build_artificial_var (UNKNOWN_LOCATION, get_identifier (buf),
! 					 boolean_type_node, orig,
! 					 boolean_false_node);
! 	  free (buf);
! 	  parm.trivial_dtor = false;
! 	}
        else
  	parm.trivial_dtor = true;
      }
--- 4275,4281 ----
  	}
        parm.field_id = name;
        if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (parm.frame_type))
! 	parm.trivial_dtor = false;
        else
  	parm.trivial_dtor = true;
      }
*************** cp_coroutine_transform::wrap_original_fu
*** 4307,4314 ****
  {
    /* Avoid the code here attaching a location that makes the debugger jump.  */
    iloc_sentinel stable_input_loc (fn_start);
!   location_t loc = UNKNOWN_LOCATION;
!   input_location = loc;
  
    /* This will be our new outer scope.  */
    tree update_body
--- 4466,4472 ----
  {
    /* Avoid the code here attaching a location that makes the debugger jump.  */
    iloc_sentinel stable_input_loc (fn_start);
!   location_t loc = fn_start;
  
    /* This will be our new outer scope.  */
    tree update_body
*************** cp_coroutine_transform::wrap_original_fu
*** 4356,4362 ****
    /* Wrap the function body in a try {} catch (...) {} block, if exceptions
       are enabled.  */
    tree var_list = NULL_TREE;
-   tree initial_await = build_init_or_final_await (fn_start, false);
  
    /* [stmt.return.coroutine] / 3
       If p.return_void() is a valid expression, flowing off the end of a
--- 4514,4519 ----
*************** cp_coroutine_transform::wrap_original_fu
*** 4395,4410 ****
    var_list = promise;
    add_decl_expr (promise);
  
-   /* We need a handle to this coroutine, which is passed to every
-      await_suspend().  This was created on demand when parsing we now link it
-      into our scope.  */
-   var = get_coroutine_self_handle_proxy (orig_fn_decl);
-   DECL_CONTEXT (var) = orig_fn_decl;
-   DECL_SOURCE_LOCATION (var) = loc;
-   DECL_CHAIN (var) = var_list;
-   var_list = var;
-   add_decl_expr (var);
- 
    /* If we have function parms, then these will be copied to the coroutine
       frame as per [dcl.fct.def.coroutine] / 13.
       Here, we create a local (proxy) variable for each parm, since the original
--- 4552,4557 ----
*************** cp_coroutine_transform::wrap_original_fu
*** 4448,4474 ****
    var_list = resume_idx_var;
    add_decl_expr (resume_idx_var);
  
    /* If the coroutine has a frame that needs to be freed, this will be set by
       the ramp.  */
!   var = coro_build_artificial_var (fn_start, coro_frame_needs_free_id,
  				   boolean_type_node, orig_fn_decl, NULL_TREE);
    DECL_CHAIN (var) = var_list;
    var_list = var;
    add_decl_expr (var);
  
    if (flag_exceptions)
      {
        /* Build promise.unhandled_exception();  */
        tree ueh
  	= coro_build_promise_expression (orig_fn_decl, promise,
  					 coro_unhandled_exception_identifier,
! 					 fn_start, NULL, /*musthave=*/true);
        /* Create and initialize the initial-await-resume-called variable per
  	 [dcl.fct.def.coroutine] / 5.3.  */
        tree i_a_r_c
  	= coro_build_artificial_var (loc, coro_frame_i_a_r_c_id,
  				     boolean_type_node, orig_fn_decl,
! 				     boolean_false_node);
        DECL_CHAIN (i_a_r_c) = var_list;
        var_list = i_a_r_c;
        add_decl_expr (i_a_r_c);
--- 4595,4638 ----
    var_list = resume_idx_var;
    add_decl_expr (resume_idx_var);
  
+   tree coro_frame_refcount
+     = coro_build_artificial_var (loc, coro_frame_refcount_id,
+ 				 short_unsigned_type_node, orig_fn_decl,
+ 				 NULL_TREE);
+   DECL_CHAIN (coro_frame_refcount) = var_list;
+   var_list = coro_frame_refcount;
+   add_decl_expr (coro_frame_refcount);
+ 
    /* If the coroutine has a frame that needs to be freed, this will be set by
       the ramp.  */
!   var = coro_build_artificial_var (loc, coro_frame_needs_free_id,
  				   boolean_type_node, orig_fn_decl, NULL_TREE);
    DECL_CHAIN (var) = var_list;
    var_list = var;
    add_decl_expr (var);
  
+   /* We consider that the body has a use of the frame once we start to process
+      the initial suspend expression. (the use might be relinquished if we
+      encounter an exception before the body is finished).  */
+   tree body_use
+     = build2_loc (loc, PLUS_EXPR, short_unsigned_type_node, coro_frame_refcount,
+ 		  build_int_cst (short_unsigned_type_node, 1));
+   body_use = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR, body_use,
+ 				   tf_warning_or_error);
+   finish_expr_stmt (body_use);
    if (flag_exceptions)
      {
        /* Build promise.unhandled_exception();  */
        tree ueh
  	= coro_build_promise_expression (orig_fn_decl, promise,
  					 coro_unhandled_exception_identifier,
! 					 loc, NULL, /*musthave=*/true);
        /* Create and initialize the initial-await-resume-called variable per
  	 [dcl.fct.def.coroutine] / 5.3.  */
        tree i_a_r_c
  	= coro_build_artificial_var (loc, coro_frame_i_a_r_c_id,
  				     boolean_type_node, orig_fn_decl,
! 				     NULL_TREE);
        DECL_CHAIN (i_a_r_c) = var_list;
        var_list = i_a_r_c;
        add_decl_expr (i_a_r_c);
*************** cp_coroutine_transform::wrap_original_fu
*** 4476,4509 ****
        tree tcb = build_stmt (loc, TRY_BLOCK, NULL_TREE, NULL_TREE);
        add_stmt (tcb);
        TRY_STMTS (tcb) = push_stmt_list ();
!       if (initial_await != error_mark_node)
! 	{
! 	  /* Build a compound expression that sets the
! 	     initial-await-resume-called variable true and then calls the
! 	     initial suspend expression await resume.
! 	     In the case that the user decides to make the initial await
! 	     await_resume() return a value, we need to discard it and, it is
! 	     a reference type, look past the indirection.  */
! 	  if (INDIRECT_REF_P (initial_await))
! 	    initial_await = TREE_OPERAND (initial_await, 0);
! 	  /* In the case that the initial_await returns a target expression
! 	     we might need to look through that to update the await expr.  */
! 	  tree iaw = initial_await;
! 	  if (TREE_CODE (iaw) == TARGET_EXPR)
! 	    iaw = TARGET_EXPR_INITIAL (iaw);
! 	  gcc_checking_assert (TREE_CODE (iaw) == CO_AWAIT_EXPR);
! 	  tree vec = TREE_OPERAND (iaw, 3);
! 	  tree aw_r = TREE_VEC_ELT (vec, 2);
! 	  aw_r = convert_to_void (aw_r, ICV_STATEMENT, tf_warning_or_error);
! 	  tree update = build2 (MODIFY_EXPR, boolean_type_node, i_a_r_c,
! 				boolean_true_node);
! 	  aw_r = cp_build_compound_expr (update, aw_r, tf_warning_or_error);
! 	  TREE_VEC_ELT (vec, 2) = aw_r;
! 	}
        /* Add the initial await to the start of the user-authored function.  */
        finish_expr_stmt (initial_await);
        /* Append the original function body.  */
        add_stmt (coroutine_body);
        if (return_void)
  	add_stmt (return_void);
        TRY_STMTS (tcb) = pop_stmt_list (TRY_STMTS (tcb));
--- 4640,4667 ----
        tree tcb = build_stmt (loc, TRY_BLOCK, NULL_TREE, NULL_TREE);
        add_stmt (tcb);
        TRY_STMTS (tcb) = push_stmt_list ();
!       /* We need a new scope to handle the cleanup for the ramp use that is
! 	 needed for exceptions.  */
!       tree except_scope = begin_compound_stmt (0);
!       current_binding_level->artificial = 1;
!       tree release
! 	= build2_loc (loc, MINUS_EXPR, short_unsigned_type_node,
! 		      coro_frame_refcount, build_int_cst (short_unsigned_type_node, 1));
!        release = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR,
! 				       release, tf_warning_or_error);
!       /* Once we pass the initial await resume, the cleanup rules on exception
! 	 change so that the responsibility lies with the caller.  */
!       release = build3 (COND_EXPR, void_type_node, i_a_r_c,
! 			build_empty_stmt (loc), release);
!       push_cleanup (NULL_TREE, release, /*ehonly*/true);
        /* Add the initial await to the start of the user-authored function.  */
        finish_expr_stmt (initial_await);
+       /* End the scope that handles the remove of frame-use on exception.  */
+       finish_compound_stmt (except_scope);
+ 
        /* Append the original function body.  */
        add_stmt (coroutine_body);
+ 
        if (return_void)
  	add_stmt (return_void);
        TRY_STMTS (tcb) = pop_stmt_list (TRY_STMTS (tcb));
*************** cp_coroutine_transform::wrap_original_fu
*** 4548,4556 ****
  	  tree ueh_meth
  	    = lookup_promise_method (orig_fn_decl,
  				     coro_unhandled_exception_identifier,
! 				     fn_start, /*musthave=*/false);
  	  if (!ueh_meth || ueh_meth == error_mark_node)
! 	    warning_at (fn_start, 0, "no member named %qE in %qT",
  			coro_unhandled_exception_identifier,
  			get_coroutine_promise_type (orig_fn_decl));
  	}
--- 4706,4714 ----
  	  tree ueh_meth
  	    = lookup_promise_method (orig_fn_decl,
  				     coro_unhandled_exception_identifier,
! 				     loc, /*musthave=*/false);
  	  if (!ueh_meth || ueh_meth == error_mark_node)
! 	    warning_at (loc, 0, "no member named %qE in %qT",
  			coro_unhandled_exception_identifier,
  			get_coroutine_promise_type (orig_fn_decl));
  	}
*************** cp_coroutine_transform::wrap_original_fu
*** 4563,4568 ****
--- 4721,4730 ----
  	add_stmt (return_void);
      }
  
+   /* We are now doing actions associated with the end of the function, so
+      point to the closing brace.  */
+   input_location = loc = fn_end;
+ 
    /* co_return branches to the final_suspend label, so declare that now.  */
    fs_label
      = create_named_label_with_ctx (loc, "final.suspend", NULL_TREE);
*************** cp_coroutine_transform::wrap_original_fu
*** 4574,4580 ****
    zero_resume = build2_loc (loc, MODIFY_EXPR, act_des_fn_ptr_type,
  			    resume_fn_ptr, zero_resume);
    finish_expr_stmt (zero_resume);
!   finish_expr_stmt (build_init_or_final_await (fn_start, true));
    BIND_EXPR_BODY (update_body) = pop_stmt_list (BIND_EXPR_BODY (update_body));
    BIND_EXPR_VARS (update_body) = nreverse (var_list);
    BLOCK_VARS (top_block) = BIND_EXPR_VARS (update_body);
--- 4736,4743 ----
    zero_resume = build2_loc (loc, MODIFY_EXPR, act_des_fn_ptr_type,
  			    resume_fn_ptr, zero_resume);
    finish_expr_stmt (zero_resume);
!   finish_expr_stmt (final_await);
! 
    BIND_EXPR_BODY (update_body) = pop_stmt_list (BIND_EXPR_BODY (update_body));
    BIND_EXPR_VARS (update_body) = nreverse (var_list);
    BLOCK_VARS (top_block) = BIND_EXPR_VARS (update_body);
*************** cp_coroutine_transform::build_ramp_funct
*** 4883,4929 ****
    coro_fp = pushdecl (coro_fp);
    add_decl_expr (coro_fp);
  
-   tree coro_promise_live = NULL_TREE;
-   tree coro_gro_live = NULL_TREE;
-   if (flag_exceptions)
-     {
-       /* Signal that we need to clean up the promise object on exception.  */
-       coro_promise_live
- 	= coro_build_and_push_artificial_var (loc, "_Coro_promise_live",
- 					      boolean_type_node, orig_fn_decl,
- 					      boolean_false_node);
- 
-       /* When the get-return-object is in the RETURN slot, we need to arrange
- 	 for cleanup on exception.  */
-       coro_gro_live
- 	= coro_build_and_push_artificial_var (loc, "_Coro_gro_live",
- 					      boolean_type_node, orig_fn_decl,
- 					      boolean_false_node);
- 
-       /* To signal that we need to cleanup copied function args.  */
-       if (DECL_ARGUMENTS (orig_fn_decl))
- 	for (tree arg = DECL_ARGUMENTS (orig_fn_decl); arg != NULL;
- 	     arg = DECL_CHAIN (arg))
- 	  {
- 	    param_info *parm_i = param_uses.get (arg);
- 	    if (parm_i->trivial_dtor)
- 	      continue;
- 	    parm_i->guard_var = pushdecl (parm_i->guard_var);
- 	    add_decl_expr (parm_i->guard_var);
- 	  }
-     }
- 
-   /* deref the frame pointer, to use in member access code.  */
-   tree deref_fp
-     = cp_build_indirect_ref (loc, coro_fp, RO_UNARY_STAR,
- 			     tf_warning_or_error);
-   tree frame_needs_free
-     = coro_build_and_push_artificial_var_with_dve (loc,
- 						   coro_frame_needs_free_id,
- 						   boolean_type_node,
- 						   orig_fn_decl, NULL_TREE,
- 						   deref_fp);
- 
    /* Build the frame.  */
  
    /* The CO_FRAME internal function is a mechanism to allow the middle end
--- 5046,5051 ----
*************** cp_coroutine_transform::build_ramp_funct
*** 4944,4949 ****
--- 5066,5073 ----
       check the returned pointer and call the func if it's null.
       Otherwise, no check, and we fail for noexcept/fno-exceptions cases.  */
  
+   tree grooaf_if_stmt = NULL_TREE;
+   tree alloc_ok_scope = NULL_TREE;
    if (grooaf)
      {
        /* [dcl.fct.def.coroutine] / 10 (part 3)
*************** cp_coroutine_transform::build_ramp_funct
*** 4951,5003 ****
  	 control to the caller of the coroutine and the return value is
  	 obtained by a call to T::get_return_object_on_allocation_failure(),
  	 where T is the promise type.  */
-       tree if_stmt = begin_if_stmt ();
        tree cond = build1 (CONVERT_EXPR, frame_ptr_type, nullptr_node);
!       cond = build2 (EQ_EXPR, boolean_type_node, coro_fp, cond);
!       finish_if_stmt_cond (cond, if_stmt);
!       r = NULL_TREE;
!       if (void_ramp_p)
! 	/* Execute the get-return-object-on-alloc-fail call...  */
! 	finish_expr_stmt (grooaf);
!       else
! 	/* Get the fallback return object.  */
! 	r = grooaf;
!       finish_return_stmt (r);
!       finish_then_clause (if_stmt);
!       finish_if_stmt (if_stmt);
      }
  
    /* For now, once allocation has succeeded we always assume that this needs
       destruction, there's no impl. for frame allocation elision.  */
!   r = cp_build_init_expr (frame_needs_free, boolean_true_node);
!   finish_expr_stmt (r);
! 
!   /* Set up the promise.  */
!   tree p
!     = coro_build_and_push_artificial_var_with_dve (loc, coro_promise_id,
! 						   promise_type, orig_fn_decl,
! 						   NULL_TREE, deref_fp);
  
!   /* Up to now any exception thrown will propagate directly to the caller.
!      This is OK since the only source of such exceptions would be in allocation
!      of the coroutine frame, and therefore the ramp will not have initialized
!      any further state.  From here, we will track state that needs explicit
!      destruction in the case that promise or g.r.o setup fails or an exception
!      is thrown from the initial suspend expression.  */
!   tree ramp_try_block = NULL_TREE;
!   tree ramp_try_stmts = NULL_TREE;
!   tree iarc_x = NULL_TREE;
!   if (flag_exceptions)
!     {
!       iarc_x
! 	= coro_build_and_push_artificial_var_with_dve (loc,
! 						       coro_frame_i_a_r_c_id,
! 						       boolean_type_node,
! 						       orig_fn_decl, NULL_TREE,
! 						       deref_fp);
!       ramp_try_block = begin_try_block ();
!       ramp_try_stmts = begin_compound_stmt (BCS_TRY_BLOCK);
!     }
  
    /* Put the resumer and destroyer functions in.  */
  
--- 5075,5116 ----
  	 control to the caller of the coroutine and the return value is
  	 obtained by a call to T::get_return_object_on_allocation_failure(),
  	 where T is the promise type.  */
        tree cond = build1 (CONVERT_EXPR, frame_ptr_type, nullptr_node);
!       cond = build2 (NE_EXPR, boolean_type_node, coro_fp, cond);
!       grooaf_if_stmt = begin_if_stmt ();
!       finish_if_stmt_cond (cond, grooaf_if_stmt);
!       alloc_ok_scope = begin_compound_stmt (BCS_NORMAL);
      }
  
+   /* Dereference the frame pointer, to use in member access code.  */
+   tree deref_fp
+     = cp_build_indirect_ref (loc, coro_fp, RO_UNARY_STAR, tf_warning_or_error);
+ 
    /* For now, once allocation has succeeded we always assume that this needs
       destruction, there's no impl. for frame allocation elision.  */
!   tree frame_needs_free
!     = coro_build_and_push_artificial_var_with_dve (loc,
! 						   coro_frame_needs_free_id,
! 						   boolean_type_node,
! 						   orig_fn_decl,
! 						   boolean_true_node,
! 						   deref_fp);
!   /* Although it appears to be unused here the frame entry is needed and we
!      just set it true.  */
!   TREE_USED (frame_needs_free) = true;
  
!   tree coro_frame_refcount
!     = coro_build_and_push_artificial_var_with_dve (loc, coro_frame_refcount_id,
! 						   short_unsigned_type_node,
! 						   orig_fn_decl, NULL_TREE,
! 						   deref_fp);
!   /* Cleanup if both the ramp and the body have finished.  */
!   tree cond
!     = build2_loc (loc, EQ_EXPR, short_unsigned_type_node, coro_frame_refcount,
! 		  build_int_cst (short_unsigned_type_node, 0));
!   r = build3 (COND_EXPR, void_type_node, cond, delete_frame_call,
! 	      build_empty_stmt (loc));
!   push_cleanup (coro_fp, r, /*eh_only*/false);
  
    /* Put the resumer and destroyer functions in.  */
  
*************** cp_coroutine_transform::build_ramp_funct
*** 5069,5092 ****
  					tf_warning_or_error);
  	    }
  	  finish_expr_stmt (r);
  	  if (!parm.trivial_dtor)
  	    {
- 	      param_dtor_list.safe_push (parm.field_id);
- 	      /* Cleanup this frame copy on exception.  */
  	      parm.fr_copy_dtor
  		= cxx_maybe_build_cleanup (fld_idx, tf_warning_or_error);
! 	      if (flag_exceptions)
  		{
! 		  /* This var is now live.  */
! 		  r = build_modify_expr (loc, parm.guard_var,
! 					 boolean_type_node, INIT_EXPR, loc,
! 					 boolean_true_node, boolean_type_node);
! 		  finish_expr_stmt (r);
  		}
  	    }
  	}
      }
  
    if (type_build_ctor_call (promise_type))
      {
        /* Construct the promise object [dcl.fct.def.coroutine] / 5.7.
--- 5182,5215 ----
  					tf_warning_or_error);
  	    }
  	  finish_expr_stmt (r);
+ 
+ 	  /* Arrange for parm copies to be cleaned up when an exception is
+ 	     thrown before initial await resume.  */
  	  if (!parm.trivial_dtor)
  	    {
  	      parm.fr_copy_dtor
  		= cxx_maybe_build_cleanup (fld_idx, tf_warning_or_error);
! 	      if (parm.fr_copy_dtor && parm.fr_copy_dtor != error_mark_node)
  		{
! 		  param_dtor_list.safe_push (parm.field_id);
! 		  cond
! 		    = build2_loc (loc, EQ_EXPR, short_unsigned_type_node,
! 				  coro_frame_refcount,
! 				  build_int_cst (short_unsigned_type_node, 0));
! 		  r = build3_loc (loc, COND_EXPR, void_type_node, cond,
! 				  parm.fr_copy_dtor, build_empty_stmt (loc));
! 		  push_cleanup (fld_idx, r, /*eh_only*/false);
  		}
  	    }
  	}
      }
  
+   /* Set up the promise.  */
+   tree p
+     = coro_build_and_push_artificial_var_with_dve (loc, coro_promise_id,
+ 						   promise_type, orig_fn_decl,
+ 						   NULL_TREE, deref_fp);
+ 
    if (type_build_ctor_call (promise_type))
      {
        /* Construct the promise object [dcl.fct.def.coroutine] / 5.7.
*************** cp_coroutine_transform::build_ramp_funct
*** 5120,5130 ****
  	finish_expr_stmt (r);
      }
  
!   tree promise_dtor = cxx_maybe_build_cleanup (p, tf_warning_or_error);;
!   if (flag_exceptions && promise_dtor)
      {
!       r = cp_build_init_expr (coro_promise_live, boolean_true_node);
!       finish_expr_stmt (r);
      }
  
    tree get_ro
--- 5243,5258 ----
  	finish_expr_stmt (r);
      }
  
!   tree promise_dtor = cxx_maybe_build_cleanup (p, tf_warning_or_error);
!   /* If the promise is live, then run its dtor if that's available.  */
!   if (promise_dtor && promise_dtor != error_mark_node)
      {
!       cond = build2_loc (loc, EQ_EXPR, short_unsigned_type_node,
! 			 coro_frame_refcount,
! 			 build_int_cst (short_unsigned_type_node, 0));
!       r = build3 (COND_EXPR, void_type_node, cond, promise_dtor,
! 		  build_empty_stmt (loc));
!       push_cleanup (p, r, /*eh_only*/false);
      }
  
    tree get_ro
*************** cp_coroutine_transform::build_ramp_funct
*** 5139,5146 ****
    /* Check for a bad get return object type.
       [dcl.fct.def.coroutine] / 7 requires:
       The expression promise.get_return_object() is used to initialize the
!      returned reference or prvalue result object ... */
!   tree gro_type = TREE_TYPE (get_ro);
    if (VOID_TYPE_P (gro_type) && !void_ramp_p)
      {
        error_at (fn_start, "no viable conversion from %<void%> provided by"
--- 5267,5277 ----
    /* Check for a bad get return object type.
       [dcl.fct.def.coroutine] / 7 requires:
       The expression promise.get_return_object() is used to initialize the
!      returned reference or prvalue result object ...
!      When we use a local to hold this, it is decltype(auto).  */
!   tree gro_type
!     = finish_decltype_type (get_ro, /*id_expression_or_member_access_p*/false,
! 			    tf_warning_or_error);
    if (VOID_TYPE_P (gro_type) && !void_ramp_p)
      {
        error_at (fn_start, "no viable conversion from %<void%> provided by"
*************** cp_coroutine_transform::build_ramp_funct
*** 5153,5321 ****
      (loc, coro_resume_index_id, short_unsigned_type_node,  orig_fn_decl,
       build_zero_cst (short_unsigned_type_node), deref_fp);
  
!   if (flag_exceptions && iarc_x)
!     {
!       r = cp_build_init_expr (iarc_x, boolean_false_node);
!       finish_expr_stmt (r);
!     }
! 
!   /* Used for return objects in the RESULT slot.  */
!   tree ret_val_dtor = NULL_TREE;
!   tree retval = NULL_TREE;
  
    /* [dcl.fct.def.coroutine] / 7
       The expression promise.get_return_object() is used to initialize the
       glvalue result or prvalue result object of a call to a coroutine.  */
  
!   /* We must manage the cleanups ourselves, because the responsibility for
!      them changes after the initial suspend.  However, any use of
!      cxx_maybe_build_cleanup () can set the throwing_cleanup flag.  */
!   cp_function_chain->throwing_cleanup = false;
    if (void_ramp_p)
      /* We still want to call the method, even if the result is unused.  */
!     r = get_ro;
    else
      {
!       /* The initial section of finish_return_expr ().  */
!       bool no_warning;
!       bool dangling;
!       /* Without a relevant location, bad conversions in check_return_expr
! 	 result in unusable diagnostics, since there is not even a mention
! 	 of the relevant function.  Here we carry out the first part of
! 	 finish_return_expr().  */
!       input_location = fn_start;
!       r = check_return_expr (get_ro, &no_warning, &dangling);
!       input_location = UNKNOWN_LOCATION;
!       gcc_checking_assert (!dangling);
!       /* Check for bad things.  */
!       if (!r || r == error_mark_node)
! 	return false;
!       if (!aggregate_value_p (fn_return_type, orig_fn_decl)
! 	  && TREE_CODE (r) == INIT_EXPR)
! 	{
! 	  /* If fn_return_type doesn't need to be returned in memory, normally
! 	     gimplify_return_expr redirects the INIT_EXPR to a temporary.  But
! 	     r isn't wrapped in the RETURN_EXPR, so we need to do the
! 	     redirection here as well.  See PR118874.  */
! 	  tree temp = create_temporary_var (fn_return_type);
! 	  add_decl_expr (temp);
! 	  retval = copy_node (r);
! 	  TREE_OPERAND (r, 0) = temp;
! 	  TREE_OPERAND (retval, 1) = temp;
! 	}
!       else
! 	retval = DECL_RESULT (orig_fn_decl);
!     }
! 
!   finish_expr_stmt (r);
  
!   if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (fn_return_type))
!     /* If some part of the initalization code (prior to the await_resume
!        of the initial suspend expression), then we need to clean up the
!        return value.  */
!     ret_val_dtor = cxx_maybe_build_cleanup (DECL_RESULT (orig_fn_decl),
! 					    tf_warning_or_error);
  
!   /* If we have a live g.r.o in the return slot, then signal this for exception
!      cleanup.  */
!   if (flag_exceptions && ret_val_dtor)
!     {
!       r = cp_build_init_expr (coro_gro_live, boolean_true_node);
        finish_expr_stmt (r);
      }
  
!   /* Start the coroutine body.  */
    r = build_call_expr_loc (fn_start, resumer, 1, coro_fp);
    finish_expr_stmt (r);
  
    /* The ramp is done, we just need the return statement, which we build from
       the return object we constructed before we called the actor.  */
  
!   r = retval;
! 
!   /* The reminder of finish_return_expr ().  */
!   r = build_stmt (loc, RETURN_EXPR, r);
!   r = maybe_cleanup_point_expr_void (r);
!   r = add_stmt (r);
  
!   if (flag_exceptions)
      {
!       finish_compound_stmt (ramp_try_stmts);
!       finish_try_block (ramp_try_block);
!       tree handler = begin_handler ();
!       finish_handler_parms (NULL_TREE, handler); /* catch (...) */
! 
!       /* If we have a live G.R.O in the return slot, then run its DTOR.  */
!       if (ret_val_dtor && ret_val_dtor != error_mark_node)
! 	{
! 	  tree gro_d_if = begin_if_stmt ();
! 	  finish_if_stmt_cond (coro_gro_live, gro_d_if);
! 	  finish_expr_stmt (ret_val_dtor);
! 	  finish_then_clause (gro_d_if);
! 	  finish_if_stmt (gro_d_if);
! 	}
! 
!       /* Before initial resume is called, the responsibility for cleanup on
! 	 exception falls to the ramp.  After that, the coroutine body code
! 	 should do the cleanup.  This is signalled by the flag
! 	 'initial_await_resume_called'.  */
! 
!       tree not_iarc
! 	= build1_loc (loc, TRUTH_NOT_EXPR, boolean_type_node, iarc_x);
!       tree cleanup_if = begin_if_stmt ();
!       finish_if_stmt_cond (not_iarc, cleanup_if);
!       /* If the promise is live, then run its dtor if that's available.  */
!       if (promise_dtor && promise_dtor != error_mark_node)
! 	{
! 	  tree promise_d_if = begin_if_stmt ();
! 	  finish_if_stmt_cond (coro_promise_live, promise_d_if);
! 	  finish_expr_stmt (promise_dtor);
! 	  finish_then_clause (promise_d_if);
! 	  finish_if_stmt (promise_d_if);
! 	}
! 
!       /* Clean up any frame copies of parms with non-trivial dtors.
! 	 Do this in reverse order from their creation.  */
!       auto_vec<param_info *> worklist;
!       if (DECL_ARGUMENTS (orig_fn_decl))
! 	for (tree arg = DECL_ARGUMENTS (orig_fn_decl); arg != NULL;
! 	     arg = DECL_CHAIN (arg))
! 	  {
! 	    param_info *parm_i = param_uses.get (arg);
! 	    if (parm_i->trivial_dtor)
! 	      continue;
! 	    worklist.safe_push (parm_i);
! 	  }
!       while (!worklist.is_empty ())
! 	{
! 	  param_info *parm_i = worklist.pop ();
! 	  if (parm_i->fr_copy_dtor && parm_i->fr_copy_dtor != error_mark_node)
! 	    {
! 	      tree dtor_if = begin_if_stmt ();
! 	      finish_if_stmt_cond (parm_i->guard_var, dtor_if);
! 	      finish_expr_stmt (parm_i->fr_copy_dtor);
! 	      finish_then_clause (dtor_if);
! 	      finish_if_stmt (dtor_if);
! 	    }
! 	}
! 
!       /* No delete the frame if required.  */
!       tree fnf_if = begin_if_stmt ();
!       finish_if_stmt_cond (frame_needs_free, fnf_if);
!       finish_expr_stmt (delete_frame_call);
!       finish_then_clause (fnf_if);
!       finish_if_stmt (fnf_if);
! 
!       /* Finished cleanups conditional on "initial resume is not called".  */
!       finish_then_clause (cleanup_if);
!       finish_if_stmt (cleanup_if);
  
!       tree rethrow = build_throw (loc, NULL_TREE, tf_warning_or_error);
!       suppress_warning (rethrow);
!       finish_expr_stmt (rethrow);
!       finish_handler (handler);
!       finish_handler_sequence (ramp_try_block);
      }
    finish_compound_stmt (ramp_fnbody);
    return true;
  }
--- 5284,5363 ----
      (loc, coro_resume_index_id, short_unsigned_type_node,  orig_fn_decl,
       build_zero_cst (short_unsigned_type_node), deref_fp);
  
!   /* We must manage the cleanups ourselves, with the exception of the g_r_o,
!      because the responsibility for them changes after the initial suspend.
!      However, any use of cxx_maybe_build_cleanup () in preceding code can
!      set the throwing_cleanup flag.  */
!   cp_function_chain->throwing_cleanup = false;
  
    /* [dcl.fct.def.coroutine] / 7
       The expression promise.get_return_object() is used to initialize the
       glvalue result or prvalue result object of a call to a coroutine.  */
  
!   tree coro_gro = NULL_TREE;
    if (void_ramp_p)
      /* We still want to call the method, even if the result is unused.  */
!     finish_expr_stmt (get_ro);
    else
      {
!       /* Per CWG2563, we keep the result of promise.get_return_object () in
! 	 a temp which is then used to intialize the return object, including
! 	 NVRO.  */
  
!       coro_gro
! 	= coro_build_and_push_artificial_var (loc, "_Coro_gro", gro_type,
! 					      orig_fn_decl, NULL_TREE);
  
!       r = cp_build_init_expr (coro_gro, STRIP_REFERENCE_REF (get_ro));
        finish_expr_stmt (r);
+       tree coro_gro_cleanup
+ 	= cxx_maybe_build_cleanup (coro_gro, tf_warning_or_error);
+       if (coro_gro_cleanup)
+ 	push_cleanup (coro_gro, coro_gro_cleanup, /*eh_only*/false);
      }
  
!   /* Start the coroutine body, we now have a use of the frame...  */
!   r = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR,
! 			    build_int_cst (short_unsigned_type_node, 1),
! 			    tf_warning_or_error);
!   finish_expr_stmt (r);
!   /* ... but when we finish we want to release that, and we want to do that
!      before any of the other cleanups run.  */
!   tree released
!     = build2_loc (loc, MINUS_EXPR, short_unsigned_type_node, coro_frame_refcount,
! 		  build_int_cst (short_unsigned_type_node, 1));
!   released = cp_build_modify_expr (loc, coro_frame_refcount, NOP_EXPR, released,
! 				 tf_warning_or_error);
!   push_cleanup (NULL_TREE, released, /*eh_only*/false);
! 
    r = build_call_expr_loc (fn_start, resumer, 1, coro_fp);
    finish_expr_stmt (r);
  
    /* The ramp is done, we just need the return statement, which we build from
       the return object we constructed before we called the actor.  */
  
!   /* This is our 'normal' exit.  */
!   r = void_ramp_p ? NULL_TREE : convert_from_reference (coro_gro);
!   finish_return_stmt (r);
  
!   if (grooaf)
      {
!       finish_compound_stmt (alloc_ok_scope);
!       finish_then_clause (grooaf_if_stmt);
  
!       begin_else_clause (grooaf_if_stmt);
!       /* We come here if the frame allocation failed.  */
!       r = NULL_TREE;
!       if (void_ramp_p)
! 	/* Execute the get-return-object-on-alloc-fail call...  */
! 	finish_expr_stmt (grooaf);
!       else
! 	/* Get the fallback return object.  */
! 	r = grooaf;
!       finish_return_stmt (r);
!       finish_if_stmt (grooaf_if_stmt);
      }
+ 
    finish_compound_stmt (ramp_fnbody);
    return true;
  }
*************** cp_coroutine_transform::cp_coroutine_tra
*** 5346,5354 ****
        }
  
      /* We don't have the locus of the opening brace - it's filled in later (and
!        there doesn't really seem to be any easy way to get at it).
!        The closing brace is assumed to be input_location.  */
      fn_start = DECL_SOURCE_LOCATION (orig_fn_decl);
  
      /* Build types we need.  */
      tree fr_name = get_fn_local_identifier (orig_fn_decl, "Frame");
--- 5388,5397 ----
        }
  
      /* We don't have the locus of the opening brace - it's filled in later (and
!        there doesn't really seem to be any easy way to get at it).  */
      fn_start = DECL_SOURCE_LOCATION (orig_fn_decl);
+     /* The closing brace is assumed to be input_location.  */
+     fn_end = input_location;
  
      /* Build types we need.  */
      tree fr_name = get_fn_local_identifier (orig_fn_decl, "Frame");
*************** cp_coroutine_transform::~cp_coroutine_tr
*** 5389,5395 ****
    bool _Coro_frame_needs_free; free the coro frame mem if set.
    bool _Coro_i_a_r_c; [dcl.fct.def.coroutine] / 5.3
    short _Coro_resume_index;
-   handle_type _Coro_self_handle;
    parameter copies (were required).
    local variables saved (including awaitables)
    (maybe) trailing space.
--- 5432,5437 ----
*************** cp_coroutine_transform::apply_transforms
*** 5416,5422 ****
  
    /* Collect information on the original function params and their use in the
       function body.  */
!   analyze_fn_parms (orig_fn_decl, &param_uses);
  
    /* Declare the actor and destroyer functions, the following code needs to
       see these.  */
--- 5458,5464 ----
  
    /* Collect information on the original function params and their use in the
       function body.  */
!   analyze_fn_parms ();
  
    /* Declare the actor and destroyer functions, the following code needs to
       see these.  */
*************** cp_coroutine_transform::apply_transforms
*** 5427,5432 ****
--- 5469,5484 ----
      = coro_build_actor_or_destroy_function (orig_fn_decl, act_des_fn_type,
  					    frame_ptr_type, false);
  
+   /* Avoid repeating diagnostics about promise or awaiter fails.  */
+   if (!seen_error ())
+     {
+       iloc_sentinel stable_input_loc (fn_start);
+       initial_await = build_init_or_final_await (fn_start, false);
+       input_location = fn_end;
+       if (initial_await && initial_await != error_mark_node)
+ 	final_await = build_init_or_final_await (fn_end, true);
+     }
+ 
    /* Transform the function body as per [dcl.fct.def.coroutine] / 5.  */
    wrap_original_function_body ();
  
diff -Nrcpad gcc-15-20250726/gcc/cp/coroutines.h gcc-15-20250809/gcc/cp/coroutines.h
*** gcc-15-20250726/gcc/cp/coroutines.h	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/coroutines.h	Sat Aug  9 22:32:38 2025
*************** struct param_info
*** 9,15 ****
    vec<tree *> *body_uses; /* Worklist of uses, void if there are none.  */
    tree frame_type;   /* The type used to represent this parm in the frame.  */
    tree orig_type;    /* The original type of the parm (not as passed).  */
-   tree guard_var;    /* If we need a DTOR on exception, this bool guards it.  */
    tree fr_copy_dtor; /* If we need a DTOR on exception, this is it.  */
    bool by_ref;       /* Was passed by reference.  */
    bool pt_ref;       /* Was a pointer to object.  */
--- 9,14 ----
*************** private:
*** 103,108 ****
--- 102,108 ----
    tree orig_fn_decl;		 /* The original function decl.  */
    tree orig_fn_body = NULL_TREE; /* The original function body.  */
    location_t fn_start = UNKNOWN_LOCATION;
+   location_t fn_end = UNKNOWN_LOCATION;
    tree resumer = error_mark_node;
    tree destroyer = error_mark_node;
    tree coroutine_body = NULL_TREE;
*************** private:
*** 127,132 ****
--- 127,136 ----
    bool inline_p = false;
    bool valid_coroutine = false;
  
+   tree initial_await = error_mark_node;
+   tree final_await = error_mark_node;
+ 
+   void analyze_fn_parms ();
    void wrap_original_function_body ();
    bool build_ramp_function ();
  };
diff -Nrcpad gcc-15-20250726/gcc/cp/cp-tree.h gcc-15-20250809/gcc/cp/cp-tree.h
*** gcc-15-20250726/gcc/cp/cp-tree.h	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/cp-tree.h	Sat Aug  9 22:32:38 2025
*************** decl_template_parm_check (const_tree t,
*** 5522,5527 ****
--- 5522,5531 ----
  #define DECL_RAMP_FN(NODE) \
    (coro_get_ramp_function (NODE))
  
+ /* For a FUNCTION_DECL this is true if it is a coroutine ramp.  */
+ #define DECL_RAMP_P(NODE) \
+   DECL_COROUTINE_P (NODE) && !DECL_RAMP_FN (NODE)
+ 
  /* True for an OMP_ATOMIC that has dependent parameters.  These are stored
     as an expr in operand 1, and integer_zero_node or clauses in operand 0.  */
  #define OMP_ATOMIC_DEPENDENT_P(NODE) \
diff -Nrcpad gcc-15-20250726/gcc/cp/decl.cc gcc-15-20250809/gcc/cp/decl.cc
*** gcc-15-20250726/gcc/cp/decl.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/decl.cc	Sat Aug  9 22:32:38 2025
*************** poplevel (int keep, int reverse, int fun
*** 846,856 ****
        DECL_INITIAL (current_function_decl) = block ? block : subblocks;
        if (subblocks)
  	{
! 	  if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl))
! 	    {
! 	      if (BLOCK_SUBBLOCKS (subblocks))
! 		BLOCK_OUTER_CURLY_BRACE_P (BLOCK_SUBBLOCKS (subblocks)) = 1;
! 	    }
  	  else
  	    BLOCK_OUTER_CURLY_BRACE_P (subblocks) = 1;
  	}
--- 846,854 ----
        DECL_INITIAL (current_function_decl) = block ? block : subblocks;
        if (subblocks)
  	{
! 	  if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl)
! 	      && BLOCK_SUBBLOCKS (subblocks))
! 	    BLOCK_OUTER_CURLY_BRACE_P (BLOCK_SUBBLOCKS (subblocks)) = 1;
  	  else
  	    BLOCK_OUTER_CURLY_BRACE_P (subblocks) = 1;
  	}
diff -Nrcpad gcc-15-20250726/gcc/cp/error.cc gcc-15-20250809/gcc/cp/error.cc
*** gcc-15-20250726/gcc/cp/error.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/error.cc	Sat Aug  9 22:32:38 2025
*************** dump_expr (cxx_pretty_printer *pp, tree
*** 3217,3222 ****
--- 3217,3243 ----
  	break;
        }
  
+     case CO_AWAIT_EXPR:
+       pp_cxx_ws_string (pp, "co_await");
+       pp_cxx_whitespace (pp);
+       dump_expr (pp, TREE_OPERAND (t, 0), flags);
+       break;
+ 
+     case CO_YIELD_EXPR:
+       pp_cxx_ws_string (pp, "co_yield");
+       pp_cxx_whitespace (pp);
+       dump_expr (pp, TREE_OPERAND (t, 0), flags);
+       break;
+ 
+     case CO_RETURN_EXPR:
+       pp_cxx_ws_string (pp, "co_return");
+       if (TREE_OPERAND (t, 0))
+ 	{
+ 	  pp_cxx_whitespace (pp);
+ 	  dump_expr (pp, TREE_OPERAND (t, 0), flags);
+ 	}
+       break;
+ 
        /*  This list is incomplete, but should suffice for now.
  	  It is very important that `sorry' does not call
  	  `report_error_function'.  That could cause an infinite loop.  */
diff -Nrcpad gcc-15-20250726/gcc/cp/module.cc gcc-15-20250809/gcc/cp/module.cc
*** gcc-15-20250726/gcc/cp/module.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/module.cc	Sat Aug  9 22:32:38 2025
*************** trees_out::core_vals (tree t)
*** 6542,6549 ****
  	}
  
        WT (t->function_decl.personality);
!       WT (t->function_decl.function_specific_target);
!       WT (t->function_decl.function_specific_optimization);
        WT (t->function_decl.vindex);
  
        if (DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P (t))
--- 6542,6555 ----
  	}
  
        WT (t->function_decl.personality);
!       /* Rather than streaming target/optimize nodes, we should reconstruct
! 	 them on stream-in from any attributes applied to the function.  */
!       if (streaming_p () && t->function_decl.function_specific_target)
! 	warning_at (DECL_SOURCE_LOCATION (t), 0,
! 		    "%<target%> attribute currently unsupported in modules");
!       if (streaming_p () && t->function_decl.function_specific_optimization)
! 	warning_at (DECL_SOURCE_LOCATION (t), 0,
! 		    "%<optimize%> attribute currently unsupported in modules");
        WT (t->function_decl.vindex);
  
        if (DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P (t))
*************** trees_out::core_vals (tree t)
*** 6633,6643 ****
      case TARGET_OPTION_NODE:
        // FIXME: Our representation for these two nodes is a cache of
        // the resulting set of options.  Not a record of the options
!       // that got changed by a particular attribute or pragma.  Should
!       // we record that, or should we record the diff from the command
!       // line options?  The latter seems the right behaviour, but is
!       // (a) harder, and I guess could introduce strangeness if the
!       // importer has set some incompatible set of optimization flags?
        gcc_unreachable ();
        break;
  
--- 6639,6650 ----
      case TARGET_OPTION_NODE:
        // FIXME: Our representation for these two nodes is a cache of
        // the resulting set of options.  Not a record of the options
!       // that got changed by a particular attribute or pragma.  Instead
!       // of recording that, we probably should just rebuild the options
!       // on stream-in from the function attributes.  This could introduce
!       // strangeness if the importer has some incompatible set of flags
!       // but we currently assume users "know what they're doing" in such
!       // a case anyway.
        gcc_unreachable ();
        break;
  
*************** trees_in::core_vals (tree t)
*** 7096,7103 ****
  	  }
  
  	RT (t->function_decl.personality);
! 	RT (t->function_decl.function_specific_target);
! 	RT (t->function_decl.function_specific_optimization);
  	RT (t->function_decl.vindex);
  
  	if (DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P (t))
--- 7103,7112 ----
  	  }
  
  	RT (t->function_decl.personality);
! 	/* These properties are not streamed, and should be reconstructed
! 	   from any function attributes.  */
! 	// t->function_decl.function_specific_target);
! 	// t->function_decl.function_specific_optimization);
  	RT (t->function_decl.vindex);
  
  	if (DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P (t))
*************** trees_in::core_vals (tree t)
*** 7203,7209 ****
  
      case OPTIMIZATION_NODE:
      case TARGET_OPTION_NODE:
!       /* Not yet implemented, see trees_out::core_vals.  */
        gcc_unreachable ();
        break;
  
--- 7212,7218 ----
  
      case OPTIMIZATION_NODE:
      case TARGET_OPTION_NODE:
!       /* Not implemented, see trees_out::core_vals.  */
        gcc_unreachable ();
        break;
  
*************** trees_in::fn_parms_fini (int tag, tree f
*** 11015,11020 ****
--- 11024,11043 ----
  		 names of the parms from us.  */
  	      DECL_NAME (existing_parm) = DECL_NAME (parm);
  	      DECL_SOURCE_LOCATION (existing_parm) = DECL_SOURCE_LOCATION (parm);
+ 
+ 	      /* And some other flags important for codegen are only set
+ 		 by the definition.  */
+ 	      TREE_ADDRESSABLE (existing_parm) = TREE_ADDRESSABLE (parm);
+ 	      DECL_BY_REFERENCE (existing_parm) = DECL_BY_REFERENCE (parm);
+ 	      DECL_NONLOCAL (existing_parm) = DECL_NONLOCAL (parm);
+ 	      DECL_ARG_TYPE (existing_parm) = DECL_ARG_TYPE (parm);
+ 
+ 	      /* Invisiref parms had their types adjusted by cp_genericize. */
+ 	      if (DECL_BY_REFERENCE (parm))
+ 		{
+ 		  TREE_TYPE (existing_parm) = TREE_TYPE (parm);
+ 		  relayout_decl (existing_parm);
+ 		}
  	    }
  
  	  back_refs[~tag] = existing_parm;
diff -Nrcpad gcc-15-20250726/gcc/cp/parser.cc gcc-15-20250809/gcc/cp/parser.cc
*** gcc-15-20250726/gcc/cp/parser.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/parser.cc	Sat Aug  9 22:32:38 2025
*************** static size_t cp_parser_skip_std_attribu
*** 2889,2895 ****
  static size_t cp_parser_skip_attributes_opt
    (cp_parser *, size_t);
  static bool cp_parser_extension_opt
!   (cp_parser *, int *);
  static void cp_parser_label_declaration
    (cp_parser *);
  
--- 2889,2895 ----
  static size_t cp_parser_skip_attributes_opt
    (cp_parser *, size_t);
  static bool cp_parser_extension_opt
!   (cp_parser *, int *, int *);
  static void cp_parser_label_declaration
    (cp_parser *);
  
*************** cp_parser_unary_expression (cp_parser *p
*** 9447,9457 ****
  	case RID_EXTENSION:
  	  {
  	    /* The saved value of the PEDANTIC flag.  */
! 	    int saved_pedantic;
  	    tree expr;
  
  	    /* Save away the PEDANTIC flag.  */
! 	    cp_parser_extension_opt (parser, &saved_pedantic);
  	    /* Also suppress -Wconditionally-supported.  */
  	    diagnostic_push_diagnostics (global_dc, input_location);
  	    diagnostic_classify_diagnostic
--- 9447,9458 ----
  	case RID_EXTENSION:
  	  {
  	    /* The saved value of the PEDANTIC flag.  */
! 	    int saved_pedantic, saved_long_long;
  	    tree expr;
  
  	    /* Save away the PEDANTIC flag.  */
! 	    cp_parser_extension_opt (parser, &saved_pedantic,
! 				     &saved_long_long);
  	    /* Also suppress -Wconditionally-supported.  */
  	    diagnostic_push_diagnostics (global_dc, input_location);
  	    diagnostic_classify_diagnostic
*************** cp_parser_unary_expression (cp_parser *p
*** 9462,9467 ****
--- 9463,9469 ----
  	    /* Restore the PEDANTIC flag.  */
  	    diagnostic_pop_diagnostics (global_dc, input_location);
  	    pedantic = saved_pedantic;
+ 	    warn_long_long = saved_long_long;
  
  	    return expr;
  	  }
*************** cp_parser_declaration_seq_opt (cp_parser
*** 15972,15986 ****
  static void
  cp_parser_declaration (cp_parser* parser, tree prefix_attrs)
  {
!   int saved_pedantic;
  
    /* Check for the `__extension__' keyword.  */
!   if (cp_parser_extension_opt (parser, &saved_pedantic))
      {
        /* Parse the qualified declaration.  */
        cp_parser_declaration (parser, prefix_attrs);
        /* Restore the PEDANTIC flag.  */
        pedantic = saved_pedantic;
  
        return;
      }
--- 15974,15989 ----
  static void
  cp_parser_declaration (cp_parser* parser, tree prefix_attrs)
  {
!   int saved_pedantic, saved_long_long;
  
    /* Check for the `__extension__' keyword.  */
!   if (cp_parser_extension_opt (parser, &saved_pedantic, &saved_long_long))
      {
        /* Parse the qualified declaration.  */
        cp_parser_declaration (parser, prefix_attrs);
        /* Restore the PEDANTIC flag.  */
        pedantic = saved_pedantic;
+       warn_long_long = saved_long_long;
  
        return;
      }
*************** static void
*** 16248,16262 ****
  cp_parser_block_declaration (cp_parser *parser,
  			     bool      statement_p)
  {
!   int saved_pedantic;
  
    /* Check for the `__extension__' keyword.  */
!   if (cp_parser_extension_opt (parser, &saved_pedantic))
      {
        /* Parse the qualified declaration.  */
        cp_parser_block_declaration (parser, statement_p);
        /* Restore the PEDANTIC flag.  */
        pedantic = saved_pedantic;
  
        return;
      }
--- 16251,16266 ----
  cp_parser_block_declaration (cp_parser *parser,
  			     bool      statement_p)
  {
!   int saved_pedantic, saved_long_long;
  
    /* Check for the `__extension__' keyword.  */
!   if (cp_parser_extension_opt (parser, &saved_pedantic, &saved_long_long))
      {
        /* Parse the qualified declaration.  */
        cp_parser_block_declaration (parser, statement_p);
        /* Restore the PEDANTIC flag.  */
        pedantic = saved_pedantic;
+       warn_long_long = saved_long_long;
  
        return;
      }
*************** cp_parser_member_declaration (cp_parser*
*** 28710,28725 ****
    cp_token *token = NULL;
    cp_token *decl_spec_token_start = NULL;
    cp_token *initializer_token_start = NULL;
!   int saved_pedantic;
    bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p;
  
    /* Check for the `__extension__' keyword.  */
!   if (cp_parser_extension_opt (parser, &saved_pedantic))
      {
        /* Recurse.  */
        cp_parser_member_declaration (parser);
        /* Restore the old value of the PEDANTIC flag.  */
        pedantic = saved_pedantic;
  
        return;
      }
--- 28714,28730 ----
    cp_token *token = NULL;
    cp_token *decl_spec_token_start = NULL;
    cp_token *initializer_token_start = NULL;
!   int saved_pedantic, saved_long_long;
    bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p;
  
    /* Check for the `__extension__' keyword.  */
!   if (cp_parser_extension_opt (parser, &saved_pedantic, &saved_long_long))
      {
        /* Recurse.  */
        cp_parser_member_declaration (parser);
        /* Restore the old value of the PEDANTIC flag.  */
        pedantic = saved_pedantic;
+       warn_long_long = saved_long_long;
  
        return;
      }
*************** cp_parser_skip_attributes_opt (cp_parser
*** 31858,31870 ****
     present, and FALSE otherwise.  *SAVED_PEDANTIC is set to the
     current value of the PEDANTIC flag, regardless of whether or not
     the `__extension__' keyword is present.  The caller is responsible
!    for restoring the value of the PEDANTIC flag.  */
  
  static bool
! cp_parser_extension_opt (cp_parser* parser, int* saved_pedantic)
  {
    /* Save the old value of the PEDANTIC flag.  */
    *saved_pedantic = pedantic;
  
    if (cp_lexer_next_token_is_keyword (parser->lexer, RID_EXTENSION))
      {
--- 31863,31878 ----
     present, and FALSE otherwise.  *SAVED_PEDANTIC is set to the
     current value of the PEDANTIC flag, regardless of whether or not
     the `__extension__' keyword is present.  The caller is responsible
!    for restoring the value of the PEDANTIC flag.  Similarly *SAVED_LONG_LONG
!    for warn_long_long flag.  */
  
  static bool
! cp_parser_extension_opt (cp_parser *parser, int *saved_pedantic,
! 			 int *saved_long_long)
  {
    /* Save the old value of the PEDANTIC flag.  */
    *saved_pedantic = pedantic;
+   *saved_long_long = warn_long_long;
  
    if (cp_lexer_next_token_is_keyword (parser->lexer, RID_EXTENSION))
      {
*************** cp_parser_extension_opt (cp_parser* pars
*** 31873,31878 ****
--- 31881,31888 ----
        /* We're not being pedantic while the `__extension__' keyword is
  	 in effect.  */
        pedantic = 0;
+       /* And we don't want -Wlong-long warning.  */
+       warn_long_long = 0;
  
        return true;
      }
diff -Nrcpad gcc-15-20250726/gcc/cp/pt.cc gcc-15-20250809/gcc/cp/pt.cc
*** gcc-15-20250726/gcc/cp/pt.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/pt.cc	Sat Aug  9 22:32:38 2025
*************** tsubst_entering_scope (tree t, tree args
*** 10052,10066 ****
  
     D1 is the PTYPENAME terminal, and ARGLIST is the list of arguments.
  
     IN_DECL, if non-NULL, is the template declaration we are trying to
     instantiate.
  
     Issue error and warning messages under control of COMPLAIN.
  
-    If the template class is really a local class in a template
-    function, then the FUNCTION_CONTEXT is the function in which it is
-    being instantiated.
- 
     ??? Note that this function is currently called *twice* for each
     template-id: the first time from the parser, while creating the
     incomplete type (finish_template_type), and the second type during the
--- 10052,10071 ----
  
     D1 is the PTYPENAME terminal, and ARGLIST is the list of arguments.
  
+    If D1 is an identifier and CONTEXT is non-NULL, then the lookup is
+    carried out in CONTEXT. Currently, only namespaces are supported for
+    CONTEXT.
+ 
+    If D1 is an identifier and CONTEXT is NULL, the lookup is performed
+    in the innermost non-namespace binding.
+ 
+    Otherwise CONTEXT is ignored and no lookup is carried out.
+ 
     IN_DECL, if non-NULL, is the template declaration we are trying to
     instantiate.
  
     Issue error and warning messages under control of COMPLAIN.
  
     ??? Note that this function is currently called *twice* for each
     template-id: the first time from the parser, while creating the
     incomplete type (finish_template_type), and the second type during the
*************** lookup_template_class (tree d1, tree arg
*** 10079,10098 ****
    spec_entry **slot;
    spec_entry *entry;
  
!   if (identifier_p (d1))
      {
        tree value = innermost_non_namespace_value (d1);
        if (value && DECL_TEMPLATE_TEMPLATE_PARM_P (value))
  	templ = value;
        else
! 	{
! 	  if (context)
! 	    push_decl_namespace (context);
  	  templ = lookup_name (d1);
  	  templ = maybe_get_template_decl_from_type_decl (templ);
! 	  if (context)
! 	    pop_decl_namespace ();
! 	}
      }
    else if (TREE_CODE (d1) == TYPE_DECL && MAYBE_CLASS_TYPE_P (TREE_TYPE (d1)))
      {
--- 10084,10106 ----
    spec_entry **slot;
    spec_entry *entry;
  
!   if (identifier_p (d1) && context)
!     {
!       gcc_checking_assert (TREE_CODE (context) == NAMESPACE_DECL);
!       push_decl_namespace (context);
!       templ = lookup_name (d1, LOOK_where::NAMESPACE, LOOK_want::NORMAL);
!       pop_decl_namespace ();
!     }
!   else if (identifier_p (d1))
      {
        tree value = innermost_non_namespace_value (d1);
        if (value && DECL_TEMPLATE_TEMPLATE_PARM_P (value))
  	templ = value;
        else
!         {
  	  templ = lookup_name (d1);
  	  templ = maybe_get_template_decl_from_type_decl (templ);
!         }
      }
    else if (TREE_CODE (d1) == TYPE_DECL && MAYBE_CLASS_TYPE_P (TREE_TYPE (d1)))
      {
*************** tsubst_function_decl (tree t, tree args,
*** 14898,14903 ****
--- 14906,14913 ----
    if (closure && DECL_IOBJ_MEMBER_FUNCTION_P (t))
      parms = DECL_CHAIN (parms);
    parms = tsubst (parms, args, complain, t);
+   if (parms == error_mark_node)
+     return error_mark_node;
    for (tree parm = parms; parm; parm = DECL_CHAIN (parm))
      DECL_CONTEXT (parm) = r;
    if (closure && DECL_IOBJ_MEMBER_FUNCTION_P (t))
*************** tsubst_decl (tree t, tree args, tsubst_f
*** 15470,15475 ****
--- 15480,15488 ----
                /* We're dealing with a normal parameter.  */
                type = tsubst (TREE_TYPE (t), args, complain, in_decl);
  
+ 	    if (type == error_mark_node && !(complain & tf_error))
+ 	      RETURN (error_mark_node);
+ 
              type = type_decays_to (type);
              TREE_TYPE (r) = type;
              cp_apply_type_quals_to_decl (cp_type_quals (type), r);
*************** tsubst_decl (tree t, tree args, tsubst_f
*** 15507,15514 ****
  	/* If cp_unevaluated_operand is set, we're just looking for a
  	   single dummy parameter, so don't keep going.  */
  	if (DECL_CHAIN (t) && !cp_unevaluated_operand)
! 	  DECL_CHAIN (r) = tsubst (DECL_CHAIN (t), args,
! 				   complain, DECL_CHAIN (t));
  
          /* FIRST_R contains the start of the chain we've built.  */
          r = first_r;
--- 15520,15532 ----
  	/* If cp_unevaluated_operand is set, we're just looking for a
  	   single dummy parameter, so don't keep going.  */
  	if (DECL_CHAIN (t) && !cp_unevaluated_operand)
! 	  {
! 	    tree chain = tsubst (DECL_CHAIN (t), args,
! 				 complain, DECL_CHAIN (t));
! 	    if (chain == error_mark_node)
! 	      RETURN (error_mark_node);
! 	    DECL_CHAIN (r) = chain;
! 	  }
  
          /* FIRST_R contains the start of the chain we've built.  */
          r = first_r;
*************** resolve_nondeduced_context (tree orig_ex
*** 24457,24463 ****
  	}
        if (good == 1)
  	{
! 	  mark_used (goodfn);
  	  expr = goodfn;
  	  if (baselink)
  	    expr = build_baselink (BASELINK_BINFO (baselink),
--- 24475,24482 ----
  	}
        if (good == 1)
  	{
! 	  if (!mark_used (goodfn, complain) && !(complain & tf_error))
! 	    return error_mark_node;
  	  expr = goodfn;
  	  if (baselink)
  	    expr = build_baselink (BASELINK_BINFO (baselink),
diff -Nrcpad gcc-15-20250726/gcc/cp/typeck.cc gcc-15-20250809/gcc/cp/typeck.cc
*** gcc-15-20250726/gcc/cp/typeck.cc	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/cp/typeck.cc	Sat Aug  9 22:32:38 2025
*************** check_return_expr (tree retval, bool *no
*** 11584,11589 ****
--- 11584,11595 ----
  	  && call_from_lambda_thunk_p (retval))
  	converted = true;
  
+       /* Don't check copy-initialization for NRV in a coroutine ramp; we
+ 	 implement this case as NRV, but it's specified as directly
+ 	 initializing the return value from get_return_object().  */
+       if (DECL_RAMP_P (current_function_decl) && named_return_value_okay_p)
+ 	converted = true;
+ 
        /* First convert the value to the function's return type, then
  	 to the type of return value's location to handle the
  	 case that functype is smaller than the valtype.  */
diff -Nrcpad gcc-15-20250726/gcc/d/ChangeLog gcc-15-20250809/gcc/d/ChangeLog
*** gcc-15-20250726/gcc/d/ChangeLog	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/d/ChangeLog	Sat Aug  9 22:32:38 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gcc/doc/invoke.texi gcc-15-20250809/gcc/doc/invoke.texi
*** gcc-15-20250726/gcc/doc/invoke.texi	Sat Jul 26 22:32:11 2025
--- gcc-15-20250809/gcc/doc/invoke.texi	Sat Aug  9 22:32:38 2025
*************** Objective-C and Objective-C++ Dialects}.
*** 913,919 ****
  @emph{AVR Options} (@ref{AVR Options})
  @gccoptlist{-mmcu=@var{mcu}  -mabsdata  -maccumulate-args  -mcvt
  -mbranch-cost=@var{cost}  -mfuse-add=@var{level}  -mfuse-move=@var{level}
! -mcall-prologues  -mgas-isr-prologues  -mint8  -mflmap
  -mdouble=@var{bits}  -mlong-double=@var{bits}  -mno-call-main
  -mn_flash=@var{size}  -mfract-convert-truncate  -mno-interrupts
  -mmain-is-OS_task  -mrelax  -mrmw  -mstrict-X  -mtiny-stack
--- 913,919 ----
  @emph{AVR Options} (@ref{AVR Options})
  @gccoptlist{-mmcu=@var{mcu}  -mabsdata  -maccumulate-args  -mcvt
  -mbranch-cost=@var{cost}  -mfuse-add=@var{level}  -mfuse-move=@var{level}
! -mfuse-move2  -mcall-prologues  -mgas-isr-prologues  -mint8  -mflmap
  -mdouble=@var{bits}  -mlong-double=@var{bits}  -mno-call-main
  -mn_flash=@var{size}  -mfract-convert-truncate  -mno-interrupts
  -mmain-is-OS_task  -mrelax  -mrmw  -mstrict-X  -mtiny-stack
*************** Valid values for @var{level} are in the
*** 24860,24865 ****
--- 24860,24869 ----
  which is a 3:2:2:2 mixed radix value.  Each digit controls some
  aspect of the optimization.
  
+ @opindex mfuse-move2
+ @item -mfuse-move2
+ Run a post combine optimization pass that tries to fuse move instructions.
+ 
  @opindex mstrict-X
  @item -mstrict-X
  Use address register @code{X} in a way proposed by the hardware.  This means
diff -Nrcpad gcc-15-20250726/gcc/fortran/ChangeLog gcc-15-20250809/gcc/fortran/ChangeLog
*** gcc-15-20250726/gcc/fortran/ChangeLog	Sat Jul 26 22:32:12 2025
--- gcc-15-20250809/gcc/fortran/ChangeLog	Sat Aug  9 22:32:38 2025
***************
*** 1,3 ****
--- 1,27 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-07-28  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-21  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/119106
+ 	* expr.cc (simplify_constructor): Do not simplify constants.
+ 	(gfc_simplify_expr): Continue to simplify expression when an
+ 	iterator is present.
+ 
+ 2025-07-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-07-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121203
+ 	* trans-expr.cc (gfc_conv_procedure_call): Obtain the character
+ 	length of an assumed character length procedure from the typespec
+ 	of the actual argument even if there is no explicit interface.
+ 
  2025-07-20  Harald Anlauf  <anlauf@gmx.de>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/gcc/fortran/expr.cc gcc-15-20250809/gcc/fortran/expr.cc
*** gcc-15-20250726/gcc/fortran/expr.cc	Sat Jul 26 22:32:12 2025
--- gcc-15-20250809/gcc/fortran/expr.cc	Sat Aug  9 22:32:38 2025
*************** simplify_constructor (gfc_constructor_ba
*** 1372,1378 ****
  	      || !gfc_simplify_expr (c->iterator->step, type)))
  	return false;
  
!       if (c->expr)
  	{
  	  /* Try and simplify a copy.  Replace the original if successful
  	     but keep going through the constructor at all costs.  Not
--- 1372,1378 ----
  	      || !gfc_simplify_expr (c->iterator->step, type)))
  	return false;
  
!       if (c->expr && c->expr->expr_type != EXPR_CONSTANT)
  	{
  	  /* Try and simplify a copy.  Replace the original if successful
  	     but keep going through the constructor at all costs.  Not
*************** gfc_simplify_expr (gfc_expr *p, int type
*** 2469,2475 ****
  	{
  	  if (!simplify_parameter_variable (p, type))
  	    return false;
! 	  break;
  	}
  
        if (type == 1)
--- 2469,2476 ----
  	{
  	  if (!simplify_parameter_variable (p, type))
  	    return false;
! 	  if (!iter_stack)
! 	    break;
  	}
  
        if (type == 1)
diff -Nrcpad gcc-15-20250726/gcc/gimple-lower-bitint.cc gcc-15-20250809/gcc/gimple-lower-bitint.cc
*** gcc-15-20250726/gcc/gimple-lower-bitint.cc	Sat Jul 26 22:32:12 2025
--- gcc-15-20250809/gcc/gimple-lower-bitint.cc	Sat Aug  9 22:32:38 2025
*************** enum bitint_prec_kind {
*** 76,82 ****
  /* Caches to speed up bitint_precision_kind.  */
  
  static int small_max_prec, mid_min_prec, large_min_prec, huge_min_prec;
! static int limb_prec;
  
  /* Categorize _BitInt(PREC) as small, middle, large or huge.  */
  
--- 76,82 ----
  /* Caches to speed up bitint_precision_kind.  */
  
  static int small_max_prec, mid_min_prec, large_min_prec, huge_min_prec;
! static int limb_prec, abi_limb_prec;
  
  /* Categorize _BitInt(PREC) as small, middle, large or huge.  */
  
*************** bitint_precision_kind (int prec)
*** 106,111 ****
--- 106,114 ----
      large_min_prec = MAX_FIXED_MODE_SIZE + 1;
    if (!limb_prec)
      limb_prec = GET_MODE_PRECISION (limb_mode);
+   if (!abi_limb_prec)
+     abi_limb_prec
+       = GET_MODE_PRECISION (as_a <scalar_int_mode> (info.abi_limb_mode));
    if (!huge_min_prec)
      {
        if (4 * limb_prec >= MAX_FIXED_MODE_SIZE)
*************** range_to_prec (tree op, gimple *stmt)
*** 2213,2219 ****
     from that precision, if it is negative, the operand is sign-extended
     from -*PREC.  If PREC_STORED is NULL, it is the toplevel call,
     otherwise *PREC_STORED is prec from the innermost call without
!    range optimizations.  */
  
  tree
  bitint_large_huge::handle_operand_addr (tree op, gimple *stmt,
--- 2216,2222 ----
     from that precision, if it is negative, the operand is sign-extended
     from -*PREC.  If PREC_STORED is NULL, it is the toplevel call,
     otherwise *PREC_STORED is prec from the innermost call without
!    range optimizations (0 for uninitialized SSA_NAME).  */
  
  tree
  bitint_large_huge::handle_operand_addr (tree op, gimple *stmt,
*************** bitint_large_huge::handle_operand_addr (
*** 2318,2324 ****
  	    {
  	      *prec = TYPE_UNSIGNED (TREE_TYPE (op)) ? limb_prec : -limb_prec;
  	      if (prec_stored)
! 		*prec_stored = *prec;
  	      tree var = create_tmp_var (m_limb_type);
  	      TREE_ADDRESSABLE (var) = 1;
  	      ret = build_fold_addr_expr (var);
--- 2321,2327 ----
  	    {
  	      *prec = TYPE_UNSIGNED (TREE_TYPE (op)) ? limb_prec : -limb_prec;
  	      if (prec_stored)
! 		*prec_stored = 0;
  	      tree var = create_tmp_var (m_limb_type);
  	      TREE_ADDRESSABLE (var) = 1;
  	      ret = build_fold_addr_expr (var);
*************** bitint_large_huge::handle_operand_addr (
*** 2346,2351 ****
--- 2349,2356 ----
  		  tree rhs_type = TREE_TYPE (rhs1);
  		  int prec_stored_val = 0;
  		  ret = handle_operand_addr (rhs1, g, &prec_stored_val, prec);
+ 		  if (prec_stored)
+ 		    *prec_stored = prec_stored_val;
  		  if (TYPE_PRECISION (lhs_type) > TYPE_PRECISION (rhs_type))
  		    {
  		      if (TYPE_UNSIGNED (lhs_type)
*************** bitint_large_huge::handle_operand_addr (
*** 2354,2360 ****
  		    }
  		  else
  		    {
! 		      if (*prec > 0 && *prec < TYPE_PRECISION (lhs_type))
  			;
  		      else if (TYPE_UNSIGNED (lhs_type))
  			{
--- 2359,2367 ----
  		    }
  		  else
  		    {
! 		      if (prec_stored_val == 0)
! 			/* Non-widening cast of uninitialized value.  */;
! 		      else if (*prec > 0 && *prec < TYPE_PRECISION (lhs_type))
  			;
  		      else if (TYPE_UNSIGNED (lhs_type))
  			{
*************** static unsigned int
*** 6071,6077 ****
  gimple_lower_bitint (void)
  {
    small_max_prec = mid_min_prec = large_min_prec = huge_min_prec = 0;
!   limb_prec = 0;
  
    unsigned int i;
    for (i = 0; i < num_ssa_names; ++i)
--- 6078,6084 ----
  gimple_lower_bitint (void)
  {
    small_max_prec = mid_min_prec = large_min_prec = huge_min_prec = 0;
!   limb_prec = abi_limb_prec = 0;
  
    unsigned int i;
    for (i = 0; i < num_ssa_names; ++i)
*************** gimple_lower_bitint (void)
*** 7032,7038 ****
  		       from smaller number.  */
  		    min_prec = prec;
  		  else
! 		    min_prec = CEIL (min_prec, limb_prec) * limb_prec;
  		  if (min_prec == 0)
  		    c = NULL_TREE;
  		  else if (min_prec == prec)
--- 7039,7058 ----
  		       from smaller number.  */
  		    min_prec = prec;
  		  else
! 		    {
! 		      min_prec = CEIL (min_prec, limb_prec) * limb_prec;
! 		      if (min_prec > (unsigned) limb_prec
! 			  && abi_limb_prec > limb_prec)
! 			{
! 			  /* For targets with ABI limb precision higher than
! 			     limb precision round to ABI limb precision,
! 			     otherwise c can contain padding bits.  */
! 			  min_prec
! 			    = CEIL (min_prec, abi_limb_prec) * abi_limb_prec;
! 			  if (min_prec > prec - rem - 2 * limb_prec)
! 			    min_prec = prec;
! 			}
! 		    }
  		  if (min_prec == 0)
  		    c = NULL_TREE;
  		  else if (min_prec == prec)
diff -Nrcpad gcc-15-20250726/gcc/gimple-ssa-store-merging.cc gcc-15-20250809/gcc/gimple-ssa-store-merging.cc
*** gcc-15-20250726/gcc/gimple-ssa-store-merging.cc	Sat Jul 26 22:32:12 2025
--- gcc-15-20250809/gcc/gimple-ssa-store-merging.cc	Sat Aug  9 22:32:38 2025
*************** find_bswap_or_nop (gimple *stmt, struct
*** 1057,1062 ****
--- 1057,1064 ----
  		      if (count <= range / BITS_PER_MARKER)
  			{
  			  count = (count + i) * BITS_PER_MARKER % range;
+ 			  if (!count)
+ 			    return NULL;
  			  break;
  			}
  		      else
diff -Nrcpad gcc-15-20250726/gcc/go/ChangeLog gcc-15-20250809/gcc/go/ChangeLog
*** gcc-15-20250726/gcc/go/ChangeLog	Sat Jul 26 22:32:12 2025
--- gcc-15-20250809/gcc/go/ChangeLog	Sat Aug  9 22:32:38 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gcc/jit/ChangeLog gcc-15-20250809/gcc/jit/ChangeLog
*** gcc-15-20250726/gcc/jit/ChangeLog	Sat Jul 26 22:32:12 2025
--- gcc-15-20250809/gcc/jit/ChangeLog	Sat Aug  9 22:32:38 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gcc/lto/ChangeLog gcc-15-20250809/gcc/lto/ChangeLog
*** gcc-15-20250726/gcc/lto/ChangeLog	Sat Jul 26 22:32:12 2025
--- gcc-15-20250809/gcc/lto/ChangeLog	Sat Aug  9 22:32:38 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gcc/m2/ChangeLog gcc-15-20250809/gcc/m2/ChangeLog
*** gcc-15-20250726/gcc/m2/ChangeLog	Sat Jul 26 22:32:12 2025
--- gcc-15-20250809/gcc/m2/ChangeLog	Sat Aug  9 22:32:38 2025
***************
*** 1,3 ****
--- 1,68 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-07-26  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-07-23  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	* gm2-libs/M2EXCEPTION.mod (M2Exception): Add return
+ 	exException in case Raise completes.
+ 
+ 2025-07-26  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-07-23  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/121164
+ 	* gm2-compiler/P1SymBuild.mod: Remove PutProcTypeParam.
+ 	Remove PutProcTypeParam.
+ 	(CheckFileName): Remove.
+ 	(P1EndBuildDefinitionModule): Correct spelling.
+ 	(P1EndBuildImplementationModule): Ditto.
+ 	(P1EndBuildProgramModule): Ditto.
+ 	(EndBuildInnerModule): Ditto.
+ 	* gm2-compiler/P2SymBuild.mod (P2EndBuildDefModule): Correct
+ 	spelling.
+ 	(P2EndBuildImplementationModule): Ditto.
+ 	(P2EndBuildProgramModule): Ditto.
+ 	(EndBuildInnerModule): Ditto.
+ 	(CheckFormalParameterSection): Ditto.
+ 	* gm2-compiler/P3SymBuild.mod (P3EndBuildDefModule): Ditto.
+ 	* gm2-compiler/PCSymBuild.mod (PCEndBuildDefModule): Ditto.
+ 	(fixupProcedureType): Pass tok to PutProcTypeVarParam.
+ 	Pass tok to PutProcTypeParam.
+ 	* gm2-compiler/SymbolTable.def (PutProcTypeParam): Add tok
+ 	parameter.
+ 	(PutProcTypeVarParam): Ditto.
+ 	* gm2-compiler/SymbolTable.mod (SymParam): At change type to
+ 	CARDINAL.
+ 	New field FullTok.
+ 	New field Scope.
+ 	(SymVarParam): At change type to CARDINAL.
+ 	New field FullTok.
+ 	New field Scope.
+ 	(GetVarDeclTok): Check ShadowVar for NulSym and return At.
+ 	(PutParam): Initialize FullTok.
+ 	Initialize At.
+ 	Initialize Scope.
+ 	(PutVarParam): Initialize FullTok.
+ 	Assign At.
+ 	Initialize Scope.
+ 	(AddProcedureProcTypeParam): Add tok parameter.
+ 	(GetScope): Add ParamSym and VarParamSym clause.
+ 	(PutProcTypeVarParam): Add tok parameter.
+ 	Initialize At.
+ 	Initialize FullTok.
+ 	(GetDeclaredDefinition): Clause ParamSym return At.
+ 	Clause VarParamSym return At.
+ 	(GetDeclaredModule): Ditto.
+ 	(PutDeclaredDefinition): Remove clause ParamSym.
+ 	Remove clause VarParamSym.
+ 	(PutDeclaredModule): Remove clause ParamSym.
+ 	Remove clause VarParamSym.
+ 
  2025-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/gcc/machmode.h gcc-15-20250809/gcc/machmode.h
*** gcc-15-20250726/gcc/machmode.h	Sat Jul 26 22:32:13 2025
--- gcc-15-20250809/gcc/machmode.h	Sat Aug  9 22:32:39 2025
*************** private:
*** 958,964 ****
  
  /* Find the best mode to use to access a bit field.  */
  
! extern bool get_best_mode (int, int, poly_uint64, poly_uint64, unsigned int,
  			   unsigned HOST_WIDE_INT, bool, scalar_int_mode *);
  
  /* Determine alignment, 1<=result<=BIGGEST_ALIGNMENT.  */
--- 958,965 ----
  
  /* Find the best mode to use to access a bit field.  */
  
! extern bool get_best_mode (HOST_WIDE_INT, HOST_WIDE_INT,
! 			   poly_uint64, poly_uint64, unsigned int,
  			   unsigned HOST_WIDE_INT, bool, scalar_int_mode *);
  
  /* Determine alignment, 1<=result<=BIGGEST_ALIGNMENT.  */
diff -Nrcpad gcc-15-20250726/gcc/objc/ChangeLog gcc-15-20250809/gcc/objc/ChangeLog
*** gcc-15-20250726/gcc/objc/ChangeLog	Sat Jul 26 22:32:13 2025
--- gcc-15-20250809/gcc/objc/ChangeLog	Sat Aug  9 22:32:39 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gcc/objcp/ChangeLog gcc-15-20250809/gcc/objcp/ChangeLog
*** gcc-15-20250726/gcc/objcp/ChangeLog	Sat Jul 26 22:32:13 2025
--- gcc-15-20250809/gcc/objcp/ChangeLog	Sat Aug  9 22:32:39 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gcc/po/ChangeLog gcc-15-20250809/gcc/po/ChangeLog
*** gcc-15-20250726/gcc/po/ChangeLog	Sat Jul 26 22:32:13 2025
--- gcc-15-20250809/gcc/po/ChangeLog	Sat Aug  9 22:32:39 2025
***************
*** 1,3 ****
--- 1,11 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-08-01  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* gcc.pot: Regenerate.
+ 
  2025-06-12  Joseph Myers  <josmyers@redhat.com>
  
  	* es.po: Update.
diff -Nrcpad gcc-15-20250726/gcc/po/gcc.pot gcc-15-20250809/gcc/po/gcc.pot
*** gcc-15-20250726/gcc/po/gcc.pot	Sat Jul 26 22:32:13 2025
--- gcc-15-20250809/gcc/po/gcc.pot	Sat Aug  9 22:32:39 2025
*************** msgid ""
*** 8,14 ****
  msgstr ""
  "Project-Id-Version: PACKAGE VERSION\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
! "POT-Creation-Date: 2025-04-23 19:27+0000\n"
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
  "Language-Team: LANGUAGE <LL@li.org>\n"
--- 8,14 ----
  msgstr ""
  "Project-Id-Version: PACKAGE VERSION\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
! "POT-Creation-Date: 2025-08-01 17:58+0000\n"
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
  "Language-Team: LANGUAGE <LL@li.org>\n"
*************** msgstr ""
*** 542,549 ****
  #: fortran/lang.opt:214 fortran/lang.opt:547 c-family/c.opt:1692
  #: config/alpha/alpha.opt:31 common.opt:691 common.opt:849 common.opt:1112
  #: common.opt:1116 common.opt:1120 common.opt:1124 common.opt:1876
! #: common.opt:1979 common.opt:2161 common.opt:2165 common.opt:2479
! #: common.opt:2705 common.opt:3472
  #, no-c-format
  msgid "Does nothing. Preserved for backward compatibility."
  msgstr ""
--- 542,549 ----
  #: fortran/lang.opt:214 fortran/lang.opt:547 c-family/c.opt:1692
  #: config/alpha/alpha.opt:31 common.opt:691 common.opt:849 common.opt:1112
  #: common.opt:1116 common.opt:1120 common.opt:1124 common.opt:1876
! #: common.opt:1979 common.opt:2161 common.opt:2165 common.opt:2476
! #: common.opt:2702 common.opt:3469
  #, no-c-format
  msgid "Does nothing. Preserved for backward compatibility."
  msgstr ""
*************** msgstr ""
*** 893,899 ****
  msgid "Use f2c calling convention."
  msgstr ""
  
! #: fortran/lang.opt:575 cobol/lang.opt:78
  #, no-c-format
  msgid "Assume that the source file is fixed form."
  msgstr ""
--- 893,899 ----
  msgid "Use f2c calling convention."
  msgstr ""
  
! #: fortran/lang.opt:575 cobol/lang.opt:83
  #, no-c-format
  msgid "Assume that the source file is fixed form."
  msgstr ""
*************** msgstr ""
*** 938,944 ****
  msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
  msgstr ""
  
! #: fortran/lang.opt:615 cobol/lang.opt:82
  #, no-c-format
  msgid "Assume that the source file is free form."
  msgstr ""
--- 938,944 ----
  msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
  msgstr ""
  
! #: fortran/lang.opt:615 cobol/lang.opt:87
  #, no-c-format
  msgid "Assume that the source file is free form."
  msgstr ""
*************** msgstr ""
*** 1183,1194 ****
  #: config/arc/arc.opt:312 config/arc/arc.opt:317 config/arc/arc.opt:326
  #: config/arc/arc.opt:405 common.opt:649 common.opt:1210 common.opt:1214
  #: common.opt:1218 common.opt:1313 common.opt:1658 common.opt:1740
! #: common.opt:1839 common.opt:2109 common.opt:2256 common.opt:2313
! #: common.opt:2783 common.opt:2819 common.opt:2912 common.opt:2916
! #: common.opt:3025 common.opt:3160 common.opt:3168 common.opt:3176
! #: common.opt:3184 common.opt:3285 common.opt:3345 common.opt:3433
! #: common.opt:3613 common.opt:3617 common.opt:3621 common.opt:3625
! #: common.opt:3699 common.opt:3703 common.opt:3734 common.opt:3738
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
  msgstr ""
--- 1183,1194 ----
  #: config/arc/arc.opt:312 config/arc/arc.opt:317 config/arc/arc.opt:326
  #: config/arc/arc.opt:405 common.opt:649 common.opt:1210 common.opt:1214
  #: common.opt:1218 common.opt:1313 common.opt:1658 common.opt:1740
! #: common.opt:1839 common.opt:2109 common.opt:2256 common.opt:2310
! #: common.opt:2780 common.opt:2816 common.opt:2909 common.opt:2913
! #: common.opt:3022 common.opt:3157 common.opt:3165 common.opt:3173
! #: common.opt:3181 common.opt:3282 common.opt:3342 common.opt:3430
! #: common.opt:3610 common.opt:3614 common.opt:3618 common.opt:3622
! #: common.opt:3696 common.opt:3700 common.opt:3731 common.opt:3735
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
  msgstr ""
*************** msgstr ""
*** 4170,4244 ****
  msgid "Do not predefine system-specific and GCC-specific macros."
  msgstr ""
  
! #: cobol/lang.opt:43
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
  msgstr ""
  
! #: cobol/lang.opt:62
  #, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
  msgstr ""
  
! #: cobol/lang.opt:66
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
  msgstr ""
  
! #: cobol/lang.opt:70
  #, no-c-format
  msgid "Set Working-Storage data items to the supplied value"
  msgstr ""
  
! #: cobol/lang.opt:74
  #, no-c-format
  msgid "Enable Cobol lex debugging"
  msgstr ""
  
! #: cobol/lang.opt:86
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
  msgstr ""
  
! #: cobol/lang.opt:90
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
  msgstr ""
  
! #: cobol/lang.opt:94
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
  msgstr ""
  
! #: cobol/lang.opt:98
  #, no-c-format
  msgid "Enable Cobol parser debugging"
  msgstr ""
  
! #: cobol/lang.opt:102
  #, no-c-format
  msgid "Enable Cobol yacc debugging"
  msgstr ""
  
! #: cobol/lang.opt:106
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
  msgstr ""
  
! #: cobol/lang.opt:126
  #, no-c-format
  msgid ""
  "-main\tThe first program-id in the next source file is called by a generated "
  "main() entry point"
  msgstr ""
  
! #: cobol/lang.opt:130
  #, no-c-format
  msgid ""
  "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
  msgstr ""
  
! #: cobol/lang.opt:134
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
  msgstr ""
--- 4170,4244 ----
  msgid "Do not predefine system-specific and GCC-specific macros."
  msgstr ""
  
! #: cobol/lang.opt:48
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
  msgstr ""
  
! #: cobol/lang.opt:67
  #, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
  msgstr ""
  
! #: cobol/lang.opt:71
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
  msgstr ""
  
! #: cobol/lang.opt:75
  #, no-c-format
  msgid "Set Working-Storage data items to the supplied value"
  msgstr ""
  
! #: cobol/lang.opt:79
  #, no-c-format
  msgid "Enable Cobol lex debugging"
  msgstr ""
  
! #: cobol/lang.opt:91
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
  msgstr ""
  
! #: cobol/lang.opt:95
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
  msgstr ""
  
! #: cobol/lang.opt:99
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
  msgstr ""
  
! #: cobol/lang.opt:103
  #, no-c-format
  msgid "Enable Cobol parser debugging"
  msgstr ""
  
! #: cobol/lang.opt:107
  #, no-c-format
  msgid "Enable Cobol yacc debugging"
  msgstr ""
  
! #: cobol/lang.opt:111
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
  msgstr ""
  
! #: cobol/lang.opt:131
  #, no-c-format
  msgid ""
  "-main\tThe first program-id in the next source file is called by a generated "
  "main() entry point"
  msgstr ""
  
! #: cobol/lang.opt:135
  #, no-c-format
  msgid ""
  "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
  msgstr ""
  
! #: cobol/lang.opt:139
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
  msgstr ""
*************** msgstr ""
*** 9603,9614 ****
  msgid "Known PTX ISA versions (for use with the -mptx= option):"
  msgstr ""
  
! #: config/nvptx/nvptx.opt:156
  #, no-c-format
  msgid "Specify the PTX ISA version to use."
  msgstr ""
  
! #: config/nvptx/nvptx.opt:160
  #, no-c-format
  msgid "Initialize ptx registers."
  msgstr ""
--- 9603,9614 ----
  msgid "Known PTX ISA versions (for use with the -mptx= option):"
  msgstr ""
  
! #: config/nvptx/nvptx.opt:159
  #, no-c-format
  msgid "Specify the PTX ISA version to use."
  msgstr ""
  
! #: config/nvptx/nvptx.opt:163
  #, no-c-format
  msgid "Initialize ptx registers."
  msgstr ""
*************** msgstr ""
*** 9828,9860 ****
  
  #: config/avr/avr.opt:169
  #, no-c-format
  msgid ""
  "Assume that all data in static storage can be accessed by LDS / STS "
  "instructions.  This option is only useful for reduced Tiny devices like "
  "ATtiny40."
  msgstr ""
  
! #: config/avr/avr.opt:173
  #, no-c-format
  msgid "-mdouble=<BITS>\tUse <BITS> bits wide double type."
  msgstr ""
  
! #: config/avr/avr.opt:177
  #, no-c-format
  msgid "-mlong-double=<BITS>\tUse <BITS> bits wide long double type."
  msgstr ""
  
! #: config/avr/avr.opt:181
  #, no-c-format
  msgid "Do not link against the device-specific library lib<MCU>.a."
  msgstr ""
  
! #: config/avr/avr.opt:185
  #, no-c-format
  msgid "Do not use the device-specific specs file device-specs/specs-<MCU>."
  msgstr ""
  
! #: config/avr/avr.opt:189
  #, no-c-format
  msgid "Available BITS selections:"
  msgstr ""
--- 9828,9865 ----
  
  #: config/avr/avr.opt:169
  #, no-c-format
+ msgid "Optimization. Fuse some move insns after insn combine."
+ msgstr ""
+ 
+ #: config/avr/avr.opt:173
+ #, no-c-format
  msgid ""
  "Assume that all data in static storage can be accessed by LDS / STS "
  "instructions.  This option is only useful for reduced Tiny devices like "
  "ATtiny40."
  msgstr ""
  
! #: config/avr/avr.opt:177
  #, no-c-format
  msgid "-mdouble=<BITS>\tUse <BITS> bits wide double type."
  msgstr ""
  
! #: config/avr/avr.opt:181
  #, no-c-format
  msgid "-mlong-double=<BITS>\tUse <BITS> bits wide long double type."
  msgstr ""
  
! #: config/avr/avr.opt:185
  #, no-c-format
  msgid "Do not link against the device-specific library lib<MCU>.a."
  msgstr ""
  
! #: config/avr/avr.opt:189
  #, no-c-format
  msgid "Do not use the device-specific specs file device-specs/specs-<MCU>."
  msgstr ""
  
! #: config/avr/avr.opt:193
  #, no-c-format
  msgid "Available BITS selections:"
  msgstr ""
*************** msgstr ""
*** 15669,15675 ****
  msgid "Mark all loops as parallel."
  msgstr ""
  
! #: common.opt:1852 common.opt:1860 common.opt:3249
  #, no-c-format
  msgid "Enable loop nest transforms.  Same as -floop-nest-optimize."
  msgstr ""
--- 15674,15680 ----
  msgid "Mark all loops as parallel."
  msgstr ""
  
! #: common.opt:1852 common.opt:1860 common.opt:3246
  #, no-c-format
  msgid "Enable loop nest transforms.  Same as -floop-nest-optimize."
  msgstr ""
*************** msgid ""
*** 16055,16225 ****
  "Number of cache entries in incremental LTO after which to prune old entries."
  msgstr ""
  
! #: common.opt:2304
  #, no-c-format
  msgid "Specify the algorithm to partition symbols and vars at linktime."
  msgstr ""
  
! #: common.opt:2309
  #, no-c-format
  msgid "Use zlib/zstd compression level <number> for IL."
  msgstr ""
  
! #: common.opt:2317
  #, no-c-format
  msgid "Report various link-time optimization statistics."
  msgstr ""
  
! #: common.opt:2321
  #, no-c-format
  msgid "Report various link-time optimization statistics for WPA only."
  msgstr ""
  
! #: common.opt:2325
  #, no-c-format
  msgid "Set errno after built-in math functions."
  msgstr ""
  
! #: common.opt:2329
  #, no-c-format
  msgid "-fmax-errors=<number>\tMaximum number of errors to report."
  msgstr ""
  
! #: common.opt:2333
  #, no-c-format
  msgid "Allow removal of malloc and free pairs when allocated block is unused."
  msgstr ""
  
! #: common.opt:2340
  #, no-c-format
  msgid "Report on permanent memory allocation."
  msgstr ""
  
! #: common.opt:2344
  #, no-c-format
  msgid "Report on permanent memory allocation in WPA only."
  msgstr ""
  
! #: common.opt:2351
  #, no-c-format
  msgid "Attempt to merge identical constants and constant variables."
  msgstr ""
  
! #: common.opt:2355
  #, no-c-format
  msgid "Attempt to merge identical constants across compilation units."
  msgstr ""
  
! #: common.opt:2359
  #, no-c-format
  msgid "Attempt to merge identical debug strings across compilation units."
  msgstr ""
  
! #: common.opt:2363
  #, no-c-format
  msgid ""
  "-fmessage-length=<number>\tLimit diagnostics to <number> characters per "
  "line.  0 suppresses line-wrapping."
  msgstr ""
  
! #: common.opt:2367
  #, no-c-format
  msgid "Align the start of every function."
  msgstr ""
  
! #: common.opt:2371
  #, no-c-format
  msgid "Perform SMS based modulo scheduling before the first scheduling pass."
  msgstr ""
  
! #: common.opt:2375
  #, no-c-format
  msgid "Perform SMS based modulo scheduling with register moves allowed."
  msgstr ""
  
! #: common.opt:2379
  #, no-c-format
  msgid "Move loop invariant computations out of loops."
  msgstr ""
  
! #: common.opt:2383
  #, no-c-format
  msgid "Move stores out of loops."
  msgstr ""
  
! #: common.opt:2387
  #, no-c-format
  msgid "Building block for specs-based multilib-aware TFLAGS."
  msgstr ""
  
! #: common.opt:2391
  #, no-c-format
  msgid "Use the RTL dead code elimination pass."
  msgstr ""
  
! #: common.opt:2395
  #, no-c-format
  msgid "Use the RTL dead store elimination pass."
  msgstr ""
  
! #: common.opt:2399
  #, no-c-format
  msgid ""
  "Enable/Disable the traditional scheduling in loops that already passed "
  "modulo scheduling."
  msgstr ""
  
! #: common.opt:2403
  #, no-c-format
  msgid "Support synchronous non-call exceptions."
  msgstr ""
  
! #: common.opt:2410
  #, no-c-format
  msgid ""
  "-foffload-options=<targets>=<options>\tSpecify options for the offloading "
  "targets."
  msgstr ""
  
! #: common.opt:2414
  #, no-c-format
  msgid "-foffload-abi=[lp64|ilp32]\tSet the ABI to use in an offload compiler."
  msgstr ""
  
! #: common.opt:2427
  #, no-c-format
  msgid "-foffload-abi-host-opts=<options>\tSpecify host ABI options."
  msgstr ""
  
! #: common.opt:2431
  #, no-c-format
  msgid "When possible do not generate stack frames."
  msgstr ""
  
! #: common.opt:2438
  #, no-c-format
  msgid ""
  "Generate SIMD clones for functions with the OpenMP declare target directive."
  msgstr ""
  
! #: common.opt:2457
  #, no-c-format
  msgid "Enable all optimization info dumps on stderr."
  msgstr ""
  
! #: common.opt:2461
  #, no-c-format
  msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details."
  msgstr ""
  
! #: common.opt:2465
  #, no-c-format
  msgid ""
  "Write a SRCFILE.opt-record.json file detailing what optimizations were "
  "performed."
  msgstr ""
  
! #: common.opt:2469
  #, no-c-format
  msgid ""
  "Detect loops calculating CRC and replace with faster implementation. If the "
--- 16060,16230 ----
  "Number of cache entries in incremental LTO after which to prune old entries."
  msgstr ""
  
! #: common.opt:2301
  #, no-c-format
  msgid "Specify the algorithm to partition symbols and vars at linktime."
  msgstr ""
  
! #: common.opt:2306
  #, no-c-format
  msgid "Use zlib/zstd compression level <number> for IL."
  msgstr ""
  
! #: common.opt:2314
  #, no-c-format
  msgid "Report various link-time optimization statistics."
  msgstr ""
  
! #: common.opt:2318
  #, no-c-format
  msgid "Report various link-time optimization statistics for WPA only."
  msgstr ""
  
! #: common.opt:2322
  #, no-c-format
  msgid "Set errno after built-in math functions."
  msgstr ""
  
! #: common.opt:2326
  #, no-c-format
  msgid "-fmax-errors=<number>\tMaximum number of errors to report."
  msgstr ""
  
! #: common.opt:2330
  #, no-c-format
  msgid "Allow removal of malloc and free pairs when allocated block is unused."
  msgstr ""
  
! #: common.opt:2337
  #, no-c-format
  msgid "Report on permanent memory allocation."
  msgstr ""
  
! #: common.opt:2341
  #, no-c-format
  msgid "Report on permanent memory allocation in WPA only."
  msgstr ""
  
! #: common.opt:2348
  #, no-c-format
  msgid "Attempt to merge identical constants and constant variables."
  msgstr ""
  
! #: common.opt:2352
  #, no-c-format
  msgid "Attempt to merge identical constants across compilation units."
  msgstr ""
  
! #: common.opt:2356
  #, no-c-format
  msgid "Attempt to merge identical debug strings across compilation units."
  msgstr ""
  
! #: common.opt:2360
  #, no-c-format
  msgid ""
  "-fmessage-length=<number>\tLimit diagnostics to <number> characters per "
  "line.  0 suppresses line-wrapping."
  msgstr ""
  
! #: common.opt:2364
  #, no-c-format
  msgid "Align the start of every function."
  msgstr ""
  
! #: common.opt:2368
  #, no-c-format
  msgid "Perform SMS based modulo scheduling before the first scheduling pass."
  msgstr ""
  
! #: common.opt:2372
  #, no-c-format
  msgid "Perform SMS based modulo scheduling with register moves allowed."
  msgstr ""
  
! #: common.opt:2376
  #, no-c-format
  msgid "Move loop invariant computations out of loops."
  msgstr ""
  
! #: common.opt:2380
  #, no-c-format
  msgid "Move stores out of loops."
  msgstr ""
  
! #: common.opt:2384
  #, no-c-format
  msgid "Building block for specs-based multilib-aware TFLAGS."
  msgstr ""
  
! #: common.opt:2388
  #, no-c-format
  msgid "Use the RTL dead code elimination pass."
  msgstr ""
  
! #: common.opt:2392
  #, no-c-format
  msgid "Use the RTL dead store elimination pass."
  msgstr ""
  
! #: common.opt:2396
  #, no-c-format
  msgid ""
  "Enable/Disable the traditional scheduling in loops that already passed "
  "modulo scheduling."
  msgstr ""
  
! #: common.opt:2400
  #, no-c-format
  msgid "Support synchronous non-call exceptions."
  msgstr ""
  
! #: common.opt:2407
  #, no-c-format
  msgid ""
  "-foffload-options=<targets>=<options>\tSpecify options for the offloading "
  "targets."
  msgstr ""
  
! #: common.opt:2411
  #, no-c-format
  msgid "-foffload-abi=[lp64|ilp32]\tSet the ABI to use in an offload compiler."
  msgstr ""
  
! #: common.opt:2424
  #, no-c-format
  msgid "-foffload-abi-host-opts=<options>\tSpecify host ABI options."
  msgstr ""
  
! #: common.opt:2428
  #, no-c-format
  msgid "When possible do not generate stack frames."
  msgstr ""
  
! #: common.opt:2435
  #, no-c-format
  msgid ""
  "Generate SIMD clones for functions with the OpenMP declare target directive."
  msgstr ""
  
! #: common.opt:2454
  #, no-c-format
  msgid "Enable all optimization info dumps on stderr."
  msgstr ""
  
! #: common.opt:2458
  #, no-c-format
  msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details."
  msgstr ""
  
! #: common.opt:2462
  #, no-c-format
  msgid ""
  "Write a SRCFILE.opt-record.json file detailing what optimizations were "
  "performed."
  msgstr ""
  
! #: common.opt:2466
  #, no-c-format
  msgid ""
  "Detect loops calculating CRC and replace with faster implementation. If the "
*************** msgid ""
*** 16230,16504 ****
  "based CRC."
  msgstr ""
  
! #: common.opt:2483
  #, no-c-format
  msgid "Optimize sibling and tail recursive calls."
  msgstr ""
  
! #: common.opt:2487
  #, no-c-format
  msgid "Insert path profiling code."
  msgstr ""
  
! #: common.opt:2491
  #, no-c-format
  msgid "Perform partial inlining."
  msgstr ""
  
! #: common.opt:2495 common.opt:2499
  #, no-c-format
  msgid "Report on memory allocation before interprocedural optimization."
  msgstr ""
  
! #: common.opt:2503
  #, no-c-format
  msgid "Pack structure members together without holes."
  msgstr ""
  
! #: common.opt:2507
  #, no-c-format
  msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment."
  msgstr ""
  
! #: common.opt:2511
  #, no-c-format
  msgid "Return small aggregates in memory, not registers."
  msgstr ""
  
! #: common.opt:2515
  #, no-c-format
  msgid "Perform loop peeling."
  msgstr ""
  
! #: common.opt:2519
  #, no-c-format
  msgid "Enable machine specific peephole optimizations."
  msgstr ""
  
! #: common.opt:2523
  #, no-c-format
  msgid "Enable an RTL peephole pass before sched2."
  msgstr ""
  
! #: common.opt:2527
  #, no-c-format
  msgid "Generate position-independent code if possible (large mode)."
  msgstr ""
  
! #: common.opt:2531
  #, no-c-format
  msgid ""
  "Generate position-independent code for executables if possible (large mode)."
  msgstr ""
  
! #: common.opt:2535
  #, no-c-format
  msgid "Generate position-independent code if possible (small mode)."
  msgstr ""
  
! #: common.opt:2539
  #, no-c-format
  msgid ""
  "Generate position-independent code for executables if possible (small mode)."
  msgstr ""
  
! #: common.opt:2543
  #, no-c-format
  msgid ""
  "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)."
  msgstr ""
  
! #: common.opt:2547
  #, no-c-format
  msgid "Specify a plugin to load."
  msgstr ""
  
! #: common.opt:2551
  #, no-c-format
  msgid ""
  "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for "
  "plugin <name>."
  msgstr ""
  
! #: common.opt:2555
  #, no-c-format
  msgid "Run predictive commoning optimization."
  msgstr ""
  
! #: common.opt:2559
  #, no-c-format
  msgid "Generate prefetch instructions, if available, for arrays in loops."
  msgstr ""
  
! #: common.opt:2563
  #, no-c-format
  msgid "Enable basic program profiling code."
  msgstr ""
  
! #: common.opt:2567
  #, no-c-format
  msgid "Generate absolute source path names for gcov."
  msgstr ""
  
! #: common.opt:2571
  #, no-c-format
  msgid "Insert arc-based program profiling code."
  msgstr ""
  
! #: common.opt:2575
  #, no-c-format
  msgid "Insert condition coverage profiling code."
  msgstr ""
  
! #: common.opt:2579
  #, no-c-format
  msgid ""
  "Set the top-level directory for storing the profile data. The default is "
  "'pwd'."
  msgstr ""
  
! #: common.opt:2584
  #, no-c-format
  msgid "Select the name for storing the profile note file."
  msgstr ""
  
! #: common.opt:2588
  #, no-c-format
  msgid "Enable correction of flow inconsistent profile data input."
  msgstr ""
  
! #: common.opt:2592
  #, no-c-format
  msgid ""
  "-fprofile-update=[single|atomic|prefer-atomic]\tSet the profile update "
  "method."
  msgstr ""
  
! #: common.opt:2596
  #, no-c-format
  msgid ""
  "Instrument only functions from files whose name matches any of the regular "
  "expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2600
  #, no-c-format
  msgid ""
  "Instrument only functions from files whose name does not match any of the "
  "regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2616
  #, no-c-format
  msgid ""
  "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tControl level "
  "of reproducibility of profile gathered by -fprofile-generate."
  msgstr ""
  
! #: common.opt:2632
  #, no-c-format
  msgid ""
  "Remove prefix from absolute path before mangling name for -fprofile-"
  "generate= and -fprofile-use=."
  msgstr ""
  
! #: common.opt:2636
  #, no-c-format
  msgid ""
  "-fprofile-prefix-map=<old>=<new>\tMap one directory name to another in GCOV "
  "coverage result."
  msgstr ""
  
! #: common.opt:2640
  #, no-c-format
  msgid ""
  "Enable common options for generating profile info for profile feedback "
  "directed optimizations."
  msgstr ""
  
! #: common.opt:2644
  #, no-c-format
  msgid ""
  "Enable common options for generating profile info for profile feedback "
  "directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: 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
  msgid ""
  "Do not assume that functions never executed during the train run are cold."
  msgstr ""
  
! #: common.opt:2660
  #, no-c-format
  msgid ""
  "Enable common options for performing profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2664
  #, no-c-format
  msgid ""
  "Enable common options for performing profile feedback directed "
  "optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2668
  #, no-c-format
  msgid "Insert code to profile values of expressions."
  msgstr ""
  
! #: common.opt:2672
  #, no-c-format
  msgid "Report on consistency of profile."
  msgstr ""
  
! #: common.opt:2676
  #, no-c-format
  msgid "Enable function reordering that improves code placement."
  msgstr ""
  
! #: common.opt:2680
  #, no-c-format
  msgid "Insert NOP instructions at each function entry."
  msgstr ""
  
! #: common.opt:2687
  #, no-c-format
  msgid "-frandom-seed=<string>\tMake compile reproducible using <string>."
  msgstr ""
  
! #: common.opt:2697
  #, no-c-format
  msgid "Record gcc command line switches in the object file."
  msgstr ""
  
! #: common.opt:2701
  #, no-c-format
  msgid "Return small aggregates in registers."
  msgstr ""
  
! #: common.opt:2709
  #, no-c-format
  msgid ""
  "Tell DSE that the storage for a C++ object is dead when the constructor "
  "starts and when the destructor finishes."
  msgstr ""
  
! #: common.opt:2723
  #, no-c-format
  msgid ""
  "-flive-patching=[inline-only-static|inline-clone]\tControl IPA optimizations "
--- 16235,16509 ----
  "based CRC."
  msgstr ""
  
! #: common.opt:2480
  #, no-c-format
  msgid "Optimize sibling and tail recursive calls."
  msgstr ""
  
! #: common.opt:2484
  #, no-c-format
  msgid "Insert path profiling code."
  msgstr ""
  
! #: common.opt:2488
  #, no-c-format
  msgid "Perform partial inlining."
  msgstr ""
  
! #: common.opt:2492 common.opt:2496
  #, no-c-format
  msgid "Report on memory allocation before interprocedural optimization."
  msgstr ""
  
! #: common.opt:2500
  #, no-c-format
  msgid "Pack structure members together without holes."
  msgstr ""
  
! #: common.opt:2504
  #, no-c-format
  msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment."
  msgstr ""
  
! #: common.opt:2508
  #, no-c-format
  msgid "Return small aggregates in memory, not registers."
  msgstr ""
  
! #: common.opt:2512
  #, no-c-format
  msgid "Perform loop peeling."
  msgstr ""
  
! #: common.opt:2516
  #, no-c-format
  msgid "Enable machine specific peephole optimizations."
  msgstr ""
  
! #: common.opt:2520
  #, no-c-format
  msgid "Enable an RTL peephole pass before sched2."
  msgstr ""
  
! #: common.opt:2524
  #, no-c-format
  msgid "Generate position-independent code if possible (large mode)."
  msgstr ""
  
! #: common.opt:2528
  #, no-c-format
  msgid ""
  "Generate position-independent code for executables if possible (large mode)."
  msgstr ""
  
! #: common.opt:2532
  #, no-c-format
  msgid "Generate position-independent code if possible (small mode)."
  msgstr ""
  
! #: common.opt:2536
  #, no-c-format
  msgid ""
  "Generate position-independent code for executables if possible (small mode)."
  msgstr ""
  
! #: common.opt:2540
  #, no-c-format
  msgid ""
  "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)."
  msgstr ""
  
! #: common.opt:2544
  #, no-c-format
  msgid "Specify a plugin to load."
  msgstr ""
  
! #: common.opt:2548
  #, no-c-format
  msgid ""
  "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for "
  "plugin <name>."
  msgstr ""
  
! #: common.opt:2552
  #, no-c-format
  msgid "Run predictive commoning optimization."
  msgstr ""
  
! #: common.opt:2556
  #, no-c-format
  msgid "Generate prefetch instructions, if available, for arrays in loops."
  msgstr ""
  
! #: common.opt:2560
  #, no-c-format
  msgid "Enable basic program profiling code."
  msgstr ""
  
! #: common.opt:2564
  #, no-c-format
  msgid "Generate absolute source path names for gcov."
  msgstr ""
  
! #: common.opt:2568
  #, no-c-format
  msgid "Insert arc-based program profiling code."
  msgstr ""
  
! #: common.opt:2572
  #, no-c-format
  msgid "Insert condition coverage profiling code."
  msgstr ""
  
! #: common.opt:2576
  #, no-c-format
  msgid ""
  "Set the top-level directory for storing the profile data. The default is "
  "'pwd'."
  msgstr ""
  
! #: common.opt:2581
  #, no-c-format
  msgid "Select the name for storing the profile note file."
  msgstr ""
  
! #: common.opt:2585
  #, no-c-format
  msgid "Enable correction of flow inconsistent profile data input."
  msgstr ""
  
! #: common.opt:2589
  #, no-c-format
  msgid ""
  "-fprofile-update=[single|atomic|prefer-atomic]\tSet the profile update "
  "method."
  msgstr ""
  
! #: common.opt:2593
  #, no-c-format
  msgid ""
  "Instrument only functions from files whose name matches any of the regular "
  "expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2597
  #, no-c-format
  msgid ""
  "Instrument only functions from files whose name does not match any of the "
  "regular expressions (separated by semi-colons)."
  msgstr ""
  
! #: common.opt:2613
  #, no-c-format
  msgid ""
  "-fprofile-reproducible=[serial|parallel-runs|multithreaded]\tControl level "
  "of reproducibility of profile gathered by -fprofile-generate."
  msgstr ""
  
! #: common.opt:2629
  #, no-c-format
  msgid ""
  "Remove prefix from absolute path before mangling name for -fprofile-"
  "generate= and -fprofile-use=."
  msgstr ""
  
! #: common.opt:2633
  #, no-c-format
  msgid ""
  "-fprofile-prefix-map=<old>=<new>\tMap one directory name to another in GCOV "
  "coverage result."
  msgstr ""
  
! #: common.opt:2637
  #, no-c-format
  msgid ""
  "Enable common options for generating profile info for profile feedback "
  "directed optimizations."
  msgstr ""
  
! #: common.opt:2641
  #, no-c-format
  msgid ""
  "Enable common options for generating profile info for profile feedback "
  "directed optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2645
  #, no-c-format
  msgid ""
  "Register the profile information in the .gcov_info section instead of using "
  "a constructor/destructor."
  msgstr ""
  
! #: common.opt:2649
  #, no-c-format
  msgid ""
  "Register the profile information in the specified section instead of using a "
  "constructor/destructor."
  msgstr ""
  
! #: common.opt:2653
  #, no-c-format
  msgid ""
  "Do not assume that functions never executed during the train run are cold."
  msgstr ""
  
! #: common.opt:2657
  #, no-c-format
  msgid ""
  "Enable common options for performing profile feedback directed optimizations."
  msgstr ""
  
! #: common.opt:2661
  #, no-c-format
  msgid ""
  "Enable common options for performing profile feedback directed "
  "optimizations, and set -fprofile-dir=."
  msgstr ""
  
! #: common.opt:2665
  #, no-c-format
  msgid "Insert code to profile values of expressions."
  msgstr ""
  
! #: common.opt:2669
  #, no-c-format
  msgid "Report on consistency of profile."
  msgstr ""
  
! #: common.opt:2673
  #, no-c-format
  msgid "Enable function reordering that improves code placement."
  msgstr ""
  
! #: common.opt:2677
  #, no-c-format
  msgid "Insert NOP instructions at each function entry."
  msgstr ""
  
! #: common.opt:2684
  #, no-c-format
  msgid "-frandom-seed=<string>\tMake compile reproducible using <string>."
  msgstr ""
  
! #: common.opt:2694
  #, no-c-format
  msgid "Record gcc command line switches in the object file."
  msgstr ""
  
! #: common.opt:2698
  #, no-c-format
  msgid "Return small aggregates in registers."
  msgstr ""
  
! #: common.opt:2706
  #, no-c-format
  msgid ""
  "Tell DSE that the storage for a C++ object is dead when the constructor "
  "starts and when the destructor finishes."
  msgstr ""
  
! #: common.opt:2720
  #, no-c-format
  msgid ""
  "-flive-patching=[inline-only-static|inline-clone]\tControl IPA optimizations "
*************** msgid ""
*** 16506,17025 ****
  "multiple-level control on the enabled IPA optimizations."
  msgstr ""
  
! #: common.opt:2738
  #, no-c-format
  msgid "Tell DCE to remove unused C++ allocations."
  msgstr ""
  
! #: common.opt:2742
  #, no-c-format
  msgid "Relief of register pressure through live range shrinkage."
  msgstr ""
  
! #: common.opt:2746
  #, no-c-format
  msgid "Perform a register renaming optimization pass."
  msgstr ""
  
! #: common.opt:2750
  #, no-c-format
  msgid "Perform a target dependent instruction fusion optimization pass."
  msgstr ""
  
! #: common.opt:2754
  #, no-c-format
  msgid "Reorder basic blocks to improve code placement."
  msgstr ""
  
! #: common.opt:2758
  #, no-c-format
  msgid ""
  "-freorder-blocks-algorithm=[simple|stc]\tSet the used basic block reordering "
  "algorithm."
  msgstr ""
  
! #: common.opt:2771
  #, no-c-format
  msgid "Reorder basic blocks and partition into hot and cold sections."
  msgstr ""
  
! #: common.opt:2775
  #, no-c-format
  msgid "Reorder functions to improve code placement."
  msgstr ""
  
! #: common.opt:2779
  #, no-c-format
  msgid "Add a common subexpression elimination pass after loop optimizations."
  msgstr ""
  
! #: common.opt:2787
  #, no-c-format
  msgid "Disable optimizations that assume default FP rounding behavior."
  msgstr ""
  
! #: common.opt:2791
  #, no-c-format
  msgid "Enable scheduling across basic blocks."
  msgstr ""
  
! #: common.opt:2795
  #, no-c-format
  msgid "Enable register pressure sensitive insn scheduling."
  msgstr ""
  
! #: common.opt:2799
  #, no-c-format
  msgid "Allow speculative motion of non-loads."
  msgstr ""
  
! #: common.opt:2803
  #, no-c-format
  msgid "Allow speculative motion of some loads."
  msgstr ""
  
! #: common.opt:2807
  #, no-c-format
  msgid "Allow speculative motion of more loads."
  msgstr ""
  
! #: common.opt:2811
  #, no-c-format
  msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler."
  msgstr ""
  
! #: common.opt:2815
  #, no-c-format
  msgid "If scheduling post reload, do superblock scheduling."
  msgstr ""
  
! #: common.opt:2823
  #, no-c-format
  msgid "Reschedule instructions before register allocation."
  msgstr ""
  
! #: common.opt:2827
  #, no-c-format
  msgid "Reschedule instructions after register allocation."
  msgstr ""
  
! #: common.opt:2834
  #, no-c-format
  msgid "Schedule instructions using selective scheduling algorithm."
  msgstr ""
  
! #: common.opt:2838
  #, no-c-format
  msgid "Run selective scheduling after reload."
  msgstr ""
  
! #: common.opt:2842
  #, no-c-format
  msgid "Run self-tests, using the given path to locate test files."
  msgstr ""
  
! #: common.opt:2846
  #, no-c-format
  msgid "Perform software pipelining of inner loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2850
  #, no-c-format
  msgid "Perform software pipelining of outer loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2854
  #, no-c-format
  msgid "Reschedule pipelined regions without pipelining."
  msgstr ""
  
! #: common.opt:2858
  #, no-c-format
  msgid ""
  "Allow interposing function (or variables) by ones with different semantics "
  "(or initializer) respectively by dynamic linker."
  msgstr ""
  
! #: common.opt:2864
  #, no-c-format
  msgid "Allow premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2868
  #, no-c-format
  msgid ""
  "-fsched-stalled-insns=<number>\tSet number of queued insns that can be "
  "prematurely scheduled."
  msgstr ""
  
! #: common.opt:2876
  #, no-c-format
  msgid ""
  "Set dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2880
  #, no-c-format
  msgid ""
  "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in "
  "premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2884
  #, no-c-format
  msgid "Enable the group heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2888
  #, no-c-format
  msgid "Enable the critical path heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2892
  #, no-c-format
  msgid "Enable the speculative instruction heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2896
  #, no-c-format
  msgid "Enable the rank heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2900
  #, no-c-format
  msgid "Enable the last instruction heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2904
  #, no-c-format
  msgid "Enable the dependent count heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2908
  #, no-c-format
  msgid "Access data in the same section from shared anchor points."
  msgstr ""
  
! #: common.opt:2920
  #, no-c-format
  msgid "Turn on Redundant Extensions Elimination pass."
  msgstr ""
  
! #: common.opt:2924
  #, no-c-format
  msgid "Show column numbers in diagnostics, when available.  Default on."
  msgstr ""
  
! #: common.opt:2928
  #, no-c-format
  msgid ""
  "Emit function prologues only before parts of the function that need it, "
  "rather than at the top of the function."
  msgstr ""
  
! #: common.opt:2933
  #, no-c-format
  msgid "Shrink-wrap parts of the prologue and epilogue separately."
  msgstr ""
  
! #: common.opt:2937
  #, no-c-format
  msgid "Disable optimizations observable by IEEE signaling NaNs."
  msgstr ""
  
! #: common.opt:2941
  #, no-c-format
  msgid ""
  "Disable floating point optimizations that ignore the IEEE signedness of zero."
  msgstr ""
  
! #: common.opt:2945
  #, no-c-format
  msgid "Convert floating point constants to single precision constants."
  msgstr ""
  
! #: common.opt:2949
  #, no-c-format
  msgid "Split lifetimes of induction variables when loops are unrolled."
  msgstr ""
  
! #: common.opt:2953
  #, no-c-format
  msgid "Generate discontiguous stack frames."
  msgstr ""
  
! #: common.opt:2957
  #, no-c-format
  msgid "Split wide types into independent registers."
  msgstr ""
  
! #: common.opt:2961
  #, no-c-format
  msgid "Split wide types into independent registers earlier."
  msgstr ""
  
! #: common.opt:2965
  #, no-c-format
  msgid "Enable backward propagation of use properties at the SSA level."
  msgstr ""
  
! #: common.opt:2969
  #, no-c-format
  msgid "Optimize conditional patterns using SSA PHI nodes."
  msgstr ""
  
! #: common.opt:2973
  #, no-c-format
  msgid ""
  "Optimize amount of stdarg registers saved to stack at start of function."
  msgstr ""
  
! #: common.opt:2977
  #, no-c-format
  msgid "Apply variable expansion when loops are unrolled."
  msgstr ""
  
! #: common.opt:2981
  #, no-c-format
  msgid ""
  "-fstack-check=[no|generic|specific]\tInsert stack checking code into the "
  "program."
  msgstr ""
  
! #: common.opt:2985
  #, no-c-format
  msgid ""
  "Insert stack checking code into the program.  Same as -fstack-check=specific."
  msgstr ""
  
! #: common.opt:2989
  #, no-c-format
  msgid ""
  "Insert code to probe each page of stack space as it is allocated to protect "
  "from stack-clash style attacks."
  msgstr ""
  
! #: common.opt:2997
  #, no-c-format
  msgid ""
  "-fstack-limit-register=<register>\tTrap if the stack goes past <register>."
  msgstr ""
  
! #: common.opt:3001
  #, no-c-format
  msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>."
  msgstr ""
  
! #: common.opt:3005
  #, no-c-format
  msgid "Use propolice as a stack protection method."
  msgstr ""
  
! #: common.opt:3009
  #, no-c-format
  msgid "Use a stack protection method for every function."
  msgstr ""
  
! #: common.opt:3013
  #, no-c-format
  msgid "Use a smart stack protection method for certain functions."
  msgstr ""
  
! #: common.opt:3017
  #, no-c-format
  msgid ""
  "Use stack protection method only for functions with the stack_protect "
  "attribute."
  msgstr ""
  
! #: common.opt:3021
  #, no-c-format
  msgid "Output stack usage information on a per-function basis."
  msgstr ""
  
! #: common.opt:3033
  #, no-c-format
  msgid "Assume strict aliasing rules apply."
  msgstr ""
  
! #: common.opt:3037
  #, no-c-format
  msgid ""
  "Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer."
  msgstr ""
  
! #: common.opt:3041
  #, no-c-format
  msgid "Disable stack scrub entirely, disregarding strub attributes."
  msgstr ""
  
! #: common.opt:3045
  #, no-c-format
  msgid "Enable stack scrub as per attributes, with strict call checking."
  msgstr ""
  
! #: common.opt:3054
  #, no-c-format
  msgid "Restore default strub mode: as per attributes, with relaxed checking."
  msgstr ""
  
! #: common.opt:3058
  #, no-c-format
  msgid "Enable stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3062
  #, no-c-format
  msgid "Enable at-calls stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3066
  #, no-c-format
  msgid "Enable internal stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3070
  #, no-c-format
  msgid "Implement __atomic operations via libcalls to legacy __sync functions."
  msgstr ""
  
! #: common.opt:3074
  #, no-c-format
  msgid "Check for syntax errors, then stop."
  msgstr ""
  
! #: common.opt:3078
  #, no-c-format
  msgid "Create data files needed by \"gcov\"."
  msgstr ""
  
! #: common.opt:3082
  #, no-c-format
  msgid "Perform jump threading optimizations."
  msgstr ""
  
! #: common.opt:3086
  #, no-c-format
  msgid "Report the time taken by each compiler pass."
  msgstr ""
  
! #: common.opt:3090
  #, no-c-format
  msgid "Record times taken by sub-phases separately."
  msgstr ""
  
! #: common.opt:3094
  #, no-c-format
  msgid ""
  "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the "
  "default thread-local storage code generation model."
  msgstr ""
  
! #: common.opt:3113
  #, no-c-format
  msgid "Reorder top level functions, variables, and asms."
  msgstr ""
  
! #: common.opt:3117
  #, no-c-format
  msgid "Perform superblock formation via tail duplication."
  msgstr ""
  
! #: common.opt:3121
  #, no-c-format
  msgid ""
  "For targets that normally need trampolines for nested functions, always "
  "generate them instead of using descriptors."
  msgstr ""
  
! #: common.opt:3126
  #, no-c-format
  msgid ""
  "Whether trampolines are generated in executable memory rather than "
  "executable stack."
  msgstr ""
  
! #: common.opt:3144
  #, no-c-format
  msgid "Assume floating-point operations can trap."
  msgstr ""
  
! #: common.opt:3148
  #, no-c-format
  msgid "Trap for signed overflow in addition, subtraction and multiplication."
  msgstr ""
  
! #: common.opt:3152
  #, no-c-format
  msgid "Enable SSA-CCP optimization on trees."
  msgstr ""
  
! #: common.opt:3156
  #, no-c-format
  msgid "Enable SSA-BIT-CCP optimization on trees."
  msgstr ""
  
! #: common.opt:3164
  #, no-c-format
  msgid "Enable loop header copying on trees."
  msgstr ""
  
! #: common.opt:3172
  #, no-c-format
  msgid "Enable SSA coalescing of user variables."
  msgstr ""
  
! #: common.opt:3180
  #, no-c-format
  msgid "Enable copy propagation on trees."
  msgstr ""
  
! #: common.opt:3188
  #, no-c-format
  msgid "Transform condition stores into unconditional ones."
  msgstr ""
  
! #: common.opt:3192
  #, no-c-format
  msgid "Perform conversions of switch initializations."
  msgstr ""
  
! #: common.opt:3196
  #, no-c-format
  msgid "Enable SSA dead code elimination optimization on trees."
  msgstr ""
  
! #: common.opt:3200
  #, no-c-format
  msgid "Enable dominator optimizations."
  msgstr ""
  
! #: common.opt:3204
  #, no-c-format
  msgid "Enable tail merging on trees."
  msgstr ""
  
! #: common.opt:3208
  #, no-c-format
  msgid "Enable dead store elimination."
  msgstr ""
  
! #: common.opt:3212
  #, no-c-format
  msgid "Enable forward propagation on trees."
  msgstr ""
  
! #: common.opt:3216
  #, no-c-format
  msgid "Enable Full Redundancy Elimination (FRE) on trees."
  msgstr ""
  
! #: common.opt:3220
  #, no-c-format
  msgid "Enable string length optimizations on trees."
  msgstr ""
  
! #: common.opt:3224
  #, no-c-format
  msgid ""
  "Detect paths that trigger erroneous or undefined behavior due to "
--- 16511,17030 ----
  "multiple-level control on the enabled IPA optimizations."
  msgstr ""
  
! #: common.opt:2735
  #, no-c-format
  msgid "Tell DCE to remove unused C++ allocations."
  msgstr ""
  
! #: common.opt:2739
  #, no-c-format
  msgid "Relief of register pressure through live range shrinkage."
  msgstr ""
  
! #: common.opt:2743
  #, no-c-format
  msgid "Perform a register renaming optimization pass."
  msgstr ""
  
! #: common.opt:2747
  #, no-c-format
  msgid "Perform a target dependent instruction fusion optimization pass."
  msgstr ""
  
! #: common.opt:2751
  #, no-c-format
  msgid "Reorder basic blocks to improve code placement."
  msgstr ""
  
! #: common.opt:2755
  #, no-c-format
  msgid ""
  "-freorder-blocks-algorithm=[simple|stc]\tSet the used basic block reordering "
  "algorithm."
  msgstr ""
  
! #: common.opt:2768
  #, no-c-format
  msgid "Reorder basic blocks and partition into hot and cold sections."
  msgstr ""
  
! #: common.opt:2772
  #, no-c-format
  msgid "Reorder functions to improve code placement."
  msgstr ""
  
! #: common.opt:2776
  #, no-c-format
  msgid "Add a common subexpression elimination pass after loop optimizations."
  msgstr ""
  
! #: common.opt:2784
  #, no-c-format
  msgid "Disable optimizations that assume default FP rounding behavior."
  msgstr ""
  
! #: common.opt:2788
  #, no-c-format
  msgid "Enable scheduling across basic blocks."
  msgstr ""
  
! #: common.opt:2792
  #, no-c-format
  msgid "Enable register pressure sensitive insn scheduling."
  msgstr ""
  
! #: common.opt:2796
  #, no-c-format
  msgid "Allow speculative motion of non-loads."
  msgstr ""
  
! #: common.opt:2800
  #, no-c-format
  msgid "Allow speculative motion of some loads."
  msgstr ""
  
! #: common.opt:2804
  #, no-c-format
  msgid "Allow speculative motion of more loads."
  msgstr ""
  
! #: common.opt:2808
  #, no-c-format
  msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler."
  msgstr ""
  
! #: common.opt:2812
  #, no-c-format
  msgid "If scheduling post reload, do superblock scheduling."
  msgstr ""
  
! #: common.opt:2820
  #, no-c-format
  msgid "Reschedule instructions before register allocation."
  msgstr ""
  
! #: common.opt:2824
  #, no-c-format
  msgid "Reschedule instructions after register allocation."
  msgstr ""
  
! #: common.opt:2831
  #, no-c-format
  msgid "Schedule instructions using selective scheduling algorithm."
  msgstr ""
  
! #: common.opt:2835
  #, no-c-format
  msgid "Run selective scheduling after reload."
  msgstr ""
  
! #: common.opt:2839
  #, no-c-format
  msgid "Run self-tests, using the given path to locate test files."
  msgstr ""
  
! #: common.opt:2843
  #, no-c-format
  msgid "Perform software pipelining of inner loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2847
  #, no-c-format
  msgid "Perform software pipelining of outer loops during selective scheduling."
  msgstr ""
  
! #: common.opt:2851
  #, no-c-format
  msgid "Reschedule pipelined regions without pipelining."
  msgstr ""
  
! #: common.opt:2855
  #, no-c-format
  msgid ""
  "Allow interposing function (or variables) by ones with different semantics "
  "(or initializer) respectively by dynamic linker."
  msgstr ""
  
! #: common.opt:2861
  #, no-c-format
  msgid "Allow premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2865
  #, no-c-format
  msgid ""
  "-fsched-stalled-insns=<number>\tSet number of queued insns that can be "
  "prematurely scheduled."
  msgstr ""
  
! #: common.opt:2873
  #, no-c-format
  msgid ""
  "Set dependence distance checking in premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2877
  #, no-c-format
  msgid ""
  "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in "
  "premature scheduling of queued insns."
  msgstr ""
  
! #: common.opt:2881
  #, no-c-format
  msgid "Enable the group heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2885
  #, no-c-format
  msgid "Enable the critical path heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2889
  #, no-c-format
  msgid "Enable the speculative instruction heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2893
  #, no-c-format
  msgid "Enable the rank heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2897
  #, no-c-format
  msgid "Enable the last instruction heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2901
  #, no-c-format
  msgid "Enable the dependent count heuristic in the scheduler."
  msgstr ""
  
! #: common.opt:2905
  #, no-c-format
  msgid "Access data in the same section from shared anchor points."
  msgstr ""
  
! #: common.opt:2917
  #, no-c-format
  msgid "Turn on Redundant Extensions Elimination pass."
  msgstr ""
  
! #: common.opt:2921
  #, no-c-format
  msgid "Show column numbers in diagnostics, when available.  Default on."
  msgstr ""
  
! #: common.opt:2925
  #, no-c-format
  msgid ""
  "Emit function prologues only before parts of the function that need it, "
  "rather than at the top of the function."
  msgstr ""
  
! #: common.opt:2930
  #, no-c-format
  msgid "Shrink-wrap parts of the prologue and epilogue separately."
  msgstr ""
  
! #: common.opt:2934
  #, no-c-format
  msgid "Disable optimizations observable by IEEE signaling NaNs."
  msgstr ""
  
! #: common.opt:2938
  #, no-c-format
  msgid ""
  "Disable floating point optimizations that ignore the IEEE signedness of zero."
  msgstr ""
  
! #: common.opt:2942
  #, no-c-format
  msgid "Convert floating point constants to single precision constants."
  msgstr ""
  
! #: common.opt:2946
  #, no-c-format
  msgid "Split lifetimes of induction variables when loops are unrolled."
  msgstr ""
  
! #: common.opt:2950
  #, no-c-format
  msgid "Generate discontiguous stack frames."
  msgstr ""
  
! #: common.opt:2954
  #, no-c-format
  msgid "Split wide types into independent registers."
  msgstr ""
  
! #: common.opt:2958
  #, no-c-format
  msgid "Split wide types into independent registers earlier."
  msgstr ""
  
! #: common.opt:2962
  #, no-c-format
  msgid "Enable backward propagation of use properties at the SSA level."
  msgstr ""
  
! #: common.opt:2966
  #, no-c-format
  msgid "Optimize conditional patterns using SSA PHI nodes."
  msgstr ""
  
! #: common.opt:2970
  #, no-c-format
  msgid ""
  "Optimize amount of stdarg registers saved to stack at start of function."
  msgstr ""
  
! #: common.opt:2974
  #, no-c-format
  msgid "Apply variable expansion when loops are unrolled."
  msgstr ""
  
! #: common.opt:2978
  #, no-c-format
  msgid ""
  "-fstack-check=[no|generic|specific]\tInsert stack checking code into the "
  "program."
  msgstr ""
  
! #: common.opt:2982
  #, no-c-format
  msgid ""
  "Insert stack checking code into the program.  Same as -fstack-check=specific."
  msgstr ""
  
! #: common.opt:2986
  #, no-c-format
  msgid ""
  "Insert code to probe each page of stack space as it is allocated to protect "
  "from stack-clash style attacks."
  msgstr ""
  
! #: common.opt:2994
  #, no-c-format
  msgid ""
  "-fstack-limit-register=<register>\tTrap if the stack goes past <register>."
  msgstr ""
  
! #: common.opt:2998
  #, no-c-format
  msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>."
  msgstr ""
  
! #: common.opt:3002
  #, no-c-format
  msgid "Use propolice as a stack protection method."
  msgstr ""
  
! #: common.opt:3006
  #, no-c-format
  msgid "Use a stack protection method for every function."
  msgstr ""
  
! #: common.opt:3010
  #, no-c-format
  msgid "Use a smart stack protection method for certain functions."
  msgstr ""
  
! #: common.opt:3014
  #, no-c-format
  msgid ""
  "Use stack protection method only for functions with the stack_protect "
  "attribute."
  msgstr ""
  
! #: common.opt:3018
  #, no-c-format
  msgid "Output stack usage information on a per-function basis."
  msgstr ""
  
! #: common.opt:3030
  #, no-c-format
  msgid "Assume strict aliasing rules apply."
  msgstr ""
  
! #: common.opt:3034
  #, no-c-format
  msgid ""
  "Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer."
  msgstr ""
  
! #: common.opt:3038
  #, no-c-format
  msgid "Disable stack scrub entirely, disregarding strub attributes."
  msgstr ""
  
! #: common.opt:3042
  #, no-c-format
  msgid "Enable stack scrub as per attributes, with strict call checking."
  msgstr ""
  
! #: common.opt:3051
  #, no-c-format
  msgid "Restore default strub mode: as per attributes, with relaxed checking."
  msgstr ""
  
! #: common.opt:3055
  #, no-c-format
  msgid "Enable stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3059
  #, no-c-format
  msgid "Enable at-calls stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3063
  #, no-c-format
  msgid "Enable internal stack scrubbing for all viable functions."
  msgstr ""
  
! #: common.opt:3067
  #, no-c-format
  msgid "Implement __atomic operations via libcalls to legacy __sync functions."
  msgstr ""
  
! #: common.opt:3071
  #, no-c-format
  msgid "Check for syntax errors, then stop."
  msgstr ""
  
! #: common.opt:3075
  #, no-c-format
  msgid "Create data files needed by \"gcov\"."
  msgstr ""
  
! #: common.opt:3079
  #, no-c-format
  msgid "Perform jump threading optimizations."
  msgstr ""
  
! #: common.opt:3083
  #, no-c-format
  msgid "Report the time taken by each compiler pass."
  msgstr ""
  
! #: common.opt:3087
  #, no-c-format
  msgid "Record times taken by sub-phases separately."
  msgstr ""
  
! #: common.opt:3091
  #, no-c-format
  msgid ""
  "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the "
  "default thread-local storage code generation model."
  msgstr ""
  
! #: common.opt:3110
  #, no-c-format
  msgid "Reorder top level functions, variables, and asms."
  msgstr ""
  
! #: common.opt:3114
  #, no-c-format
  msgid "Perform superblock formation via tail duplication."
  msgstr ""
  
! #: common.opt:3118
  #, no-c-format
  msgid ""
  "For targets that normally need trampolines for nested functions, always "
  "generate them instead of using descriptors."
  msgstr ""
  
! #: common.opt:3123
  #, no-c-format
  msgid ""
  "Whether trampolines are generated in executable memory rather than "
  "executable stack."
  msgstr ""
  
! #: common.opt:3141
  #, no-c-format
  msgid "Assume floating-point operations can trap."
  msgstr ""
  
! #: common.opt:3145
  #, no-c-format
  msgid "Trap for signed overflow in addition, subtraction and multiplication."
  msgstr ""
  
! #: common.opt:3149
  #, no-c-format
  msgid "Enable SSA-CCP optimization on trees."
  msgstr ""
  
! #: common.opt:3153
  #, no-c-format
  msgid "Enable SSA-BIT-CCP optimization on trees."
  msgstr ""
  
! #: common.opt:3161
  #, no-c-format
  msgid "Enable loop header copying on trees."
  msgstr ""
  
! #: common.opt:3169
  #, no-c-format
  msgid "Enable SSA coalescing of user variables."
  msgstr ""
  
! #: common.opt:3177
  #, no-c-format
  msgid "Enable copy propagation on trees."
  msgstr ""
  
! #: common.opt:3185
  #, no-c-format
  msgid "Transform condition stores into unconditional ones."
  msgstr ""
  
! #: common.opt:3189
  #, no-c-format
  msgid "Perform conversions of switch initializations."
  msgstr ""
  
! #: common.opt:3193
  #, no-c-format
  msgid "Enable SSA dead code elimination optimization on trees."
  msgstr ""
  
! #: common.opt:3197
  #, no-c-format
  msgid "Enable dominator optimizations."
  msgstr ""
  
! #: common.opt:3201
  #, no-c-format
  msgid "Enable tail merging on trees."
  msgstr ""
  
! #: common.opt:3205
  #, no-c-format
  msgid "Enable dead store elimination."
  msgstr ""
  
! #: common.opt:3209
  #, no-c-format
  msgid "Enable forward propagation on trees."
  msgstr ""
  
! #: common.opt:3213
  #, no-c-format
  msgid "Enable Full Redundancy Elimination (FRE) on trees."
  msgstr ""
  
! #: common.opt:3217
  #, no-c-format
  msgid "Enable string length optimizations on trees."
  msgstr ""
  
! #: common.opt:3221
  #, no-c-format
  msgid ""
  "Detect paths that trigger erroneous or undefined behavior due to "
*************** msgid ""
*** 17027,17033 ****
  "flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3230
  #, no-c-format
  msgid ""
  "Detect paths that trigger erroneous or undefined behavior due to a null "
--- 17032,17038 ----
  "flow and turn the statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3227
  #, no-c-format
  msgid ""
  "Detect paths that trigger erroneous or undefined behavior due to a null "
*************** msgid ""
*** 17036,17573 ****
  "statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3237
  #, no-c-format
  msgid "Enable loop distribution on trees."
  msgstr ""
  
! #: common.opt:3241
  #, no-c-format
  msgid "Enable loop distribution for patterns transformed into a library call."
  msgstr ""
  
! #: common.opt:3245
  #, no-c-format
  msgid "Enable loop invariant motion on trees."
  msgstr ""
  
! #: common.opt:3253
  #, no-c-format
  msgid "Create canonical induction variables in loops."
  msgstr ""
  
! #: common.opt:3257
  #, no-c-format
  msgid "Enable loop optimizations on tree level."
  msgstr ""
  
! #: common.opt:3261
  #, no-c-format
  msgid ""
  "-ftree-parallelize-loops=<number>\tEnable automatic parallelization of loops."
  msgstr ""
  
! #: common.opt:3265
  #, no-c-format
  msgid "Enable hoisting loads from conditional pointers."
  msgstr ""
  
! #: common.opt:3269
  #, no-c-format
  msgid "Enable SSA-PRE optimization on trees."
  msgstr ""
  
! #: common.opt:3273
  #, no-c-format
  msgid ""
  "In SSA-PRE optimization on trees, enable partial-partial redundancy "
  "elimination."
  msgstr ""
  
! #: common.opt:3277
  #, no-c-format
  msgid "Perform function-local points-to analysis on trees."
  msgstr ""
  
! #: common.opt:3281
  #, no-c-format
  msgid "Enable reassociation on tree level."
  msgstr ""
  
! #: common.opt:3289
  #, no-c-format
  msgid "Enable SSA code sinking on trees."
  msgstr ""
  
! #: common.opt:3293
  #, no-c-format
  msgid "Perform straight-line strength reduction."
  msgstr ""
  
! #: common.opt:3297
  #, no-c-format
  msgid "Perform scalar replacement of aggregates."
  msgstr ""
  
! #: common.opt:3301
  #, no-c-format
  msgid "Replace temporary expressions in the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3305
  #, no-c-format
  msgid "Perform live range splitting during the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3309
  #, no-c-format
  msgid "Perform Value Range Propagation on trees."
  msgstr ""
  
! #: common.opt:3313
  #, no-c-format
  msgid "Split paths leading to loop backedges."
  msgstr ""
  
! #: common.opt:3317
  #, no-c-format
  msgid ""
  "Assume common declarations may be overridden with ones with a larger "
  "trailing array."
  msgstr ""
  
! #: common.opt:3322
  #, no-c-format
  msgid "Compile whole compilation unit at a time."
  msgstr ""
  
! #: common.opt:3326
  #, no-c-format
  msgid "Trap on __builtin_unreachable instead of using it for optimization."
  msgstr ""
  
! #: common.opt:3330
  #, no-c-format
  msgid "Perform loop unrolling when iteration count is known."
  msgstr ""
  
! #: common.opt:3334
  #, no-c-format
  msgid "Perform loop unrolling for all loops."
  msgstr ""
  
! #: common.opt:3349
  #, no-c-format
  msgid ""
  "Allow optimization for floating-point arithmetic which may change the result "
  "of the operation due to rounding."
  msgstr ""
  
! #: common.opt:3354
  #, no-c-format
  msgid "Same as -fassociative-math for expressions which include division."
  msgstr ""
  
! #: common.opt:3362
  #, no-c-format
  msgid "Allow math optimizations that may violate IEEE or ISO standards."
  msgstr ""
  
! #: common.opt:3366
  #, no-c-format
  msgid "Perform loop unswitching."
  msgstr ""
  
! #: common.opt:3370
  #, no-c-format
  msgid "Perform loop splitting."
  msgstr ""
  
! #: common.opt:3374
  #, no-c-format
  msgid "Version loops based on whether indices have a stride of one."
  msgstr ""
  
! #: common.opt:3378
  #, no-c-format
  msgid "Just generate unwind tables for exception handling."
  msgstr ""
  
! #: common.opt:3382
  #, no-c-format
  msgid "Use the bfd linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3386
  #, no-c-format
  msgid "Use the gold linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3390
  #, no-c-format
  msgid "Use the lld LLVM linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3394
  #, no-c-format
  msgid "Use the Modern linker (MOLD) linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3404
  #, no-c-format
  msgid "Perform variable tracking."
  msgstr ""
  
! #: common.opt:3411
  #, no-c-format
  msgid "Perform variable tracking by annotating assignments."
  msgstr ""
  
! #: common.opt:3417
  #, no-c-format
  msgid "Toggle -fvar-tracking-assignments."
  msgstr ""
  
! #: common.opt:3424
  #, no-c-format
  msgid ""
  "Perform variable tracking and also tag variables that are uninitialized."
  msgstr ""
  
! #: common.opt:3429
  #, no-c-format
  msgid "Enable vectorization on trees."
  msgstr ""
  
! #: common.opt:3437
  #, no-c-format
  msgid "Enable loop vectorization on trees."
  msgstr ""
  
! #: common.opt:3441
  #, no-c-format
  msgid "Enable basic block vectorization (SLP) on trees."
  msgstr ""
  
! #: common.opt:3445
  #, no-c-format
  msgid ""
  "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the cost "
  "model for vectorization."
  msgstr ""
  
! #: common.opt:3449
  #, no-c-format
  msgid ""
  "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the "
  "vectorization cost model for code marked with a simd directive."
  msgstr ""
  
! #: common.opt:3468
  #, no-c-format
  msgid ""
  "Enables the dynamic vectorizer cost model.  Preserved for backward "
  "compatibility."
  msgstr ""
  
! #: common.opt:3476
  #, no-c-format
  msgid "Enable copy propagation of scalar-evolution information."
  msgstr ""
  
! #: common.opt:3480
  #, no-c-format
  msgid ""
  "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAdd initializations to "
  "automatic variables."
  msgstr ""
  
! #: common.opt:3502
  #, no-c-format
  msgid "Add extra commentary to assembler output."
  msgstr ""
  
! #: common.opt:3506
  #, no-c-format
  msgid ""
  "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol "
  "visibility."
  msgstr ""
  
! #: common.opt:3525
  #, no-c-format
  msgid "Validate vtable pointers before using them."
  msgstr ""
  
! #: common.opt:3541
  #, no-c-format
  msgid "Output vtable verification counters."
  msgstr ""
  
! #: common.opt:3545
  #, no-c-format
  msgid "Output vtable verification pointer sets information."
  msgstr ""
  
! #: common.opt:3549
  #, no-c-format
  msgid "Use expression value profiles in optimizations."
  msgstr ""
  
! #: common.opt:3553
  #, no-c-format
  msgid "Construct webs and split unrelated uses of single variable."
  msgstr ""
  
! #: common.opt:3557
  #, no-c-format
  msgid "Enable conditional dead code elimination for builtin calls."
  msgstr ""
  
! #: common.opt:3561
  #, no-c-format
  msgid "Perform whole program optimizations."
  msgstr ""
  
! #: common.opt:3565
  #, no-c-format
  msgid "Assume pointer overflow wraps around."
  msgstr ""
  
! #: common.opt:3569
  #, no-c-format
  msgid "Assume signed arithmetic overflow wraps around."
  msgstr ""
  
! #: common.opt:3573
  #, no-c-format
  msgid "Put zero initialized data in the bss section."
  msgstr ""
  
! #: common.opt:3577
  #, no-c-format
  msgid "Clear call-used registers upon function return."
  msgstr ""
  
! #: common.opt:3581
  #, no-c-format
  msgid ""
  "-fzero-init-padding-bits=[standard|unions|all]\tZero padding bits in "
  "initializers."
  msgstr ""
  
! #: common.opt:3597
  #, no-c-format
  msgid "Generate debug information in default format."
  msgstr ""
  
! #: common.opt:3601
  #, no-c-format
  msgid "Assume assembler support for (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3605
  #, no-c-format
  msgid "Assume assembler support for view in (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3609
  #, no-c-format
  msgid "Generate debug information in CodeView format."
  msgstr ""
  
! #: common.opt:3629
  #, no-c-format
  msgid "Record DW_AT_decl_column and DW_AT_call_column in DWARF."
  msgstr ""
  
! #: common.opt:3635
  #, no-c-format
  msgid "Generate CTF debug information at default level."
  msgstr ""
  
! #: common.opt:3639
  #, no-c-format
  msgid "Generate BTF debug information at default level."
  msgstr ""
  
! #: common.opt:3643
  #, no-c-format
  msgid "Generate pruned BTF when emitting BTF info."
  msgstr ""
  
! #: common.opt:3647
  #, no-c-format
  msgid "Generate debug information in default version of DWARF format."
  msgstr ""
  
! #: common.opt:3651
  #, no-c-format
  msgid "Generate debug information in DWARF v2 (or later) format."
  msgstr ""
  
! #: common.opt:3655
  #, no-c-format
  msgid "Use 32-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3659
  #, no-c-format
  msgid "Use 64-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3663
  #, no-c-format
  msgid "Generate debug information in default extended format."
  msgstr ""
  
! #: common.opt:3667
  #, no-c-format
  msgid "Generate extended entry point information for inlined functions."
  msgstr ""
  
! #: common.opt:3671
  #, no-c-format
  msgid "Compute locview reset points based on insn length estimates."
  msgstr ""
  
! #: common.opt:3679
  #, no-c-format
  msgid "Don't generate DWARF pubnames and pubtypes sections."
  msgstr ""
  
! #: common.opt:3683
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections."
  msgstr ""
  
! #: common.opt:3687
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions."
  msgstr ""
  
! #: common.opt:3691
  #, no-c-format
  msgid "Record gcc command line switches in DWARF DW_AT_producer."
  msgstr ""
  
! #: common.opt:3695
  #, no-c-format
  msgid "Generate debug information in separate .dwo files."
  msgstr ""
  
! #: common.opt:3707
  #, no-c-format
  msgid "Emit progressive recommended breakpoint locations."
  msgstr ""
  
! #: common.opt:3711
  #, no-c-format
  msgid "Don't emit DWARF additions beyond selected version."
  msgstr ""
  
! #: common.opt:3715
  #, no-c-format
  msgid ""
  "Add description attributes to some DWARF DIEs that have no name attribute."
  msgstr ""
  
! #: common.opt:3719
  #, no-c-format
  msgid "Toggle debug information generation."
  msgstr ""
  
! #: common.opt:3723
  #, no-c-format
  msgid "Augment variable location lists with progressive views."
  msgstr ""
  
! #: common.opt:3730
  #, no-c-format
  msgid "Generate debug information in VMS format."
  msgstr ""
  
! #: common.opt:3759
  #, no-c-format
  msgid "Generate compressed debug sections."
  msgstr ""
  
! #: common.opt:3763
  #, no-c-format
  msgid "-gz=<format>\tGenerate compressed debug sections in format <format>."
  msgstr ""
  
! #: common.opt:3770
  #, no-c-format
  msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory."
  msgstr ""
  
! #: common.opt:3774
  #, no-c-format
  msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory."
  msgstr ""
  
! #: common.opt:3802
  #, no-c-format
  msgid "-o <file>\tPlace output into <file>."
  msgstr ""
  
! #: common.opt:3806
  #, no-c-format
  msgid "Enable function profiling."
  msgstr ""
  
! #: common.opt:3816
  #, no-c-format
  msgid "Like -pedantic but issue errors instead of warnings."
  msgstr ""
  
! #: common.opt:3856
  #, no-c-format
  msgid "Do not display functions compiled or elapsed time."
  msgstr ""
  
! #: common.opt:3888
  #, no-c-format
  msgid "Enable verbose output."
  msgstr ""
  
! #: common.opt:3892
  #, no-c-format
  msgid "Display the compiler's version."
  msgstr ""
  
! #: common.opt:3896
  #, no-c-format
  msgid "Suppress warnings."
  msgstr ""
  
! #: common.opt:3906
  #, no-c-format
  msgid "Create a shared library."
  msgstr ""
  
! #: common.opt:3970
  #, no-c-format
  msgid "Don't create a dynamically linked position independent executable."
  msgstr ""
  
! #: common.opt:3974
  #, no-c-format
  msgid "Create a dynamically linked position independent executable."
  msgstr ""
  
! #: common.opt:3978
  #, no-c-format
  msgid "Create a static position independent executable."
  msgstr ""
  
! #: common.opt:3985
  #, no-c-format
  msgid "Use caller save register across calls if possible."
  msgstr ""
  
! #: common.opt:3989
  #, no-c-format
  msgid ""
  "Perform dead code elimination on zero and sign extensions with special "
--- 17041,17578 ----
  "statement with erroneous or undefined behavior into a trap."
  msgstr ""
  
! #: common.opt:3234
  #, no-c-format
  msgid "Enable loop distribution on trees."
  msgstr ""
  
! #: common.opt:3238
  #, no-c-format
  msgid "Enable loop distribution for patterns transformed into a library call."
  msgstr ""
  
! #: common.opt:3242
  #, no-c-format
  msgid "Enable loop invariant motion on trees."
  msgstr ""
  
! #: common.opt:3250
  #, no-c-format
  msgid "Create canonical induction variables in loops."
  msgstr ""
  
! #: common.opt:3254
  #, no-c-format
  msgid "Enable loop optimizations on tree level."
  msgstr ""
  
! #: common.opt:3258
  #, no-c-format
  msgid ""
  "-ftree-parallelize-loops=<number>\tEnable automatic parallelization of loops."
  msgstr ""
  
! #: common.opt:3262
  #, no-c-format
  msgid "Enable hoisting loads from conditional pointers."
  msgstr ""
  
! #: common.opt:3266
  #, no-c-format
  msgid "Enable SSA-PRE optimization on trees."
  msgstr ""
  
! #: common.opt:3270
  #, no-c-format
  msgid ""
  "In SSA-PRE optimization on trees, enable partial-partial redundancy "
  "elimination."
  msgstr ""
  
! #: common.opt:3274
  #, no-c-format
  msgid "Perform function-local points-to analysis on trees."
  msgstr ""
  
! #: common.opt:3278
  #, no-c-format
  msgid "Enable reassociation on tree level."
  msgstr ""
  
! #: common.opt:3286
  #, no-c-format
  msgid "Enable SSA code sinking on trees."
  msgstr ""
  
! #: common.opt:3290
  #, no-c-format
  msgid "Perform straight-line strength reduction."
  msgstr ""
  
! #: common.opt:3294
  #, no-c-format
  msgid "Perform scalar replacement of aggregates."
  msgstr ""
  
! #: common.opt:3298
  #, no-c-format
  msgid "Replace temporary expressions in the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3302
  #, no-c-format
  msgid "Perform live range splitting during the SSA->normal pass."
  msgstr ""
  
! #: common.opt:3306
  #, no-c-format
  msgid "Perform Value Range Propagation on trees."
  msgstr ""
  
! #: common.opt:3310
  #, no-c-format
  msgid "Split paths leading to loop backedges."
  msgstr ""
  
! #: common.opt:3314
  #, no-c-format
  msgid ""
  "Assume common declarations may be overridden with ones with a larger "
  "trailing array."
  msgstr ""
  
! #: common.opt:3319
  #, no-c-format
  msgid "Compile whole compilation unit at a time."
  msgstr ""
  
! #: common.opt:3323
  #, no-c-format
  msgid "Trap on __builtin_unreachable instead of using it for optimization."
  msgstr ""
  
! #: common.opt:3327
  #, no-c-format
  msgid "Perform loop unrolling when iteration count is known."
  msgstr ""
  
! #: common.opt:3331
  #, no-c-format
  msgid "Perform loop unrolling for all loops."
  msgstr ""
  
! #: common.opt:3346
  #, no-c-format
  msgid ""
  "Allow optimization for floating-point arithmetic which may change the result "
  "of the operation due to rounding."
  msgstr ""
  
! #: common.opt:3351
  #, no-c-format
  msgid "Same as -fassociative-math for expressions which include division."
  msgstr ""
  
! #: common.opt:3359
  #, no-c-format
  msgid "Allow math optimizations that may violate IEEE or ISO standards."
  msgstr ""
  
! #: common.opt:3363
  #, no-c-format
  msgid "Perform loop unswitching."
  msgstr ""
  
! #: common.opt:3367
  #, no-c-format
  msgid "Perform loop splitting."
  msgstr ""
  
! #: common.opt:3371
  #, no-c-format
  msgid "Version loops based on whether indices have a stride of one."
  msgstr ""
  
! #: common.opt:3375
  #, no-c-format
  msgid "Just generate unwind tables for exception handling."
  msgstr ""
  
! #: common.opt:3379
  #, no-c-format
  msgid "Use the bfd linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3383
  #, no-c-format
  msgid "Use the gold linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3387
  #, no-c-format
  msgid "Use the lld LLVM linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3391
  #, no-c-format
  msgid "Use the Modern linker (MOLD) linker instead of the default linker."
  msgstr ""
  
! #: common.opt:3401
  #, no-c-format
  msgid "Perform variable tracking."
  msgstr ""
  
! #: common.opt:3408
  #, no-c-format
  msgid "Perform variable tracking by annotating assignments."
  msgstr ""
  
! #: common.opt:3414
  #, no-c-format
  msgid "Toggle -fvar-tracking-assignments."
  msgstr ""
  
! #: common.opt:3421
  #, no-c-format
  msgid ""
  "Perform variable tracking and also tag variables that are uninitialized."
  msgstr ""
  
! #: common.opt:3426
  #, no-c-format
  msgid "Enable vectorization on trees."
  msgstr ""
  
! #: common.opt:3434
  #, no-c-format
  msgid "Enable loop vectorization on trees."
  msgstr ""
  
! #: common.opt:3438
  #, no-c-format
  msgid "Enable basic block vectorization (SLP) on trees."
  msgstr ""
  
! #: common.opt:3442
  #, no-c-format
  msgid ""
  "-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the cost "
  "model for vectorization."
  msgstr ""
  
! #: common.opt:3446
  #, no-c-format
  msgid ""
  "-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap]\tSpecifies the "
  "vectorization cost model for code marked with a simd directive."
  msgstr ""
  
! #: common.opt:3465
  #, no-c-format
  msgid ""
  "Enables the dynamic vectorizer cost model.  Preserved for backward "
  "compatibility."
  msgstr ""
  
! #: common.opt:3473
  #, no-c-format
  msgid "Enable copy propagation of scalar-evolution information."
  msgstr ""
  
! #: common.opt:3477
  #, no-c-format
  msgid ""
  "-ftrivial-auto-var-init=[uninitialized|pattern|zero]\tAdd initializations to "
  "automatic variables."
  msgstr ""
  
! #: common.opt:3499
  #, no-c-format
  msgid "Add extra commentary to assembler output."
  msgstr ""
  
! #: common.opt:3503
  #, no-c-format
  msgid ""
  "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol "
  "visibility."
  msgstr ""
  
! #: common.opt:3522
  #, no-c-format
  msgid "Validate vtable pointers before using them."
  msgstr ""
  
! #: common.opt:3538
  #, no-c-format
  msgid "Output vtable verification counters."
  msgstr ""
  
! #: common.opt:3542
  #, no-c-format
  msgid "Output vtable verification pointer sets information."
  msgstr ""
  
! #: common.opt:3546
  #, no-c-format
  msgid "Use expression value profiles in optimizations."
  msgstr ""
  
! #: common.opt:3550
  #, no-c-format
  msgid "Construct webs and split unrelated uses of single variable."
  msgstr ""
  
! #: common.opt:3554
  #, no-c-format
  msgid "Enable conditional dead code elimination for builtin calls."
  msgstr ""
  
! #: common.opt:3558
  #, no-c-format
  msgid "Perform whole program optimizations."
  msgstr ""
  
! #: common.opt:3562
  #, no-c-format
  msgid "Assume pointer overflow wraps around."
  msgstr ""
  
! #: common.opt:3566
  #, no-c-format
  msgid "Assume signed arithmetic overflow wraps around."
  msgstr ""
  
! #: common.opt:3570
  #, no-c-format
  msgid "Put zero initialized data in the bss section."
  msgstr ""
  
! #: common.opt:3574
  #, no-c-format
  msgid "Clear call-used registers upon function return."
  msgstr ""
  
! #: common.opt:3578
  #, no-c-format
  msgid ""
  "-fzero-init-padding-bits=[standard|unions|all]\tZero padding bits in "
  "initializers."
  msgstr ""
  
! #: common.opt:3594
  #, no-c-format
  msgid "Generate debug information in default format."
  msgstr ""
  
! #: common.opt:3598
  #, no-c-format
  msgid "Assume assembler support for (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3602
  #, no-c-format
  msgid "Assume assembler support for view in (DWARF2+) .loc directives."
  msgstr ""
  
! #: common.opt:3606
  #, no-c-format
  msgid "Generate debug information in CodeView format."
  msgstr ""
  
! #: common.opt:3626
  #, no-c-format
  msgid "Record DW_AT_decl_column and DW_AT_call_column in DWARF."
  msgstr ""
  
! #: common.opt:3632
  #, no-c-format
  msgid "Generate CTF debug information at default level."
  msgstr ""
  
! #: common.opt:3636
  #, no-c-format
  msgid "Generate BTF debug information at default level."
  msgstr ""
  
! #: common.opt:3640
  #, no-c-format
  msgid "Generate pruned BTF when emitting BTF info."
  msgstr ""
  
! #: common.opt:3644
  #, no-c-format
  msgid "Generate debug information in default version of DWARF format."
  msgstr ""
  
! #: common.opt:3648
  #, no-c-format
  msgid "Generate debug information in DWARF v2 (or later) format."
  msgstr ""
  
! #: common.opt:3652
  #, no-c-format
  msgid "Use 32-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3656
  #, no-c-format
  msgid "Use 64-bit DWARF format when emitting DWARF debug information."
  msgstr ""
  
! #: common.opt:3660
  #, no-c-format
  msgid "Generate debug information in default extended format."
  msgstr ""
  
! #: common.opt:3664
  #, no-c-format
  msgid "Generate extended entry point information for inlined functions."
  msgstr ""
  
! #: common.opt:3668
  #, no-c-format
  msgid "Compute locview reset points based on insn length estimates."
  msgstr ""
  
! #: common.opt:3676
  #, no-c-format
  msgid "Don't generate DWARF pubnames and pubtypes sections."
  msgstr ""
  
! #: common.opt:3680
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections."
  msgstr ""
  
! #: common.opt:3684
  #, no-c-format
  msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions."
  msgstr ""
  
! #: common.opt:3688
  #, no-c-format
  msgid "Record gcc command line switches in DWARF DW_AT_producer."
  msgstr ""
  
! #: common.opt:3692
  #, no-c-format
  msgid "Generate debug information in separate .dwo files."
  msgstr ""
  
! #: common.opt:3704
  #, no-c-format
  msgid "Emit progressive recommended breakpoint locations."
  msgstr ""
  
! #: common.opt:3708
  #, no-c-format
  msgid "Don't emit DWARF additions beyond selected version."
  msgstr ""
  
! #: common.opt:3712
  #, no-c-format
  msgid ""
  "Add description attributes to some DWARF DIEs that have no name attribute."
  msgstr ""
  
! #: common.opt:3716
  #, no-c-format
  msgid "Toggle debug information generation."
  msgstr ""
  
! #: common.opt:3720
  #, no-c-format
  msgid "Augment variable location lists with progressive views."
  msgstr ""
  
! #: common.opt:3727
  #, no-c-format
  msgid "Generate debug information in VMS format."
  msgstr ""
  
! #: common.opt:3756
  #, no-c-format
  msgid "Generate compressed debug sections."
  msgstr ""
  
! #: common.opt:3760
  #, no-c-format
  msgid "-gz=<format>\tGenerate compressed debug sections in format <format>."
  msgstr ""
  
! #: common.opt:3767
  #, no-c-format
  msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory."
  msgstr ""
  
! #: common.opt:3771
  #, no-c-format
  msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory."
  msgstr ""
  
! #: common.opt:3799
  #, no-c-format
  msgid "-o <file>\tPlace output into <file>."
  msgstr ""
  
! #: common.opt:3803
  #, no-c-format
  msgid "Enable function profiling."
  msgstr ""
  
! #: common.opt:3813
  #, no-c-format
  msgid "Like -pedantic but issue errors instead of warnings."
  msgstr ""
  
! #: common.opt:3853
  #, no-c-format
  msgid "Do not display functions compiled or elapsed time."
  msgstr ""
  
! #: common.opt:3885
  #, no-c-format
  msgid "Enable verbose output."
  msgstr ""
  
! #: common.opt:3889
  #, no-c-format
  msgid "Display the compiler's version."
  msgstr ""
  
! #: common.opt:3893
  #, no-c-format
  msgid "Suppress warnings."
  msgstr ""
  
! #: common.opt:3903
  #, no-c-format
  msgid "Create a shared library."
  msgstr ""
  
! #: common.opt:3967
  #, no-c-format
  msgid "Don't create a dynamically linked position independent executable."
  msgstr ""
  
! #: common.opt:3971
  #, no-c-format
  msgid "Create a dynamically linked position independent executable."
  msgstr ""
  
! #: common.opt:3975
  #, no-c-format
  msgid "Create a static position independent executable."
  msgstr ""
  
! #: common.opt:3982
  #, no-c-format
  msgid "Use caller save register across calls if possible."
  msgstr ""
  
! #: common.opt:3986
  #, no-c-format
  msgid ""
  "Perform dead code elimination on zero and sign extensions with special "
*************** msgstr ""
*** 19199,19288 ****
  #: params.opt:1194
  #, no-c-format
  msgid ""
! "Instruction accounted for function prologue, epilogue and other overhead."
  msgstr ""
  
  #: params.opt:1198
  #, no-c-format
! msgid "Time accounted for function prologue, epilogue and other overhead."
  msgstr ""
  
  #: params.opt:1202
  #, no-c-format
! msgid "Instruction accounted for function thunk overhead."
  msgstr ""
  
  #: params.opt:1206
  #, no-c-format
! msgid "Time accounted for function thunk overhead."
  msgstr ""
  
  #: params.opt:1210
  #, no-c-format
  msgid ""
  "The denominator n of fraction 1/n of the number of profiled runs of the "
  "entire program below which the execution count of a basic block must be in "
  "order for the basic block to be considered unlikely."
  msgstr ""
  
! #: params.opt:1214
  #, no-c-format
  msgid "Maximum unroll factor for the unroll-and-jam transformation."
  msgstr ""
  
! #: params.opt:1218
  #, no-c-format
  msgid ""
  "Minimum percentage of memrefs that must go away for unroll-and-jam to be "
  "considered profitable."
  msgstr ""
  
! #: params.opt:1222
  #, no-c-format
  msgid ""
  "Use direct poisoning/unpoisoning instructions for variables smaller or equal "
  "to this number."
  msgstr ""
  
! #: params.opt:1226
  #, no-c-format
  msgid "Whether to use canonical types."
  msgstr ""
  
! #: params.opt:1230
  #, no-c-format
  msgid "Enable loop epilogue vectorization using smaller vector size."
  msgstr ""
  
! #: params.opt:1234
  #, no-c-format
  msgid ""
  "Maximum number of possible vector layouts (such as permutations) to consider "
  "when optimizing to-be-vectorized code."
  msgstr ""
  
! #: params.opt:1238
  #, no-c-format
  msgid ""
  "Maximum number of loop peels to enhance alignment of data references in a "
  "loop."
  msgstr ""
  
! #: params.opt:1242
  #, no-c-format
  msgid ""
  "Bound on number of runtime checks inserted by the vectorizer's loop "
  "versioning for alias check."
  msgstr ""
  
! #: params.opt:1246
  #, no-c-format
  msgid ""
  "Bound on number of runtime checks inserted by the vectorizer's loop "
  "versioning for alignment check."
  msgstr ""
  
! #: params.opt:1250
  #, no-c-format
  msgid ""
  "Controls how loop vectorizer uses partial vectors.  0 means never, 1 means "
--- 19204,19300 ----
  #: params.opt:1194
  #, no-c-format
  msgid ""
! "Maximum amount of work done to prune paths where the variable is always "
! "initialized."
  msgstr ""
  
  #: params.opt:1198
  #, no-c-format
! msgid ""
! "Instruction accounted for function prologue, epilogue and other overhead."
  msgstr ""
  
  #: params.opt:1202
  #, no-c-format
! msgid "Time accounted for function prologue, epilogue and other overhead."
  msgstr ""
  
  #: params.opt:1206
  #, no-c-format
! msgid "Instruction accounted for function thunk overhead."
  msgstr ""
  
  #: params.opt:1210
  #, no-c-format
+ msgid "Time accounted for function thunk overhead."
+ msgstr ""
+ 
+ #: params.opt:1214
+ #, no-c-format
  msgid ""
  "The denominator n of fraction 1/n of the number of profiled runs of the "
  "entire program below which the execution count of a basic block must be in "
  "order for the basic block to be considered unlikely."
  msgstr ""
  
! #: params.opt:1218
  #, no-c-format
  msgid "Maximum unroll factor for the unroll-and-jam transformation."
  msgstr ""
  
! #: params.opt:1222
  #, no-c-format
  msgid ""
  "Minimum percentage of memrefs that must go away for unroll-and-jam to be "
  "considered profitable."
  msgstr ""
  
! #: params.opt:1226
  #, no-c-format
  msgid ""
  "Use direct poisoning/unpoisoning instructions for variables smaller or equal "
  "to this number."
  msgstr ""
  
! #: params.opt:1230
  #, no-c-format
  msgid "Whether to use canonical types."
  msgstr ""
  
! #: params.opt:1234
  #, no-c-format
  msgid "Enable loop epilogue vectorization using smaller vector size."
  msgstr ""
  
! #: params.opt:1238
  #, no-c-format
  msgid ""
  "Maximum number of possible vector layouts (such as permutations) to consider "
  "when optimizing to-be-vectorized code."
  msgstr ""
  
! #: params.opt:1242
  #, no-c-format
  msgid ""
  "Maximum number of loop peels to enhance alignment of data references in a "
  "loop."
  msgstr ""
  
! #: params.opt:1246
  #, no-c-format
  msgid ""
  "Bound on number of runtime checks inserted by the vectorizer's loop "
  "versioning for alias check."
  msgstr ""
  
! #: params.opt:1250
  #, no-c-format
  msgid ""
  "Bound on number of runtime checks inserted by the vectorizer's loop "
  "versioning for alignment check."
  msgstr ""
  
! #: params.opt:1254
  #, no-c-format
  msgid ""
  "Controls how loop vectorizer uses partial vectors.  0 means never, 1 means "
*************** msgid ""
*** 19290,19331 ****
  "The default value is 2."
  msgstr ""
  
! #: params.opt:1254
  #, no-c-format
  msgid ""
  "The maximum factor which the loop vectorizer applies to the cost of "
  "statements in an inner loop relative to the loop being vectorized."
  msgstr ""
  
! #: params.opt:1258
  #, no-c-format
  msgid "Enable loop vectorization of floating point inductions."
  msgstr ""
  
! #: params.opt:1262
  #, no-c-format
  msgid "Force the use of SLP when vectorizing, fail if not possible."
  msgstr ""
  
! #: params.opt:1266
  #, no-c-format
  msgid ""
  "Maximum number of basic blocks before VRP switches to a fast model with less "
  "memory requirements."
  msgstr ""
  
! #: params.opt:1270
  #, no-c-format
  msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache."
  msgstr ""
  
! #: params.opt:1274
  #, no-c-format
  msgid ""
  "Maximum number of outgoing edges in a switch before VRP will not process it."
  msgstr ""
  
! #: params.opt:1278
  #, no-c-format
  msgid "Maximum number of basic blocks for VRP to use a basic cache vector."
  msgstr ""
--- 19302,19343 ----
  "The default value is 2."
  msgstr ""
  
! #: params.opt:1258
  #, no-c-format
  msgid ""
  "The maximum factor which the loop vectorizer applies to the cost of "
  "statements in an inner loop relative to the loop being vectorized."
  msgstr ""
  
! #: params.opt:1262
  #, no-c-format
  msgid "Enable loop vectorization of floating point inductions."
  msgstr ""
  
! #: params.opt:1266
  #, no-c-format
  msgid "Force the use of SLP when vectorizing, fail if not possible."
  msgstr ""
  
! #: params.opt:1270
  #, no-c-format
  msgid ""
  "Maximum number of basic blocks before VRP switches to a fast model with less "
  "memory requirements."
  msgstr ""
  
! #: params.opt:1274
  #, no-c-format
  msgid "Maximum number of basic blocks before VRP uses a sparse bitmap cache."
  msgstr ""
  
! #: params.opt:1278
  #, no-c-format
  msgid ""
  "Maximum number of outgoing edges in a switch before VRP will not process it."
  msgstr ""
  
! #: params.opt:1282
  #, no-c-format
  msgid "Maximum number of basic blocks for VRP to use a basic cache vector."
  msgstr ""
*************** msgstr ""
*** 19359,19407 ****
  msgid "callee does not return"
  msgstr ""
  
! #: calls.cc:2585
  msgid "volatile function type"
  msgstr ""
  
! #: calls.cc:2604
  msgid "nested function"
  msgstr ""
  
! #: calls.cc:2615
  msgid "callee required more stack slots than the caller"
  msgstr ""
  
! #: calls.cc:2629
  msgid "inconsistent number of popped arguments"
  msgstr ""
  
! #: calls.cc:2636
  msgid "frontend does not support sibling call"
  msgstr ""
  
! #: calls.cc:2692
  msgid "other reasons"
  msgstr ""
  
! #: calls.cc:3066
  msgid "inside another call"
  msgstr ""
  
! #: calls.cc:3075
  msgid "variable size arguments"
  msgstr ""
  
! #: calls.cc:3099
  msgid "hidden string length argument passed on stack"
  msgstr ""
  
! #: calls.cc:3148
  msgid "caller and callee disagree in promotion of function return value"
  msgstr ""
  
  #. Ideally we'd emit a message for all of the ways that it could
  #. have failed.
! #: calls.cc:4060
  msgid "tail call production failed"
  msgstr ""
  
--- 19371,19419 ----
  msgid "callee does not return"
  msgstr ""
  
! #: calls.cc:2586
  msgid "volatile function type"
  msgstr ""
  
! #: calls.cc:2605
  msgid "nested function"
  msgstr ""
  
! #: calls.cc:2616
  msgid "callee required more stack slots than the caller"
  msgstr ""
  
! #: calls.cc:2630
  msgid "inconsistent number of popped arguments"
  msgstr ""
  
! #: calls.cc:2637
  msgid "frontend does not support sibling call"
  msgstr ""
  
! #: calls.cc:2693
  msgid "other reasons"
  msgstr ""
  
! #: calls.cc:3067
  msgid "inside another call"
  msgstr ""
  
! #: calls.cc:3076
  msgid "variable size arguments"
  msgstr ""
  
! #: calls.cc:3100
  msgid "hidden string length argument passed on stack"
  msgstr ""
  
! #: calls.cc:3149
  msgid "caller and callee disagree in promotion of function return value"
  msgstr ""
  
  #. Ideally we'd emit a message for all of the ways that it could
  #. have failed.
! #: calls.cc:4061
  msgid "tail call production failed"
  msgstr ""
  
*************** msgstr ""
*** 19625,19636 ****
  #. PRINT_OPERAND must handle them.
  #. We can't handle floating point constants;
  #. TARGET_PRINT_OPERAND must handle them.
! #: final.cc:3738 config/arc/arc.cc:6311 config/i386/i386.cc:12799
  #, c-format
  msgid "floating constant misused"
  msgstr ""
  
! #: final.cc:3796 config/arc/arc.cc:6408 config/i386/i386.cc:12890
  #: config/pdp11/pdp11.cc:1872
  #, c-format
  msgid "invalid expression as operand"
--- 19637,19648 ----
  #. PRINT_OPERAND must handle them.
  #. We can't handle floating point constants;
  #. TARGET_PRINT_OPERAND must handle them.
! #: final.cc:3738 config/arc/arc.cc:6311 config/i386/i386.cc:12801
  #, c-format
  msgid "floating constant misused"
  msgstr ""
  
! #: final.cc:3796 config/arc/arc.cc:6408 config/i386/i386.cc:12892
  #: config/pdp11/pdp11.cc:1872
  #, c-format
  msgid "invalid expression as operand"
*************** msgstr ""
*** 20843,20955 ****
  msgid "Uses of this option are diagnosed."
  msgstr ""
  
! #: opts.cc:1723
  #, c-format
  msgid "Same as %s%s (or, in negated form, %s%s)."
  msgstr ""
  
! #: opts.cc:1728
  #, c-format
  msgid "Same as %s%s."
  msgstr ""
  
! #: opts.cc:1733
  #, c-format
  msgid "Same as %s."
  msgstr ""
  
! #: opts.cc:1741
  #, c-format
  msgid "%s  Same as %s."
  msgstr ""
  
! #: opts.cc:1804
  msgid "[available in "
  msgstr ""
  
! #: opts.cc:1836
  msgid "[default]"
  msgstr ""
  
! #: opts.cc:1845
  #, c-format
  msgid "%llu bytes"
  msgstr ""
  
! #: opts.cc:1882
  msgid "[enabled]"
  msgstr ""
  
! #: opts.cc:1884
  msgid "[disabled]"
  msgstr ""
  
! #: opts.cc:1920
  #, c-format
  msgid " No options with the desired characteristics were found\n"
  msgstr ""
  
! #: opts.cc:1929
  #, c-format
  msgid ""
  " None found.  Use --help=%s to show *all* the options supported by the %s "
  "front-end.\n"
  msgstr ""
  
! #: opts.cc:1935
  #, c-format
  msgid ""
  " All options with the desired characteristics have already been displayed\n"
  msgstr ""
  
! #: opts.cc:1980
  #, c-format
  msgid ""
  "  Known valid arguments for %s option:\n"
  "   "
  msgstr ""
  
! #: opts.cc:2030
  msgid "The following options are target specific"
  msgstr ""
  
! #: opts.cc:2033
  msgid "The following options control compiler warning messages"
  msgstr ""
  
! #: opts.cc:2036
  msgid "The following options control optimizations"
  msgstr ""
  
! #: opts.cc:2039 opts.cc:2079
  msgid "The following options are language-independent"
  msgstr ""
  
! #: opts.cc:2042
  msgid "The following options control parameters"
  msgstr ""
  
! #: opts.cc:2048
  msgid "The following options are specific to just the language "
  msgstr ""
  
! #: opts.cc:2050
  msgid "The following options are supported by the language "
  msgstr ""
  
! #: opts.cc:2061
  msgid "The following options are not documented"
  msgstr ""
  
! #: opts.cc:2063
  msgid "The following options take separate arguments"
  msgstr ""
  
! #: opts.cc:2065
  msgid "The following options take joined arguments"
  msgstr ""
  
! #: opts.cc:2077
  msgid "The following options are language-related"
  msgstr ""
  
--- 20855,20967 ----
  msgid "Uses of this option are diagnosed."
  msgstr ""
  
! #: opts.cc:1721
  #, c-format
  msgid "Same as %s%s (or, in negated form, %s%s)."
  msgstr ""
  
! #: opts.cc:1726
  #, c-format
  msgid "Same as %s%s."
  msgstr ""
  
! #: opts.cc:1731
  #, c-format
  msgid "Same as %s."
  msgstr ""
  
! #: opts.cc:1739
  #, c-format
  msgid "%s  Same as %s."
  msgstr ""
  
! #: opts.cc:1802
  msgid "[available in "
  msgstr ""
  
! #: opts.cc:1834
  msgid "[default]"
  msgstr ""
  
! #: opts.cc:1843
  #, c-format
  msgid "%llu bytes"
  msgstr ""
  
! #: opts.cc:1880
  msgid "[enabled]"
  msgstr ""
  
! #: opts.cc:1882
  msgid "[disabled]"
  msgstr ""
  
! #: opts.cc:1918
  #, c-format
  msgid " No options with the desired characteristics were found\n"
  msgstr ""
  
! #: opts.cc:1927
  #, c-format
  msgid ""
  " None found.  Use --help=%s to show *all* the options supported by the %s "
  "front-end.\n"
  msgstr ""
  
! #: opts.cc:1933
  #, c-format
  msgid ""
  " All options with the desired characteristics have already been displayed\n"
  msgstr ""
  
! #: opts.cc:1978
  #, c-format
  msgid ""
  "  Known valid arguments for %s option:\n"
  "   "
  msgstr ""
  
! #: opts.cc:2028
  msgid "The following options are target specific"
  msgstr ""
  
! #: opts.cc:2031
  msgid "The following options control compiler warning messages"
  msgstr ""
  
! #: opts.cc:2034
  msgid "The following options control optimizations"
  msgstr ""
  
! #: opts.cc:2037 opts.cc:2077
  msgid "The following options are language-independent"
  msgstr ""
  
! #: opts.cc:2040
  msgid "The following options control parameters"
  msgstr ""
  
! #: opts.cc:2046
  msgid "The following options are specific to just the language "
  msgstr ""
  
! #: opts.cc:2048
  msgid "The following options are supported by the language "
  msgstr ""
  
! #: opts.cc:2059
  msgid "The following options are not documented"
  msgstr ""
  
! #: opts.cc:2061
  msgid "The following options take separate arguments"
  msgstr ""
  
! #: opts.cc:2063
  msgid "The following options take joined arguments"
  msgstr ""
  
! #: opts.cc:2075
  msgid "The following options are language-related"
  msgstr ""
  
*************** msgid ""
*** 21051,21057 ****
  msgstr ""
  
  #: tree-diagnostic.cc:100 tree-logical-location.cc:92 c/c-decl.cc:6607
! #: c/c-typeck.cc:9013 cp/error.cc:1301 c-family/c-pretty-print.cc:447
  #, gcc-internal-format
  msgid "<anonymous>"
  msgstr ""
--- 21063,21069 ----
  msgstr ""
  
  #: tree-diagnostic.cc:100 tree-logical-location.cc:92 c/c-decl.cc:6607
! #: c/c-typeck.cc:9014 cp/error.cc:1301 c-family/c-pretty-print.cc:447
  #, gcc-internal-format
  msgid "<anonymous>"
  msgstr ""
*************** msgstr ""
*** 21068,21074 ****
  msgid "caller uses sjlj exceptions"
  msgstr ""
  
! #: tree-tailcall.cc:197 tree-tailcall.cc:723
  msgid "caller uses setjmp"
  msgstr ""
  
--- 21080,21086 ----
  msgid "caller uses sjlj exceptions"
  msgstr ""
  
! #: tree-tailcall.cc:197 tree-tailcall.cc:853
  msgid "caller uses setjmp"
  msgstr ""
  
*************** msgstr ""
*** 21076,21142 ****
  msgid "caller uses __builtin_eh_return"
  msgstr ""
  
! #: tree-tailcall.cc:633
  msgid "memory reference or volatile after call"
  msgstr ""
  
! #: tree-tailcall.cc:690
  msgid "address of caller arguments taken"
  msgstr ""
  
! #: tree-tailcall.cc:717
  msgid "return value in memory"
  msgstr ""
  
! #: tree-tailcall.cc:734
  msgid "code between call and return"
  msgstr ""
  
! #: tree-tailcall.cc:747
  msgid "call may throw exception that does not propagate"
  msgstr ""
  
! #: tree-tailcall.cc:760 tree-tailcall.cc:1166
  msgid "call may throw exception caught locally or perform cleanups"
  msgstr ""
  
! #: tree-tailcall.cc:795
  msgid "return value used after call"
  msgstr ""
  
! #: tree-tailcall.cc:893 tree-tailcall.cc:921
  msgid "call invocation refers to locals"
  msgstr ""
  
! #: tree-tailcall.cc:1001
  msgid "unhandled code after call"
  msgstr ""
  
! #: tree-tailcall.cc:1011
  msgid "return value changed after call"
  msgstr ""
  
! #: tree-tailcall.cc:1060
  msgid "internal call"
  msgstr ""
  
! #: tree-tailcall.cc:1068 tree-tailcall.cc:1139
  msgid "call and return value are different"
  msgstr ""
  
! #: tree-tailcall.cc:1149
  msgid "operations after non tail recursive call"
  msgstr ""
  
! #: tree-tailcall.cc:1157
  msgid "tail recursion with pointers can only use additions"
  msgstr ""
  
! #: tree-tailcall.cc:1170
  msgid "exception cleanups omit __tsan_func_exit call"
  msgstr ""
  
! #: tree-tailcall.cc:1672
  msgid "tail recursion with accumulation mixed with musttail non-recursive call"
  msgstr ""
  
--- 21088,21154 ----
  msgid "caller uses __builtin_eh_return"
  msgstr ""
  
! #: tree-tailcall.cc:746
  msgid "memory reference or volatile after call"
  msgstr ""
  
! #: tree-tailcall.cc:820
  msgid "address of caller arguments taken"
  msgstr ""
  
! #: tree-tailcall.cc:847
  msgid "return value in memory"
  msgstr ""
  
! #: tree-tailcall.cc:864
  msgid "code between call and return"
  msgstr ""
  
! #: tree-tailcall.cc:877
  msgid "call may throw exception that does not propagate"
  msgstr ""
  
! #: tree-tailcall.cc:890 tree-tailcall.cc:1385
  msgid "call may throw exception caught locally or perform cleanups"
  msgstr ""
  
! #: tree-tailcall.cc:925
  msgid "return value used after call"
  msgstr ""
  
! #: tree-tailcall.cc:1023 tree-tailcall.cc:1051
  msgid "call invocation refers to locals"
  msgstr ""
  
! #: tree-tailcall.cc:1220
  msgid "unhandled code after call"
  msgstr ""
  
! #: tree-tailcall.cc:1230
  msgid "return value changed after call"
  msgstr ""
  
! #: tree-tailcall.cc:1279
  msgid "internal call"
  msgstr ""
  
! #: tree-tailcall.cc:1287 tree-tailcall.cc:1358
  msgid "call and return value are different"
  msgstr ""
  
! #: tree-tailcall.cc:1368
  msgid "operations after non tail recursive call"
  msgstr ""
  
! #: tree-tailcall.cc:1376
  msgid "tail recursion with pointers can only use additions"
  msgstr ""
  
! #: tree-tailcall.cc:1389
  msgid "exception cleanups omit __tsan_func_exit call"
  msgstr ""
  
! #: tree-tailcall.cc:1892
  msgid "tail recursion with accumulation mixed with musttail non-recursive call"
  msgstr ""
  
*************** msgid "length modifier in strfmon format
*** 21413,21434 ****
  msgstr ""
  
  #. Handle deferred options from command-line.
! #: c-family/c-opts.cc:1656 fortran/cpp.cc:630
  msgid "<command-line>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12298 config/loongarch/loongarch.cc:6280
  #, c-format
  msgid "unsupported operand for code '%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12307 config/aarch64/aarch64.cc:12320
! #: config/aarch64/aarch64.cc:12332 config/aarch64/aarch64.cc:12343
! #: config/aarch64/aarch64.cc:12359 config/aarch64/aarch64.cc:12373
! #: config/aarch64/aarch64.cc:12393 config/aarch64/aarch64.cc:12475
! #: config/aarch64/aarch64.cc:12486 config/aarch64/aarch64.cc:12500
! #: config/aarch64/aarch64.cc:12726 config/aarch64/aarch64.cc:12739
! #: config/aarch64/aarch64.cc:12756 config/pru/pru.cc:1824
  #: config/pru/pru.cc:1835 config/pru/pru.cc:1917 config/riscv/riscv.cc:7037
  #: config/riscv/riscv.cc:7053 config/riscv/riscv.cc:7069
  #: config/riscv/riscv.cc:7085 config/riscv/riscv.cc:7118
--- 21425,21446 ----
  msgstr ""
  
  #. Handle deferred options from command-line.
! #: c-family/c-opts.cc:1658 fortran/cpp.cc:630
  msgid "<command-line>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12313 config/loongarch/loongarch.cc:6280
  #, c-format
  msgid "unsupported operand for code '%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12322 config/aarch64/aarch64.cc:12335
! #: config/aarch64/aarch64.cc:12347 config/aarch64/aarch64.cc:12358
! #: config/aarch64/aarch64.cc:12374 config/aarch64/aarch64.cc:12388
! #: config/aarch64/aarch64.cc:12408 config/aarch64/aarch64.cc:12490
! #: config/aarch64/aarch64.cc:12501 config/aarch64/aarch64.cc:12515
! #: config/aarch64/aarch64.cc:12741 config/aarch64/aarch64.cc:12754
! #: config/aarch64/aarch64.cc:12771 config/pru/pru.cc:1824
  #: config/pru/pru.cc:1835 config/pru/pru.cc:1917 config/riscv/riscv.cc:7037
  #: config/riscv/riscv.cc:7053 config/riscv/riscv.cc:7069
  #: config/riscv/riscv.cc:7085 config/riscv/riscv.cc:7118
*************** msgstr ""
*** 21438,21445 ****
  msgid "invalid operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12411 config/aarch64/aarch64.cc:12422
! #: config/aarch64/aarch64.cc:12586 config/aarch64/aarch64.cc:12597
  #: config/riscv/riscv.cc:6933 config/riscv/riscv.cc:6941
  #: config/riscv/riscv.cc:6948 config/riscv/riscv.cc:6952
  #: config/riscv/riscv.cc:6994 config/riscv/riscv.cc:7012
--- 21450,21457 ----
  msgid "invalid operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12426 config/aarch64/aarch64.cc:12437
! #: config/aarch64/aarch64.cc:12601 config/aarch64/aarch64.cc:12612
  #: config/riscv/riscv.cc:6933 config/riscv/riscv.cc:6941
  #: config/riscv/riscv.cc:6948 config/riscv/riscv.cc:6952
  #: config/riscv/riscv.cc:6994 config/riscv/riscv.cc:7012
*************** msgstr ""
*** 21447,21587 ****
  msgid "invalid vector constant"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12436
  #, c-format
  msgid "incompatible floating point / vector register operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12448
  #, c-format
  msgid "incompatible operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12468
  #, c-format
  msgid "incompatible register operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12533 config/arm/arm.cc:24916
  #, c-format
  msgid "missing operand"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12623
  #, c-format
  msgid "invalid constant"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12626
  #, c-format
  msgid "invalid operand"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12764 config/aarch64/aarch64.cc:12769
  #, c-format
  msgid "invalid operand prefix '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12789
  #, c-format
  msgid "invalid address mode"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22760
  msgid "invalid conversion from type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22762
  msgid "invalid conversion to type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29725 config/aarch64/aarch64.cc:29748
  msgid "operation not permitted on type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29743
  msgid "cannot combine GNU and SVE vectors in a binary operation"
  msgstr ""
  
! #: config/alpha/alpha.cc:5783 config/i386/i386.cc:14075
  #: config/rs6000/rs6000.cc:14674 config/sparc/sparc.cc:9400
  #, c-format
  msgid "'%%&' used without any local dynamic TLS references"
  msgstr ""
  
! #: config/alpha/alpha.cc:5841 config/bfin/bfin.cc:1428
  #, c-format
  msgid "invalid %%J value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5871 config/ia64/ia64.cc:5592 config/or1k/or1k.cc:1252
  #, c-format
  msgid "invalid %%r value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5881 config/ia64/ia64.cc:5546
  #: config/rs6000/rs6000.cc:14369 config/xtensa/xtensa.cc:3144
  #, c-format
  msgid "invalid %%R value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5887 config/rs6000/rs6000.cc:14289
  #: config/xtensa/xtensa.cc:3117
  #, c-format
  msgid "invalid %%N value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5895 config/rs6000/rs6000.cc:14317
  #, c-format
  msgid "invalid %%P value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5903
  #, c-format
  msgid "invalid %%h value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5911 config/xtensa/xtensa.cc:3137
  #, c-format
  msgid "invalid %%L value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5930
  #, c-format
  msgid "invalid %%m value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5936
  #, c-format
  msgid "invalid %%M value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5973
  #, c-format
  msgid "invalid %%U value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5981 config/rs6000/rs6000.cc:14377
  #, c-format
  msgid "invalid %%s value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5992
  #, c-format
  msgid "invalid %%C value"
  msgstr ""
  
! #: config/alpha/alpha.cc:6029 config/rs6000/rs6000.cc:14153
  #, c-format
  msgid "invalid %%E value"
  msgstr ""
  
! #: config/alpha/alpha.cc:6054 config/alpha/alpha.cc:6104
  #, c-format
  msgid "unknown relocation unspec"
  msgstr ""
  
! #: config/alpha/alpha.cc:6063 config/gcn/gcn.cc:7341 config/gcn/gcn.cc:7350
  #: config/gcn/gcn.cc:7408 config/gcn/gcn.cc:7416 config/gcn/gcn.cc:7432
  #: config/gcn/gcn.cc:7450 config/gcn/gcn.cc:7501 config/gcn/gcn.cc:7620
  #: config/gcn/gcn.cc:7733 config/rs6000/rs6000.cc:14679
--- 21459,21599 ----
  msgid "invalid vector constant"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12451
  #, c-format
  msgid "incompatible floating point / vector register operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12463
  #, c-format
  msgid "incompatible operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12483
  #, c-format
  msgid "incompatible register operand for '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12548 config/arm/arm.cc:24916
  #, c-format
  msgid "missing operand"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12638
  #, c-format
  msgid "invalid constant"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12641
  #, c-format
  msgid "invalid operand"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12779 config/aarch64/aarch64.cc:12784
  #, c-format
  msgid "invalid operand prefix '%%%c'"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:12804
  #, c-format
  msgid "invalid address mode"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22775
  msgid "invalid conversion from type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22777
  msgid "invalid conversion to type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29806 config/aarch64/aarch64.cc:29829
  msgid "operation not permitted on type %<mfloat8_t%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29824
  msgid "cannot combine GNU and SVE vectors in a binary operation"
  msgstr ""
  
! #: config/alpha/alpha.cc:5780 config/i386/i386.cc:14077
  #: config/rs6000/rs6000.cc:14674 config/sparc/sparc.cc:9400
  #, c-format
  msgid "'%%&' used without any local dynamic TLS references"
  msgstr ""
  
! #: config/alpha/alpha.cc:5838 config/bfin/bfin.cc:1428
  #, c-format
  msgid "invalid %%J value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5868 config/ia64/ia64.cc:5592 config/or1k/or1k.cc:1252
  #, c-format
  msgid "invalid %%r value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5878 config/ia64/ia64.cc:5546
  #: config/rs6000/rs6000.cc:14369 config/xtensa/xtensa.cc:3144
  #, c-format
  msgid "invalid %%R value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5884 config/rs6000/rs6000.cc:14289
  #: config/xtensa/xtensa.cc:3117
  #, c-format
  msgid "invalid %%N value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5892 config/rs6000/rs6000.cc:14317
  #, c-format
  msgid "invalid %%P value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5900
  #, c-format
  msgid "invalid %%h value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5908 config/xtensa/xtensa.cc:3137
  #, c-format
  msgid "invalid %%L value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5927
  #, c-format
  msgid "invalid %%m value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5933
  #, c-format
  msgid "invalid %%M value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5970
  #, c-format
  msgid "invalid %%U value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5978 config/rs6000/rs6000.cc:14377
  #, c-format
  msgid "invalid %%s value"
  msgstr ""
  
! #: config/alpha/alpha.cc:5989
  #, c-format
  msgid "invalid %%C value"
  msgstr ""
  
! #: config/alpha/alpha.cc:6026 config/rs6000/rs6000.cc:14153
  #, c-format
  msgid "invalid %%E value"
  msgstr ""
  
! #: config/alpha/alpha.cc:6051 config/alpha/alpha.cc:6101
  #, c-format
  msgid "unknown relocation unspec"
  msgstr ""
  
! #: config/alpha/alpha.cc:6060 config/gcn/gcn.cc:7341 config/gcn/gcn.cc:7350
  #: config/gcn/gcn.cc:7408 config/gcn/gcn.cc:7416 config/gcn/gcn.cc:7432
  #: config/gcn/gcn.cc:7450 config/gcn/gcn.cc:7501 config/gcn/gcn.cc:7620
  #: config/gcn/gcn.cc:7733 config/rs6000/rs6000.cc:14679
*************** msgstr ""
*** 21589,21595 ****
  msgid "invalid %%xn code"
  msgstr ""
  
! #: config/alpha/alpha.cc:6169
  #, c-format
  msgid "invalid operand address"
  msgstr ""
--- 21601,21607 ----
  msgid "invalid %%xn code"
  msgstr ""
  
! #: config/alpha/alpha.cc:6166
  #, c-format
  msgid "invalid operand address"
  msgstr ""
*************** msgstr ""
*** 21880,21888 ****
  #: config/cris/cris.cc:783 config/ft32/ft32.cc:110 config/moxie/moxie.cc:108
  #: cobol/dts.h:71 final.cc:3194 final.cc:3196 fold-const.cc:347 gcc.cc:6299
  #: gcc.cc:6313 rtl-error.cc:101 toplev.cc:322 cobol/gcobolspec.cc:366
! #: cobol/gcobolspec.cc:440 cobol/gcobolspec.cc:450 cobol/gcobolspec.cc:525
! #: cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:7836 d/d-convert.cc:237
! #: go/go-gcc-diagnostics.cc:28 go/go-gcc-diagnostics.cc:37
  #: go/go-gcc-diagnostics.cc:45 go/go-gcc-diagnostics.cc:53
  #: lto/lto-object.cc:180 lto/lto-object.cc:277 lto/lto-object.cc:334
  #: lto/lto-object.cc:358 m2/gm2-gcc/m2linemap.cc:183
--- 21892,21900 ----
  #: config/cris/cris.cc:783 config/ft32/ft32.cc:110 config/moxie/moxie.cc:108
  #: cobol/dts.h:71 final.cc:3194 final.cc:3196 fold-const.cc:347 gcc.cc:6299
  #: gcc.cc:6313 rtl-error.cc:101 toplev.cc:322 cobol/gcobolspec.cc:366
! #: cobol/gcobolspec.cc:440 cobol/gcobolspec.cc:450 cobol/gcobolspec.cc:534
! #: cobol/genutil.cc:1268 cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:7952
! #: d/d-convert.cc:237 go/go-gcc-diagnostics.cc:28 go/go-gcc-diagnostics.cc:37
  #: go/go-gcc-diagnostics.cc:45 go/go-gcc-diagnostics.cc:53
  #: lto/lto-object.cc:180 lto/lto-object.cc:277 lto/lto-object.cc:334
  #: lto/lto-object.cc:358 m2/gm2-gcc/m2linemap.cc:183
*************** msgstr ""
*** 22126,22247 ****
  msgid "Expected register or constant integer."
  msgstr ""
  
! #: config/i386/i386.cc:12884
  #, c-format
  msgid "invalid UNSPEC as operand"
  msgstr ""
  
! #: config/i386/i386.cc:13423
  #, c-format
  msgid "invalid use of register '%s'"
  msgstr ""
  
! #: config/i386/i386.cc:13428
  #, c-format
  msgid "invalid use of asm flag output"
  msgstr ""
  
! #: config/i386/i386.cc:13662
  #, c-format
  msgid "invalid operand size for operand code 'O'"
  msgstr ""
  
! #: config/i386/i386.cc:13697
  #, c-format
  msgid "invalid operand size for operand code 'z'"
  msgstr ""
  
! #: config/i386/i386.cc:13772
  #, c-format
  msgid "invalid operand type used with operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:13777
  #, c-format
  msgid "invalid operand size for operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:13855
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'Y'"
  msgstr ""
  
! #: config/i386/i386.cc:13934
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'D'"
  msgstr ""
  
! #: config/i386/i386.cc:13952
  #, c-format
  msgid "operand is not a condition code, invalid operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:13973
  #, c-format
  msgid ""
  "operand is not an offsettable memory reference, invalid operand code 'H'"
  msgstr ""
  
! #: config/i386/i386.cc:13988
  #, c-format
  msgid "operand is not an integer, invalid operand code 'K'"
  msgstr ""
  
! #: config/i386/i386.cc:14016
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'r'"
  msgstr ""
  
! #: config/i386/i386.cc:14034
  #, c-format
  msgid "operand is not an integer, invalid operand code 'R'"
  msgstr ""
  
! #: config/i386/i386.cc:14057
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'R'"
  msgstr ""
  
! #: config/i386/i386.cc:14150
  #, c-format
  msgid "invalid operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:14212 config/i386/i386.cc:14601
  #, c-format
  msgid "invalid constraints for operand"
  msgstr ""
  
! #: config/i386/i386.cc:14313
  #, c-format
  msgid "invalid vector immediate"
  msgstr ""
  
! #: config/i386/i386.cc:17483
  msgid "unknown insn mode"
  msgstr ""
  
! #: config/i386/i386.cc:24021
  msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24024
  msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24027
  msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24030
  msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24068 config/i386/i386.cc:24093
  msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24071 config/i386/i386.cc:24097
  msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
--- 22138,22259 ----
  msgid "Expected register or constant integer."
  msgstr ""
  
! #: config/i386/i386.cc:12886
  #, c-format
  msgid "invalid UNSPEC as operand"
  msgstr ""
  
! #: config/i386/i386.cc:13425
  #, c-format
  msgid "invalid use of register '%s'"
  msgstr ""
  
! #: config/i386/i386.cc:13430
  #, c-format
  msgid "invalid use of asm flag output"
  msgstr ""
  
! #: config/i386/i386.cc:13664
  #, c-format
  msgid "invalid operand size for operand code 'O'"
  msgstr ""
  
! #: config/i386/i386.cc:13699
  #, c-format
  msgid "invalid operand size for operand code 'z'"
  msgstr ""
  
! #: config/i386/i386.cc:13774
  #, c-format
  msgid "invalid operand type used with operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:13779
  #, c-format
  msgid "invalid operand size for operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:13857
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'Y'"
  msgstr ""
  
! #: config/i386/i386.cc:13936
  #, c-format
  msgid "operand is not a condition code, invalid operand code 'D'"
  msgstr ""
  
! #: config/i386/i386.cc:13954
  #, c-format
  msgid "operand is not a condition code, invalid operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:13975
  #, c-format
  msgid ""
  "operand is not an offsettable memory reference, invalid operand code 'H'"
  msgstr ""
  
! #: config/i386/i386.cc:13990
  #, c-format
  msgid "operand is not an integer, invalid operand code 'K'"
  msgstr ""
  
! #: config/i386/i386.cc:14018
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'r'"
  msgstr ""
  
! #: config/i386/i386.cc:14036
  #, c-format
  msgid "operand is not an integer, invalid operand code 'R'"
  msgstr ""
  
! #: config/i386/i386.cc:14059
  #, c-format
  msgid "operand is not a specific integer, invalid operand code 'R'"
  msgstr ""
  
! #: config/i386/i386.cc:14152
  #, c-format
  msgid "invalid operand code '%c'"
  msgstr ""
  
! #: config/i386/i386.cc:14214 config/i386/i386.cc:14603
  #, c-format
  msgid "invalid constraints for operand"
  msgstr ""
  
! #: config/i386/i386.cc:14315
  #, c-format
  msgid "invalid vector immediate"
  msgstr ""
  
! #: config/i386/i386.cc:17485
  msgid "unknown insn mode"
  msgstr ""
  
! #: config/i386/i386.cc:24023
  msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24026
  msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24029
  msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24032
  msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24070 config/i386/i386.cc:24095
  msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>"
  msgstr ""
  
! #: config/i386/i386.cc:24073 config/i386/i386.cc:24099
  msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>"
  msgstr ""
  
*************** msgstr ""
*** 22362,22397 ****
  msgid "lo_sum not of register"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2299
  #, c-format
  msgid "unknown punctuation '%c'"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2308
  #, c-format
  msgid "null pointer"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2343
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%C"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2372
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%N"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2392 config/microblaze/microblaze.cc:2568
  msgid "insn contains an invalid address !"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2408 config/microblaze/microblaze.cc:2638
  #: config/xtensa/xtensa.cc:3240
  msgid "invalid address"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2511
  #, c-format
  msgid "letter %c was found & insn was not CONST_INT"
  msgstr ""
--- 22374,22409 ----
  msgid "lo_sum not of register"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2303
  #, c-format
  msgid "unknown punctuation '%c'"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2312
  #, c-format
  msgid "null pointer"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2347
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%C"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2376
  #, c-format
  msgid "PRINT_OPERAND, invalid insn for %%N"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2396 config/microblaze/microblaze.cc:2572
  msgid "insn contains an invalid address !"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2412 config/microblaze/microblaze.cc:2642
  #: config/xtensa/xtensa.cc:3240
  msgid "invalid address"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:2515
  #, c-format
  msgid "letter %c was found & insn was not CONST_INT"
  msgstr ""
*************** msgstr ""
*** 22689,22719 ****
  msgid "AltiVec argument passed to unprototyped function"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28020
  msgid "Could not generate addis value for fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28089
  msgid "Unable to generate load/store offset for fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28165
  msgid "Bad GPR fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28767
  msgid "invalid conversion from type %<__vector_quad%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28769
  msgid "invalid conversion to type %<__vector_quad%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28771
  msgid "invalid conversion from type %<__vector_pair%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28773
  msgid "invalid conversion to type %<__vector_pair%>"
  msgstr ""
  
--- 22701,22731 ----
  msgid "AltiVec argument passed to unprototyped function"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28023
  msgid "Could not generate addis value for fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28092
  msgid "Unable to generate load/store offset for fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28168
  msgid "Bad GPR fusion"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28770
  msgid "invalid conversion from type %<__vector_quad%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28772
  msgid "invalid conversion to type %<__vector_quad%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28774
  msgid "invalid conversion from type %<__vector_pair%>"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28776
  msgid "invalid conversion to type %<__vector_pair%>"
  msgstr ""
  
*************** msgstr ""
*** 22797,22815 ****
  msgid "vector argument passed to unprototyped function"
  msgstr ""
  
! #: config/s390/s390.cc:17350
  msgid "types differ in signedness"
  msgstr ""
  
! #: config/s390/s390.cc:17360
  msgid "binary operator does not support two vector bool operands"
  msgstr ""
  
! #: config/s390/s390.cc:17363
  msgid "binary operator does not support vector bool operand"
  msgstr ""
  
! #: config/s390/s390.cc:17371
  msgid ""
  "binary operator does not support mixing vector bool with floating point "
  "vector operands"
--- 22809,22827 ----
  msgid "vector argument passed to unprototyped function"
  msgstr ""
  
! #: config/s390/s390.cc:17377
  msgid "types differ in signedness"
  msgstr ""
  
! #: config/s390/s390.cc:17387
  msgid "binary operator does not support two vector bool operands"
  msgstr ""
  
! #: config/s390/s390.cc:17390
  msgid "binary operator does not support vector bool operand"
  msgstr ""
  
! #: config/s390/s390.cc:17398
  msgid ""
  "binary operator does not support mixing vector bool with floating point "
  "vector operands"
*************** msgstr ""
*** 22982,22988 ****
  msgid "aka"
  msgstr ""
  
! #: c/c-objc-common.cc:385 c/c-typeck.cc:7714
  msgid "({anonymous})"
  msgstr ""
  
--- 22994,23000 ----
  msgid "aka"
  msgstr ""
  
! #: c/c-objc-common.cc:385 c/c-typeck.cc:7715
  msgid "({anonymous})"
  msgstr ""
  
*************** msgstr ""
*** 22995,23032 ****
  #. ;
  #. <~~~~~~~~~ declaration ~~~~~~~~~~>
  #. Use c_parser_require to get an error with a fix-it hint.
! #: c/c-parser.cc:3089 c/c-parser.cc:3279 c/c-parser.cc:3293 c/c-parser.cc:7502
! #: c/c-parser.cc:8356 c/c-parser.cc:8934 c/c-parser.cc:9126 c/c-parser.cc:9159
! #: c/c-parser.cc:9457 c/c-parser.cc:14304 c/c-parser.cc:14339
! #: c/c-parser.cc:14370 c/c-parser.cc:14417 c/c-parser.cc:14598
! #: c/c-parser.cc:15431 c/c-parser.cc:15506 c/c-parser.cc:15549
! #: c/c-parser.cc:23037 c/c-parser.cc:23117 c/c-parser.cc:23446
! #: c/c-parser.cc:23472 c/c-parser.cc:23495 c/c-parser.cc:24181
! #: c/c-parser.cc:24224 c/c-parser.cc:25491 c/gimple-parser.cc:454
  #: c/gimple-parser.cc:495 c/gimple-parser.cc:504 c/gimple-parser.cc:723
  #: c/gimple-parser.cc:2437 c/gimple-parser.cc:2474 c/gimple-parser.cc:2553
! #: c/gimple-parser.cc:2580 c/c-parser.cc:4141 c/c-parser.cc:4332
! #: c/c-parser.cc:4367 c/c-parser.cc:14591 c/gimple-parser.cc:2244
! #: c/gimple-parser.cc:2256 cp/parser.cc:16475 cp/parser.cc:34635
! #: cp/parser.cc:35274
  #, gcc-internal-format
  msgid "expected %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3251 c/c-parser.cc:9417
  #, gcc-internal-format
  msgid "expected %<:%> or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:3790 c/c-parser.cc:4943 c/c-parser.cc:5135 c/c-parser.cc:5193
! #: c/c-parser.cc:5251 c/c-parser.cc:5635 c/c-parser.cc:5658 c/c-parser.cc:5667
! #: c/c-parser.cc:5718 c/c-parser.cc:5727 c/c-parser.cc:10892
! #: c/c-parser.cc:10978 c/c-parser.cc:11552 c/c-parser.cc:11578
! #: c/c-parser.cc:11612 c/c-parser.cc:11825 c/c-parser.cc:12697
! #: c/c-parser.cc:14705 c/c-parser.cc:17345 c/c-parser.cc:18080
! #: c/c-parser.cc:18139 c/c-parser.cc:18194 c/c-parser.cc:20053
! #: c/c-parser.cc:20173 c/c-parser.cc:22130 c/c-parser.cc:23537
! #: c/c-parser.cc:24189 c/c-parser.cc:28016 c/c-parser.cc:28098
  #: c/gimple-parser.cc:238 c/gimple-parser.cc:241 c/gimple-parser.cc:589
  #: c/gimple-parser.cc:623 c/gimple-parser.cc:628 c/gimple-parser.cc:807
  #: c/gimple-parser.cc:904 c/gimple-parser.cc:1175 c/gimple-parser.cc:1201
--- 23007,23044 ----
  #. ;
  #. <~~~~~~~~~ declaration ~~~~~~~~~~>
  #. Use c_parser_require to get an error with a fix-it hint.
! #: c/c-parser.cc:3134 c/c-parser.cc:3324 c/c-parser.cc:3338 c/c-parser.cc:7547
! #: c/c-parser.cc:8401 c/c-parser.cc:8979 c/c-parser.cc:9171 c/c-parser.cc:9204
! #: c/c-parser.cc:9502 c/c-parser.cc:14349 c/c-parser.cc:14384
! #: c/c-parser.cc:14415 c/c-parser.cc:14462 c/c-parser.cc:14643
! #: c/c-parser.cc:15476 c/c-parser.cc:15551 c/c-parser.cc:15594
! #: c/c-parser.cc:23082 c/c-parser.cc:23162 c/c-parser.cc:23491
! #: c/c-parser.cc:23517 c/c-parser.cc:23540 c/c-parser.cc:24226
! #: c/c-parser.cc:24269 c/c-parser.cc:25536 c/gimple-parser.cc:454
  #: c/gimple-parser.cc:495 c/gimple-parser.cc:504 c/gimple-parser.cc:723
  #: c/gimple-parser.cc:2437 c/gimple-parser.cc:2474 c/gimple-parser.cc:2553
! #: c/gimple-parser.cc:2580 c/c-parser.cc:4186 c/c-parser.cc:4377
! #: c/c-parser.cc:4412 c/c-parser.cc:14636 c/gimple-parser.cc:2244
! #: c/gimple-parser.cc:2256 cp/parser.cc:16479 cp/parser.cc:34694
! #: cp/parser.cc:35333
  #, gcc-internal-format
  msgid "expected %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3296 c/c-parser.cc:9462
  #, gcc-internal-format
  msgid "expected %<:%> or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:3835 c/c-parser.cc:4988 c/c-parser.cc:5180 c/c-parser.cc:5238
! #: c/c-parser.cc:5296 c/c-parser.cc:5680 c/c-parser.cc:5703 c/c-parser.cc:5712
! #: c/c-parser.cc:5763 c/c-parser.cc:5772 c/c-parser.cc:10937
! #: c/c-parser.cc:11023 c/c-parser.cc:11597 c/c-parser.cc:11623
! #: c/c-parser.cc:11657 c/c-parser.cc:11870 c/c-parser.cc:12742
! #: c/c-parser.cc:14750 c/c-parser.cc:17390 c/c-parser.cc:18125
! #: c/c-parser.cc:18184 c/c-parser.cc:18239 c/c-parser.cc:20098
! #: c/c-parser.cc:20218 c/c-parser.cc:22175 c/c-parser.cc:23582
! #: c/c-parser.cc:24234 c/c-parser.cc:28062 c/c-parser.cc:28144
  #: c/gimple-parser.cc:238 c/gimple-parser.cc:241 c/gimple-parser.cc:589
  #: c/gimple-parser.cc:623 c/gimple-parser.cc:628 c/gimple-parser.cc:807
  #: c/gimple-parser.cc:904 c/gimple-parser.cc:1175 c/gimple-parser.cc:1201
*************** msgstr ""
*** 23034,23183 ****
  #: c/gimple-parser.cc:1592 c/gimple-parser.cc:1608 c/gimple-parser.cc:1664
  #: c/gimple-parser.cc:1691 c/gimple-parser.cc:1721 c/gimple-parser.cc:1747
  #: c/gimple-parser.cc:1954 c/gimple-parser.cc:2166 c/gimple-parser.cc:2186
! #: c/gimple-parser.cc:2347 c/gimple-parser.cc:2510 c/c-parser.cc:3242
! #: c/c-parser.cc:9409 c/c-parser.cc:20746 cp/parser.cc:35322 cp/parser.cc:43032
  #, gcc-internal-format
  msgid "expected %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:5029 c/c-parser.cc:5778 c/c-parser.cc:6138 c/c-parser.cc:6156
! #: c/c-parser.cc:6157 c/c-parser.cc:6660 c/c-parser.cc:6704 c/c-parser.cc:9508
! #: c/c-parser.cc:11816 c/c-parser.cc:13270 c/c-parser.cc:13642
! #: c/c-parser.cc:16667 c/gimple-parser.cc:1930 cp/parser.cc:35286
  #, gcc-internal-format
  msgid "expected %<]%>"
  msgstr ""
  
! #: c/c-parser.cc:5231
  msgid "expected %<;%>, %<,%> or %<)%>"
  msgstr ""
  
  #. Look for the two `(' tokens.
! #: c/c-parser.cc:5687 c/c-parser.cc:5692 c/c-parser.cc:17328
! #: c/c-parser.cc:18169 c/c-parser.cc:20554 c/c-parser.cc:20653
! #: c/c-parser.cc:26832 c/c-parser.cc:27136 c/c-parser.cc:27824
! #: c/c-parser.cc:28041 c/gimple-parser.cc:223 c/gimple-parser.cc:536
  #: c/gimple-parser.cc:575 c/gimple-parser.cc:607 c/gimple-parser.cc:874
  #: c/gimple-parser.cc:1169 c/gimple-parser.cc:1195 c/gimple-parser.cc:1322
  #: c/gimple-parser.cc:1457 c/gimple-parser.cc:1582 c/gimple-parser.cc:1687
  #: c/gimple-parser.cc:1705 c/gimple-parser.cc:1740 c/gimple-parser.cc:2135
  #: c/gimple-parser.cc:2146 c/gimple-parser.cc:2152 c/gimple-parser.cc:2335
! #: c/gimple-parser.cc:2507 c/c-parser.cc:17109 cp/parser.cc:35277
  #, gcc-internal-format
  msgid "expected %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:6134 c/c-parser.cc:6136 c/c-parser.cc:16572 cp/parser.cc:35289
! #: cp/parser.cc:39179 go/gofrontend/embed.cc:440
  #, gcc-internal-format
  msgid "expected %<[%>"
  msgstr ""
  
! #: c/c-parser.cc:6964 c/c-parser.cc:14934 c/c-parser.cc:20630
! #: c/c-parser.cc:23012 c/c-parser.cc:23098 c/c-parser.cc:23859
! #: c/c-parser.cc:24999 c/c-parser.cc:29820 c/gimple-parser.cc:447
! #: c/gimple-parser.cc:2513 c/c-parser.cc:4128 c/c-parser.cc:4356
! #: c/c-parser.cc:14486 cp/parser.cc:22203 cp/parser.cc:35283
  #: go/gofrontend/embed.cc:371
  #, gcc-internal-format
  msgid "expected %<{%>"
  msgstr ""
  
! #: c/c-parser.cc:7914 c/c-parser.cc:7923 c/c-parser.cc:9957 c/c-parser.cc:11136
! #: c/c-parser.cc:14698 c/c-parser.cc:15095 c/c-parser.cc:15159
! #: c/c-parser.cc:16649 c/c-parser.cc:17760 c/c-parser.cc:17997
! #: c/c-parser.cc:18550 c/c-parser.cc:18653 c/c-parser.cc:19194
! #: c/c-parser.cc:19630 c/c-parser.cc:19706 c/c-parser.cc:19823
! #: c/c-parser.cc:19895 c/c-parser.cc:20868 c/c-parser.cc:26702
! #: c/c-parser.cc:27881 c/c-parser.cc:27940 c/c-parser.cc:29142
! #: c/gimple-parser.cc:630 c/gimple-parser.cc:943 c/gimple-parser.cc:2561
! #: c/gimple-parser.cc:2588 c/c-parser.cc:9416 c/c-parser.cc:17253
! #: c/c-parser.cc:18658 cp/parser.cc:35316 cp/parser.cc:37023 cp/parser.cc:40119
! #: cp/parser.cc:41012 go/gofrontend/embed.cc:404
  #, gcc-internal-format
  msgid "expected %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:8910 cp/parser.cc:35203
  #, gcc-internal-format
  msgid "expected %<while%>"
  msgstr ""
  
! #: c/c-parser.cc:10855 c/c-parser.cc:11085 c/c-parser.cc:11602
! #: c/c-parser.cc:11647 c/c-parser.cc:11740 c/c-parser.cc:11887
! #: c/c-parser.cc:12687 c/c-parser.cc:18174 c/c-parser.cc:19775
  #: c/gimple-parser.cc:1172 c/gimple-parser.cc:1198 c/gimple-parser.cc:1326
  #: c/gimple-parser.cc:1329 c/gimple-parser.cc:1709 c/gimple-parser.cc:1715
! #: cp/parser.cc:34633 cp/parser.cc:35292
  #, gcc-internal-format
  msgid "expected %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:11496
  msgid "expected %<.%>"
  msgstr ""
  
! #: c/c-parser.cc:14157 c/c-parser.cc:14189 c/c-parser.cc:14429
! #: cp/parser.cc:37597 cp/parser.cc:37618
  #, gcc-internal-format
  msgid "expected %<@end%>"
  msgstr ""
  
! #: c/c-parser.cc:14847 c/gimple-parser.cc:1497 cp/parser.cc:35301
  #, gcc-internal-format
  msgid "expected %<>%>"
  msgstr ""
  
! #: c/c-parser.cc:18748 c/c-parser.cc:20191 c/c-parser.cc:20617
! #: cp/parser.cc:35325 cp/parser.cc:42883
  #, gcc-internal-format
  msgid "expected %<,%> or %<)%>"
  msgstr ""
  
  #. All following cases are statements with LHS.
! #: c/c-parser.cc:19622 c/c-parser.cc:22907 c/c-parser.cc:22952
! #: c/c-parser.cc:23109 c/c-parser.cc:23456 c/c-parser.cc:24168
! #: c/c-parser.cc:25374 c/c-parser.cc:26880 c/c-parser.cc:28082
! #: c/gimple-parser.cc:798 c/c-parser.cc:6727 c/c-parser.cc:23029
! #: c/c-parser.cc:23252 cp/parser.cc:35304 cp/parser.cc:44578 cp/parser.cc:44751
  #, gcc-internal-format
  msgid "expected %<=%>"
  msgstr ""
  
! #: c/c-parser.cc:20767 c/c-parser.cc:27145 c/c-parser.cc:27166
! #: c/c-parser.cc:16707 c/c-parser.cc:16719 c/c-parser.cc:20747
! #: cp/parser.cc:43033 cp/parser.cc:43060 cp/parser.cc:50600 cp/parser.cc:50611
  #, gcc-internal-format
  msgid "expected %<)%> or %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:23040 c/c-parser.cc:23120 c/c-parser.cc:23473
! #: c/c-parser.cc:23928 c/gimple-parser.cc:1763 c/gimple-parser.cc:1795
! #: c/gimple-parser.cc:1805 c/gimple-parser.cc:2598 cp/parser.cc:35280
! #: cp/parser.cc:37807
  #, gcc-internal-format
  msgid "expected %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:23133 cp/parser.cc:44676
  #, gcc-internal-format
  msgid "expected %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:25046 c/c-parser.cc:25035 cp/parser.cc:47606
  #, gcc-internal-format
  msgid "expected %<#pragma omp section%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:28760 cp/parser.cc:52554
  msgid "<message unknown at compile time>"
  msgstr ""
  
! #: c/c-typeck.cc:9863
  msgid "(anonymous)"
  msgstr ""
  
! #: c/gimple-parser.cc:1486 cp/parser.cc:19538 cp/parser.cc:35298
  #, gcc-internal-format
  msgid "expected %<<%>"
  msgstr ""
--- 23046,23196 ----
  #: c/gimple-parser.cc:1592 c/gimple-parser.cc:1608 c/gimple-parser.cc:1664
  #: c/gimple-parser.cc:1691 c/gimple-parser.cc:1721 c/gimple-parser.cc:1747
  #: c/gimple-parser.cc:1954 c/gimple-parser.cc:2166 c/gimple-parser.cc:2186
! #: c/gimple-parser.cc:2347 c/gimple-parser.cc:2510 c/c-parser.cc:3287
! #: c/c-parser.cc:9454 c/c-parser.cc:20791 cp/parser.cc:35381 cp/parser.cc:43091
  #, gcc-internal-format
  msgid "expected %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:5074 c/c-parser.cc:5823 c/c-parser.cc:6183 c/c-parser.cc:6201
! #: c/c-parser.cc:6202 c/c-parser.cc:6705 c/c-parser.cc:6749 c/c-parser.cc:9553
! #: c/c-parser.cc:11861 c/c-parser.cc:13315 c/c-parser.cc:13687
! #: c/c-parser.cc:16712 c/gimple-parser.cc:1930 cp/parser.cc:35345
  #, gcc-internal-format
  msgid "expected %<]%>"
  msgstr ""
  
! #: c/c-parser.cc:5276
  msgid "expected %<;%>, %<,%> or %<)%>"
  msgstr ""
  
  #. Look for the two `(' tokens.
! #: c/c-parser.cc:5732 c/c-parser.cc:5737 c/c-parser.cc:17373
! #: c/c-parser.cc:18214 c/c-parser.cc:20599 c/c-parser.cc:20698
! #: c/c-parser.cc:26875 c/c-parser.cc:27182 c/c-parser.cc:27870
! #: c/c-parser.cc:28087 c/gimple-parser.cc:223 c/gimple-parser.cc:536
  #: c/gimple-parser.cc:575 c/gimple-parser.cc:607 c/gimple-parser.cc:874
  #: c/gimple-parser.cc:1169 c/gimple-parser.cc:1195 c/gimple-parser.cc:1322
  #: c/gimple-parser.cc:1457 c/gimple-parser.cc:1582 c/gimple-parser.cc:1687
  #: c/gimple-parser.cc:1705 c/gimple-parser.cc:1740 c/gimple-parser.cc:2135
  #: c/gimple-parser.cc:2146 c/gimple-parser.cc:2152 c/gimple-parser.cc:2335
! #: c/gimple-parser.cc:2507 c/c-parser.cc:17154 cp/parser.cc:35336
  #, gcc-internal-format
  msgid "expected %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:6179 c/c-parser.cc:6181 c/c-parser.cc:16617 cp/parser.cc:35348
! #: cp/parser.cc:39238 go/gofrontend/embed.cc:440
  #, gcc-internal-format
  msgid "expected %<[%>"
  msgstr ""
  
! #: c/c-parser.cc:7009 c/c-parser.cc:14979 c/c-parser.cc:20675
! #: c/c-parser.cc:23057 c/c-parser.cc:23143 c/c-parser.cc:23904
! #: c/c-parser.cc:25044 c/c-parser.cc:29863 c/gimple-parser.cc:447
! #: c/gimple-parser.cc:2513 c/c-parser.cc:4173 c/c-parser.cc:4401
! #: c/c-parser.cc:14531 cp/parser.cc:22207 cp/parser.cc:35342
  #: go/gofrontend/embed.cc:371
  #, gcc-internal-format
  msgid "expected %<{%>"
  msgstr ""
  
! #: c/c-parser.cc:7959 c/c-parser.cc:7968 c/c-parser.cc:10002
! #: c/c-parser.cc:11181 c/c-parser.cc:14743 c/c-parser.cc:15140
! #: c/c-parser.cc:15204 c/c-parser.cc:16694 c/c-parser.cc:17805
! #: c/c-parser.cc:18042 c/c-parser.cc:18595 c/c-parser.cc:18698
! #: c/c-parser.cc:19239 c/c-parser.cc:19675 c/c-parser.cc:19751
! #: c/c-parser.cc:19868 c/c-parser.cc:19940 c/c-parser.cc:20913
! #: c/c-parser.cc:26747 c/c-parser.cc:27927 c/c-parser.cc:27986
! #: c/c-parser.cc:29185 c/gimple-parser.cc:630 c/gimple-parser.cc:943
! #: c/gimple-parser.cc:2561 c/gimple-parser.cc:2588 c/c-parser.cc:9461
! #: c/c-parser.cc:17298 c/c-parser.cc:18703 cp/parser.cc:35375
! #: cp/parser.cc:37082 cp/parser.cc:40178 cp/parser.cc:41071
! #: go/gofrontend/embed.cc:404
  #, gcc-internal-format
  msgid "expected %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:8955 cp/parser.cc:35262
  #, gcc-internal-format
  msgid "expected %<while%>"
  msgstr ""
  
! #: c/c-parser.cc:10900 c/c-parser.cc:11130 c/c-parser.cc:11647
! #: c/c-parser.cc:11692 c/c-parser.cc:11785 c/c-parser.cc:11932
! #: c/c-parser.cc:12732 c/c-parser.cc:18219 c/c-parser.cc:19820
  #: c/gimple-parser.cc:1172 c/gimple-parser.cc:1198 c/gimple-parser.cc:1326
  #: c/gimple-parser.cc:1329 c/gimple-parser.cc:1709 c/gimple-parser.cc:1715
! #: cp/parser.cc:34692 cp/parser.cc:35351
  #, gcc-internal-format
  msgid "expected %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:11541
  msgid "expected %<.%>"
  msgstr ""
  
! #: c/c-parser.cc:14202 c/c-parser.cc:14234 c/c-parser.cc:14474
! #: cp/parser.cc:37656 cp/parser.cc:37677
  #, gcc-internal-format
  msgid "expected %<@end%>"
  msgstr ""
  
! #: c/c-parser.cc:14892 c/gimple-parser.cc:1497 cp/parser.cc:35360
  #, gcc-internal-format
  msgid "expected %<>%>"
  msgstr ""
  
! #: c/c-parser.cc:18793 c/c-parser.cc:20236 c/c-parser.cc:20662
! #: cp/parser.cc:35384 cp/parser.cc:42942
  #, gcc-internal-format
  msgid "expected %<,%> or %<)%>"
  msgstr ""
  
  #. All following cases are statements with LHS.
! #: c/c-parser.cc:19667 c/c-parser.cc:22952 c/c-parser.cc:22997
! #: c/c-parser.cc:23154 c/c-parser.cc:23501 c/c-parser.cc:24213
! #: c/c-parser.cc:25419 c/c-parser.cc:26923 c/c-parser.cc:28128
! #: c/gimple-parser.cc:798 c/c-parser.cc:6772 c/c-parser.cc:23074
! #: c/c-parser.cc:23297 cp/parser.cc:35363 cp/parser.cc:44637 cp/parser.cc:44810
  #, gcc-internal-format
  msgid "expected %<=%>"
  msgstr ""
  
! #: c/c-parser.cc:20812 c/c-parser.cc:27191 c/c-parser.cc:27212
! #: c/c-parser.cc:16752 c/c-parser.cc:16764 c/c-parser.cc:20792
! #: cp/parser.cc:43092 cp/parser.cc:43119 cp/parser.cc:50659 cp/parser.cc:50670
  #, gcc-internal-format
  msgid "expected %<)%> or %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:23085 c/c-parser.cc:23165 c/c-parser.cc:23518
! #: c/c-parser.cc:23973 c/gimple-parser.cc:1763 c/gimple-parser.cc:1795
! #: c/gimple-parser.cc:1805 c/gimple-parser.cc:2598 cp/parser.cc:35339
! #: cp/parser.cc:37866
  #, gcc-internal-format
  msgid "expected %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:23178 cp/parser.cc:44735
  #, gcc-internal-format
  msgid "expected %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:25091 c/c-parser.cc:25080 cp/parser.cc:47665
  #, gcc-internal-format
  msgid "expected %<#pragma omp section%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:28806 cp/parser.cc:52607
  msgid "<message unknown at compile time>"
  msgstr ""
  
! #: c/c-typeck.cc:9880
  msgid "(anonymous)"
  msgstr ""
  
! #: c/gimple-parser.cc:1486 cp/parser.cc:19542 cp/parser.cc:35357
  #, gcc-internal-format
  msgid "expected %<<%>"
  msgstr ""
*************** msgstr ""
*** 23188,23196 ****
  msgid "expected label"
  msgstr ""
  
! #: cobol/gcobolspec.cc:544
  #, c-format
! msgid "Driving: (%ld)\n"
  msgstr ""
  
  #: cp/call.cc:4225
--- 23201,23209 ----
  msgid "expected label"
  msgstr ""
  
! #: cobol/gcobolspec.cc:554
  #, c-format
! msgid "Driving: ("
  msgstr ""
  
  #: cp/call.cc:4225
*************** msgstr ""
*** 23202,23208 ****
  msgid "  after user-defined conversion:"
  msgstr ""
  
! #: cp/call.cc:8724 cp/pt.cc:2064 cp/pt.cc:26956
  msgid "candidate is:"
  msgid_plural "candidates are:"
  msgstr[0] ""
--- 23215,23221 ----
  msgid "  after user-defined conversion:"
  msgstr ""
  
! #: cp/call.cc:8724 cp/pt.cc:2064 cp/pt.cc:26986
  msgid "candidate is:"
  msgid_plural "candidates are:"
  msgstr[0] ""
*************** msgstr ""
*** 23302,23308 ****
  msgid "<statement>"
  msgstr ""
  
! #: cp/error.cc:2381 cp/error.cc:3503 c-family/c-pretty-print.cc:2694
  #, gcc-internal-format
  msgid "<unknown>"
  msgstr ""
--- 23315,23321 ----
  msgid "<statement>"
  msgstr ""
  
! #: cp/error.cc:2381 cp/error.cc:3524 c-family/c-pretty-print.cc:2694
  #, gcc-internal-format
  msgid "<unknown>"
  msgstr ""
*************** msgstr ""
*** 23329,23343 ****
  msgid "*this"
  msgstr ""
  
! #: cp/error.cc:3227
  msgid "<expression error>"
  msgstr ""
  
! #: cp/error.cc:3242
  msgid "<unknown operator>"
  msgstr ""
  
! #: cp/error.cc:3732
  msgid "At global scope:"
  msgstr ""
  
--- 23342,23356 ----
  msgid "*this"
  msgstr ""
  
! #: cp/error.cc:3248
  msgid "<expression error>"
  msgstr ""
  
! #: cp/error.cc:3263
  msgid "<unknown operator>"
  msgstr ""
  
! #: cp/error.cc:3753
  msgid "At global scope:"
  msgstr ""
  
*************** msgstr ""
*** 23345,23432 ****
  msgid "candidates are:"
  msgstr ""
  
! #: cp/rtti.cc:588
  msgid "target is not pointer or reference to class"
  msgstr ""
  
! #: cp/rtti.cc:593
  msgid "target is not pointer or reference to complete type"
  msgstr ""
  
! #: cp/rtti.cc:599
  msgid "target is not pointer or reference"
  msgstr ""
  
! #: cp/rtti.cc:615
  msgid "source is not a pointer"
  msgstr ""
  
! #: cp/rtti.cc:620
  msgid "source is not a pointer to class"
  msgstr ""
  
! #: cp/rtti.cc:625
  msgid "source is a pointer to incomplete type"
  msgstr ""
  
! #: cp/rtti.cc:638
  msgid "source is not of class type"
  msgstr ""
  
! #: cp/rtti.cc:643
  msgid "source is of incomplete class type"
  msgstr ""
  
! #: cp/rtti.cc:654
  msgid "conversion casts away constness"
  msgstr ""
  
! #: cp/rtti.cc:816
  msgid "source type is not polymorphic"
  msgstr ""
  
! #: cp/typeck.cc:7524 c/c-typeck.cc:5303
  #, gcc-internal-format
  msgid "wrong type argument to unary minus"
  msgstr ""
  
! #: cp/typeck.cc:7525 c/c-typeck.cc:5289
  #, gcc-internal-format
  msgid "wrong type argument to unary plus"
  msgstr ""
  
! #: cp/typeck.cc:7552 c/c-typeck.cc:5348
  #, gcc-internal-format
  msgid "wrong type argument to bit-complement"
  msgstr ""
  
! #: cp/typeck.cc:7572 c/c-typeck.cc:5356
  #, gcc-internal-format
  msgid "wrong type argument to abs"
  msgstr ""
  
! #: cp/typeck.cc:7584 c/c-typeck.cc:5378
  #, gcc-internal-format
  msgid "wrong type argument to conjugation"
  msgstr ""
  
! #: cp/typeck.cc:7608
  msgid "in argument to unary !"
  msgstr ""
  
! #: cp/typeck.cc:7657
  msgid "no pre-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7659
  msgid "no post-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7661
  msgid "no pre-decrement operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7663
  msgid "no post-decrement operator for type"
  msgstr ""
  
--- 23358,23445 ----
  msgid "candidates are:"
  msgstr ""
  
! #: cp/rtti.cc:589
  msgid "target is not pointer or reference to class"
  msgstr ""
  
! #: cp/rtti.cc:594
  msgid "target is not pointer or reference to complete type"
  msgstr ""
  
! #: cp/rtti.cc:600
  msgid "target is not pointer or reference"
  msgstr ""
  
! #: cp/rtti.cc:616
  msgid "source is not a pointer"
  msgstr ""
  
! #: cp/rtti.cc:621
  msgid "source is not a pointer to class"
  msgstr ""
  
! #: cp/rtti.cc:626
  msgid "source is a pointer to incomplete type"
  msgstr ""
  
! #: cp/rtti.cc:639
  msgid "source is not of class type"
  msgstr ""
  
! #: cp/rtti.cc:644
  msgid "source is of incomplete class type"
  msgstr ""
  
! #: cp/rtti.cc:655
  msgid "conversion casts away constness"
  msgstr ""
  
! #: cp/rtti.cc:817
  msgid "source type is not polymorphic"
  msgstr ""
  
! #: cp/typeck.cc:7640 c/c-typeck.cc:5304
  #, gcc-internal-format
  msgid "wrong type argument to unary minus"
  msgstr ""
  
! #: cp/typeck.cc:7641 c/c-typeck.cc:5290
  #, gcc-internal-format
  msgid "wrong type argument to unary plus"
  msgstr ""
  
! #: cp/typeck.cc:7668 c/c-typeck.cc:5349
  #, gcc-internal-format
  msgid "wrong type argument to bit-complement"
  msgstr ""
  
! #: cp/typeck.cc:7688 c/c-typeck.cc:5357
  #, gcc-internal-format
  msgid "wrong type argument to abs"
  msgstr ""
  
! #: cp/typeck.cc:7700 c/c-typeck.cc:5379
  #, gcc-internal-format
  msgid "wrong type argument to conjugation"
  msgstr ""
  
! #: cp/typeck.cc:7724
  msgid "in argument to unary !"
  msgstr ""
  
! #: cp/typeck.cc:7773
  msgid "no pre-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7775
  msgid "no post-increment operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7777
  msgid "no pre-decrement operator for type"
  msgstr ""
  
! #: cp/typeck.cc:7779
  msgid "no post-decrement operator for type"
  msgstr ""
  
*************** msgstr ""
*** 23564,23570 ****
  msgid "Unsigned:"
  msgstr ""
  
! #: fortran/expr.cc:3856
  msgid "array assignment"
  msgstr ""
  
--- 23577,23583 ----
  msgid "Unsigned:"
  msgstr ""
  
! #: fortran/expr.cc:3960
  msgid "array assignment"
  msgstr ""
  
*************** msgstr ""
*** 23597,23603 ****
  msgid "Driving:"
  msgstr ""
  
! #: fortran/interface.cc:3905 fortran/intrinsic.cc:4662
  msgid "actual argument to INTENT = OUT/INOUT"
  msgstr ""
  
--- 23610,23616 ----
  msgid "Driving:"
  msgstr ""
  
! #: fortran/interface.cc:3926 fortran/intrinsic.cc:4662
  msgid "actual argument to INTENT = OUT/INOUT"
  msgstr ""
  
*************** msgstr ""
*** 23645,23662 ****
  msgid "unsigned"
  msgstr ""
  
! #: fortran/io.cc:1873
  #, c-format
  msgid "%s tag"
  msgstr ""
  
! #: fortran/io.cc:3364
  msgid "internal unit in WRITE"
  msgstr ""
  
  #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
  #. contexts.  Thus, use an extended RESOLVE_TAG macro for that.
! #: fortran/io.cc:4725
  #, c-format
  msgid "%s tag with INQUIRE"
  msgstr ""
--- 23658,23675 ----
  msgid "unsigned"
  msgstr ""
  
! #: fortran/io.cc:1875
  #, c-format
  msgid "%s tag"
  msgstr ""
  
! #: fortran/io.cc:3366
  msgid "internal unit in WRITE"
  msgstr ""
  
  #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
  #. contexts.  Thus, use an extended RESOLVE_TAG macro for that.
! #: fortran/io.cc:4727
  #, c-format
  msgid "%s tag with INQUIRE"
  msgstr ""
*************** msgstr ""
*** 23763,23773 ****
  msgid "implied END DO"
  msgstr ""
  
! #: fortran/parse.cc:2523 fortran/resolve.cc:13586
  msgid "assignment"
  msgstr ""
  
! #: fortran/parse.cc:2526 fortran/resolve.cc:13652 fortran/resolve.cc:13655
  msgid "pointer assignment"
  msgstr ""
  
--- 23776,23786 ----
  msgid "implied END DO"
  msgstr ""
  
! #: fortran/parse.cc:2523 fortran/resolve.cc:13576
  msgid "assignment"
  msgstr ""
  
! #: fortran/parse.cc:2526 fortran/resolve.cc:13642 fortran/resolve.cc:13645
  msgid "pointer assignment"
  msgstr ""
  
*************** msgstr ""
*** 23775,23912 ****
  msgid "simple IF"
  msgstr ""
  
! #: fortran/resolve.cc:2464 fortran/resolve.cc:2659
  msgid "elemental procedure"
  msgstr ""
  
! #: fortran/resolve.cc:2562
  msgid "allocatable argument"
  msgstr ""
  
! #: fortran/resolve.cc:2567
  msgid "asynchronous argument"
  msgstr ""
  
! #: fortran/resolve.cc:2572
  msgid "optional argument"
  msgstr ""
  
! #: fortran/resolve.cc:2577
  msgid "pointer argument"
  msgstr ""
  
! #: fortran/resolve.cc:2582
  msgid "target argument"
  msgstr ""
  
! #: fortran/resolve.cc:2587
  msgid "value argument"
  msgstr ""
  
! #: fortran/resolve.cc:2592
  msgid "volatile argument"
  msgstr ""
  
! #: fortran/resolve.cc:2597
  msgid "assumed-shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:2602
  msgid "assumed-rank argument"
  msgstr ""
  
! #: fortran/resolve.cc:2607
  msgid "coarray argument"
  msgstr ""
  
! #: fortran/resolve.cc:2612
  msgid "parametrized derived type argument"
  msgstr ""
  
! #: fortran/resolve.cc:2617
  msgid "polymorphic argument"
  msgstr ""
  
! #: fortran/resolve.cc:2622
  msgid "NO_ARG_CHECK attribute"
  msgstr ""
  
  #. As assumed-type is unlimited polymorphic (cf. above).
  #. See also TS 29113, Note 6.1.
! #: fortran/resolve.cc:2629
  msgid "assumed-type argument"
  msgstr ""
  
! #: fortran/resolve.cc:2640
  msgid "array result"
  msgstr ""
  
! #: fortran/resolve.cc:2645
  msgid "pointer or allocatable result"
  msgstr ""
  
! #: fortran/resolve.cc:2652
  msgid "result with non-constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:2664
  msgid "bind(c) procedure"
  msgstr ""
  
! #: fortran/resolve.cc:8002
  msgid "Loop variable"
  msgstr ""
  
! #: fortran/resolve.cc:8006
  msgid "iterator variable"
  msgstr ""
  
! #: fortran/resolve.cc:8010
  msgid "Start expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8014
  msgid "End expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8018
  msgid "Step expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8636 fortran/resolve.cc:8639
  msgid "DEALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9063 fortran/resolve.cc:9066
  msgid "ALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9303 fortran/resolve.cc:11450 fortran/resolve.cc:11571
  msgid "STAT variable"
  msgstr ""
  
! #: fortran/resolve.cc:9354 fortran/resolve.cc:11462 fortran/resolve.cc:11583
  msgid "ERRMSG variable"
  msgstr ""
  
! #: fortran/resolve.cc:11258
  msgid "item in READ"
  msgstr ""
  
! #: fortran/resolve.cc:11474
  msgid "ACQUIRED_LOCK variable"
  msgstr ""
  
! #: fortran/trans-array.cc:2058
  #, c-format
  msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
  msgstr ""
  
! #: fortran/trans-array.cc:6629
  msgid "Integer overflow when calculating the amount of memory to allocate"
  msgstr ""
  
! #: fortran/trans-array.cc:10933
  #, c-format
  msgid ""
  "The value of the PDT LEN parameter '%s' does not agree with that in the "
--- 23788,23925 ----
  msgid "simple IF"
  msgstr ""
  
! #: fortran/resolve.cc:2465 fortran/resolve.cc:2660
  msgid "elemental procedure"
  msgstr ""
  
! #: fortran/resolve.cc:2563
  msgid "allocatable argument"
  msgstr ""
  
! #: fortran/resolve.cc:2568
  msgid "asynchronous argument"
  msgstr ""
  
! #: fortran/resolve.cc:2573
  msgid "optional argument"
  msgstr ""
  
! #: fortran/resolve.cc:2578
  msgid "pointer argument"
  msgstr ""
  
! #: fortran/resolve.cc:2583
  msgid "target argument"
  msgstr ""
  
! #: fortran/resolve.cc:2588
  msgid "value argument"
  msgstr ""
  
! #: fortran/resolve.cc:2593
  msgid "volatile argument"
  msgstr ""
  
! #: fortran/resolve.cc:2598
  msgid "assumed-shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:2603
  msgid "assumed-rank argument"
  msgstr ""
  
! #: fortran/resolve.cc:2608
  msgid "coarray argument"
  msgstr ""
  
! #: fortran/resolve.cc:2613
  msgid "parametrized derived type argument"
  msgstr ""
  
! #: fortran/resolve.cc:2618
  msgid "polymorphic argument"
  msgstr ""
  
! #: fortran/resolve.cc:2623
  msgid "NO_ARG_CHECK attribute"
  msgstr ""
  
  #. As assumed-type is unlimited polymorphic (cf. above).
  #. See also TS 29113, Note 6.1.
! #: fortran/resolve.cc:2630
  msgid "assumed-type argument"
  msgstr ""
  
! #: fortran/resolve.cc:2641
  msgid "array result"
  msgstr ""
  
! #: fortran/resolve.cc:2646
  msgid "pointer or allocatable result"
  msgstr ""
  
! #: fortran/resolve.cc:2653
  msgid "result with non-constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:2665
  msgid "bind(c) procedure"
  msgstr ""
  
! #: fortran/resolve.cc:7975
  msgid "Loop variable"
  msgstr ""
  
! #: fortran/resolve.cc:7979
  msgid "iterator variable"
  msgstr ""
  
! #: fortran/resolve.cc:7983
  msgid "Start expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:7987
  msgid "End expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:7991
  msgid "Step expression in DO loop"
  msgstr ""
  
! #: fortran/resolve.cc:8609 fortran/resolve.cc:8612
  msgid "DEALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9053 fortran/resolve.cc:9056
  msgid "ALLOCATE object"
  msgstr ""
  
! #: fortran/resolve.cc:9293 fortran/resolve.cc:11440 fortran/resolve.cc:11561
  msgid "STAT variable"
  msgstr ""
  
! #: fortran/resolve.cc:9344 fortran/resolve.cc:11452 fortran/resolve.cc:11573
  msgid "ERRMSG variable"
  msgstr ""
  
! #: fortran/resolve.cc:11248
  msgid "item in READ"
  msgstr ""
  
! #: fortran/resolve.cc:11464
  msgid "ACQUIRED_LOCK variable"
  msgstr ""
  
! #: fortran/trans-array.cc:2061
  #, c-format
  msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
  msgstr ""
  
! #: fortran/trans-array.cc:6631
  msgid "Integer overflow when calculating the amount of memory to allocate"
  msgstr ""
  
! #: fortran/trans-array.cc:10935
  #, c-format
  msgid ""
  "The value of the PDT LEN parameter '%s' does not agree with that in the "
*************** msgid ""
*** 23927,23938 ****
  "'%s' (%ld/%ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:11373
  #, c-format
  msgid "Target of rank remapping is too small (%ld < %ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:13068
  msgid "Assignment of scalar to unallocated array"
  msgstr ""
  
--- 23940,23951 ----
  "'%s' (%ld/%ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:11386
  #, c-format
  msgid "Target of rank remapping is too small (%ld < %ld)"
  msgstr ""
  
! #: fortran/trans-expr.cc:13081
  msgid "Assignment of scalar to unallocated array"
  msgstr ""
  
*************** msgstr ""
*** 23941,24021 ****
  msgid "Unequal character lengths (%ld/%ld) in %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6387
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic BTEST"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6674
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6722
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6732
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6739
  #, c-format
  msgid "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6831
  #, c-format
  msgid "SHIFT argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6899
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFT"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6979
  #, c-format
  msgid "SIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6987 fortran/trans-intrinsic.cc:7032
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9383
  #, c-format
  msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9415
  msgid "Argument NCOPIES of REPEAT intrinsic is too large"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12882
  #, c-format
  msgid "FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12894
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12906
  #, c-format
  msgid "TOPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12918
  #, c-format
  msgid "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12926
  #, c-format
  msgid "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
--- 23954,24034 ----
  msgid "Unequal character lengths (%ld/%ld) in %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6366
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic BTEST"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6653
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6701
  #, c-format
  msgid "POS argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6711
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%ld in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6718
  #, c-format
  msgid "POS(%ld)+LEN(%ld)>BIT_SIZE(%ld) in intrinsic IBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6810
  #, c-format
  msgid "SHIFT argument (%ld) out of range 0:%ld in intrinsic %s"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6878
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFT"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6958
  #, c-format
  msgid "SIZE argument (%ld) out of range 1:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:6966 fortran/trans-intrinsic.cc:7011
  #, c-format
  msgid "SHIFT argument (%ld) out of range -%ld:%ld in intrinsic ISHFTC"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9362
  #, c-format
  msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:9394
  msgid "Argument NCOPIES of REPEAT intrinsic is too large"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12861
  #, c-format
  msgid "FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12873
  #, c-format
  msgid "LEN argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12885
  #, c-format
  msgid "TOPOS argument (%ld) out of range 0:%d in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12897
  #, c-format
  msgid "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12905
  #, c-format
  msgid "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS"
  msgstr ""
*************** msgstr ""
*** 24127,24134 ****
  msgid "expected boolean type"
  msgstr ""
  
! #: go/gofrontend/expressions.cc:5610 c/c-parser.cc:19534 c/c-parser.cc:19541
! #: cp/parser.cc:41864 cp/parser.cc:41871
  #, gcc-internal-format
  msgid "expected integer"
  msgstr ""
--- 24140,24147 ----
  msgid "expected boolean type"
  msgstr ""
  
! #: go/gofrontend/expressions.cc:5610 c/c-parser.cc:19579 c/c-parser.cc:19586
! #: cp/parser.cc:41923 cp/parser.cc:41930
  #, gcc-internal-format
  msgid "expected integer"
  msgstr ""
*************** msgstr ""
*** 24193,24199 ****
  #: go/gofrontend/expressions.cc:11749 go/gofrontend/expressions.cc:11844
  #: go/gofrontend/expressions.cc:14020 go/gofrontend/expressions.cc:14149
  #: go/gofrontend/expressions.cc:14163 go/gofrontend/expressions.cc:14184
! #: cp/pt.cc:9466
  #, gcc-internal-format
  msgid "too many arguments"
  msgstr ""
--- 24206,24212 ----
  #: go/gofrontend/expressions.cc:11749 go/gofrontend/expressions.cc:11844
  #: go/gofrontend/expressions.cc:14020 go/gofrontend/expressions.cc:14149
  #: go/gofrontend/expressions.cc:14163 go/gofrontend/expressions.cc:14184
! #: cp/pt.cc:9471
  #, gcc-internal-format
  msgid "too many arguments"
  msgstr ""
*************** msgstr ""
*** 24590,24596 ****
  msgid "target OS does not support unaligned accesses"
  msgstr ""
  
! #: config/c6x/c6x.h:346 config/nvptx/nvptx.h:193
  #, gcc-internal-format
  msgid "profiling is not yet implemented for this architecture"
  msgstr ""
--- 24603,24609 ----
  msgid "target OS does not support unaligned accesses"
  msgstr ""
  
! #: config/c6x/c6x.h:346 config/nvptx/nvptx.h:194
  #, gcc-internal-format
  msgid "profiling is not yet implemented for this architecture"
  msgstr ""
*************** msgstr ""
*** 24825,24851 ****
  msgid "%<-mrelax%> is only supported for RTP PIC"
  msgstr ""
  
! #: cobol/parse_ante.h:1728
  #, gcc-internal-format, gfc-internal-format
! msgid "Global declarative %s for %s"
  msgstr ""
  
! #: cobol/parse_ante.h:2456 cobol/genapi.cc:5784
  #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d: invalid symbol_type_t %d"
  msgstr ""
  
! #: cobol/parse_ante.h:2798
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d: no symbol '%s' found"
  msgstr ""
  
! #: cobol/parse_util.h:351
! #, gcc-internal-format, gfc-internal-format
! msgid "%s: intrinsic function  %s not found"
  msgstr ""
  
! #: cobol/parse_util.h:383
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: invalid function descr type '%c'"
  msgstr ""
--- 24838,24865 ----
  msgid "%<-mrelax%> is only supported for RTP PIC"
  msgstr ""
  
! #: cobol/exceptg.h:80
  #, gcc-internal-format, gfc-internal-format
! msgid "CDF: exception '%s'"
  msgstr ""
  
! #: cobol/parse_ante.h:1592
  #, gcc-internal-format, gfc-internal-format
! msgid "Global declarative %s for %s"
  msgstr ""
  
! #: cobol/parse_ante.h:2385 cobol/symbols.h:134 cobol/genapi.cc:6470
! #: cobol/util.cc:288 cobol/util.cc:337 cobol/util.cc:637
! #, gcc-internal-format
! msgid "%s:%d: invalid %<symbol_type_t%> %d"
  msgstr ""
  
! #: cobol/parse_util.h:360
! #, gcc-internal-format
! msgid "%s: intrinsic function %qs not found"
  msgstr ""
  
! #: cobol/parse_util.h:392
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: invalid function descr type '%c'"
  msgstr ""
*************** msgid "scan.o: %s"
*** 24856,24862 ****
  msgstr ""
  
  #. A general purpose syntax error.
! #: fortran/gfortran.h:3560 fortran/io.cc:3727 fortran/io.cc:4413
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in %s statement at %C"
  msgstr ""
--- 24870,24876 ----
  msgstr ""
  
  #. A general purpose syntax error.
! #: fortran/gfortran.h:3563 fortran/io.cc:3729 fortran/io.cc:4415
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in %s statement at %C"
  msgstr ""
*************** msgstr ""
*** 24946,24952 ****
  #: c-family/c.opt:89 c-family/c.opt:185 c-family/c.opt:188 c-family/c.opt:230
  #: c-family/c.opt:234 c-family/c.opt:246 c-family/c.opt:2482
  #: c-family/c.opt:2490 config/darwin.opt:30 common.opt:329 common.opt:332
! #: common.opt:429 common.opt:3801
  #, gcc-internal-format
  msgid "missing filename after %qs"
  msgstr ""
--- 24960,24966 ----
  #: c-family/c.opt:89 c-family/c.opt:185 c-family/c.opt:188 c-family/c.opt:230
  #: c-family/c.opt:234 c-family/c.opt:246 c-family/c.opt:2482
  #: c-family/c.opt:2490 config/darwin.opt:30 common.opt:329 common.opt:332
! #: common.opt:429 common.opt:3798
  #, gcc-internal-format
  msgid "missing filename after %qs"
  msgstr ""
*************** msgstr ""
*** 25041,25047 ****
  msgid "unrecognized scalar storage order value %qs"
  msgstr ""
  
! #: cobol/lang.opt:46
  #, gcc-internal-format
  msgid "Unrecognized COBOL dialect name: %qs"
  msgstr ""
--- 25055,25061 ----
  msgid "unrecognized scalar storage order value %qs"
  msgstr ""
  
! #: cobol/lang.opt:51
  #, gcc-internal-format
  msgid "Unrecognized COBOL dialect name: %qs"
  msgstr ""
*************** msgstr ""
*** 25222,25298 ****
  msgid "unknown LTO partitioning model %qs"
  msgstr ""
  
! #: common.opt:2406
  #, gcc-internal-format
  msgid "targets missing after %qs"
  msgstr ""
  
! #: common.opt:2409
  #, gcc-internal-format
  msgid "options or targets=options missing after %qs"
  msgstr ""
  
! #: common.opt:2417
  #, gcc-internal-format
  msgid "unknown offload ABI %qs"
  msgstr ""
  
! #: common.opt:2426
  #, gcc-internal-format
  msgid "option missing after %qs"
  msgstr ""
  
! #: common.opt:2603
  #, gcc-internal-format
  msgid "unknown profile reproducibility method %qs"
  msgstr ""
  
! #: common.opt:2619
  #, gcc-internal-format
  msgid "unknown profile update method %qs"
  msgstr ""
  
! #: common.opt:2728
  #, gcc-internal-format
  msgid "unknown Live-Patching Level %qs"
  msgstr ""
  
! #: common.opt:2761
  #, gcc-internal-format
  msgid "unknown basic block reordering algorithm %qs"
  msgstr ""
  
! #: common.opt:3097
  #, gcc-internal-format
  msgid "unknown TLS model %qs"
  msgstr ""
  
! #: common.opt:3130
  #, gcc-internal-format
  msgid "unknown trampoline implementation %qs"
  msgstr ""
  
! #: common.opt:3452
  #, gcc-internal-format
  msgid "unknown vectorizer cost model %qs"
  msgstr ""
  
! #: common.opt:3483
  #, gcc-internal-format
  msgid "unrecognized automatic variable initialization type %qs"
  msgstr ""
  
! #: common.opt:3509
  #, gcc-internal-format
  msgid "unrecognized visibility value %qs"
  msgstr ""
  
! #: common.opt:3528
  #, gcc-internal-format
  msgid "unknown vtable verify initialization priority %qs"
  msgstr ""
  
! #: common.opt:3584
  #, gcc-internal-format
  msgid "unrecognized zero init padding bits kind %qs"
  msgstr ""
--- 25236,25312 ----
  msgid "unknown LTO partitioning model %qs"
  msgstr ""
  
! #: common.opt:2403
  #, gcc-internal-format
  msgid "targets missing after %qs"
  msgstr ""
  
! #: common.opt:2406
  #, gcc-internal-format
  msgid "options or targets=options missing after %qs"
  msgstr ""
  
! #: common.opt:2414
  #, gcc-internal-format
  msgid "unknown offload ABI %qs"
  msgstr ""
  
! #: common.opt:2423
  #, gcc-internal-format
  msgid "option missing after %qs"
  msgstr ""
  
! #: common.opt:2600
  #, gcc-internal-format
  msgid "unknown profile reproducibility method %qs"
  msgstr ""
  
! #: common.opt:2616
  #, gcc-internal-format
  msgid "unknown profile update method %qs"
  msgstr ""
  
! #: common.opt:2725
  #, gcc-internal-format
  msgid "unknown Live-Patching Level %qs"
  msgstr ""
  
! #: common.opt:2758
  #, gcc-internal-format
  msgid "unknown basic block reordering algorithm %qs"
  msgstr ""
  
! #: common.opt:3094
  #, gcc-internal-format
  msgid "unknown TLS model %qs"
  msgstr ""
  
! #: common.opt:3127
  #, gcc-internal-format
  msgid "unknown trampoline implementation %qs"
  msgstr ""
  
! #: common.opt:3449
  #, gcc-internal-format
  msgid "unknown vectorizer cost model %qs"
  msgstr ""
  
! #: common.opt:3480
  #, gcc-internal-format
  msgid "unrecognized automatic variable initialization type %qs"
  msgstr ""
  
! #: common.opt:3506
  #, gcc-internal-format
  msgid "unrecognized visibility value %qs"
  msgstr ""
  
! #: common.opt:3525
  #, gcc-internal-format
  msgid "unknown vtable verify initialization priority %qs"
  msgstr ""
  
! #: common.opt:3581
  #, gcc-internal-format
  msgid "unrecognized zero init padding bits kind %qs"
  msgstr ""
*************** msgstr ""
*** 25331,25337 ****
  
  #: attribs.cc:538 c-family/c-attribs.cc:1053 c-family/c-attribs.cc:2762
  #: c-family/c-attribs.cc:3318 c-family/c-attribs.cc:5282
! #: c-family/c-attribs.cc:5375 cp/decl.cc:17061 cp/decl.cc:17112
  #: cp/friend.cc:319 cp/tree.cc:5394
  #, gcc-internal-format
  msgid "previous declaration here"
--- 25345,25351 ----
  
  #: attribs.cc:538 c-family/c-attribs.cc:1053 c-family/c-attribs.cc:2762
  #: c-family/c-attribs.cc:3318 c-family/c-attribs.cc:5282
! #: c-family/c-attribs.cc:5375 cp/decl.cc:17059 cp/decl.cc:17110
  #: cp/friend.cc:319 cp/tree.cc:5394
  #, gcc-internal-format
  msgid "previous declaration here"
*************** msgstr ""
*** 25349,25355 ****
  msgid "%<%E::%E%> scoped attribute directive ignored"
  msgstr ""
  
! #: attribs.cc:761 c/c-parser.cc:2144 cp/cp-gimplify.cc:3704
  #, gcc-internal-format
  msgid "wrong number of arguments specified for %qE attribute"
  msgstr ""
--- 25363,25369 ----
  msgid "%<%E::%E%> scoped attribute directive ignored"
  msgstr ""
  
! #: attribs.cc:761 c/c-parser.cc:2189 cp/cp-gimplify.cc:3709
  #, gcc-internal-format
  msgid "wrong number of arguments specified for %qE attribute"
  msgstr ""
*************** msgstr ""
*** 25359,25365 ****
  msgid "expected %i or more, found %i"
  msgstr ""
  
! #: attribs.cc:767 c/c-parser.cc:2147 cp/cp-gimplify.cc:3706
  #, gcc-internal-format, gfc-internal-format
  msgid "expected %i, found %i"
  msgstr ""
--- 25373,25379 ----
  msgid "expected %i or more, found %i"
  msgstr ""
  
! #: attribs.cc:767 c/c-parser.cc:2192 cp/cp-gimplify.cc:3711
  #, gcc-internal-format, gfc-internal-format
  msgid "expected %i, found %i"
  msgstr ""
*************** msgstr ""
*** 25426,25447 ****
  #: c-family/c-attribs.cc:6073 c-family/c-attribs.cc:6105
  #: c-family/c-attribs.cc:6147 c-family/c-attribs.cc:6163
  #: c-family/c-attribs.cc:6335 c-family/c-attribs.cc:6347
! #: c-family/c-common.cc:6235 c-family/c-common.cc:6238 config/darwin.cc:2208
  #: config/arm/arm.cc:7515 config/arm/arm.cc:7542 config/arm/arm.cc:7559
  #: config/avr/avr.cc:11304 config/csky/csky.cc:6498 config/csky/csky.cc:6519
  #: config/h8300/h8300.cc:4972 config/h8300/h8300.cc:4996
  #: config/i386/i386-options.cc:3774 config/i386/i386-options.cc:3932
  #: config/i386/i386-options.cc:4164 config/i386/i386-options.cc:4194
  #: config/ia64/ia64.cc:799 config/loongarch/loongarch.cc:8197
! #: config/rs6000/rs6000.cc:20745 ada/gcc-interface/utils.cc:6900
! #: ada/gcc-interface/utils.cc:6916 ada/gcc-interface/utils.cc:7013
! #: ada/gcc-interface/utils.cc:7030 ada/gcc-interface/utils.cc:7047
! #: ada/gcc-interface/utils.cc:7062 ada/gcc-interface/utils.cc:7078
! #: ada/gcc-interface/utils.cc:7104 ada/gcc-interface/utils.cc:7173
! #: ada/gcc-interface/utils.cc:7200 ada/gcc-interface/utils.cc:7245
! #: ada/gcc-interface/utils.cc:7266 ada/gcc-interface/utils.cc:7314
! #: ada/gcc-interface/utils.cc:7330 ada/gcc-interface/utils.cc:7364
! #: c/c-decl.cc:4952 c/c-decl.cc:4955 c/c-decl.cc:4982 c/c-parser.cc:6097
  #: cp/tree.cc:5062 cp/tree.cc:5561 d/d-attribs.cc:483 d/d-attribs.cc:702
  #: d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 d/d-attribs.cc:788
  #: d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 d/d-attribs.cc:1008
--- 25440,25461 ----
  #: c-family/c-attribs.cc:6073 c-family/c-attribs.cc:6105
  #: c-family/c-attribs.cc:6147 c-family/c-attribs.cc:6163
  #: c-family/c-attribs.cc:6335 c-family/c-attribs.cc:6347
! #: c-family/c-common.cc:6256 c-family/c-common.cc:6259 config/darwin.cc:2208
  #: config/arm/arm.cc:7515 config/arm/arm.cc:7542 config/arm/arm.cc:7559
  #: config/avr/avr.cc:11304 config/csky/csky.cc:6498 config/csky/csky.cc:6519
  #: config/h8300/h8300.cc:4972 config/h8300/h8300.cc:4996
  #: config/i386/i386-options.cc:3774 config/i386/i386-options.cc:3932
  #: config/i386/i386-options.cc:4164 config/i386/i386-options.cc:4194
  #: config/ia64/ia64.cc:799 config/loongarch/loongarch.cc:8197
! #: config/rs6000/rs6000.cc:20745 ada/gcc-interface/utils.cc:6902
! #: ada/gcc-interface/utils.cc:6918 ada/gcc-interface/utils.cc:7015
! #: ada/gcc-interface/utils.cc:7032 ada/gcc-interface/utils.cc:7049
! #: ada/gcc-interface/utils.cc:7064 ada/gcc-interface/utils.cc:7080
! #: ada/gcc-interface/utils.cc:7106 ada/gcc-interface/utils.cc:7175
! #: ada/gcc-interface/utils.cc:7202 ada/gcc-interface/utils.cc:7247
! #: ada/gcc-interface/utils.cc:7268 ada/gcc-interface/utils.cc:7316
! #: ada/gcc-interface/utils.cc:7332 ada/gcc-interface/utils.cc:7366
! #: c/c-decl.cc:4952 c/c-decl.cc:4955 c/c-decl.cc:4982 c/c-parser.cc:6142
  #: cp/tree.cc:5062 cp/tree.cc:5561 d/d-attribs.cc:483 d/d-attribs.cc:702
  #: d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 d/d-attribs.cc:788
  #: d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 d/d-attribs.cc:1008
*************** msgstr ""
*** 25463,25470 ****
  msgid "missing %<target%> attribute for multi-versioned %qD"
  msgstr ""
  
! #: attribs.cc:1224 cp/decl.cc:1359 cp/decl.cc:2371 cp/decl.cc:2419
! #: cp/decl.cc:2435 cp/decl.cc:3134 cp/decl.cc:3586
  #, gcc-internal-format
  msgid "previous declaration of %qD"
  msgstr ""
--- 25477,25484 ----
  msgid "missing %<target%> attribute for multi-versioned %qD"
  msgstr ""
  
! #: attribs.cc:1224 cp/decl.cc:1357 cp/decl.cc:2369 cp/decl.cc:2417
! #: cp/decl.cc:2433 cp/decl.cc:3132 cp/decl.cc:3584
  #, gcc-internal-format
  msgid "previous declaration of %qD"
  msgstr ""
*************** msgstr ""
*** 25577,25583 ****
  msgid "offset %qwi outside bounds of constant string"
  msgstr ""
  
! #: builtins.cc:707 cp/name-lookup.cc:6938
  #, gcc-internal-format
  msgid "%qE declared here"
  msgstr ""
--- 25591,25597 ----
  msgid "offset %qwi outside bounds of constant string"
  msgstr ""
  
! #: builtins.cc:707 cp/name-lookup.cc:6941
  #, gcc-internal-format
  msgid "%qE declared here"
  msgstr ""
*************** msgstr ""
*** 25680,25747 ****
  msgid "illegal argument 0 to %qs"
  msgstr ""
  
  #. All valid uses of __builtin_va_arg_pack () are removed during
  #. inlining.
! #: builtins.cc:8084 expr.cc:12464
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack ()%>"
  msgstr ""
  
  #. All valid uses of __builtin_va_arg_pack_len () are removed during
  #. inlining.
! #: builtins.cc:8090
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack_len ()%>"
  msgstr ""
  
! #: builtins.cc:8379
  #, gcc-internal-format
  msgid "%<__builtin_longjmp%> second argument must be 1"
  msgstr ""
  
! #: builtins.cc:9343
  #, gcc-internal-format
  msgid "target format does not support infinity"
  msgstr ""
  
! #: builtins.cc:11402
  #, gcc-internal-format
  msgid "%<va_start%> used in function with fixed arguments"
  msgstr ""
  
! #: builtins.cc:11410
  #, gcc-internal-format
  msgid "wrong number of arguments to function %<va_start%>"
  msgstr ""
  
! #: builtins.cc:11425
  #, gcc-internal-format
  msgid "%<__builtin_next_arg%> called without an argument"
  msgstr ""
  
! #: builtins.cc:11430
  #, gcc-internal-format
  msgid "wrong number of arguments to function %<__builtin_next_arg%>"
  msgstr ""
  
! #: builtins.cc:11463
  #, gcc-internal-format
  msgid "second parameter of %<va_start%> not last named argument"
  msgstr ""
  
! #: builtins.cc:11476 c/c-parser.cc:11669
  #, gcc-internal-format
  msgid ""
  "undefined behavior when second parameter of %<va_start%> is declared with "
  "%<register%> storage"
  msgstr ""
  
! #: builtins.cc:11505
  #, gcc-internal-format
  msgid "first argument of %qD must be a pointer, second integer constant"
  msgstr ""
  
! #: builtins.cc:11518
  #, gcc-internal-format
  msgid "last argument of %qD is not integer constant between 0 and 3"
  msgstr ""
--- 25694,25766 ----
  msgid "illegal argument 0 to %qs"
  msgstr ""
  
+ #: builtins.cc:7806 internal-fn.cc:4030
+ #, gcc-internal-format
+ msgid "third argument to %<crc%> builtins must be a constant"
+ msgstr ""
+ 
  #. All valid uses of __builtin_va_arg_pack () are removed during
  #. inlining.
! #: builtins.cc:8090 expr.cc:12464
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack ()%>"
  msgstr ""
  
  #. All valid uses of __builtin_va_arg_pack_len () are removed during
  #. inlining.
! #: builtins.cc:8096
  #, gcc-internal-format
  msgid "invalid use of %<__builtin_va_arg_pack_len ()%>"
  msgstr ""
  
! #: builtins.cc:8385
  #, gcc-internal-format
  msgid "%<__builtin_longjmp%> second argument must be 1"
  msgstr ""
  
! #: builtins.cc:9349
  #, gcc-internal-format
  msgid "target format does not support infinity"
  msgstr ""
  
! #: builtins.cc:11408
  #, gcc-internal-format
  msgid "%<va_start%> used in function with fixed arguments"
  msgstr ""
  
! #: builtins.cc:11416
  #, gcc-internal-format
  msgid "wrong number of arguments to function %<va_start%>"
  msgstr ""
  
! #: builtins.cc:11431
  #, gcc-internal-format
  msgid "%<__builtin_next_arg%> called without an argument"
  msgstr ""
  
! #: builtins.cc:11436
  #, gcc-internal-format
  msgid "wrong number of arguments to function %<__builtin_next_arg%>"
  msgstr ""
  
! #: builtins.cc:11469
  #, gcc-internal-format
  msgid "second parameter of %<va_start%> not last named argument"
  msgstr ""
  
! #: builtins.cc:11482 c/c-parser.cc:11714
  #, gcc-internal-format
  msgid ""
  "undefined behavior when second parameter of %<va_start%> is declared with "
  "%<register%> storage"
  msgstr ""
  
! #: builtins.cc:11511
  #, gcc-internal-format
  msgid "first argument of %qD must be a pointer, second integer constant"
  msgstr ""
  
! #: builtins.cc:11524
  #, gcc-internal-format
  msgid "last argument of %qD is not integer constant between 0 and 3"
  msgstr ""
*************** msgstr ""
*** 25751,25762 ****
  msgid "cannot tail-call: %s"
  msgstr ""
  
! #: calls.cc:2818
  #, gcc-internal-format
  msgid "function call has aggregate value"
  msgstr ""
  
! #: calls.cc:3561
  #, gcc-internal-format
  msgid "passing too large argument on stack"
  msgstr ""
--- 25770,25781 ----
  msgid "cannot tail-call: %s"
  msgstr ""
  
! #: calls.cc:2819
  #, gcc-internal-format
  msgid "function call has aggregate value"
  msgstr ""
  
! #: calls.cc:3562
  #, gcc-internal-format
  msgid "passing too large argument on stack"
  msgstr ""
*************** msgstr ""
*** 25766,25887 ****
  msgid "%<verify_marked_backedges%> failed"
  msgstr ""
  
! #: cfgexpand.cc:2128
  #, gcc-internal-format
  msgid "total size of local objects is too large"
  msgstr ""
  
! #: cfgexpand.cc:2131 function.cc:1016 varasm.cc:2539
  #, gcc-internal-format
  msgid "size of variable %q+D is too large"
  msgstr ""
  
! #: cfgexpand.cc:2143
  #, gcc-internal-format
  msgid "cannot allocate stack for variable %q+D, naked function"
  msgstr ""
  
! #: cfgexpand.cc:3241
  #, gcc-internal-format
  msgid "too many alternatives in %<asm%>"
  msgstr ""
  
! #: cfgexpand.cc:3248
  #, gcc-internal-format
  msgid "operand constraints for %<asm%> differ in number of alternatives"
  msgstr ""
  
! #: cfgexpand.cc:3270
  #, gcc-internal-format
  msgid "%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3301
  #, gcc-internal-format
  msgid "PIC register clobbered by %qs in %<asm%>"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3308
  #, gcc-internal-format
  msgid "the register %qs cannot be clobbered in %<asm%> for the current target"
  msgstr ""
  
! #: cfgexpand.cc:3321
  #, gcc-internal-format
  msgid "listing the stack pointer register %qs in a clobber list is deprecated"
  msgstr ""
  
! #: cfgexpand.cc:3323
  #, gcc-internal-format
  msgid ""
  "the value of the stack pointer after an %<asm%> statement must be the same "
  "as it was before the statement"
  msgstr ""
  
! #: cfgexpand.cc:3393 varasm.cc:1718
  #, gcc-internal-format
  msgid "more than %d operands in %<asm%>"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3446
  #, gcc-internal-format
  msgid "unknown register name %qs in %<asm%>"
  msgstr ""
  
! #: cfgexpand.cc:3518
  #, gcc-internal-format
  msgid "invalid hard register usage between output operands"
  msgstr ""
  
! #: cfgexpand.cc:3545
  #, gcc-internal-format
  msgid ""
  "invalid hard register usage between output operand and matching constraint "
  "operand"
  msgstr ""
  
! #: cfgexpand.cc:3553
  #, gcc-internal-format
  msgid ""
  "invalid hard register usage between earlyclobber operand and input operand"
  msgstr ""
  
! #: cfgexpand.cc:3638 varasm.cc:1757
  #, gcc-internal-format, gfc-internal-format
  msgid "output number %d not directly addressable"
  msgstr ""
  
! #: cfgexpand.cc:3734 varasm.cc:1810
  #, gcc-internal-format
  msgid "%<asm%> operand %d probably does not match constraints"
  msgstr ""
  
! #: cfgexpand.cc:3927
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with output operand"
  msgstr ""
  
! #: cfgexpand.cc:3932
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with input operand"
  msgstr ""
  
! #: cfgexpand.cc:7029
  #, gcc-internal-format
  msgid "stack protector not protecting local variables: variable length buffer"
  msgstr ""
  
! #: cfgexpand.cc:7033
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "stack protector not protecting function: all local arrays are less than %d "
  "bytes long"
  msgstr ""
  
! #: cfgexpand.cc:7322
  #, gcc-internal-format
  msgid "patchable function entry %wu exceeds size %wu"
  msgstr ""
--- 25785,25906 ----
  msgid "%<verify_marked_backedges%> failed"
  msgstr ""
  
! #: cfgexpand.cc:2129
  #, gcc-internal-format
  msgid "total size of local objects is too large"
  msgstr ""
  
! #: cfgexpand.cc:2132 function.cc:1016 varasm.cc:2539
  #, gcc-internal-format
  msgid "size of variable %q+D is too large"
  msgstr ""
  
! #: cfgexpand.cc:2144
  #, gcc-internal-format
  msgid "cannot allocate stack for variable %q+D, naked function"
  msgstr ""
  
! #: cfgexpand.cc:3242
  #, gcc-internal-format
  msgid "too many alternatives in %<asm%>"
  msgstr ""
  
! #: cfgexpand.cc:3249
  #, gcc-internal-format
  msgid "operand constraints for %<asm%> differ in number of alternatives"
  msgstr ""
  
! #: cfgexpand.cc:3271
  #, gcc-internal-format
  msgid "%<asm%> specifier for variable %qE conflicts with %<asm%> clobber list"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3302
  #, gcc-internal-format
  msgid "PIC register clobbered by %qs in %<asm%>"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3309
  #, gcc-internal-format
  msgid "the register %qs cannot be clobbered in %<asm%> for the current target"
  msgstr ""
  
! #: cfgexpand.cc:3322
  #, gcc-internal-format
  msgid "listing the stack pointer register %qs in a clobber list is deprecated"
  msgstr ""
  
! #: cfgexpand.cc:3324
  #, gcc-internal-format
  msgid ""
  "the value of the stack pointer after an %<asm%> statement must be the same "
  "as it was before the statement"
  msgstr ""
  
! #: cfgexpand.cc:3394 varasm.cc:1718
  #, gcc-internal-format
  msgid "more than %d operands in %<asm%>"
  msgstr ""
  
  #. ??? Diagnose during gimplification?
! #: cfgexpand.cc:3447
  #, gcc-internal-format
  msgid "unknown register name %qs in %<asm%>"
  msgstr ""
  
! #: cfgexpand.cc:3519
  #, gcc-internal-format
  msgid "invalid hard register usage between output operands"
  msgstr ""
  
! #: cfgexpand.cc:3546
  #, gcc-internal-format
  msgid ""
  "invalid hard register usage between output operand and matching constraint "
  "operand"
  msgstr ""
  
! #: cfgexpand.cc:3554
  #, gcc-internal-format
  msgid ""
  "invalid hard register usage between earlyclobber operand and input operand"
  msgstr ""
  
! #: cfgexpand.cc:3639 varasm.cc:1757
  #, gcc-internal-format, gfc-internal-format
  msgid "output number %d not directly addressable"
  msgstr ""
  
! #: cfgexpand.cc:3735 varasm.cc:1810
  #, gcc-internal-format
  msgid "%<asm%> operand %d probably does not match constraints"
  msgstr ""
  
! #: cfgexpand.cc:3928
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with output operand"
  msgstr ""
  
! #: cfgexpand.cc:3933
  #, gcc-internal-format
  msgid "%<asm%> clobber conflict with input operand"
  msgstr ""
  
! #: cfgexpand.cc:7085
  #, gcc-internal-format
  msgid "stack protector not protecting local variables: variable length buffer"
  msgstr ""
  
! #: cfgexpand.cc:7089
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "stack protector not protecting function: all local arrays are less than %d "
  "bytes long"
  msgstr ""
  
! #: cfgexpand.cc:7378
  #, gcc-internal-format
  msgid "patchable function entry %wu exceeds size %wu"
  msgstr ""
*************** msgstr ""
*** 26413,26732 ****
  msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  msgstr ""
  
! #: cgraph.cc:3266
  #, gcc-internal-format
  msgid "caller edge count invalid"
  msgstr ""
  
! #: cgraph.cc:3363
  #, gcc-internal-format
  msgid "missing indirect call in speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3368
  #, gcc-internal-format
  msgid "indirect call in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3398
  #, gcc-internal-format
  msgid "speculative edges are not adjacent"
  msgstr ""
  
! #: cgraph.cc:3404
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3410 cgraph.cc:3440
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "direct call to %s in speculative call sequence has speculative_id %i out of "
  "range"
  msgstr ""
  
! #: cgraph.cc:3417
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "duplicate direct call to %s in speculative call sequence with speculative_id "
  "%i"
  msgstr ""
  
! #: cgraph.cc:3428
  #, gcc-internal-format
  msgid ""
  "call stmt hash does not point to first direct edge of speculative call "
  "sequence"
  msgstr ""
  
! #: cgraph.cc:3447
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "duplicate reference %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3460
  #, gcc-internal-format, gfc-internal-format
  msgid "missing direct call for speculation %i"
  msgstr ""
  
! #: cgraph.cc:3465
  #, gcc-internal-format, gfc-internal-format
  msgid "missing ref for speculation %i"
  msgstr ""
  
! #: cgraph.cc:3474
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "number of speculative targets %i mismatched with "
  "num_speculative_call_targets %i"
  msgstr ""
  
! #: cgraph.cc:3503
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for edge %s->%s"
  msgstr ""
  
! #: cgraph.cc:3510
  #, gcc-internal-format
  msgid "cgraph count invalid"
  msgstr ""
  
! #: cgraph.cc:3515
  #, gcc-internal-format
  msgid "inline clone in same comdat group list"
  msgstr ""
  
! #: cgraph.cc:3520
  #, gcc-internal-format
  msgid "inline clone count is not compatible"
  msgstr ""
  
! #: cgraph.cc:3527
  #, gcc-internal-format
  msgid "tp_first_run must be non-negative"
  msgstr ""
  
! #: cgraph.cc:3532
  #, gcc-internal-format
  msgid "local symbols must be defined"
  msgstr ""
  
! #: cgraph.cc:3537
  #, gcc-internal-format
  msgid "externally visible inline clone"
  msgstr ""
  
! #: cgraph.cc:3542
  #, gcc-internal-format
  msgid "inline clone with address taken"
  msgstr ""
  
! #: cgraph.cc:3547
  #, gcc-internal-format
  msgid "inline clone is forced to output"
  msgstr ""
  
! #: cgraph.cc:3554
  #, gcc-internal-format
  msgid "calls_comdat_local is set outside of a comdat group"
  msgstr ""
  
! #: cgraph.cc:3559
  #, gcc-internal-format
  msgid "invalid calls_comdat_local flag"
  msgstr ""
  
! #: cgraph.cc:3566
  #, gcc-internal-format
  msgid "malloc attribute should be used for a function that returns a pointer"
  msgstr ""
  
! #: cgraph.cc:3578
  #, gcc-internal-format
  msgid "semantic interposition mismatch"
  msgstr ""
  
! #: cgraph.cc:3585
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for indirect edge from %s"
  msgstr ""
  
! #: cgraph.cc:3591 cgraph.cc:3651
  #, gcc-internal-format
  msgid "edge count is not compatible with function count"
  msgstr ""
  
! #: cgraph.cc:3599
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "An indirect edge from %s is not marked as indirect or has associated "
  "indirect_info, the corresponding statement is: "
  msgstr ""
  
! #: cgraph.cc:3607 cgraph.cc:3679
  #, gcc-internal-format
  msgid "edge has both call_stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3619
  #, gcc-internal-format, gfc-internal-format
  msgid "comdat-local function called by %s outside its comdat"
  msgstr ""
  
! #: cgraph.cc:3629
  #, gcc-internal-format
  msgid "inlined_to pointer is wrong"
  msgstr ""
  
! #: cgraph.cc:3634
  #, gcc-internal-format
  msgid "multiple inline callers"
  msgstr ""
  
! #: cgraph.cc:3641
  #, gcc-internal-format
  msgid "inlined_to pointer set for noninline callers"
  msgstr ""
  
! #: cgraph.cc:3669
  #, gcc-internal-format
  msgid "caller edge count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3700
  #, gcc-internal-format
  msgid "indirect call count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3717
  #, gcc-internal-format
  msgid "reference has both stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3728
  #, gcc-internal-format
  msgid "inlined_to pointer is set but no predecessors found"
  msgstr ""
  
! #: cgraph.cc:3733
  #, gcc-internal-format
  msgid "inlined_to pointer refers to itself"
  msgstr ""
  
! #: cgraph.cc:3744
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone_of"
  msgstr ""
  
! #: cgraph.cc:3757
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone list"
  msgstr ""
  
! #: cgraph.cc:3763
  #, gcc-internal-format
  msgid "cgraph_node is in clone list but it is not clone"
  msgstr ""
  
! #: cgraph.cc:3768
  #, gcc-internal-format
  msgid "cgraph_node has wrong prev_clone pointer"
  msgstr ""
  
! #: cgraph.cc:3773
  #, gcc-internal-format
  msgid "double linked list of clones corrupted"
  msgstr ""
  
! #: cgraph.cc:3785
  #, gcc-internal-format
  msgid "Alias has call edges"
  msgstr ""
  
! #: cgraph.cc:3791
  #, gcc-internal-format
  msgid "Alias has non-alias reference"
  msgstr ""
  
! #: cgraph.cc:3796
  #, gcc-internal-format
  msgid "Alias has more than one alias reference"
  msgstr ""
  
! #: cgraph.cc:3803
  #, gcc-internal-format
  msgid "Analyzed alias has no reference"
  msgstr ""
  
! #: cgraph.cc:3812
  #, gcc-internal-format
  msgid "No edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3817
  #, gcc-internal-format
  msgid "More than one edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3822
  #, gcc-internal-format
  msgid "Thunk is not supposed to have body"
  msgstr ""
  
! #: cgraph.cc:3858
  #, gcc-internal-format
  msgid "shared call_stmt:"
  msgstr ""
  
! #: cgraph.cc:3866
  #, gcc-internal-format
  msgid "edge points to wrong declaration:"
  msgstr ""
  
! #: cgraph.cc:3875
  #, gcc-internal-format
  msgid ""
  "an indirect edge with unknown callee corresponding to a call_stmt with a "
  "known declaration:"
  msgstr ""
  
! #: cgraph.cc:3885
  #, gcc-internal-format
  msgid "missing callgraph edge for call stmt:"
  msgstr ""
  
! #: cgraph.cc:3895
  #, gcc-internal-format
  msgid "reference to dead statement"
  msgstr ""
  
! #: cgraph.cc:3908
  #, gcc-internal-format, gfc-internal-format
  msgid "edge %s->%s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3920
  #, gcc-internal-format, gfc-internal-format
  msgid "an indirect edge from %s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3939 cgraph.cc:3952
  #, gcc-internal-format
  msgid "missing origin for a node in a nested list"
  msgstr ""
  
! #: cgraph.cc:3944
  #, gcc-internal-format
  msgid "origin points to a different parent"
  msgstr ""
  
! #: cgraph.cc:3960
  #, gcc-internal-format
  msgid "verify_cgraph_node failed"
  msgstr ""
  
! #: cgraph.cc:4082 varpool.cc:304
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: section %s.%d is missing"
  msgstr ""
--- 26432,26751 ----
  msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
  msgstr ""
  
! #: cgraph.cc:3279
  #, gcc-internal-format
  msgid "caller edge count invalid"
  msgstr ""
  
! #: cgraph.cc:3376
  #, gcc-internal-format
  msgid "missing indirect call in speculative call sequence"
  msgstr ""
  
! #: cgraph.cc:3381
  #, gcc-internal-format
  msgid "indirect call in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3411
  #, gcc-internal-format
  msgid "speculative edges are not adjacent"
  msgstr ""
  
! #: cgraph.cc:3417
  #, gcc-internal-format, gfc-internal-format
  msgid "direct call to %s in speculative call sequence has no speculative flag"
  msgstr ""
  
! #: cgraph.cc:3423 cgraph.cc:3453
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "direct call to %s in speculative call sequence has speculative_id %i out of "
  "range"
  msgstr ""
  
! #: cgraph.cc:3430
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "duplicate direct call to %s in speculative call sequence with speculative_id "
  "%i"
  msgstr ""
  
! #: cgraph.cc:3441
  #, gcc-internal-format
  msgid ""
  "call stmt hash does not point to first direct edge of speculative call "
  "sequence"
  msgstr ""
  
! #: cgraph.cc:3460
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "duplicate reference %s in speculative call sequence with speculative_id %i"
  msgstr ""
  
! #: cgraph.cc:3473
  #, gcc-internal-format, gfc-internal-format
  msgid "missing direct call for speculation %i"
  msgstr ""
  
! #: cgraph.cc:3478
  #, gcc-internal-format, gfc-internal-format
  msgid "missing ref for speculation %i"
  msgstr ""
  
! #: cgraph.cc:3487
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "number of speculative targets %i mismatched with "
  "num_speculative_call_targets %i"
  msgstr ""
  
! #: cgraph.cc:3516
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for edge %s->%s"
  msgstr ""
  
! #: cgraph.cc:3523
  #, gcc-internal-format
  msgid "cgraph count invalid"
  msgstr ""
  
! #: cgraph.cc:3528
  #, gcc-internal-format
  msgid "inline clone in same comdat group list"
  msgstr ""
  
! #: cgraph.cc:3533
  #, gcc-internal-format
  msgid "inline clone count is not compatible"
  msgstr ""
  
! #: cgraph.cc:3540
  #, gcc-internal-format
  msgid "tp_first_run must be non-negative"
  msgstr ""
  
! #: cgraph.cc:3545
  #, gcc-internal-format
  msgid "local symbols must be defined"
  msgstr ""
  
! #: cgraph.cc:3550
  #, gcc-internal-format
  msgid "externally visible inline clone"
  msgstr ""
  
! #: cgraph.cc:3555
  #, gcc-internal-format
  msgid "inline clone with address taken"
  msgstr ""
  
! #: cgraph.cc:3560
  #, gcc-internal-format
  msgid "inline clone is forced to output"
  msgstr ""
  
! #: cgraph.cc:3567
  #, gcc-internal-format
  msgid "calls_comdat_local is set outside of a comdat group"
  msgstr ""
  
! #: cgraph.cc:3572
  #, gcc-internal-format
  msgid "invalid calls_comdat_local flag"
  msgstr ""
  
! #: cgraph.cc:3579
  #, gcc-internal-format
  msgid "malloc attribute should be used for a function that returns a pointer"
  msgstr ""
  
! #: cgraph.cc:3591
  #, gcc-internal-format
  msgid "semantic interposition mismatch"
  msgstr ""
  
! #: cgraph.cc:3598
  #, gcc-internal-format, gfc-internal-format
  msgid "aux field set for indirect edge from %s"
  msgstr ""
  
! #: cgraph.cc:3604 cgraph.cc:3664
  #, gcc-internal-format
  msgid "edge count is not compatible with function count"
  msgstr ""
  
! #: cgraph.cc:3612
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "An indirect edge from %s is not marked as indirect or has associated "
  "indirect_info, the corresponding statement is: "
  msgstr ""
  
! #: cgraph.cc:3620 cgraph.cc:3692
  #, gcc-internal-format
  msgid "edge has both call_stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3632
  #, gcc-internal-format, gfc-internal-format
  msgid "comdat-local function called by %s outside its comdat"
  msgstr ""
  
! #: cgraph.cc:3642
  #, gcc-internal-format
  msgid "inlined_to pointer is wrong"
  msgstr ""
  
! #: cgraph.cc:3647
  #, gcc-internal-format
  msgid "multiple inline callers"
  msgstr ""
  
! #: cgraph.cc:3654
  #, gcc-internal-format
  msgid "inlined_to pointer set for noninline callers"
  msgstr ""
  
! #: cgraph.cc:3682
  #, gcc-internal-format
  msgid "caller edge count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3713
  #, gcc-internal-format
  msgid "indirect call count does not match BB count"
  msgstr ""
  
! #: cgraph.cc:3730
  #, gcc-internal-format
  msgid "reference has both stmt and lto_stmt_uid set"
  msgstr ""
  
! #: cgraph.cc:3741
  #, gcc-internal-format
  msgid "inlined_to pointer is set but no predecessors found"
  msgstr ""
  
! #: cgraph.cc:3746
  #, gcc-internal-format
  msgid "inlined_to pointer refers to itself"
  msgstr ""
  
! #: cgraph.cc:3757
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone_of"
  msgstr ""
  
! #: cgraph.cc:3770
  #, gcc-internal-format
  msgid "cgraph_node has wrong clone list"
  msgstr ""
  
! #: cgraph.cc:3776
  #, gcc-internal-format
  msgid "cgraph_node is in clone list but it is not clone"
  msgstr ""
  
! #: cgraph.cc:3781
  #, gcc-internal-format
  msgid "cgraph_node has wrong prev_clone pointer"
  msgstr ""
  
! #: cgraph.cc:3786
  #, gcc-internal-format
  msgid "double linked list of clones corrupted"
  msgstr ""
  
! #: cgraph.cc:3798
  #, gcc-internal-format
  msgid "Alias has call edges"
  msgstr ""
  
! #: cgraph.cc:3804
  #, gcc-internal-format
  msgid "Alias has non-alias reference"
  msgstr ""
  
! #: cgraph.cc:3809
  #, gcc-internal-format
  msgid "Alias has more than one alias reference"
  msgstr ""
  
! #: cgraph.cc:3816
  #, gcc-internal-format
  msgid "Analyzed alias has no reference"
  msgstr ""
  
! #: cgraph.cc:3825
  #, gcc-internal-format
  msgid "No edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3830
  #, gcc-internal-format
  msgid "More than one edge out of thunk node"
  msgstr ""
  
! #: cgraph.cc:3835
  #, gcc-internal-format
  msgid "Thunk is not supposed to have body"
  msgstr ""
  
! #: cgraph.cc:3871
  #, gcc-internal-format
  msgid "shared call_stmt:"
  msgstr ""
  
! #: cgraph.cc:3879
  #, gcc-internal-format
  msgid "edge points to wrong declaration:"
  msgstr ""
  
! #: cgraph.cc:3888
  #, gcc-internal-format
  msgid ""
  "an indirect edge with unknown callee corresponding to a call_stmt with a "
  "known declaration:"
  msgstr ""
  
! #: cgraph.cc:3898
  #, gcc-internal-format
  msgid "missing callgraph edge for call stmt:"
  msgstr ""
  
! #: cgraph.cc:3908
  #, gcc-internal-format
  msgid "reference to dead statement"
  msgstr ""
  
! #: cgraph.cc:3921
  #, gcc-internal-format, gfc-internal-format
  msgid "edge %s->%s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3933
  #, gcc-internal-format, gfc-internal-format
  msgid "an indirect edge from %s has no corresponding call_stmt"
  msgstr ""
  
! #: cgraph.cc:3952 cgraph.cc:3965
  #, gcc-internal-format
  msgid "missing origin for a node in a nested list"
  msgstr ""
  
! #: cgraph.cc:3957
  #, gcc-internal-format
  msgid "origin points to a different parent"
  msgstr ""
  
! #: cgraph.cc:3973
  #, gcc-internal-format
  msgid "verify_cgraph_node failed"
  msgstr ""
  
! #: cgraph.cc:4095 varpool.cc:304
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: section %s.%d is missing"
  msgstr ""
*************** msgstr ""
*** 26810,26821 ****
  
  #. include_self=
  #. TODO: Add OPT_Wundefined-inline.
! #: cgraphunit.cc:1112 c/c-decl.cc:13593
  #, gcc-internal-format
  msgid "%q+F used but never defined"
  msgstr ""
  
! #: cgraphunit.cc:1114 c/c-decl.cc:13603
  #, gcc-internal-format
  msgid "%q+F declared %<static%> but never defined"
  msgstr ""
--- 26829,26840 ----
  
  #. include_self=
  #. TODO: Add OPT_Wundefined-inline.
! #: cgraphunit.cc:1112 c/c-decl.cc:13597
  #, gcc-internal-format
  msgid "%q+F used but never defined"
  msgstr ""
  
! #: cgraphunit.cc:1114 c/c-decl.cc:13607
  #, gcc-internal-format
  msgid "%q+F declared %<static%> but never defined"
  msgstr ""
*************** msgstr ""
*** 26946,26952 ****
  msgid "ld returned %d exit status"
  msgstr ""
  
! #: collect2.cc:916 gcc.cc:8378 config/nvptx/mkoffload.cc:640
  #, gcc-internal-format
  msgid "atexit failed"
  msgstr ""
--- 26965,26971 ----
  msgid "ld returned %d exit status"
  msgstr ""
  
! #: collect2.cc:916 gcc.cc:8378 config/nvptx/mkoffload.cc:646
  #, gcc-internal-format
  msgid "atexit failed"
  msgstr ""
*************** msgid ""
*** 27472,27478 ****
  "%<X %s Y%>"
  msgstr ""
  
! #: ext-dce.cc:1115
  #, gcc-internal-format
  msgid ""
  "ext-dce disabled: %d basic blocks and %d registers; increase %<--param max-"
--- 27491,27497 ----
  "%<X %s Y%>"
  msgstr ""
  
! #: ext-dce.cc:1202
  #, gcc-internal-format
  msgid ""
  "ext-dce disabled: %d basic blocks and %d registers; increase %<--param max-"
*************** msgid ""
*** 28240,28246 ****
  "flexible array member %qD does not have well defined padding bits for %qs"
  msgstr ""
  
! #: gimple-fold.cc:4970 cp/constexpr.cc:5103
  #, gcc-internal-format
  msgid "PDP11 bit-field handling unsupported in %qs"
  msgstr ""
--- 28259,28265 ----
  "flexible array member %qD does not have well defined padding bits for %qs"
  msgstr ""
  
! #: gimple-fold.cc:4970 cp/constexpr.cc:5115
  #, gcc-internal-format
  msgid "PDP11 bit-field handling unsupported in %qs"
  msgstr ""
*************** msgstr ""
*** 28255,28261 ****
  msgid "%s not supported on this target"
  msgstr ""
  
! #: gimple-fold.cc:8578 gimple-fold.cc:8607
  #, gcc-internal-format, gfc-internal-format
  msgid "comparison is always %d"
  msgstr ""
--- 28274,28280 ----
  msgid "%s not supported on this target"
  msgstr ""
  
! #: gimple-fold.cc:8582 gimple-fold.cc:8611
  #, gcc-internal-format, gfc-internal-format
  msgid "comparison is always %d"
  msgstr ""
*************** msgid ""
*** 28288,28294 ****
  "from outside of the attribute"
  msgstr ""
  
! #: gimple-low.cc:112 cp/name-lookup.cc:9308
  #, gcc-internal-format
  msgid "%qD defined here"
  msgstr ""
--- 28307,28313 ----
  "from outside of the attribute"
  msgstr ""
  
! #: gimple-low.cc:112 cp/name-lookup.cc:9311
  #, gcc-internal-format
  msgid "%qD defined here"
  msgstr ""
*************** msgstr ""
*** 28308,28330 ****
  msgid "function may return address of local variable"
  msgstr ""
  
! #: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:12879
  #, gcc-internal-format
  msgid "function returns address of local variable"
  msgstr ""
  
  #: gimple-ssa-isolate-paths.cc:425 gimple-ssa-warn-access.cc:2075
  #: gimple-ssa-warn-access.cc:3729 tree.cc:12615 tree.cc:12652 tree.cc:12693
! #: tree.cc:12726 c/c-decl.cc:10781 c/c-parser.cc:22345 c/c-parser.cc:22486
! #: c/c-typeck.cc:3673 c/c-typeck.cc:3769 c/c-typeck.cc:3781 c/c-typeck.cc:6512
! #: c/c-typeck.cc:12780 c/c-typeck.cc:12797 c/gimple-parser.cc:2660
  #: c/gimple-parser.cc:2668 cp/call.cc:8391 cp/call.cc:8474 cp/call.cc:8493
! #: cp/call.cc:10729 cp/class.cc:9468 cp/constexpr.cc:889 cp/constexpr.cc:1348
! #: cp/constexpr.cc:4511 cp/constexpr.cc:6205 cp/constexpr.cc:6584
! #: cp/cvt.cc:1110 cp/cvt.cc:1150 cp/decl.cc:9605 cp/decl2.cc:6351
! #: cp/decl2.cc:6400 cp/lambda.cc:639 cp/method.cc:1240 cp/parser.cc:23073
! #: cp/pt.cc:9266 cp/pt.cc:9936 cp/semantics.cc:2753 cp/semantics.cc:5290
! #: cp/typeck.cc:2164 cp/typeck.cc:2385 cp/typeck.cc:4570 cp/typeck.cc:10793
  #: rust/backend/rust-constexpr.cc:4407 rust/backend/rust-tree.cc:621
  #: rust/backend/rust-tree.cc:3800
  #, gcc-internal-format
--- 28327,28349 ----
  msgid "function may return address of local variable"
  msgstr ""
  
! #: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:12896
  #, gcc-internal-format
  msgid "function returns address of local variable"
  msgstr ""
  
  #: gimple-ssa-isolate-paths.cc:425 gimple-ssa-warn-access.cc:2075
  #: gimple-ssa-warn-access.cc:3729 tree.cc:12615 tree.cc:12652 tree.cc:12693
! #: tree.cc:12726 c/c-decl.cc:10785 c/c-parser.cc:22390 c/c-parser.cc:22531
! #: c/c-typeck.cc:3673 c/c-typeck.cc:3769 c/c-typeck.cc:3781 c/c-typeck.cc:6513
! #: c/c-typeck.cc:12797 c/c-typeck.cc:12814 c/gimple-parser.cc:2660
  #: c/gimple-parser.cc:2668 cp/call.cc:8391 cp/call.cc:8474 cp/call.cc:8493
! #: cp/call.cc:10729 cp/class.cc:9502 cp/constexpr.cc:889 cp/constexpr.cc:1348
! #: cp/constexpr.cc:4511 cp/constexpr.cc:6220 cp/constexpr.cc:6600
! #: cp/cvt.cc:1110 cp/cvt.cc:1150 cp/decl.cc:9603 cp/decl2.cc:6379
! #: cp/decl2.cc:6428 cp/lambda.cc:639 cp/method.cc:1240 cp/parser.cc:23077
! #: cp/pt.cc:9271 cp/pt.cc:9941 cp/semantics.cc:2753 cp/semantics.cc:5290
! #: cp/typeck.cc:2164 cp/typeck.cc:2385 cp/typeck.cc:4686 cp/typeck.cc:10909
  #: rust/backend/rust-constexpr.cc:4407 rust/backend/rust-tree.cc:621
  #: rust/backend/rust-tree.cc:3800
  #, gcc-internal-format
*************** msgstr ""
*** 29532,29543 ****
  #: gimple-ssa-warn-access.cc:3981 gimple-ssa-warn-access.cc:4629
  #: gimple-ssa-warn-access.cc:4632 gimple-ssa-warn-restrict.cc:1830
  #: tree-ssa-uninit.cc:924 tree-ssa-uninit.cc:1123 c/c-decl.cc:4101
! #: c/c-decl.cc:4391 c/c-typeck.cc:10377 c/c-typeck.cc:13597 cp/call.cc:8808
  #: cp/call.cc:8819 cp/class.cc:1722 cp/class.cc:3543 cp/constexpr.cc:1071
! #: cp/decl.cc:4687 cp/decl.cc:13468 cp/decl.cc:14071 cp/decl.cc:14081
! #: cp/decl.cc:15081 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2948
  #: cp/parser.cc:3860 cp/parser.cc:4006 cp/parser.cc:4058 cp/parser.cc:7428
! #: cp/parser.cc:25737 cp/typeck.cc:5069
  #, gcc-internal-format
  msgid "%qD declared here"
  msgstr ""
--- 29551,29562 ----
  #: gimple-ssa-warn-access.cc:3981 gimple-ssa-warn-access.cc:4629
  #: gimple-ssa-warn-access.cc:4632 gimple-ssa-warn-restrict.cc:1830
  #: tree-ssa-uninit.cc:924 tree-ssa-uninit.cc:1123 c/c-decl.cc:4101
! #: c/c-decl.cc:4391 c/c-typeck.cc:10394 c/c-typeck.cc:13614 cp/call.cc:8808
  #: cp/call.cc:8819 cp/class.cc:1722 cp/class.cc:3543 cp/constexpr.cc:1071
! #: cp/decl.cc:4685 cp/decl.cc:13466 cp/decl.cc:14069 cp/decl.cc:14079
! #: cp/decl.cc:15079 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2948
  #: cp/parser.cc:3860 cp/parser.cc:4006 cp/parser.cc:4058 cp/parser.cc:7428
! #: cp/parser.cc:25741 cp/typeck.cc:5185
  #, gcc-internal-format
  msgid "%qD declared here"
  msgstr ""
*************** msgstr ""
*** 30835,30846 ****
  msgid "mismatching definition"
  msgstr ""
  
! #: ipa-fnsummary.cc:4845
  #, gcc-internal-format
  msgid "invalid fnsummary in LTO stream"
  msgstr ""
  
! #: ipa-fnsummary.cc:4946
  #, gcc-internal-format
  msgid "ipa inline summary is missing in input file"
  msgstr ""
--- 30854,30865 ----
  msgid "mismatching definition"
  msgstr ""
  
! #: ipa-fnsummary.cc:4860
  #, gcc-internal-format
  msgid "invalid fnsummary in LTO stream"
  msgstr ""
  
! #: ipa-fnsummary.cc:4961
  #, gcc-internal-format
  msgid "ipa inline summary is missing in input file"
  msgstr ""
*************** msgstr ""
*** 30850,30856 ****
  msgid "IPA modref summary is missing in input file"
  msgstr ""
  
! #: ipa-prop.cc:4991 ipa-prop.cc:5035 ipa-prop.cc:5115 ipa-prop.cc:5167
  #, gcc-internal-format
  msgid "invalid jump function in LTO stream"
  msgstr ""
--- 30869,30875 ----
  msgid "IPA modref summary is missing in input file"
  msgstr ""
  
! #: ipa-prop.cc:5019 ipa-prop.cc:5063 ipa-prop.cc:5143 ipa-prop.cc:5195
  #, gcc-internal-format
  msgid "invalid jump function in LTO stream"
  msgstr ""
*************** msgstr ""
*** 30897,30908 ****
  msgid "IPA-SRA access verification failed"
  msgstr ""
  
! #: ipa-sra.cc:2751
  #, gcc-internal-format
  msgid "function %qs, parameter %u, has IPA-SRA accesses which overlap"
  msgstr ""
  
! #: ipa-sra.cc:2754
  #, gcc-internal-format
  msgid ""
  "function %qs, parameter %u, is used but does not have any certain IPA-SRA "
--- 30916,30927 ----
  msgid "IPA-SRA access verification failed"
  msgstr ""
  
! #: ipa-sra.cc:2757
  #, gcc-internal-format
  msgid "function %qs, parameter %u, has IPA-SRA accesses which overlap"
  msgstr ""
  
! #: ipa-sra.cc:2760
  #, gcc-internal-format
  msgid ""
  "function %qs, parameter %u, is used but does not have any certain IPA-SRA "
*************** msgstr ""
*** 31308,31314 ****
  msgid "tree code %qs is not supported in LTO streams"
  msgstr ""
  
! #: lto-streamer-out.cc:2554
  #, gcc-internal-format
  msgid "LTO streaming of toplevel extended %<asm%> unimplemented"
  msgstr ""
--- 31327,31333 ----
  msgid "tree code %qs is not supported in LTO streams"
  msgstr ""
  
! #: lto-streamer-out.cc:2555
  #, gcc-internal-format
  msgid "LTO streaming of toplevel extended %<asm%> unimplemented"
  msgstr ""
*************** msgstr ""
*** 31632,31648 ****
  msgid "%<allocate%> clause must specify an allocator here"
  msgstr ""
  
! #: omp-low.cc:2774 omp-offload.cc:1518
  #, gcc-internal-format
  msgid "%<seq%> overrides other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2777 omp-offload.cc:1519
  #, gcc-internal-format
  msgid "%<auto%> conflicts with other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2781 omp-offload.cc:1553
  #, gcc-internal-format
  msgid "inner loop uses same OpenACC parallelism as containing loop"
  msgstr ""
--- 31651,31667 ----
  msgid "%<allocate%> clause must specify an allocator here"
  msgstr ""
  
! #: omp-low.cc:2774 omp-offload.cc:1519
  #, gcc-internal-format
  msgid "%<seq%> overrides other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2777 omp-offload.cc:1520
  #, gcc-internal-format
  msgid "%<auto%> conflicts with other OpenACC loop specifiers"
  msgstr ""
  
! #: omp-low.cc:2781 omp-offload.cc:1554
  #, gcc-internal-format
  msgid "inner loop uses same OpenACC parallelism as containing loop"
  msgstr ""
*************** msgstr ""
*** 32006,32079 ****
  msgid "shared-memory region overflow"
  msgstr ""
  
! #: omp-offload.cc:316
  #, gcc-internal-format
  msgid ""
  "%qD specified both in declare target %<link%> and implicitly in %<to%> "
  "clauses"
  msgstr ""
  
! #: omp-offload.cc:929
  #, gcc-internal-format
  msgid "%<-fopenacc-dim%> operand is malformed at %qs"
  msgstr ""
  
! #: omp-offload.cc:981
  #, gcc-internal-format, gfc-internal-format
  msgid "region contains %s partitioned code but is not %s partitioned"
  msgstr ""
  
! #: omp-offload.cc:987
  #, gcc-internal-format, gfc-internal-format
  msgid "region is %s partitioned but does not contain %s partitioned code"
  msgstr ""
  
! #: omp-offload.cc:1477
  #, gcc-internal-format
  msgid "gang reduction on an orphan loop"
  msgstr ""
  
! #: omp-offload.cc:1551
  #, gcc-internal-format
  msgid "routine call uses same OpenACC parallelism as containing loop"
  msgstr ""
  
! #: omp-offload.cc:1555 omp-offload.cc:1587
  #, gcc-internal-format
  msgid "containing loop here"
  msgstr ""
  
! #: omp-offload.cc:1560
  #, gcc-internal-format
  msgid "routine call uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1562
  #, gcc-internal-format
  msgid "loop uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1567
  #, gcc-internal-format
  msgid "routine %qD declared here"
  msgstr ""
  
! #: omp-offload.cc:1580
  #, gcc-internal-format
  msgid "incorrectly nested OpenACC loop parallelism"
  msgstr ""
  
! #: omp-offload.cc:1721
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize element loop"
  msgstr ""
  
! #: omp-offload.cc:1729
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize tile loop"
  msgstr ""
  
! #: omp-offload.cc:1731
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize loop"
  msgstr ""
--- 32025,32098 ----
  msgid "shared-memory region overflow"
  msgstr ""
  
! #: omp-offload.cc:317
  #, gcc-internal-format
  msgid ""
  "%qD specified both in declare target %<link%> and implicitly in %<to%> "
  "clauses"
  msgstr ""
  
! #: omp-offload.cc:930
  #, gcc-internal-format
  msgid "%<-fopenacc-dim%> operand is malformed at %qs"
  msgstr ""
  
! #: omp-offload.cc:982
  #, gcc-internal-format, gfc-internal-format
  msgid "region contains %s partitioned code but is not %s partitioned"
  msgstr ""
  
! #: omp-offload.cc:988
  #, gcc-internal-format, gfc-internal-format
  msgid "region is %s partitioned but does not contain %s partitioned code"
  msgstr ""
  
! #: omp-offload.cc:1478
  #, gcc-internal-format
  msgid "gang reduction on an orphan loop"
  msgstr ""
  
! #: omp-offload.cc:1552
  #, gcc-internal-format
  msgid "routine call uses same OpenACC parallelism as containing loop"
  msgstr ""
  
! #: omp-offload.cc:1556 omp-offload.cc:1588
  #, gcc-internal-format
  msgid "containing loop here"
  msgstr ""
  
! #: omp-offload.cc:1561
  #, gcc-internal-format
  msgid "routine call uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1563
  #, gcc-internal-format
  msgid "loop uses OpenACC parallelism disallowed by containing routine"
  msgstr ""
  
! #: omp-offload.cc:1568
  #, gcc-internal-format
  msgid "routine %qD declared here"
  msgstr ""
  
! #: omp-offload.cc:1581
  #, gcc-internal-format
  msgid "incorrectly nested OpenACC loop parallelism"
  msgstr ""
  
! #: omp-offload.cc:1722
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize element loop"
  msgstr ""
  
! #: omp-offload.cc:1730
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize tile loop"
  msgstr ""
  
! #: omp-offload.cc:1732
  #, gcc-internal-format
  msgid "insufficient partitioning available to parallelize loop"
  msgstr ""
*************** msgstr ""
*** 32127,32133 ****
  msgid "command-line option %qs is not supported by this configuration"
  msgstr ""
  
! #: opts-common.cc:1463 opts.cc:2612
  #, gcc-internal-format
  msgid "missing argument to %qs"
  msgstr ""
--- 32146,32152 ----
  msgid "command-line option %qs is not supported by this configuration"
  msgstr ""
  
! #: opts-common.cc:1463 opts.cc:2610
  #, gcc-internal-format
  msgid "missing argument to %qs"
  msgstr ""
*************** msgstr ""
*** 32376,32628 ****
  msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
  msgstr ""
  
! #: opts.cc:1284
  #, gcc-internal-format
  msgid ""
  "%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> "
  "or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1288
  #, gcc-internal-format
  msgid ""
  "%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> "
  "or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1315
  #, gcc-internal-format
  msgid "%<-fsanitize-recover=%s%> is not supported"
  msgstr ""
  
! #: opts.cc:1327 opts.cc:2324
  #, gcc-internal-format
  msgid "%<-fsanitize-trap=%s%> is not supported"
  msgstr ""
  
! #: opts.cc:1354
  #, gcc-internal-format
  msgid ""
  "%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option"
  msgstr ""
  
! #: opts.cc:1361
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=address%>"
  msgstr ""
  
! #: opts.cc:1364
  #, gcc-internal-format
  msgid ""
  "transactional memory is not supported with %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1369
  #, gcc-internal-format
  msgid "live patching (with %qs) is not supported with LTO"
  msgstr ""
  
! #: opts.cc:1374
  #, gcc-internal-format
  msgid "vtable verification is not supported with LTO"
  msgstr ""
  
! #: opts.cc:1449
  #, gcc-internal-format
  msgid "variable tracking requested, but useless unless producing debug info"
  msgstr ""
  
! #: opts.cc:1453
  #, gcc-internal-format
  msgid "variable tracking requested, but not supported by this debug format"
  msgstr ""
  
! #: opts.cc:1482
  #, gcc-internal-format
  msgid "var-tracking-assignments changes selective scheduling"
  msgstr ""
  
! #: opts.cc:1495
  #, gcc-internal-format
  msgid ""
  "%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not "
  "present"
  msgstr ""
  
! #: opts.cc:1525 config/darwin.cc:3484
  #, gcc-internal-format
  msgid ""
  "%<-freorder-blocks-and-partition%> does not work with exceptions on this "
  "architecture"
  msgstr ""
  
! #: opts.cc:1541
  #, gcc-internal-format
  msgid ""
  "%<-freorder-blocks-and-partition%> does not support unwind info on this "
  "architecture"
  msgstr ""
  
! #: opts.cc:1559 config/pa/pa.cc:580
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work on this architecture"
  msgstr ""
  
! #: opts.cc:2068
  #, gcc-internal-format
  msgid "unrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>"
  msgstr ""
  
! #: opts.cc:2303
  #, gcc-internal-format
  msgid "%<-fsanitize=all%> option is not valid"
  msgstr ""
  
! #: opts.cc:2358
  #, gcc-internal-format
  msgid ""
  "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?"
  msgstr ""
  
! #: opts.cc:2364
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s"
  msgstr ""
  
! #: opts.cc:2399
  #, gcc-internal-format
  msgid "%qs attribute directive ignored"
  msgstr ""
  
! #: opts.cc:2423
  #, gcc-internal-format
  msgid "unrecognized argument to %<-fzero-call-used-regs=%>: %qs"
  msgstr ""
  
! #: opts.cc:2447
  #, gcc-internal-format
  msgid "invalid arguments for %<-falign-%s%> option: %qs"
  msgstr ""
  
! #: opts.cc:2462
  #, gcc-internal-format
  msgid "invalid number of arguments for %<-falign-%s%> option: %qs"
  msgstr ""
  
! #: opts.cc:2471
  #, gcc-internal-format
  msgid "%<-falign-%s%> is not between 0 and %d"
  msgstr ""
  
! #: opts.cc:2530
  #, gcc-internal-format
  msgid "invalid arguments for %<-fpatchable-function-entry%>"
  msgstr ""
  
! #: opts.cc:2667
  #, gcc-internal-format
  msgid "%<--help%> argument %q.*s is ambiguous, please be more specific"
  msgstr ""
  
! #: opts.cc:2678
  #, gcc-internal-format
  msgid "unrecognized argument to %<--help=%> option: %q.*s"
  msgstr ""
  
! #: opts.cc:2858
  #, gcc-internal-format
  msgid ""
  "arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> instead"
  msgstr ""
  
! #: opts.cc:2864
  #, gcc-internal-format
  msgid "trailing %<,%> in arguments for %<-Wno-attributes=%>"
  msgstr ""
  
! #: opts.cc:3110
  #, gcc-internal-format
  msgid "%qs option can be specified only for offload compiler"
  msgstr ""
  
! #: opts.cc:3119
  #, gcc-internal-format
  msgid "structure alignment must be a small power of two, not %wu"
  msgstr ""
  
! #: opts.cc:3240
  #, gcc-internal-format
  msgid "unknown stack check parameter %qs"
  msgstr ""
  
! #: opts.cc:3292
  #, gcc-internal-format
  msgid ""
  "%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-"
  "gdwarf%> %<-g%s%> for debug level"
  msgstr ""
  
! #: opts.cc:3303
  #, gcc-internal-format
  msgid "dwarf version %wu is not supported"
  msgstr ""
  
! #: opts.cc:3340
  #, gcc-internal-format
  msgid "unrecognized argument to %<-flto=%> option: %qs"
  msgstr ""
  
! #: opts.cc:3540
  #, gcc-internal-format
  msgid "target system does not support debug output"
  msgstr ""
  
! #: opts.cc:3579
  #, gcc-internal-format
  msgid "debug format %qs conflicts with prior selection"
  msgstr ""
  
! #: opts.cc:3603
  #, gcc-internal-format
  msgid "unrecognized debug output level %qs"
  msgstr ""
  
! #: opts.cc:3605
  #, gcc-internal-format
  msgid "debug output level %qs is too high"
  msgstr ""
  
! #: opts.cc:3617
  #, gcc-internal-format
  msgid "unrecognized btf debug output level %qs"
  msgstr ""
  
! #: opts.cc:3634
  #, gcc-internal-format
  msgid "getting core file size maximum limit: %m"
  msgstr ""
  
! #: opts.cc:3638
  #, gcc-internal-format
  msgid "setting core file size limit to maximum: %m"
  msgstr ""
  
! #: opts.cc:3683
  #, gcc-internal-format, gfc-internal-format
  msgid "unrecognized gcc debugging option: %c"
  msgstr ""
  
! #: opts.cc:3712
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?"
  msgstr ""
  
! #: opts.cc:3716
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>"
  msgstr ""
  
! #: opts.cc:3720
  #, gcc-internal-format
  msgid "%<-Werror=%s%>: %<-%s%> is not an option that controls warnings"
  msgstr ""
--- 32395,32647 ----
  msgid "%<-fsplit-stack%> is not supported by this compiler configuration"
  msgstr ""
  
! #: opts.cc:1282
  #, gcc-internal-format
  msgid ""
  "%<-fsanitize=pointer-compare%> must be combined with %<-fsanitize=address%> "
  "or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1286
  #, gcc-internal-format
  msgid ""
  "%<-fsanitize=pointer-subtract%> must be combined with %<-fsanitize=address%> "
  "or %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1313
  #, gcc-internal-format
  msgid "%<-fsanitize-recover=%s%> is not supported"
  msgstr ""
  
! #: opts.cc:1325 opts.cc:2322
  #, gcc-internal-format
  msgid "%<-fsanitize-trap=%s%> is not supported"
  msgstr ""
  
! #: opts.cc:1352
  #, gcc-internal-format
  msgid ""
  "%<-fsanitize-address-use-after-scope%> requires %<-fstack-reuse=none%> option"
  msgstr ""
  
! #: opts.cc:1359
  #, gcc-internal-format
  msgid "transactional memory is not supported with %<-fsanitize=address%>"
  msgstr ""
  
! #: opts.cc:1362
  #, gcc-internal-format
  msgid ""
  "transactional memory is not supported with %<-fsanitize=kernel-address%>"
  msgstr ""
  
! #: opts.cc:1367
  #, gcc-internal-format
  msgid "live patching (with %qs) is not supported with LTO"
  msgstr ""
  
! #: opts.cc:1372
  #, gcc-internal-format
  msgid "vtable verification is not supported with LTO"
  msgstr ""
  
! #: opts.cc:1447
  #, gcc-internal-format
  msgid "variable tracking requested, but useless unless producing debug info"
  msgstr ""
  
! #: opts.cc:1451
  #, gcc-internal-format
  msgid "variable tracking requested, but not supported by this debug format"
  msgstr ""
  
! #: opts.cc:1480
  #, gcc-internal-format
  msgid "var-tracking-assignments changes selective scheduling"
  msgstr ""
  
! #: opts.cc:1493
  #, gcc-internal-format
  msgid ""
  "%<-Wstrict-flex-arrays%> is ignored when %<-fstrict-flex-arrays%> is not "
  "present"
  msgstr ""
  
! #: opts.cc:1523 config/darwin.cc:3484
  #, gcc-internal-format
  msgid ""
  "%<-freorder-blocks-and-partition%> does not work with exceptions on this "
  "architecture"
  msgstr ""
  
! #: opts.cc:1539
  #, gcc-internal-format
  msgid ""
  "%<-freorder-blocks-and-partition%> does not support unwind info on this "
  "architecture"
  msgstr ""
  
! #: opts.cc:1557 config/pa/pa.cc:580
  #, gcc-internal-format
  msgid "%<-freorder-blocks-and-partition%> does not work on this architecture"
  msgstr ""
  
! #: opts.cc:2066
  #, gcc-internal-format
  msgid "unrecognized %<include_flags 0x%x%> passed to %<print_specific_help%>"
  msgstr ""
  
! #: opts.cc:2301
  #, gcc-internal-format
  msgid "%<-fsanitize=all%> option is not valid"
  msgstr ""
  
! #: opts.cc:2356
  #, gcc-internal-format
  msgid ""
  "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s; did you mean %qs?"
  msgstr ""
  
! #: opts.cc:2362
  #, gcc-internal-format
  msgid "unrecognized argument to %<-f%ssanitize%s=%> option: %q.*s"
  msgstr ""
  
! #: opts.cc:2397
  #, gcc-internal-format
  msgid "%qs attribute directive ignored"
  msgstr ""
  
! #: opts.cc:2421
  #, gcc-internal-format
  msgid "unrecognized argument to %<-fzero-call-used-regs=%>: %qs"
  msgstr ""
  
! #: opts.cc:2445
  #, gcc-internal-format
  msgid "invalid arguments for %<-falign-%s%> option: %qs"
  msgstr ""
  
! #: opts.cc:2460
  #, gcc-internal-format
  msgid "invalid number of arguments for %<-falign-%s%> option: %qs"
  msgstr ""
  
! #: opts.cc:2469
  #, gcc-internal-format
  msgid "%<-falign-%s%> is not between 0 and %d"
  msgstr ""
  
! #: opts.cc:2528
  #, gcc-internal-format
  msgid "invalid arguments for %<-fpatchable-function-entry%>"
  msgstr ""
  
! #: opts.cc:2665
  #, gcc-internal-format
  msgid "%<--help%> argument %q.*s is ambiguous, please be more specific"
  msgstr ""
  
! #: opts.cc:2676
  #, gcc-internal-format
  msgid "unrecognized argument to %<--help=%> option: %q.*s"
  msgstr ""
  
! #: opts.cc:2856
  #, gcc-internal-format
  msgid ""
  "arguments ignored for %<-Wattributes=%>; use %<-Wno-attributes=%> instead"
  msgstr ""
  
! #: opts.cc:2862
  #, gcc-internal-format
  msgid "trailing %<,%> in arguments for %<-Wno-attributes=%>"
  msgstr ""
  
! #: opts.cc:3108
  #, gcc-internal-format
  msgid "%qs option can be specified only for offload compiler"
  msgstr ""
  
! #: opts.cc:3117
  #, gcc-internal-format
  msgid "structure alignment must be a small power of two, not %wu"
  msgstr ""
  
! #: opts.cc:3238
  #, gcc-internal-format
  msgid "unknown stack check parameter %qs"
  msgstr ""
  
! #: opts.cc:3290
  #, gcc-internal-format
  msgid ""
  "%<-gdwarf%s%> is ambiguous; use %<-gdwarf-%s%> for DWARF version or %<-"
  "gdwarf%> %<-g%s%> for debug level"
  msgstr ""
  
! #: opts.cc:3301
  #, gcc-internal-format
  msgid "dwarf version %wu is not supported"
  msgstr ""
  
! #: opts.cc:3338
  #, gcc-internal-format
  msgid "unrecognized argument to %<-flto=%> option: %qs"
  msgstr ""
  
! #: opts.cc:3538
  #, gcc-internal-format
  msgid "target system does not support debug output"
  msgstr ""
  
! #: opts.cc:3577
  #, gcc-internal-format
  msgid "debug format %qs conflicts with prior selection"
  msgstr ""
  
! #: opts.cc:3601
  #, gcc-internal-format
  msgid "unrecognized debug output level %qs"
  msgstr ""
  
! #: opts.cc:3603
  #, gcc-internal-format
  msgid "debug output level %qs is too high"
  msgstr ""
  
! #: opts.cc:3615
  #, gcc-internal-format
  msgid "unrecognized btf debug output level %qs"
  msgstr ""
  
! #: opts.cc:3632
  #, gcc-internal-format
  msgid "getting core file size maximum limit: %m"
  msgstr ""
  
! #: opts.cc:3636
  #, gcc-internal-format
  msgid "setting core file size limit to maximum: %m"
  msgstr ""
  
! #: opts.cc:3681
  #, gcc-internal-format, gfc-internal-format
  msgid "unrecognized gcc debugging option: %c"
  msgstr ""
  
! #: opts.cc:3710
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>; did you mean %<-%s%>?"
  msgstr ""
  
! #: opts.cc:3714
  #, gcc-internal-format
  msgid "%<-W%serror=%s%>: no option %<-%s%>"
  msgstr ""
  
! #: opts.cc:3718
  #, gcc-internal-format
  msgid "%<-Werror=%s%>: %<-%s%> is not an option that controls warnings"
  msgstr ""
*************** msgstr ""
*** 32939,32960 ****
  msgid "unrecognized enum value: %qs"
  msgstr ""
  
! #: read-rtl-function.cc:1145 read-rtl-function.cc:1204
  #, gcc-internal-format, gfc-internal-format
  msgid "was expecting `%s'"
  msgstr ""
  
! #: read-rtl-function.cc:1598
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate insn UID: %i"
  msgstr ""
  
! #: read-rtl-function.cc:1659
  #, gcc-internal-format
  msgid "start/end of RTL fragment are in different files"
  msgstr ""
  
! #: read-rtl-function.cc:1665
  #, gcc-internal-format
  msgid "start of RTL fragment must be on an earlier line than end"
  msgstr ""
--- 32958,32979 ----
  msgid "unrecognized enum value: %qs"
  msgstr ""
  
! #: read-rtl-function.cc:1148 read-rtl-function.cc:1207
  #, gcc-internal-format, gfc-internal-format
  msgid "was expecting `%s'"
  msgstr ""
  
! #: read-rtl-function.cc:1601
  #, gcc-internal-format, gfc-internal-format
  msgid "duplicate insn UID: %i"
  msgstr ""
  
! #: read-rtl-function.cc:1662
  #, gcc-internal-format
  msgid "start/end of RTL fragment are in different files"
  msgstr ""
  
! #: read-rtl-function.cc:1668
  #, gcc-internal-format
  msgid "start of RTL fragment must be on an earlier line than end"
  msgstr ""
*************** msgstr ""
*** 34819,34845 ****
  msgid "target does not support atomic profile update, single mode is selected"
  msgstr ""
  
! #: tree-ssa-alias.cc:4125
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\""
  msgstr ""
  
! #: tree-ssa-alias.cc:4164
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\" arg %i"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4595 c-family/c-common.cc:5992
  #, gcc-internal-format
  msgid "%qs pointer is null"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4598 c-family/c-common.cc:5995
  #, gcc-internal-format
  msgid "in a call to non-static member function %qD"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4604 c-family/c-common.cc:6010
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected"
  msgstr ""
--- 34838,34864 ----
  msgid "target does not support atomic profile update, single mode is selected"
  msgstr ""
  
! #: tree-ssa-alias.cc:4127
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\""
  msgstr ""
  
! #: tree-ssa-alias.cc:4166
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid fn spec attribute \"%s\" arg %i"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4595 c-family/c-common.cc:6013
  #, gcc-internal-format
  msgid "%qs pointer is null"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4598 c-family/c-common.cc:6016
  #, gcc-internal-format
  msgid "in a call to non-static member function %qD"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4604 c-family/c-common.cc:6031
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected"
  msgstr ""
*************** msgstr ""
*** 34849,34860 ****
  msgid "in a call to built-in function %qD"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4614 tree-ssa-ccp.cc:4671 c-family/c-common.cc:6014
  #, gcc-internal-format
  msgid "in a call to function %qD declared %qs"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4660 c-family/c-common.cc:6002
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected because argument %u is nonzero"
  msgstr ""
--- 34868,34879 ----
  msgid "in a call to built-in function %qD"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4614 tree-ssa-ccp.cc:4671 c-family/c-common.cc:6035
  #, gcc-internal-format
  msgid "in a call to function %qD declared %qs"
  msgstr ""
  
! #: tree-ssa-ccp.cc:4660 c-family/c-common.cc:6023
  #, gcc-internal-format, gfc-internal-format
  msgid "argument %u null where non-null expected because argument %u is nonzero"
  msgstr ""
*************** msgstr ""
*** 35277,35293 ****
  msgid "verify_ssa failed"
  msgstr ""
  
! #: tree-streamer-in.cc:347
  #, gcc-internal-format
  msgid "machine independent builtin code out of range"
  msgstr ""
  
! #: tree-streamer-in.cc:353
  #, gcc-internal-format
  msgid "target specific builtin not available"
  msgstr ""
  
! #: tree-streamer-in.cc:726
  #, gcc-internal-format
  msgid "degree of %<poly_int%> exceeds %<NUM_POLY_INT_COEFFS%>"
  msgstr ""
--- 35296,35312 ----
  msgid "verify_ssa failed"
  msgstr ""
  
! #: tree-streamer-in.cc:348
  #, gcc-internal-format
  msgid "machine independent builtin code out of range"
  msgstr ""
  
! #: tree-streamer-in.cc:354
  #, gcc-internal-format
  msgid "target specific builtin not available"
  msgstr ""
  
! #: tree-streamer-in.cc:736
  #, gcc-internal-format
  msgid "degree of %<poly_int%> exceeds %<NUM_POLY_INT_COEFFS%>"
  msgstr ""
*************** msgstr ""
*** 35319,35335 ****
  msgid "address of local variable passed to %<musttail%> call argument"
  msgstr ""
  
! #: tree-tailcall.cc:885 tree-tailcall.cc:914
  #, gcc-internal-format
  msgid "address of local variable can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:909
  #, gcc-internal-format
  msgid "address of automatic variable %qD can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:939
  #, gcc-internal-format
  msgid "address of parameter %qD can escape to %<musttail%> call"
  msgstr ""
--- 35338,35354 ----
  msgid "address of local variable passed to %<musttail%> call argument"
  msgstr ""
  
! #: tree-tailcall.cc:1015 tree-tailcall.cc:1044
  #, gcc-internal-format
  msgid "address of local variable can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:1039
  #, gcc-internal-format
  msgid "address of automatic variable %qD can escape to %<musttail%> call"
  msgstr ""
  
! #: tree-tailcall.cc:1069
  #, gcc-internal-format
  msgid "address of parameter %qD can escape to %<musttail%> call"
  msgstr ""
*************** msgstr ""
*** 35359,35365 ****
  msgid "vector shuffling operation will be expanded piecewise"
  msgstr ""
  
! #: tree-vect-loop.cc:5115
  #, gcc-internal-format
  msgid "vectorization did not happen for a simd loop"
  msgstr ""
--- 35378,35384 ----
  msgid "vector shuffling operation will be expanded piecewise"
  msgstr ""
  
! #: tree-vect-loop.cc:5116
  #, gcc-internal-format
  msgid "vectorization did not happen for a simd loop"
  msgstr ""
*************** msgid ""
*** 35942,35948 ****
  "requested alignment for %q+D is greater than implemented alignment of %wu"
  msgstr ""
  
! #: varasm.cc:2513 c/c-decl.cc:5971 c/c-parser.cc:1969 m2/gm2-gcc/m2type.cc:1248
  #, gcc-internal-format
  msgid "storage size of %q+D isn%'t known"
  msgstr ""
--- 35961,35967 ----
  "requested alignment for %q+D is greater than implemented alignment of %wu"
  msgstr ""
  
! #: varasm.cc:2513 c/c-decl.cc:5971 c/c-parser.cc:2014 m2/gm2-gcc/m2type.cc:1248
  #, gcc-internal-format
  msgid "storage size of %q+D isn%'t known"
  msgstr ""
*************** msgstr ""
*** 36019,36025 ****
  msgid "%qs symbol %q+D must have static linkage"
  msgstr ""
  
! #: varasm.cc:6609 config/nvptx/nvptx.cc:7758
  #, gcc-internal-format
  msgid "alias definitions not supported in this configuration"
  msgstr ""
--- 36038,36044 ----
  msgid "%qs symbol %q+D must have static linkage"
  msgstr ""
  
! #: varasm.cc:6609 config/nvptx/nvptx.cc:7764
  #, gcc-internal-format
  msgid "alias definitions not supported in this configuration"
  msgstr ""
*************** msgid "%qE attribute ignored for field o
*** 36206,36232 ****
  msgstr ""
  
  #: c-family/c-attribs.cc:1452 c-family/c-attribs.cc:3650
! #: c-family/c-attribs.cc:6271 ada/gcc-interface/utils.cc:7461
  #, gcc-internal-format
  msgid "%qE argument not a string"
  msgstr ""
  
! #: c-family/c-attribs.cc:1627 ada/gcc-interface/utils.cc:6947
  #, gcc-internal-format
  msgid "%qE attribute ignored because of argument %qE"
  msgstr ""
  
! #: c-family/c-attribs.cc:1648 ada/gcc-interface/utils.cc:6968
  #, gcc-internal-format
  msgid "ignoring attribute %qE because of excess arguments starting at %qE"
  msgstr ""
  
! #: c-family/c-attribs.cc:1662 ada/gcc-interface/utils.cc:6982
  #, gcc-internal-format
  msgid "attribute %qE does not apply to elements of non-scalar type %qT"
  msgstr ""
  
! #: c-family/c-attribs.cc:1667 ada/gcc-interface/utils.cc:6987
  #, gcc-internal-format
  msgid "attribute %qE does not apply to fields of aggregate type %qT"
  msgstr ""
--- 36225,36251 ----
  msgstr ""
  
  #: c-family/c-attribs.cc:1452 c-family/c-attribs.cc:3650
! #: c-family/c-attribs.cc:6271 ada/gcc-interface/utils.cc:7463
  #, gcc-internal-format
  msgid "%qE argument not a string"
  msgstr ""
  
! #: c-family/c-attribs.cc:1627 ada/gcc-interface/utils.cc:6949
  #, gcc-internal-format
  msgid "%qE attribute ignored because of argument %qE"
  msgstr ""
  
! #: c-family/c-attribs.cc:1648 ada/gcc-interface/utils.cc:6970
  #, gcc-internal-format
  msgid "ignoring attribute %qE because of excess arguments starting at %qE"
  msgstr ""
  
! #: c-family/c-attribs.cc:1662 ada/gcc-interface/utils.cc:6984
  #, gcc-internal-format
  msgid "attribute %qE does not apply to elements of non-scalar type %qT"
  msgstr ""
  
! #: c-family/c-attribs.cc:1667 ada/gcc-interface/utils.cc:6989
  #, gcc-internal-format
  msgid "attribute %qE does not apply to fields of aggregate type %qT"
  msgstr ""
*************** msgid "%qE attribute has no effect on un
*** 36242,36253 ****
  msgstr ""
  
  #: c-family/c-attribs.cc:1993 c-family/c-attribs.cc:3633
! #: ada/gcc-interface/utils.cc:7217
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a variable"
  msgstr ""
  
! #: c-family/c-attribs.cc:1999 ada/gcc-interface/utils.cc:7223
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a local variable"
  msgstr ""
--- 36261,36272 ----
  msgstr ""
  
  #: c-family/c-attribs.cc:1993 c-family/c-attribs.cc:3633
! #: ada/gcc-interface/utils.cc:7219
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a variable"
  msgstr ""
  
! #: c-family/c-attribs.cc:1999 ada/gcc-interface/utils.cc:7225
  #, gcc-internal-format
  msgid "%qE attribute ignored because %qD is not a local variable"
  msgstr ""
*************** msgid "weak %q+D cannot be defined %qE"
*** 36532,36538 ****
  msgstr ""
  
  #: c-family/c-attribs.cc:3209 c-family/c-attribs.cc:4198
! #: ada/gcc-interface/utils.cc:7288 jit/dummy-frontend.cc:883
  #, gcc-internal-format
  msgid "attribute %qE argument not a string"
  msgstr ""
--- 36551,36557 ----
  msgstr ""
  
  #: c-family/c-attribs.cc:3209 c-family/c-attribs.cc:4198
! #: ada/gcc-interface/utils.cc:7290 jit/dummy-frontend.cc:883
  #, gcc-internal-format
  msgid "attribute %qE argument not a string"
  msgstr ""
*************** msgstr ""
*** 36642,36648 ****
  
  #: c-family/c-attribs.cc:3685 c-family/c-attribs.cc:4281
  #: c-family/c-attribs.cc:6236 c-family/c-attribs.cc:6263
! #: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7447
  #, gcc-internal-format
  msgid "%qE attribute applies only to functions"
  msgstr ""
--- 36661,36667 ----
  
  #: c-family/c-attribs.cc:3685 c-family/c-attribs.cc:4281
  #: c-family/c-attribs.cc:6236 c-family/c-attribs.cc:6263
! #: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7449
  #, gcc-internal-format
  msgid "%qE attribute applies only to functions"
  msgstr ""
*************** msgstr ""
*** 36742,36748 ****
  msgid "%qE attribute argument %E is not in the range [0, %wu]"
  msgstr ""
  
! #: c-family/c-attribs.cc:4211 ada/gcc-interface/utils.cc:7301
  #, gcc-internal-format
  msgid ""
  "only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> "
--- 36761,36767 ----
  msgid "%qE attribute argument %E is not in the range [0, %wu]"
  msgstr ""
  
! #: c-family/c-attribs.cc:4211 ada/gcc-interface/utils.cc:7303
  #, gcc-internal-format
  msgid ""
  "only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> "
*************** msgstr ""
*** 36796,36802 ****
  msgid "%qE argument is not a function"
  msgstr ""
  
! #: c-family/c-attribs.cc:4635 cp/name-lookup.cc:6573
  #, gcc-internal-format
  msgid "deprecated message is not a string"
  msgstr ""
--- 36815,36821 ----
  msgid "%qE argument is not a function"
  msgstr ""
  
! #: c-family/c-attribs.cc:4635 cp/name-lookup.cc:6576
  #, gcc-internal-format
  msgid "deprecated message is not a string"
  msgstr ""
*************** msgstr ""
*** 36826,36837 ****
  msgid "%qE attribute argument value %qE exceeds %wu"
  msgstr ""
  
! #: c-family/c-attribs.cc:4876 ada/gcc-interface/utils.cc:4436
  #, gcc-internal-format
  msgid "vector size not an integral multiple of component size"
  msgstr ""
  
! #: c-family/c-attribs.cc:4882 ada/gcc-interface/utils.cc:4443
  #, gcc-internal-format
  msgid "zero vector size"
  msgstr ""
--- 36845,36856 ----
  msgid "%qE attribute argument value %qE exceeds %wu"
  msgstr ""
  
! #: c-family/c-attribs.cc:4876 ada/gcc-interface/utils.cc:4438
  #, gcc-internal-format
  msgid "vector size not an integral multiple of component size"
  msgstr ""
  
! #: c-family/c-attribs.cc:4882 ada/gcc-interface/utils.cc:4445
  #, gcc-internal-format
  msgid "zero vector size"
  msgstr ""
*************** msgstr ""
*** 37016,37032 ****
  msgid "%qE attribute only applies to variadic functions"
  msgstr ""
  
! #: c-family/c-attribs.cc:6031 ada/gcc-interface/utils.cc:6848
  #, gcc-internal-format
  msgid "requested position is not an integer constant"
  msgstr ""
  
! #: c-family/c-attribs.cc:6039 ada/gcc-interface/utils.cc:6855
  #, gcc-internal-format
  msgid "requested position is less than zero"
  msgstr ""
  
! #: c-family/c-attribs.cc:6088 ada/gcc-interface/utils.cc:7344
  #: d/d-attribs.cc:771 jit/dummy-frontend.cc:799
  #, gcc-internal-format
  msgid "empty string in attribute %<target%>"
--- 37035,37051 ----
  msgid "%qE attribute only applies to variadic functions"
  msgstr ""
  
! #: c-family/c-attribs.cc:6031 ada/gcc-interface/utils.cc:6850
  #, gcc-internal-format
  msgid "requested position is not an integer constant"
  msgstr ""
  
! #: c-family/c-attribs.cc:6039 ada/gcc-interface/utils.cc:6857
  #, gcc-internal-format
  msgid "requested position is less than zero"
  msgstr ""
  
! #: c-family/c-attribs.cc:6088 ada/gcc-interface/utils.cc:7346
  #: d/d-attribs.cc:771 jit/dummy-frontend.cc:799
  #, gcc-internal-format
  msgid "empty string in attribute %<target%>"
*************** msgstr ""
*** 37040,37046 ****
  msgid "%qE attribute argument not a string constant"
  msgstr ""
  
! #: c-family/c-attribs.cc:6288 ada/gcc-interface/utils.cc:7478
  #, gcc-internal-format
  msgid "unrecognized %qE attribute argument %qs"
  msgstr ""
--- 37059,37065 ----
  msgid "%qE attribute argument not a string constant"
  msgstr ""
  
! #: c-family/c-attribs.cc:6288 ada/gcc-interface/utils.cc:7480
  #, gcc-internal-format
  msgid "unrecognized %qE attribute argument %qs"
  msgstr ""
*************** msgstr ""
*** 37280,37804 ****
  msgid "pointer to a function used in arithmetic"
  msgstr ""
  
! #: c-family/c-common.cc:3610
  #, gcc-internal-format
  msgid "enum constant in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3640 d/d-convert.cc:149
  #, gcc-internal-format
  msgid "the address of %qD will always evaluate as %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3685
  #, gcc-internal-format
  msgid "%<*%> in boolean context, suggest %<&&%> instead"
  msgstr ""
  
! #: c-family/c-common.cc:3698
  #, gcc-internal-format
  msgid "%<<<%> in boolean context, did you mean %<<%>?"
  msgstr ""
  
! #: c-family/c-common.cc:3714
  #, gcc-internal-format
  msgid ""
  "%<?:%> using integer constants in boolean context, the expression will "
  "always evaluate to %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3723
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3759
  #, gcc-internal-format
  msgid ""
  "the compiler can assume that the address of %qD will always evaluate to "
  "%<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3795 cp/semantics.cc:1030
  #, gcc-internal-format
  msgid "suggest parentheses around assignment used as truth value"
  msgstr ""
  
! #: c-family/c-common.cc:3882 c/c-decl.cc:5028 c/c-decl.cc:7694
! #: c/c-parser.cc:4001 c/c-typeck.cc:17908
  #, gcc-internal-format
  msgid "invalid use of %<restrict%>"
  msgstr ""
  
! #: c-family/c-common.cc:3958
  #, gcc-internal-format
  msgid "invalid application of %<sizeof%> to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:3968
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<alignof%> applied to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:3971
  #, gcc-internal-format
  msgid "ISO C does not permit %<_Alignof%> applied to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:3982 cp/typeck.cc:2085
  #, gcc-internal-format
  msgid "invalid application of %qs to a void type"
  msgstr ""
  
! #: c-family/c-common.cc:3993
  #, gcc-internal-format
  msgid "invalid application of %qs to incomplete type %qT"
  msgstr ""
  
! #: c-family/c-common.cc:4001
  #, gcc-internal-format
  msgid "invalid application of %qs to array type %qT of incomplete element type"
  msgstr ""
  
! #: c-family/c-common.cc:4053
  #, gcc-internal-format
  msgid "%<__alignof%> applied to a bit-field"
  msgstr ""
  
! #: c-family/c-common.cc:4878
  #, gcc-internal-format
  msgid "first argument to %<va_arg%> not of type %<va_list%>"
  msgstr ""
  
! #: c-family/c-common.cc:4998
  #, gcc-internal-format
  msgid "cannot disable built-in function %qs"
  msgstr ""
  
! #: c-family/c-common.cc:5190
  #, gcc-internal-format
  msgid "pointers are not permitted as case values"
  msgstr ""
  
! #: c-family/c-common.cc:5199
  #, gcc-internal-format
  msgid "range expressions in switch statements are non-standard"
  msgstr ""
  
! #: c-family/c-common.cc:5204 c-family/c-common.cc:5208
! #: c-family/c-common.cc:5213
  #, gcc-internal-format
  msgid ""
  "ISO C does not support range expressions in switch statements before C2Y"
  msgstr ""
  
! #: c-family/c-common.cc:5227 c-family/c-common.cc:5244
  #, gcc-internal-format
  msgid "conversion of %qE to %qT in range expression changes value to %qE"
  msgstr ""
  
! #: c-family/c-common.cc:5263
  #, gcc-internal-format
  msgid "empty range specified"
  msgstr ""
  
! #: c-family/c-common.cc:5317
  #, gcc-internal-format
  msgid "duplicate (or overlapping) case value"
  msgstr ""
  
! #: c-family/c-common.cc:5319
  #, gcc-internal-format
  msgid "this is the first entry overlapping that value"
  msgstr ""
  
! #: c-family/c-common.cc:5323
  #, gcc-internal-format
  msgid "duplicate case value"
  msgstr ""
  
! #: c-family/c-common.cc:5324 c-family/c-warn.cc:2662
  #, gcc-internal-format
  msgid "previously used here"
  msgstr ""
  
! #: c-family/c-common.cc:5328
  #, gcc-internal-format
  msgid "multiple default labels in one switch"
  msgstr ""
  
! #: c-family/c-common.cc:5330
  #, gcc-internal-format
  msgid "this is the first default label"
  msgstr ""
  
! #: c-family/c-common.cc:5442
  #, gcc-internal-format
  msgid "taking the address of a label is non-standard"
  msgstr ""
  
! #: c-family/c-common.cc:5627
  #, gcc-internal-format
  msgid "requested alignment is not an integer constant"
  msgstr ""
  
! #: c-family/c-common.cc:5635 c-family/c-common.cc:5645
  #, gcc-internal-format
  msgid "requested alignment %qE is not a positive power of 2"
  msgstr ""
  
! #: c-family/c-common.cc:5655
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds object file maximum %u"
  msgstr ""
  
! #: c-family/c-common.cc:5663
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds maximum %u"
  msgstr ""
  
! #: c-family/c-common.cc:5858
  #, gcc-internal-format
  msgid "not enough variable arguments to fit a sentinel"
  msgstr ""
  
! #: c-family/c-common.cc:5873
  #, gcc-internal-format
  msgid "missing sentinel in function call"
  msgstr ""
  
! #: c-family/c-common.cc:6112 c-family/c-common.cc:6165 d/d-attribs.cc:837
  #: d/d-attribs.cc:887
  #, gcc-internal-format
  msgid "bad option %qs to attribute %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6116 c-family/c-common.cc:6170
  #, gcc-internal-format
  msgid "bad option %qs to pragma %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6219
  #, gcc-internal-format
  msgid "attribute %<fallthrough%> specified multiple times"
  msgstr ""
  
! #: c-family/c-common.cc:6223
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute specified with a parameter"
  msgstr ""
  
! #: c-family/c-common.cc:6412 c-family/c-common.cc:7430
! #: c-family/c-common.cc:7478 c-family/c-common.cc:7560
! #: c-family/c-common.cc:7646 c-family/c-common.cc:8315
  #: config/aarch64/aarch64-sve-builtins.cc:3001
  #: config/arm/arm-mve-builtins.cc:1714
  #, gcc-internal-format
  msgid "too few arguments to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6418 c-family/c-common.cc:7485
! #: c-family/c-common.cc:7673 c-family/c-common.cc:8317
  #: config/aarch64/aarch64-sve-builtins.cc:3003
  #: config/arm/arm-mve-builtins.cc:1716
  #, gcc-internal-format
  msgid "too many arguments to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6462
  #, gcc-internal-format
  msgid "third argument to function %qE must be a constant integer"
  msgstr ""
  
! #: c-family/c-common.cc:6488
  #, gcc-internal-format
  msgid ""
  "second argument to function %qE must be a constant integer power of 2 "
  "between %qi and %qu bits"
  msgstr ""
  
! #: c-family/c-common.cc:6512 c-family/c-common.cc:6568
  #, gcc-internal-format
  msgid "non-floating-point argument in call to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6541
  #, gcc-internal-format
  msgid "non-floating-point arguments in call to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6558
  #, gcc-internal-format
  msgid "non-const integer argument %u in call to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6587
  #, gcc-internal-format
  msgid "non-integer argument 3 in call to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6607 c-family/c-common.cc:6673
! #: c-family/c-common.cc:6757 c-family/c-common.cc:6784
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6617
  #, gcc-internal-format
  msgid ""
  "argument 3 in call to function %qE does not have pointer to integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6626
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to enumerated type"
  msgstr ""
  
! #: c-family/c-common.cc:6635
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to boolean type"
  msgstr ""
  
! #: c-family/c-common.cc:6644 c-family/c-common.cc:6653
! #: c-family/c-common.cc:6725 c-family/c-common.cc:6734
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has pointer to %qs type (%qT)"
  msgstr ""
  
! #: c-family/c-common.cc:6682 c-family/c-common.cc:6793
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has enumerated type"
  msgstr ""
  
! #: c-family/c-common.cc:6691 c-family/c-common.cc:6802
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has boolean type"
  msgstr ""
  
! #: c-family/c-common.cc:6707
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have pointer type"
  msgstr ""
  
! #: c-family/c-common.cc:6716
  #, gcc-internal-format
  msgid "argument %u in call to function %qE points to incomplete type"
  msgstr ""
  
! #: c-family/c-common.cc:6770
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have %<int%> type"
  msgstr ""
  
! #: c-family/c-common.cc:6814
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has unsigned type"
  msgstr ""
  
! #: c-family/c-common.cc:6824
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has signed type"
  msgstr ""
  
! #: c-family/c-common.cc:7089 rust/backend/rust-tree.cc:3588
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to static data member %qD"
  msgstr ""
  
! #: c-family/c-common.cc:7094 rust/backend/rust-tree.cc:3593
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
  msgstr ""
  
! #: c-family/c-common.cc:7101 rust/backend/rust-tree.cc:3600
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to a non constant address"
  msgstr ""
  
! #: c-family/c-common.cc:7114 rust/backend/rust-tree.cc:3613
  #, gcc-internal-format
  msgid "attempt to take address of bit-field structure member %qD"
  msgstr ""
  
! #: c-family/c-common.cc:7167 rust/backend/rust-tree.cc:3665
  #, gcc-internal-format
  msgid "index %E denotes an offset greater than size of %qT"
  msgstr ""
  
! #: c-family/c-common.cc:7344
  #, gcc-internal-format
  msgid "size of array is too large"
  msgstr ""
  
! #: c-family/c-common.cc:7460 c-family/c-common.cc:7604
  #, gcc-internal-format
  msgid "operand type %qT is incompatible with argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7496
  #, gcc-internal-format
  msgid "expecting argument of type pointer or of type integer for argument 1"
  msgstr ""
  
! #: c-family/c-common.cc:7513
  #, gcc-internal-format
  msgid "both arguments must be compatible"
  msgstr ""
  
! #: c-family/c-common.cc:7749
  #, gcc-internal-format
  msgid "incorrect number of arguments to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7765
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a non-void pointer type"
  msgstr ""
  
! #: c-family/c-common.cc:7773
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a complete type"
  msgstr ""
  
! #: c-family/c-common.cc:7783
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a constant size type"
  msgstr ""
  
! #: c-family/c-common.cc:7795
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a nonzero size object"
  msgstr ""
  
! #: c-family/c-common.cc:7817
  #, gcc-internal-format
  msgid "argument %d of %qE must be a pointer type"
  msgstr ""
  
! #: c-family/c-common.cc:7827
  #, gcc-internal-format
  msgid "argument %d of %qE must be a pointer to a constant size type"
  msgstr ""
  
! #: c-family/c-common.cc:7836
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a function"
  msgstr ""
  
! #: c-family/c-common.cc:7846
  #, gcc-internal-format
  msgid "size mismatch in argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7861
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<const%> type"
  msgstr ""
  
! #: c-family/c-common.cc:7867
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<const%> qualifier"
  msgstr ""
  
! #: c-family/c-common.cc:7878
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<volatile%> type"
  msgstr ""
  
! #: c-family/c-common.cc:7884
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<volatile%> qualifier"
  msgstr ""
  
! #: c-family/c-common.cc:7898
  #, gcc-internal-format
  msgid "non-integer memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7913
  #, gcc-internal-format
  msgid "invalid memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:8554
  #, gcc-internal-format
  msgid ""
  "this target does not define a speculation barrier; your program will still "
  "execute correctly, but incorrect speculation may not be restricted"
  msgstr ""
  
! #: c-family/c-common.cc:9252
  #, gcc-internal-format
  msgid "index value is out of bound"
  msgstr ""
  
! #: c-family/c-common.cc:9298 c-family/c-common.cc:9347
! #: c-family/c-common.cc:9363
  #, gcc-internal-format
  msgid "conversion of scalar %qT to vector %qT involves truncation"
  msgstr ""
  
  #. Reject arguments that are built-in functions with
  #. no library fallback.
! #: c-family/c-common.cc:9451 d/intrinsics.cc:1459
  #: rust/backend/rust-tree.cc:3484
  #, gcc-internal-format
  msgid "built-in function %qE must be directly called"
  msgstr ""
  
! #: c-family/c-common.cc:9471
  #, gcc-internal-format
  msgid "size of array %qE is not a constant expression"
  msgstr ""
  
! #: c-family/c-common.cc:9474
  #, gcc-internal-format
  msgid "size of array is not a constant expression"
  msgstr ""
  
! #: c-family/c-common.cc:9478
  #, gcc-internal-format
  msgid "size %qE of array %qE is negative"
  msgstr ""
  
! #: c-family/c-common.cc:9481
  #, gcc-internal-format
  msgid "size %qE of array is negative"
  msgstr ""
  
! #: c-family/c-common.cc:9486
  #, gcc-internal-format
  msgid "size %qE of array %qE exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9489
  #, gcc-internal-format
  msgid "size %qE of array exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9494
  #, gcc-internal-format
  msgid "size of array %qE exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9497
  #, gcc-internal-format
  msgid "size of array exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9568
  #, gcc-internal-format
  msgid ""
  "environment variable %qs must expand to a non-negative integer less than or "
  "equal to %wd"
  msgstr ""
  
! #: c-family/c-common.cc:9855
  #, gcc-internal-format
  msgid "possible fix: take the address with %qs"
  msgstr ""
  
! #: c-family/c-common.cc:9865
  #, gcc-internal-format
  msgid "possible fix: dereference with %qs"
  msgstr ""
--- 37299,37823 ----
  msgid "pointer to a function used in arithmetic"
  msgstr ""
  
! #: c-family/c-common.cc:3631
  #, gcc-internal-format
  msgid "enum constant in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3661 d/d-convert.cc:149
  #, gcc-internal-format
  msgid "the address of %qD will always evaluate as %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3706
  #, gcc-internal-format
  msgid "%<*%> in boolean context, suggest %<&&%> instead"
  msgstr ""
  
! #: c-family/c-common.cc:3719
  #, gcc-internal-format
  msgid "%<<<%> in boolean context, did you mean %<<%>?"
  msgstr ""
  
! #: c-family/c-common.cc:3735
  #, gcc-internal-format
  msgid ""
  "%<?:%> using integer constants in boolean context, the expression will "
  "always evaluate to %<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3744
  #, gcc-internal-format
  msgid "%<?:%> using integer constants in boolean context"
  msgstr ""
  
! #: c-family/c-common.cc:3780
  #, gcc-internal-format
  msgid ""
  "the compiler can assume that the address of %qD will always evaluate to "
  "%<true%>"
  msgstr ""
  
! #: c-family/c-common.cc:3816 cp/semantics.cc:1030
  #, gcc-internal-format
  msgid "suggest parentheses around assignment used as truth value"
  msgstr ""
  
! #: c-family/c-common.cc:3903 c/c-decl.cc:5028 c/c-decl.cc:7694
! #: c/c-parser.cc:4046 c/c-typeck.cc:17925
  #, gcc-internal-format
  msgid "invalid use of %<restrict%>"
  msgstr ""
  
! #: c-family/c-common.cc:3979
  #, gcc-internal-format
  msgid "invalid application of %<sizeof%> to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:3989
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<alignof%> applied to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:3992
  #, gcc-internal-format
  msgid "ISO C does not permit %<_Alignof%> applied to a function type"
  msgstr ""
  
! #: c-family/c-common.cc:4003 cp/typeck.cc:2085
  #, gcc-internal-format
  msgid "invalid application of %qs to a void type"
  msgstr ""
  
! #: c-family/c-common.cc:4014
  #, gcc-internal-format
  msgid "invalid application of %qs to incomplete type %qT"
  msgstr ""
  
! #: c-family/c-common.cc:4022
  #, gcc-internal-format
  msgid "invalid application of %qs to array type %qT of incomplete element type"
  msgstr ""
  
! #: c-family/c-common.cc:4074
  #, gcc-internal-format
  msgid "%<__alignof%> applied to a bit-field"
  msgstr ""
  
! #: c-family/c-common.cc:4899
  #, gcc-internal-format
  msgid "first argument to %<va_arg%> not of type %<va_list%>"
  msgstr ""
  
! #: c-family/c-common.cc:5019
  #, gcc-internal-format
  msgid "cannot disable built-in function %qs"
  msgstr ""
  
! #: c-family/c-common.cc:5211
  #, gcc-internal-format
  msgid "pointers are not permitted as case values"
  msgstr ""
  
! #: c-family/c-common.cc:5220
  #, gcc-internal-format
  msgid "range expressions in switch statements are non-standard"
  msgstr ""
  
! #: c-family/c-common.cc:5225 c-family/c-common.cc:5229
! #: c-family/c-common.cc:5234
  #, gcc-internal-format
  msgid ""
  "ISO C does not support range expressions in switch statements before C2Y"
  msgstr ""
  
! #: c-family/c-common.cc:5248 c-family/c-common.cc:5265
  #, gcc-internal-format
  msgid "conversion of %qE to %qT in range expression changes value to %qE"
  msgstr ""
  
! #: c-family/c-common.cc:5284
  #, gcc-internal-format
  msgid "empty range specified"
  msgstr ""
  
! #: c-family/c-common.cc:5338
  #, gcc-internal-format
  msgid "duplicate (or overlapping) case value"
  msgstr ""
  
! #: c-family/c-common.cc:5340
  #, gcc-internal-format
  msgid "this is the first entry overlapping that value"
  msgstr ""
  
! #: c-family/c-common.cc:5344
  #, gcc-internal-format
  msgid "duplicate case value"
  msgstr ""
  
! #: c-family/c-common.cc:5345 c-family/c-warn.cc:2662
  #, gcc-internal-format
  msgid "previously used here"
  msgstr ""
  
! #: c-family/c-common.cc:5349
  #, gcc-internal-format
  msgid "multiple default labels in one switch"
  msgstr ""
  
! #: c-family/c-common.cc:5351
  #, gcc-internal-format
  msgid "this is the first default label"
  msgstr ""
  
! #: c-family/c-common.cc:5463
  #, gcc-internal-format
  msgid "taking the address of a label is non-standard"
  msgstr ""
  
! #: c-family/c-common.cc:5648
  #, gcc-internal-format
  msgid "requested alignment is not an integer constant"
  msgstr ""
  
! #: c-family/c-common.cc:5656 c-family/c-common.cc:5666
  #, gcc-internal-format
  msgid "requested alignment %qE is not a positive power of 2"
  msgstr ""
  
! #: c-family/c-common.cc:5676
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds object file maximum %u"
  msgstr ""
  
! #: c-family/c-common.cc:5684
  #, gcc-internal-format
  msgid "requested alignment %qE exceeds maximum %u"
  msgstr ""
  
! #: c-family/c-common.cc:5879
  #, gcc-internal-format
  msgid "not enough variable arguments to fit a sentinel"
  msgstr ""
  
! #: c-family/c-common.cc:5894
  #, gcc-internal-format
  msgid "missing sentinel in function call"
  msgstr ""
  
! #: c-family/c-common.cc:6133 c-family/c-common.cc:6186 d/d-attribs.cc:837
  #: d/d-attribs.cc:887
  #, gcc-internal-format
  msgid "bad option %qs to attribute %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6137 c-family/c-common.cc:6191
  #, gcc-internal-format
  msgid "bad option %qs to pragma %<optimize%>"
  msgstr ""
  
! #: c-family/c-common.cc:6240
  #, gcc-internal-format
  msgid "attribute %<fallthrough%> specified multiple times"
  msgstr ""
  
! #: c-family/c-common.cc:6244
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute specified with a parameter"
  msgstr ""
  
! #: c-family/c-common.cc:6433 c-family/c-common.cc:7451
! #: c-family/c-common.cc:7499 c-family/c-common.cc:7581
! #: c-family/c-common.cc:7667 c-family/c-common.cc:8336
  #: config/aarch64/aarch64-sve-builtins.cc:3001
  #: config/arm/arm-mve-builtins.cc:1714
  #, gcc-internal-format
  msgid "too few arguments to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6439 c-family/c-common.cc:7506
! #: c-family/c-common.cc:7694 c-family/c-common.cc:8338
  #: config/aarch64/aarch64-sve-builtins.cc:3003
  #: config/arm/arm-mve-builtins.cc:1716
  #, gcc-internal-format
  msgid "too many arguments to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6483
  #, gcc-internal-format
  msgid "third argument to function %qE must be a constant integer"
  msgstr ""
  
! #: c-family/c-common.cc:6509
  #, gcc-internal-format
  msgid ""
  "second argument to function %qE must be a constant integer power of 2 "
  "between %qi and %qu bits"
  msgstr ""
  
! #: c-family/c-common.cc:6533 c-family/c-common.cc:6589
  #, gcc-internal-format
  msgid "non-floating-point argument in call to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6562
  #, gcc-internal-format
  msgid "non-floating-point arguments in call to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6579
  #, gcc-internal-format
  msgid "non-const integer argument %u in call to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6608
  #, gcc-internal-format
  msgid "non-integer argument 3 in call to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:6628 c-family/c-common.cc:6694
! #: c-family/c-common.cc:6778 c-family/c-common.cc:6805
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6638
  #, gcc-internal-format
  msgid ""
  "argument 3 in call to function %qE does not have pointer to integral type"
  msgstr ""
  
! #: c-family/c-common.cc:6647
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to enumerated type"
  msgstr ""
  
! #: c-family/c-common.cc:6656
  #, gcc-internal-format
  msgid "argument 3 in call to function %qE has pointer to boolean type"
  msgstr ""
  
! #: c-family/c-common.cc:6665 c-family/c-common.cc:6674
! #: c-family/c-common.cc:6746 c-family/c-common.cc:6755
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has pointer to %qs type (%qT)"
  msgstr ""
  
! #: c-family/c-common.cc:6703 c-family/c-common.cc:6814
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has enumerated type"
  msgstr ""
  
! #: c-family/c-common.cc:6712 c-family/c-common.cc:6823
  #, gcc-internal-format
  msgid "argument %u in call to function %qE has boolean type"
  msgstr ""
  
! #: c-family/c-common.cc:6728
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have pointer type"
  msgstr ""
  
! #: c-family/c-common.cc:6737
  #, gcc-internal-format
  msgid "argument %u in call to function %qE points to incomplete type"
  msgstr ""
  
! #: c-family/c-common.cc:6791
  #, gcc-internal-format
  msgid "argument %u in call to function %qE does not have %<int%> type"
  msgstr ""
  
! #: c-family/c-common.cc:6835
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has unsigned type"
  msgstr ""
  
! #: c-family/c-common.cc:6845
  #, gcc-internal-format
  msgid "argument 1 in call to function %qE has signed type"
  msgstr ""
  
! #: c-family/c-common.cc:7110 rust/backend/rust-tree.cc:3588
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to static data member %qD"
  msgstr ""
  
! #: c-family/c-common.cc:7115 rust/backend/rust-tree.cc:3593
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
  msgstr ""
  
! #: c-family/c-common.cc:7122 rust/backend/rust-tree.cc:3600
  #, gcc-internal-format
  msgid "cannot apply %<offsetof%> to a non constant address"
  msgstr ""
  
! #: c-family/c-common.cc:7135 rust/backend/rust-tree.cc:3613
  #, gcc-internal-format
  msgid "attempt to take address of bit-field structure member %qD"
  msgstr ""
  
! #: c-family/c-common.cc:7188 rust/backend/rust-tree.cc:3665
  #, gcc-internal-format
  msgid "index %E denotes an offset greater than size of %qT"
  msgstr ""
  
! #: c-family/c-common.cc:7365
  #, gcc-internal-format
  msgid "size of array is too large"
  msgstr ""
  
! #: c-family/c-common.cc:7481 c-family/c-common.cc:7625
  #, gcc-internal-format
  msgid "operand type %qT is incompatible with argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7517
  #, gcc-internal-format
  msgid "expecting argument of type pointer or of type integer for argument 1"
  msgstr ""
  
! #: c-family/c-common.cc:7534
  #, gcc-internal-format
  msgid "both arguments must be compatible"
  msgstr ""
  
! #: c-family/c-common.cc:7770
  #, gcc-internal-format
  msgid "incorrect number of arguments to function %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7786
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a non-void pointer type"
  msgstr ""
  
! #: c-family/c-common.cc:7794
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a complete type"
  msgstr ""
  
! #: c-family/c-common.cc:7804
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a constant size type"
  msgstr ""
  
! #: c-family/c-common.cc:7816
  #, gcc-internal-format
  msgid "argument 1 of %qE must be a pointer to a nonzero size object"
  msgstr ""
  
! #: c-family/c-common.cc:7838
  #, gcc-internal-format
  msgid "argument %d of %qE must be a pointer type"
  msgstr ""
  
! #: c-family/c-common.cc:7848
  #, gcc-internal-format
  msgid "argument %d of %qE must be a pointer to a constant size type"
  msgstr ""
  
! #: c-family/c-common.cc:7857
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a function"
  msgstr ""
  
! #: c-family/c-common.cc:7867
  #, gcc-internal-format
  msgid "size mismatch in argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7882
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<const%> type"
  msgstr ""
  
! #: c-family/c-common.cc:7888
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<const%> qualifier"
  msgstr ""
  
! #: c-family/c-common.cc:7899
  #, gcc-internal-format
  msgid "argument %d of %qE must not be a pointer to a %<volatile%> type"
  msgstr ""
  
! #: c-family/c-common.cc:7905
  #, gcc-internal-format
  msgid "argument %d of %qE discards %<volatile%> qualifier"
  msgstr ""
  
! #: c-family/c-common.cc:7919
  #, gcc-internal-format
  msgid "non-integer memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:7934
  #, gcc-internal-format
  msgid "invalid memory model argument %d of %qE"
  msgstr ""
  
! #: c-family/c-common.cc:8575
  #, gcc-internal-format
  msgid ""
  "this target does not define a speculation barrier; your program will still "
  "execute correctly, but incorrect speculation may not be restricted"
  msgstr ""
  
! #: c-family/c-common.cc:9273
  #, gcc-internal-format
  msgid "index value is out of bound"
  msgstr ""
  
! #: c-family/c-common.cc:9319 c-family/c-common.cc:9368
! #: c-family/c-common.cc:9384
  #, gcc-internal-format
  msgid "conversion of scalar %qT to vector %qT involves truncation"
  msgstr ""
  
  #. Reject arguments that are built-in functions with
  #. no library fallback.
! #: c-family/c-common.cc:9472 d/intrinsics.cc:1459
  #: rust/backend/rust-tree.cc:3484
  #, gcc-internal-format
  msgid "built-in function %qE must be directly called"
  msgstr ""
  
! #: c-family/c-common.cc:9492
  #, gcc-internal-format
  msgid "size of array %qE is not a constant expression"
  msgstr ""
  
! #: c-family/c-common.cc:9495
  #, gcc-internal-format
  msgid "size of array is not a constant expression"
  msgstr ""
  
! #: c-family/c-common.cc:9499
  #, gcc-internal-format
  msgid "size %qE of array %qE is negative"
  msgstr ""
  
! #: c-family/c-common.cc:9502
  #, gcc-internal-format
  msgid "size %qE of array is negative"
  msgstr ""
  
! #: c-family/c-common.cc:9507
  #, gcc-internal-format
  msgid "size %qE of array %qE exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9510
  #, gcc-internal-format
  msgid "size %qE of array exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9515
  #, gcc-internal-format
  msgid "size of array %qE exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9518
  #, gcc-internal-format
  msgid "size of array exceeds maximum object size %qE"
  msgstr ""
  
! #: c-family/c-common.cc:9589
  #, gcc-internal-format
  msgid ""
  "environment variable %qs must expand to a non-negative integer less than or "
  "equal to %wd"
  msgstr ""
  
! #: c-family/c-common.cc:9876
  #, gcc-internal-format
  msgid "possible fix: take the address with %qs"
  msgstr ""
  
! #: c-family/c-common.cc:9886
  #, gcc-internal-format
  msgid "possible fix: dereference with %qs"
  msgstr ""
*************** msgstr ""
*** 38413,38419 ****
  msgid "integer constant is too large for %<_BitInt(%d)%> type"
  msgstr ""
  
! #: c-family/c-lex.cc:1093 c/c-decl.cc:12949
  #, gcc-internal-format
  msgid "%<_BitInt(%d)%> is not supported on this target"
  msgstr ""
--- 38432,38438 ----
  msgid "integer constant is too large for %<_BitInt(%d)%> type"
  msgstr ""
  
! #: c-family/c-lex.cc:1093 c/c-decl.cc:12953
  #, gcc-internal-format
  msgid "%<_BitInt(%d)%> is not supported on this target"
  msgstr ""
*************** msgstr ""
*** 38487,38503 ****
  msgid "repeated %<@%> before Objective-C string"
  msgstr ""
  
! #: c-family/c-lex.cc:1655 c/c-parser.cc:9675
  #, gcc-internal-format
  msgid "unsupported non-standard concatenation of string literals"
  msgstr ""
  
! #: c-family/c-lex.cc:1691 c/c-parser.cc:9696
  #, gcc-internal-format
  msgid "traditional C rejects string constant concatenation"
  msgstr ""
  
! #: c-family/c-omp.cc:131 cp/pt.cc:19623
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp critical%> with %<hint%> clause requires a name, except when "
--- 38506,38522 ----
  msgid "repeated %<@%> before Objective-C string"
  msgstr ""
  
! #: c-family/c-lex.cc:1655 c/c-parser.cc:9720
  #, gcc-internal-format
  msgid "unsupported non-standard concatenation of string literals"
  msgstr ""
  
! #: c-family/c-lex.cc:1691 c/c-parser.cc:9741
  #, gcc-internal-format
  msgid "traditional C rejects string constant concatenation"
  msgstr ""
  
! #: c-family/c-omp.cc:131 cp/pt.cc:19652
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp critical%> with %<hint%> clause requires a name, except when "
*************** msgid ""
*** 38698,38717 ****
  "%<for simd%>, %<parallel for%>, %<parallel for simd%>"
  msgstr ""
  
! #: c-family/c-omp.cc:3072 c/c-typeck.cc:17691 cp/semantics.cc:10162
  #, gcc-internal-format
  msgid ""
  "%qD specified in %<allocate%> clause but not in an explicit privatization "
  "clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3164 c-family/c-omp.cc:3179 c/c-parser.cc:27067
! #: cp/parser.cc:50503
  #, gcc-internal-format
  msgid "%qD is not a function argument"
  msgstr ""
  
! #: c-family/c-omp.cc:3460 c/c-typeck.cc:16778 cp/semantics.cc:8752
  #, gcc-internal-format
  msgid "bit-field %qE in %qs clause"
  msgstr ""
--- 38717,38736 ----
  "%<for simd%>, %<parallel for%>, %<parallel for simd%>"
  msgstr ""
  
! #: c-family/c-omp.cc:3072 c/c-typeck.cc:17708 cp/semantics.cc:10162
  #, gcc-internal-format
  msgid ""
  "%qD specified in %<allocate%> clause but not in an explicit privatization "
  "clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3164 c-family/c-omp.cc:3179 c/c-parser.cc:27113
! #: cp/parser.cc:50562
  #, gcc-internal-format
  msgid "%qD is not a function argument"
  msgstr ""
  
! #: c-family/c-omp.cc:3460 c/c-typeck.cc:16795 cp/semantics.cc:8752
  #, gcc-internal-format
  msgid "bit-field %qE in %qs clause"
  msgstr ""
*************** msgstr ""
*** 38721,38728 ****
  msgid "%qE does not have a mappable type in %qs clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3476 c/c-typeck.cc:15178 c/c-typeck.cc:16867
! #: c/c-typeck.cc:17055
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %qs clause"
  msgstr ""
--- 38740,38747 ----
  msgid "%qE does not have a mappable type in %qs clause"
  msgstr ""
  
! #: c-family/c-omp.cc:3476 c/c-typeck.cc:15195 c/c-typeck.cc:16884
! #: c/c-typeck.cc:17072
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %qs clause"
  msgstr ""
*************** msgstr ""
*** 38802,38906 ****
  msgid "%<-fabi-compat-version=1%> is not supported, using =2"
  msgstr ""
  
! #: c-family/c-opts.cc:1108
! #, gcc-internal-format
! msgid "%<-Wabi%> won%'t warn about anything"
! msgstr ""
! 
! #: c-family/c-opts.cc:1110
! #, gcc-internal-format
! msgid ""
! "%<-Wabi%> warns about differences from the most up-to-date ABI, which is "
! "also used by default"
! msgstr ""
! 
! #: c-family/c-opts.cc:1113
  #, gcc-internal-format
! msgid "use e.g. %<-Wabi=11%> to warn about changes from GCC 7"
  msgstr ""
  
! #: c-family/c-opts.cc:1198
  #, gcc-internal-format
  msgid "external TLS initialization functions not supported on this target"
  msgstr ""
  
! #: c-family/c-opts.cc:1226
  #, gcc-internal-format
  msgid "too many filenames given; type %<%s %s%> for usage"
  msgstr ""
  
! #: c-family/c-opts.cc:1240
  #, gcc-internal-format
  msgid "opening output file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1258
  #, gcc-internal-format
  msgid "the %qs debug info cannot be used with pre-compiled headers"
  msgstr ""
  
! #: c-family/c-opts.cc:1424 c-family/c-opts.cc:1445
  #, gcc-internal-format
  msgid "opening dependency file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1449
  #, gcc-internal-format
  msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1459
  #, gcc-internal-format
  msgid "closing dependency file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1462
  #, gcc-internal-format
  msgid "when writing output to %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1540
  #, gcc-internal-format
  msgid "to generate dependencies you must specify either %<-M%> or %<-MM%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1564
  #, gcc-internal-format
  msgid "%<-MG%> may only be used with %<-M%> or %<-MM%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1597
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1600
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-traditional%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1702
  #, gcc-internal-format
  msgid ""
  "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations "
  "are turned off"
  msgstr ""
  
! #: c-family/c-opts.cc:1706
  #, gcc-internal-format
  msgid ""
  "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was "
  "specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1712
  #, gcc-internal-format
  msgid ""
  "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was "
  "specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1836
  #, gcc-internal-format
  msgid "too late for # directive to set debug directory"
  msgstr ""
--- 38821,38913 ----
  msgid "%<-fabi-compat-version=1%> is not supported, using =2"
  msgstr ""
  
! #: c-family/c-opts.cc:1094
  #, gcc-internal-format
! msgid "%<-fabi-version=%d%> is not supported, using =%d"
  msgstr ""
  
! #: c-family/c-opts.cc:1200
  #, gcc-internal-format
  msgid "external TLS initialization functions not supported on this target"
  msgstr ""
  
! #: c-family/c-opts.cc:1228
  #, gcc-internal-format
  msgid "too many filenames given; type %<%s %s%> for usage"
  msgstr ""
  
! #: c-family/c-opts.cc:1242
  #, gcc-internal-format
  msgid "opening output file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1260
  #, gcc-internal-format
  msgid "the %qs debug info cannot be used with pre-compiled headers"
  msgstr ""
  
! #: c-family/c-opts.cc:1426 c-family/c-opts.cc:1447
  #, gcc-internal-format
  msgid "opening dependency file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1451
  #, gcc-internal-format
  msgid "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1461
  #, gcc-internal-format
  msgid "closing dependency file %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1464
  #, gcc-internal-format
  msgid "when writing output to %s: %m"
  msgstr ""
  
! #: c-family/c-opts.cc:1542
  #, gcc-internal-format
  msgid "to generate dependencies you must specify either %<-M%> or %<-MM%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1566
  #, gcc-internal-format
  msgid "%<-MG%> may only be used with %<-M%> or %<-MM%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1599
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-Wunused-macros%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1602
  #, gcc-internal-format
  msgid "%<-fdirectives-only%> is incompatible with %<-traditional%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1704
  #, gcc-internal-format
  msgid ""
  "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because optimizations "
  "are turned off"
  msgstr ""
  
! #: c-family/c-opts.cc:1708
  #, gcc-internal-format
  msgid ""
  "%<_FORTIFY_SOURCE%> is not enabled by %<-fhardened%> because it was "
  "specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1714
  #, gcc-internal-format
  msgid ""
  "%<_GLIBCXX_ASSERTIONS%> is not enabled by %<-fhardened%> because it was "
  "specified in %<-D%> or %<-U%>"
  msgstr ""
  
! #: c-family/c-opts.cc:1838
  #, gcc-internal-format
  msgid "too late for # directive to set debug directory"
  msgstr ""
*************** msgid "wrong type argument to %s"
*** 39343,39349 ****
  msgstr ""
  
  #: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:3715
! #: cp/constexpr.cc:7709 m2/gm2-gcc/m2expr.cc:965
  #: rust/backend/rust-constexpr.cc:1908 rust/backend/rust-constexpr.cc:4331
  #, gcc-internal-format
  msgid "overflow in constant expression"
--- 39350,39356 ----
  msgstr ""
  
  #: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:3715
! #: cp/constexpr.cc:7725 m2/gm2-gcc/m2expr.cc:965
  #: rust/backend/rust-constexpr.cc:1908 rust/backend/rust-constexpr.cc:4331
  #, gcc-internal-format
  msgid "overflow in constant expression"
*************** msgstr ""
*** 39868,39886 ****
  msgid "function %qD used as %<asm%> output"
  msgstr ""
  
! #: c-family/c-warn.cc:1914 c/c-typeck.cc:5841
  #: rust/checks/errors/rust-readonly-check.cc:103
  #, gcc-internal-format
  msgid "assignment of read-only location %qE"
  msgstr ""
  
! #: c-family/c-warn.cc:1915 c/c-typeck.cc:5844
  #: rust/checks/errors/rust-readonly-check.cc:104
  #, gcc-internal-format
  msgid "increment of read-only location %qE"
  msgstr ""
  
! #: c-family/c-warn.cc:1916 c/c-typeck.cc:5847
  #: rust/checks/errors/rust-readonly-check.cc:105
  #, gcc-internal-format
  msgid "decrement of read-only location %qE"
--- 39875,39893 ----
  msgid "function %qD used as %<asm%> output"
  msgstr ""
  
! #: c-family/c-warn.cc:1914 c/c-typeck.cc:5842
  #: rust/checks/errors/rust-readonly-check.cc:103
  #, gcc-internal-format
  msgid "assignment of read-only location %qE"
  msgstr ""
  
! #: c-family/c-warn.cc:1915 c/c-typeck.cc:5845
  #: rust/checks/errors/rust-readonly-check.cc:104
  #, gcc-internal-format
  msgid "increment of read-only location %qE"
  msgstr ""
  
! #: c-family/c-warn.cc:1916 c/c-typeck.cc:5848
  #: rust/checks/errors/rust-readonly-check.cc:105
  #, gcc-internal-format
  msgid "decrement of read-only location %qE"
*************** msgid_plural ""
*** 40166,40172 ****
  msgstr[0] ""
  msgstr[1] ""
  
! #: c-family/c-warn.cc:2934 c/c-typeck.cc:6465 cp/call.cc:6527
  #, gcc-internal-format
  msgid "this condition has identical branches"
  msgstr ""
--- 40173,40179 ----
  msgstr[0] ""
  msgstr[1] ""
  
! #: c-family/c-warn.cc:2934 c/c-typeck.cc:6466 cp/call.cc:6527
  #, gcc-internal-format
  msgid "this condition has identical branches"
  msgstr ""
*************** msgstr ""
*** 40524,40544 ****
  msgid "unrecognized operand to %%:%<asm_auto_mfpu%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:94
  #, gcc-internal-format
  msgid ""
  "option %<-mdouble=64%> is only available if configured %<--with-double={64|"
  "64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:102
  #, gcc-internal-format
  msgid ""
  "option %<-mdouble=32%> is only available if configured %<--with-double={32|"
  "32,64|64,32}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:118
  #, gcc-internal-format
  msgid ""
  "option %<-mlong-double=64%> is only available if configured %<--with-long-"
--- 40531,40551 ----
  msgid "unrecognized operand to %%:%<asm_auto_mfpu%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:95
  #, gcc-internal-format
  msgid ""
  "option %<-mdouble=64%> is only available if configured %<--with-double={64|"
  "64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:103
  #, gcc-internal-format
  msgid ""
  "option %<-mdouble=32%> is only available if configured %<--with-double={32|"
  "32,64|64,32}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:119
  #, gcc-internal-format
  msgid ""
  "option %<-mlong-double=64%> is only available if configured %<--with-long-"
*************** msgid ""
*** 40546,40552 ****
  "%<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:127
  #, gcc-internal-format
  msgid ""
  "option %<-mlong-double=32%> is only available if configured %<--with-long-"
--- 40553,40559 ----
  "%<--with-double={64|64,32|32,64}%>"
  msgstr ""
  
! #: common/config/avr/avr-common.cc:128
  #, gcc-internal-format
  msgid ""
  "option %<-mlong-double=32%> is only available if configured %<--with-long-"
*************** msgstr ""
*** 40569,40615 ****
  msgid "%<-mcpu=%s%> has invalid silicon revision"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1994
  #, gcc-internal-format
  msgid "%<-malign-loops%> is obsolete, use %<-falign-loops%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1997
  #, gcc-internal-format
  msgid "%<-malign-loops=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2004
  #, gcc-internal-format
  msgid "%<-malign-jumps%> is obsolete, use %<-falign-jumps%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2007
  #, gcc-internal-format
  msgid "%<-malign-jumps=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2015
  #, gcc-internal-format
  msgid "%<-malign-functions%> is obsolete, use %<-falign-functions%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2018
  #, gcc-internal-format
  msgid "%<-malign-functions=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2027
  #, gcc-internal-format
  msgid "%<-mbranch-cost=%d%> is not between 0 and 5"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2091 common/config/s390/s390-common.cc:141
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2101
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
  msgstr ""
--- 40576,40622 ----
  msgid "%<-mcpu=%s%> has invalid silicon revision"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1993
  #, gcc-internal-format
  msgid "%<-malign-loops%> is obsolete, use %<-falign-loops%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:1996
  #, gcc-internal-format
  msgid "%<-malign-loops=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2003
  #, gcc-internal-format
  msgid "%<-malign-jumps%> is obsolete, use %<-falign-jumps%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2006
  #, gcc-internal-format
  msgid "%<-malign-jumps=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2014
  #, gcc-internal-format
  msgid "%<-malign-functions%> is obsolete, use %<-falign-functions%>"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2017
  #, gcc-internal-format
  msgid "%<-malign-functions=%d%> is not between 0 and %d"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2026
  #, gcc-internal-format
  msgid "%<-mbranch-cost=%d%> is not between 0 and 5"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2090 common/config/s390/s390-common.cc:141
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
  msgstr ""
  
! #: common/config/i386/i386-common.cc:2100
  #, gcc-internal-format
  msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
  msgstr ""
*************** msgstr ""
*** 40872,40928 ****
  msgid "unknown value %qs of %<-mmacosx-version-min%>"
  msgstr ""
  
! #: config/darwin-driver.cc:147
  #, gcc-internal-format
  msgid "%<sysctl%> for %<kern.osversion%> failed: %m"
  msgstr ""
  
! #: config/darwin-driver.cc:186
  #, gcc-internal-format
  msgid "could not understand %<kern.osversion%> %q.*s"
  msgstr ""
  
! #: config/darwin-driver.cc:226
  #, gcc-internal-format
  msgid "could not understand version %qs"
  msgstr ""
  
! #: config/darwin-driver.cc:300
  #, gcc-internal-format
  msgid "this compiler does not support %qs"
  msgstr ""
  
! #: config/darwin-driver.cc:326
  #, gcc-internal-format
  msgid "%qs is not valid for %<-mmacosx-version-min%>"
  msgstr ""
  
! #: config/darwin-driver.cc:377
  #, gcc-internal-format
  msgid "this compiler does not support PowerPC (%<-arch%> option ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:384
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch i386%> (%qs ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:393
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:400
  #, gcc-internal-format
  msgid "this compiler does not support x86 (%<-arch%> option ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:407
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch ppc%> (%qs ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:416
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)"
  msgstr ""
--- 40879,40935 ----
  msgid "unknown value %qs of %<-mmacosx-version-min%>"
  msgstr ""
  
! #: config/darwin-driver.cc:148
  #, gcc-internal-format
  msgid "%<sysctl%> for %<kern.osversion%> failed: %m"
  msgstr ""
  
! #: config/darwin-driver.cc:188
  #, gcc-internal-format
  msgid "could not understand %<kern.osversion%> %q.*s"
  msgstr ""
  
! #: config/darwin-driver.cc:228
  #, gcc-internal-format
  msgid "could not understand version %qs"
  msgstr ""
  
! #: config/darwin-driver.cc:302
  #, gcc-internal-format
  msgid "this compiler does not support %qs"
  msgstr ""
  
! #: config/darwin-driver.cc:328
  #, gcc-internal-format
  msgid "%qs is not valid for %<-mmacosx-version-min%>"
  msgstr ""
  
! #: config/darwin-driver.cc:379
  #, gcc-internal-format
  msgid "this compiler does not support PowerPC (%<-arch%> option ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:386
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch i386%> (%qs ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:395
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch x86_64%> (%<-m32%> ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:402
  #, gcc-internal-format
  msgid "this compiler does not support x86 (%<-arch%> option ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:409
  #, gcc-internal-format
  msgid "%qs conflicts with %<-arch ppc%> (%qs ignored)"
  msgstr ""
  
! #: config/darwin-driver.cc:418
  #, gcc-internal-format
  msgid "%<-m32%> conflicts with %<-arch ppc64%> (%<-m32%> ignored)"
  msgstr ""
*************** msgstr ""
*** 41099,41106 ****
  msgid "ACLE function %qD requires ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64-builtins.cc:2540 config/aarch64/aarch64.cc:11462
! #: config/aarch64/aarch64.cc:18764 config/aarch64/aarch64.cc:19379
  #, gcc-internal-format
  msgid ""
  "you can enable %qs using the command-line option %<-march%>, or by using the "
--- 41106,41113 ----
  msgid "ACLE function %qD requires ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64-builtins.cc:2540 config/aarch64/aarch64.cc:11477
! #: config/aarch64/aarch64.cc:18779 config/aarch64/aarch64.cc:19394
  #, gcc-internal-format
  msgid ""
  "you can enable %qs using the command-line option %<-march%>, or by using the "
*************** msgstr ""
*** 41706,41768 ****
  msgid "SVE type %qT not allowed in %<target%> device clauses"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:649
  #, gcc-internal-format
  msgid "the arguments to %qE must be constant strings"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:657
  #, gcc-internal-format
  msgid "unrecognized state string %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:741
  #, gcc-internal-format
  msgid "the %qE attribute cannot be applied to an SVE function type"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:768
  #, gcc-internal-format
  msgid "cannot create a new %qs scope since %qs is shared with callers"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:784
  #, gcc-internal-format
  msgid "%qE attribute applies only to function definitions"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:830
  #, gcc-internal-format
  msgid "inconsistent attributes for state %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1327
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of floating-point types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1330
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of vector types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1334
  #, gcc-internal-format
  msgid ""
  "%qs feature modifier is incompatible with the use of floating-point types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1337
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of vector types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1353
  #, gcc-internal-format
  msgid "this operation requires the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1354
  #, gcc-internal-format
  msgid ""
  "you can enable SVE using the command-line option %<-march%>, or by using the "
--- 41713,41775 ----
  msgid "SVE type %qT not allowed in %<target%> device clauses"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:650
  #, gcc-internal-format
  msgid "the arguments to %qE must be constant strings"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:658
  #, gcc-internal-format
  msgid "unrecognized state string %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:742
  #, gcc-internal-format
  msgid "the %qE attribute cannot be applied to an SVE function type"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:769
  #, gcc-internal-format
  msgid "cannot create a new %qs scope since %qs is shared with callers"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:785
  #, gcc-internal-format
  msgid "%qE attribute applies only to function definitions"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:831
  #, gcc-internal-format
  msgid "inconsistent attributes for state %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1328
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of floating-point types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1331
  #, gcc-internal-format
  msgid "%qs is incompatible with the use of vector types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1335
  #, gcc-internal-format
  msgid ""
  "%qs feature modifier is incompatible with the use of floating-point types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1338
  #, gcc-internal-format
  msgid "%qs feature modifier is incompatible with the use of vector types"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1354
  #, gcc-internal-format
  msgid "this operation requires the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:1355
  #, gcc-internal-format
  msgid ""
  "you can enable SVE using the command-line option %<-march%>, or by using the "
*************** msgstr ""
*** 41771,42220 ****
  
  #. We can't gracefully recover at this point, so make this a
  #. fatal error.
! #: config/aarch64/aarch64.cc:6685
  #, gcc-internal-format
  msgid "arguments of type %qT require the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7162
  #, gcc-internal-format
  msgid "SVE type %qT cannot be passed to an unprototyped function"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7303 config/aarch64/aarch64.cc:7382
! #: config/aarch64/aarch64.cc:21640
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 13.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7310 config/aarch64/aarch64.cc:7389
! #: config/aarch64/aarch64.cc:21647
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 14.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7321 config/aarch64/aarch64.cc:7399
! #: config/aarch64/aarch64.cc:21655 config/arm/arm.cc:7338
  #: config/arm/arm.cc:7368 config/arm/arm.cc:29593
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 9.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7526
  #, gcc-internal-format
  msgid "%qE requires the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7529
  #, gcc-internal-format
  msgid "calls to functions of type %qT require the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7717
  #, gcc-internal-format
  msgid "stack probes for SVE frames"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11460
  #, gcc-internal-format
  msgid "calling a streaming function requires the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11469 config/aarch64/aarch64.cc:11473
  #, gcc-internal-format
  msgid ""
  "call to a function that shares %qs state from a function that has no %qs "
  "state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11476
  #, gcc-internal-format
  msgid ""
  "call to a function that shares SME state from a function that has no SME "
  "state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11534
  #, gcc-internal-format
  msgid ""
  "call to a function that shares state other than %qs from a function that has "
  "%qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11536
  #, gcc-internal-format
  msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18382
  #, gcc-internal-format
  msgid "unknown flag passed in %<-moverride=%s%> (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18426
  #, gcc-internal-format
  msgid "%qs string ill-formed"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18482
  #, gcc-internal-format
  msgid "invalid format for %<sve_width%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18494
  #, gcc-internal-format
  msgid "invalid %<sve_width%> value: %d"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18514
  #, gcc-internal-format, gfc-internal-format
  msgid "tuning string missing in option (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18532
  #, gcc-internal-format, gfc-internal-format
  msgid "unknown tuning option (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18719 config/arm/arm.cc:3223
! #: config/riscv/riscv.cc:10776
  #, gcc-internal-format
  msgid ""
  "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-"
  "protector-guard-offset=%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18728 config/riscv/riscv.cc:10785
  #, gcc-internal-format
  msgid ""
  "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> "
  "must be used with %<-mstack-protector-guard=sysreg%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18736
  #, gcc-internal-format
  msgid "specify a system register with a small string length"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18746 config/arm/arm.cc:3235
! #: config/riscv/riscv.cc:10814 config/rs6000/rs6000.cc:4518
  #, gcc-internal-format
  msgid "%qs is not a valid offset in %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18753
  #, gcc-internal-format
  msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18760
  #, gcc-internal-format
  msgid "streaming functions require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18762
  #, gcc-internal-format
  msgid "functions with SME state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18858
  #, gcc-internal-format
  msgid ""
  "only values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given "
  "value %d (%llu KB) is out of range"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18874 config/riscv/riscv.cc:10834
  #, gcc-internal-format
  msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18902
  #, gcc-internal-format
  msgid "no support for %qs without %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18955
  #, gcc-internal-format
  msgid "invalid argument given to %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18966
  #, gcc-internal-format
  msgid "%qs must be by itself for %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18971
  #, gcc-internal-format
  msgid "invalid argument %qs for %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19127
  #, gcc-internal-format
  msgid ""
  "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in "
  "options %qs being added"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19194
  #, gcc-internal-format
  msgid "assembler does not support %<-mabi=ilp32%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19197
  #, gcc-internal-format
  msgid "%<-mabi=ilp32%> is deprecated"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19203
  #, gcc-internal-format
  msgid "return address signing is only supported for %<-mabi=lp64%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19276
  #, gcc-internal-format
  msgid "code model %qs with %<-f%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19279
  #, gcc-internal-format
  msgid "code model %qs not supported in ilp32 mode"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19377
  #, gcc-internal-format
  msgid "functions with %qs state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19482
  #, gcc-internal-format
  msgid "missing name in %<target(\"arch=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19485
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"arch=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19489
  #, gcc-internal-format
  msgid ""
  "invalid feature modifier %s of value %qs in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19524
  #, gcc-internal-format
  msgid "missing name in %<target(\"cpu=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19527
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"cpu=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19531 config/aarch64/aarch64.cc:19615
  #, gcc-internal-format
  msgid ""
  "invalid feature modifier %qs of value %qs in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19570
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"tune=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19611
  #, gcc-internal-format
  msgid "missing value in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19669 config/aarch64/aarch64.cc:19846
  #: config/loongarch/loongarch-target-attr.cc:144
  #: config/loongarch/loongarch-target-attr.cc:309
  #, gcc-internal-format
  msgid "malformed %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19715
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not accept an argument"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19723 config/i386/i386-options.cc:1315
  #: config/loongarch/loongarch-target-attr.cc:181
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not allow a negated form"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19777
  #: config/loongarch/loongarch-target-attr.cc:221
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s=%s\")%> is not valid"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19834 config/arm/arm.cc:33836
  #: config/loongarch/loongarch-target-attr.cc:297
  #: config/riscv/riscv-target-attr.cc:431 config/rs6000/rs6000.cc:24714
! #: config/s390/s390.cc:16661
  #, gcc-internal-format
  msgid "attribute %<target%> argument not a string"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19871
  #, gcc-internal-format
  msgid "arch extension %qs should be prefixed by %<+%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19874
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> is not valid"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19883
  #: config/loongarch/loongarch-target-attr.cc:332
  #, gcc-internal-format
  msgid "malformed %<target(\"%s\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20101
  #, gcc-internal-format
  msgid ""
  "Function Multi Versioning support is experimental, and the behavior is "
  "likely to change"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20110 config/riscv/riscv-target-attr.cc:497
  #, gcc-internal-format
  msgid "attribute %<target_version%> has multiple values"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20118 config/riscv/riscv-target-attr.cc:505
  #, gcc-internal-format
  msgid "attribute %<target_version%> argument not a string"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20140
  #, gcc-internal-format
  msgid "missing value in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20144
  #, gcc-internal-format
  msgid ""
  "invalid feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20150
  #, gcc-internal-format
  msgid ""
  "duplicate feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20736 config/i386/i386-features.cc:3911
! #: config/i386/i386-features.cc:4180 config/riscv/riscv.cc:13694
  #, gcc-internal-format
  msgid "virtual function multiversioning not supported"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20857 config/i386/i386-features.cc:4044
! #: config/riscv/riscv.cc:13819 config/rs6000/rs6000.cc:25404
  #, gcc-internal-format
  msgid "multiversioning needs %<ifunc%> which is not supported on this target"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22409 config/arm/arm.cc:6686
  #: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12993
  msgid ""
  "parameter passing for argument of type %qT with %<[[no_unique_address]]%> "
  "members changed %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22414 config/arm/arm.cc:6691
  #: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12988
  msgid ""
  "parameter passing for argument of type %qT when C++17 is enabled changed to "
  "match C++14 %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22419 config/arm/arm.cc:6696
  msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:23825 config/aarch64/aarch64.cc:23828
  #, gcc-internal-format
  msgid "lane %wd out of range %wd - %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29341 config/i386/i386.cc:25621
! #: config/i386/i386.cc:25752
  #, gcc-internal-format
  msgid "unsupported simdlen %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29355
  #, gcc-internal-format
  msgid "GCC does not currently support return type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29359 config/i386/i386.cc:25643
  #, gcc-internal-format
  msgid "unsupported return type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29393
  #, gcc-internal-format
  msgid "GCC does not currently support argument type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29397 config/i386/i386.cc:25674
  #, gcc-internal-format
  msgid "unsupported argument type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29468
  #, gcc-internal-format
  msgid "GCC does not currently support simdlen %wd for type %qT"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29488
  #, gcc-internal-format
  msgid ""
  "GCC does not currently support a simdclone with simdlens %wd and %wd for "
  "these types."
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29676
  #, gcc-internal-format
  msgid "cannot apply attribute %qs to %q+D after the function has been defined"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29678
  #, gcc-internal-format
  msgid "%q+D defined here"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:30158
  #, gcc-internal-format
  msgid "non-local gotos in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:30467
  #, gcc-internal-format
  msgid "catching non-call exceptions in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31107 config/arm/arm-mve-builtins.cc:634
  #: config/riscv/riscv-vector-builtins.cc:4493
  #, gcc-internal-format
  msgid "argument %d of %qE must be an integer constant expression"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31120
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects the value %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31123 config/arm/arm-mve-builtins.cc:646
  #: config/riscv/riscv-vector-builtins.cc:4507
  #, gcc-internal-format
  msgid ""
--- 41778,42227 ----
  
  #. We can't gracefully recover at this point, so make this a
  #. fatal error.
! #: config/aarch64/aarch64.cc:6686
  #, gcc-internal-format
  msgid "arguments of type %qT require the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7163
  #, gcc-internal-format
  msgid "SVE type %qT cannot be passed to an unprototyped function"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7304 config/aarch64/aarch64.cc:7383
! #: config/aarch64/aarch64.cc:21655
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 13.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7311 config/aarch64/aarch64.cc:7390
! #: config/aarch64/aarch64.cc:21662
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 14.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7322 config/aarch64/aarch64.cc:7400
! #: config/aarch64/aarch64.cc:21670 config/arm/arm.cc:7338
  #: config/arm/arm.cc:7368 config/arm/arm.cc:29593
  #, gcc-internal-format
  msgid "parameter passing for argument of type %qT changed in GCC 9.1"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7527
  #, gcc-internal-format
  msgid "%qE requires the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7530
  #, gcc-internal-format
  msgid "calls to functions of type %qT require the SVE ISA extension"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:7718
  #, gcc-internal-format
  msgid "stack probes for SVE frames"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11475
  #, gcc-internal-format
  msgid "calling a streaming function requires the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11484 config/aarch64/aarch64.cc:11488
  #, gcc-internal-format
  msgid ""
  "call to a function that shares %qs state from a function that has no %qs "
  "state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11491
  #, gcc-internal-format
  msgid ""
  "call to a function that shares SME state from a function that has no SME "
  "state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11549
  #, gcc-internal-format
  msgid ""
  "call to a function that shares state other than %qs from a function that has "
  "%qs state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:11551
  #, gcc-internal-format
  msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18397
  #, gcc-internal-format
  msgid "unknown flag passed in %<-moverride=%s%> (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18441
  #, gcc-internal-format
  msgid "%qs string ill-formed"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18497
  #, gcc-internal-format
  msgid "invalid format for %<sve_width%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18509
  #, gcc-internal-format
  msgid "invalid %<sve_width%> value: %d"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18529
  #, gcc-internal-format, gfc-internal-format
  msgid "tuning string missing in option (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18547
  #, gcc-internal-format, gfc-internal-format
  msgid "unknown tuning option (%s)"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18734 config/arm/arm.cc:3223
! #: config/riscv/riscv.cc:10785
  #, gcc-internal-format
  msgid ""
  "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-"
  "protector-guard-offset=%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18743 config/riscv/riscv.cc:10794
  #, gcc-internal-format
  msgid ""
  "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> "
  "must be used with %<-mstack-protector-guard=sysreg%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18751
  #, gcc-internal-format
  msgid "specify a system register with a small string length"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18761 config/arm/arm.cc:3235
! #: config/riscv/riscv.cc:10823 config/rs6000/rs6000.cc:4518
  #, gcc-internal-format
  msgid "%qs is not a valid offset in %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18768
  #, gcc-internal-format
  msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18775
  #, gcc-internal-format
  msgid "streaming functions require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18777
  #, gcc-internal-format
  msgid "functions with SME state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18873
  #, gcc-internal-format
  msgid ""
  "only values 12 (4 KB) and 16 (64 KB) are supported for guard size.  Given "
  "value %d (%llu KB) is out of range"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18889 config/riscv/riscv.cc:10843
  #, gcc-internal-format
  msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18917
  #, gcc-internal-format
  msgid "no support for %qs without %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18970
  #, gcc-internal-format
  msgid "invalid argument given to %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18981
  #, gcc-internal-format
  msgid "%qs must be by itself for %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:18986
  #, gcc-internal-format
  msgid "invalid argument %qs for %<-mharden-sls=%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19142
  #, gcc-internal-format
  msgid ""
  "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in "
  "options %qs being added"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19209
  #, gcc-internal-format
  msgid "assembler does not support %<-mabi=ilp32%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19212
  #, gcc-internal-format
  msgid "%<-mabi=ilp32%> is deprecated"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19218
  #, gcc-internal-format
  msgid "return address signing is only supported for %<-mabi=lp64%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19291
  #, gcc-internal-format
  msgid "code model %qs with %<-f%s%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19294
  #, gcc-internal-format
  msgid "code model %qs not supported in ilp32 mode"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19392
  #, gcc-internal-format
  msgid "functions with %qs state require the ISA extension %qs"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19497
  #, gcc-internal-format
  msgid "missing name in %<target(\"arch=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19500
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"arch=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19504
  #, gcc-internal-format
  msgid ""
  "invalid feature modifier %s of value %qs in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19539
  #, gcc-internal-format
  msgid "missing name in %<target(\"cpu=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19542
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"cpu=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19546 config/aarch64/aarch64.cc:19630
  #, gcc-internal-format
  msgid ""
  "invalid feature modifier %qs of value %qs in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19585
  #, gcc-internal-format
  msgid "invalid name %qs in %<target(\"tune=\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19626
  #, gcc-internal-format
  msgid "missing value in %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19684 config/aarch64/aarch64.cc:19861
  #: config/loongarch/loongarch-target-attr.cc:144
  #: config/loongarch/loongarch-target-attr.cc:309
  #, gcc-internal-format
  msgid "malformed %<target()%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19730
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not accept an argument"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19738 config/i386/i386-options.cc:1315
  #: config/loongarch/loongarch-target-attr.cc:181
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> does not allow a negated form"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19792
  #: config/loongarch/loongarch-target-attr.cc:221
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s=%s\")%> is not valid"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19849 config/arm/arm.cc:33836
  #: config/loongarch/loongarch-target-attr.cc:297
  #: config/riscv/riscv-target-attr.cc:431 config/rs6000/rs6000.cc:24714
! #: config/s390/s390.cc:16688
  #, gcc-internal-format
  msgid "attribute %<target%> argument not a string"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19886
  #, gcc-internal-format
  msgid "arch extension %qs should be prefixed by %<+%>"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19889
  #, gcc-internal-format
  msgid "pragma or attribute %<target(\"%s\")%> is not valid"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:19898
  #: config/loongarch/loongarch-target-attr.cc:332
  #, gcc-internal-format
  msgid "malformed %<target(\"%s\")%> pragma or attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20116
  #, gcc-internal-format
  msgid ""
  "Function Multi Versioning support is experimental, and the behavior is "
  "likely to change"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20125 config/riscv/riscv-target-attr.cc:497
  #, gcc-internal-format
  msgid "attribute %<target_version%> has multiple values"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20133 config/riscv/riscv-target-attr.cc:505
  #, gcc-internal-format
  msgid "attribute %<target_version%> argument not a string"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20155
  #, gcc-internal-format
  msgid "missing value in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20159
  #, gcc-internal-format
  msgid ""
  "invalid feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20165
  #, gcc-internal-format
  msgid ""
  "duplicate feature modifier %qs of value %qs in %<target_version%> attribute"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20751 config/i386/i386-features.cc:3911
! #: config/i386/i386-features.cc:4180 config/riscv/riscv.cc:13703
  #, gcc-internal-format
  msgid "virtual function multiversioning not supported"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:20872 config/i386/i386-features.cc:4044
! #: config/riscv/riscv.cc:13828 config/rs6000/rs6000.cc:25404
  #, gcc-internal-format
  msgid "multiversioning needs %<ifunc%> which is not supported on this target"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22424 config/arm/arm.cc:6686
  #: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:12993
  msgid ""
  "parameter passing for argument of type %qT with %<[[no_unique_address]]%> "
  "members changed %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22429 config/arm/arm.cc:6691
  #: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:12988
  msgid ""
  "parameter passing for argument of type %qT when C++17 is enabled changed to "
  "match C++14 %{in GCC 10.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:22434 config/arm/arm.cc:6696
  msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:23889 config/aarch64/aarch64.cc:23892
  #, gcc-internal-format
  msgid "lane %wd out of range %wd - %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29422 config/i386/i386.cc:25619
! #: config/i386/i386.cc:25750
  #, gcc-internal-format
  msgid "unsupported simdlen %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29436
  #, gcc-internal-format
  msgid "GCC does not currently support return type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29440 config/i386/i386.cc:25641
  #, gcc-internal-format
  msgid "unsupported return type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29474
  #, gcc-internal-format
  msgid "GCC does not currently support argument type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29478 config/i386/i386.cc:25672
  #, gcc-internal-format
  msgid "unsupported argument type %qT for simd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29549
  #, gcc-internal-format
  msgid "GCC does not currently support simdlen %wd for type %qT"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29569
  #, gcc-internal-format
  msgid ""
  "GCC does not currently support a simdclone with simdlens %wd and %wd for "
  "these types."
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29757
  #, gcc-internal-format
  msgid "cannot apply attribute %qs to %q+D after the function has been defined"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:29759
  #, gcc-internal-format
  msgid "%q+D defined here"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:30239
  #, gcc-internal-format
  msgid "non-local gotos in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:30548
  #, gcc-internal-format
  msgid "catching non-call exceptions in functions with SME state"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31188 config/arm/arm-mve-builtins.cc:634
  #: config/riscv/riscv-vector-builtins.cc:4493
  #, gcc-internal-format
  msgid "argument %d of %qE must be an integer constant expression"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31201
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects the value %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31204 config/arm/arm-mve-builtins.cc:646
  #: config/riscv/riscv-vector-builtins.cc:4507
  #, gcc-internal-format
  msgid ""
*************** msgid ""
*** 42222,42238 ****
  "%wd]"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31136
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31150 config/arm/arm-mve-builtins.cc:685
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31162 config/arm/arm-mve-builtins.cc:672
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a valid %qT value"
  msgstr ""
--- 42229,42245 ----
  "%wd]"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31217
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31231 config/arm/arm-mve-builtins.cc:685
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd"
  msgstr ""
  
! #: config/aarch64/aarch64.cc:31243 config/arm/arm-mve-builtins.cc:672
  #, gcc-internal-format
  msgid "passing %wd to argument %d of %qE, which expects a valid %qT value"
  msgstr ""
*************** msgstr ""
*** 42292,42298 ****
  msgid "bad value %qs for %<-mmemory-latency%>"
  msgstr ""
  
! #: config/alpha/alpha.cc:7360 config/alpha/alpha.cc:7363 config/arc/arc.cc:6981
  #: config/arc/arc.cc:7255 config/s390/s390.cc:942
  #, gcc-internal-format
  msgid "bad builtin fcode"
--- 42299,42305 ----
  msgid "bad value %qs for %<-mmemory-latency%>"
  msgstr ""
  
! #: config/alpha/alpha.cc:7357 config/alpha/alpha.cc:7360 config/arc/arc.cc:6981
  #: config/arc/arc.cc:7255 config/s390/s390.cc:942
  #, gcc-internal-format
  msgid "bad builtin fcode"
*************** msgstr ""
*** 42423,42429 ****
  #: config/i386/i386-options.cc:3906 config/i386/i386-options.cc:3962
  #: config/i386/i386-options.cc:4013 config/i386/i386-options.cc:4050
  #: config/m68k/m68k.cc:804 config/mcore/mcore.cc:3070
! #: config/nvptx/nvptx.cc:5895 config/riscv/riscv.cc:6533
  #: config/rl78/rl78.cc:821 config/rl78/rl78.cc:890
  #: config/rs6000/rs6000.cc:20642 config/rx/rx.cc:2727 config/rx/rx.cc:2753
  #: config/s390/s390.cc:1157 config/s390/s390.cc:1247 config/sh/sh.cc:8442
--- 42430,42436 ----
  #: config/i386/i386-options.cc:3906 config/i386/i386-options.cc:3962
  #: config/i386/i386-options.cc:4013 config/i386/i386-options.cc:4050
  #: config/m68k/m68k.cc:804 config/mcore/mcore.cc:3070
! #: config/nvptx/nvptx.cc:5901 config/riscv/riscv.cc:6533
  #: config/rl78/rl78.cc:821 config/rl78/rl78.cc:890
  #: config/rs6000/rs6000.cc:20642 config/rx/rx.cc:2727 config/rx/rx.cc:2753
  #: config/s390/s390.cc:1157 config/s390/s390.cc:1247 config/sh/sh.cc:8442
*************** msgid "argument of %qE attribute ignored
*** 42563,42584 ****
  msgstr ""
  
  #: config/arc/arc.cc:11004 config/avr/avr.cc:11384 config/bfin/bfin.cc:4818
! #: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5918
  #, gcc-internal-format
  msgid "%qE attribute only applies to variables"
  msgstr ""
  
! #: config/arm/aarch-common.cc:553 config/i386/i386.cc:24288
  #, gcc-internal-format
  msgid "alternatives not allowed in %<asm%> flag output"
  msgstr ""
  
! #: config/arm/aarch-common.cc:614 config/i386/i386.cc:24352
  #, gcc-internal-format
  msgid "unknown %<asm%> flag output %qs"
  msgstr ""
  
! #: config/arm/aarch-common.cc:624 config/i386/i386.cc:24381
  #, gcc-internal-format
  msgid "invalid type for %<asm%> flag output"
  msgstr ""
--- 42570,42591 ----
  msgstr ""
  
  #: config/arc/arc.cc:11004 config/avr/avr.cc:11384 config/bfin/bfin.cc:4818
! #: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5924
  #, gcc-internal-format
  msgid "%qE attribute only applies to variables"
  msgstr ""
  
! #: config/arm/aarch-common.cc:553 config/i386/i386.cc:24290
  #, gcc-internal-format
  msgid "alternatives not allowed in %<asm%> flag output"
  msgstr ""
  
! #: config/arm/aarch-common.cc:614 config/i386/i386.cc:24354
  #, gcc-internal-format
  msgid "unknown %<asm%> flag output %qs"
  msgstr ""
  
! #: config/arm/aarch-common.cc:624 config/i386/i386.cc:24383
  #, gcc-internal-format
  msgid "invalid type for %<asm%> flag output"
  msgstr ""
*************** msgstr ""
*** 43185,43191 ****
  msgid "supported core architectures:%s"
  msgstr ""
  
! #: config/avr/avr-passes.cc:4907
  #, gcc-internal-format
  msgid "failed to split insn"
  msgstr ""
--- 43192,43198 ----
  msgid "supported core architectures:%s"
  msgstr ""
  
! #: config/avr/avr-passes.cc:5038
  #, gcc-internal-format
  msgid "failed to split insn"
  msgstr ""
*************** msgstr ""
*** 43219,43230 ****
  msgid "%<-fPIE%> is not supported"
  msgstr ""
  
! #: config/avr/avr.cc:954 config/avr/avr.cc:959 config/riscv/riscv.cc:11234
  #, gcc-internal-format
  msgid "function attributes %qs and %qs are mutually exclusive"
  msgstr ""
  
! #: config/avr/avr.cc:981 config/riscv/riscv.cc:11246
  #, gcc-internal-format
  msgid "%qs function cannot have arguments"
  msgstr ""
--- 43226,43237 ----
  msgid "%<-fPIE%> is not supported"
  msgstr ""
  
! #: config/avr/avr.cc:954 config/avr/avr.cc:959 config/riscv/riscv.cc:11243
  #, gcc-internal-format
  msgid "function attributes %qs and %qs are mutually exclusive"
  msgstr ""
  
! #: config/avr/avr.cc:981 config/riscv/riscv.cc:11255
  #, gcc-internal-format
  msgid "%qs function cannot have arguments"
  msgstr ""
*************** msgstr ""
*** 43234,43240 ****
  msgid "method %qs has an implicit %<this%> argument"
  msgstr ""
  
! #: config/avr/avr.cc:987 config/riscv/riscv.cc:11243
  #, gcc-internal-format
  msgid "%qs function cannot return a value"
  msgstr ""
--- 43241,43247 ----
  msgid "method %qs has an implicit %<this%> argument"
  msgstr ""
  
! #: config/avr/avr.cc:987 config/riscv/riscv.cc:11252
  #, gcc-internal-format
  msgid "%qs function cannot return a value"
  msgstr ""
*************** msgstr ""
*** 43408,43443 ****
  msgid "architecture %qs supported for assembler only"
  msgstr ""
  
! #: config/avr/avr.cc:15093
  #, gcc-internal-format
  msgid "conversion from address space %qs to address space %qs"
  msgstr ""
  
! #: config/avr/avr.cc:16261 config/avr/avr.cc:16274
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant"
  msgstr ""
  
! #: config/avr/avr.cc:16289
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as "
  "first argument"
  msgstr ""
  
! #: config/avr/avr.cc:16304
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time long integer constant as first argument"
  msgstr ""
  
! #: config/avr/avr.cc:16332
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "rounding to %d bits has no effect for fixed-point value with %d fractional "
  "bits"
  msgstr ""
  
! #: config/avr/avr.cc:16341
  #, gcc-internal-format
  msgid "rounding result will always be 0"
  msgstr ""
--- 43415,43450 ----
  msgid "architecture %qs supported for assembler only"
  msgstr ""
  
! #: config/avr/avr.cc:15107
  #, gcc-internal-format
  msgid "conversion from address space %qs to address space %qs"
  msgstr ""
  
! #: config/avr/avr.cc:16275 config/avr/avr.cc:16288
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time integer constant"
  msgstr ""
  
! #: config/avr/avr.cc:16303
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "%s expects a compile time integer constant of 0x01, 0x7f, 0x80 or 0xfe as "
  "first argument"
  msgstr ""
  
! #: config/avr/avr.cc:16318
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expects a compile time long integer constant as first argument"
  msgstr ""
  
! #: config/avr/avr.cc:16346
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "rounding to %d bits has no effect for fixed-point value with %d fractional "
  "bits"
  msgstr ""
  
! #: config/avr/avr.cc:16355
  #, gcc-internal-format
  msgid "rounding result will always be 0"
  msgstr ""
*************** msgstr ""
*** 43887,43893 ****
  msgid "using %<vector_length (64)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/gcn/gcn.cc:6351 config/nvptx/nvptx.cc:6748
  #, gcc-internal-format
  msgid "using %<num_workers (%d)%>, ignoring %d"
  msgstr ""
--- 43894,43900 ----
  msgid "using %<vector_length (64)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/gcn/gcn.cc:6351 config/nvptx/nvptx.cc:6754
  #, gcc-internal-format
  msgid "using %<num_workers (%d)%>, ignoring %d"
  msgstr ""
*************** msgstr ""
*** 43952,43963 ****
  msgid "unrecognizable argument of option %<"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1033 config/nvptx/mkoffload.cc:722
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> specified multiple times"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1090 config/nvptx/mkoffload.cc:757
  #, gcc-internal-format
  msgid "either %<-fopenacc%> or %<-fopenmp%> must be set"
  msgstr ""
--- 43959,43970 ----
  msgid "unrecognizable argument of option %<"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1033 config/nvptx/mkoffload.cc:728
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> specified multiple times"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1090 config/nvptx/mkoffload.cc:763
  #, gcc-internal-format
  msgid "either %<-fopenacc%> or %<-fopenmp%> must be set"
  msgstr ""
*************** msgstr ""
*** 43972,43983 ****
  msgid "cannot open %qs"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1327 config/nvptx/mkoffload.cc:850
  #, gcc-internal-format
  msgid "cannot open omp_requires file %qs"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1331 config/nvptx/mkoffload.cc:854
  #, gcc-internal-format
  msgid "cannot read omp_requires file %qs"
  msgstr ""
--- 43979,43990 ----
  msgid "cannot open %qs"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1327 config/nvptx/mkoffload.cc:856
  #, gcc-internal-format
  msgid "cannot open omp_requires file %qs"
  msgstr ""
  
! #: config/gcn/mkoffload.cc:1331 config/nvptx/mkoffload.cc:860
  #, gcc-internal-format
  msgid "cannot read omp_requires file %qs"
  msgstr ""
*************** msgid ""
*** 44665,44672 ****
  "specified on the command line"
  msgstr ""
  
! #: config/i386/i386-options.cc:3277 config/riscv/riscv.cc:10651
! #: config/riscv/riscv.cc:10655
  #, gcc-internal-format
  msgid "%<-fcf-protection%> is not compatible with this target"
  msgstr ""
--- 44672,44679 ----
  "specified on the command line"
  msgstr ""
  
! #: config/i386/i386-options.cc:3277 config/riscv/riscv.cc:10660
! #: config/riscv/riscv.cc:10664
  #, gcc-internal-format
  msgid "%<-fcf-protection%> is not compatible with this target"
  msgstr ""
*************** msgstr ""
*** 45008,45059 ****
  msgid "%<-fsplit-stack%> does not support 3 register parameters"
  msgstr ""
  
! #: config/i386/i386.cc:13437
  #, gcc-internal-format
  msgid "%<V%> modifier on non-integer register"
  msgstr ""
  
! #: config/i386/i386.cc:13448 config/i386/i386.cc:13462
  #, gcc-internal-format
  msgid "unsupported size for integer register"
  msgstr ""
  
! #: config/i386/i386.cc:13494
  #, gcc-internal-format
  msgid "extended registers have no high halves"
  msgstr ""
  
! #: config/i386/i386.cc:13509
  #, gcc-internal-format
  msgid "unsupported operand size for extended register"
  msgstr ""
  
! #: config/i386/i386.cc:13707 config/i386/i386.cc:13709
  #, gcc-internal-format
  msgid "non-integer operand used with operand code %<z%>"
  msgstr ""
  
! #: config/i386/i386.cc:17917
  #, gcc-internal-format
  msgid ""
  "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)"
  msgstr ""
  
! #: config/i386/i386.cc:23148
  msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}"
  msgstr ""
  
! #: config/i386/i386.cc:23235
  #, gcc-internal-format
  msgid "no register available for profiling %<-mcmodel=large%s%>"
  msgstr ""
  
! #: config/i386/i386.cc:23331
  #, gcc-internal-format
  msgid "profiling %<-mcmodel=large%> with PIC is not supported"
  msgstr ""
  
! #: config/i386/i386.cc:24046
  #, gcc-internal-format
  msgid ""
  "%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since "
--- 45015,45066 ----
  msgid "%<-fsplit-stack%> does not support 3 register parameters"
  msgstr ""
  
! #: config/i386/i386.cc:13439
  #, gcc-internal-format
  msgid "%<V%> modifier on non-integer register"
  msgstr ""
  
! #: config/i386/i386.cc:13450 config/i386/i386.cc:13464
  #, gcc-internal-format
  msgid "unsupported size for integer register"
  msgstr ""
  
! #: config/i386/i386.cc:13496
  #, gcc-internal-format
  msgid "extended registers have no high halves"
  msgstr ""
  
! #: config/i386/i386.cc:13511
  #, gcc-internal-format
  msgid "unsupported operand size for extended register"
  msgstr ""
  
! #: config/i386/i386.cc:13709 config/i386/i386.cc:13711
  #, gcc-internal-format
  msgid "non-integer operand used with operand code %<z%>"
  msgstr ""
  
! #: config/i386/i386.cc:17919
  #, gcc-internal-format
  msgid ""
  "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)"
  msgstr ""
  
! #: config/i386/i386.cc:23150
  msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}"
  msgstr ""
  
! #: config/i386/i386.cc:23237
  #, gcc-internal-format
  msgid "no register available for profiling %<-mcmodel=large%s%>"
  msgstr ""
  
! #: config/i386/i386.cc:23333
  #, gcc-internal-format
  msgid "profiling %<-mcmodel=large%> with PIC is not supported"
  msgstr ""
  
! #: config/i386/i386.cc:24048
  #, gcc-internal-format
  msgid ""
  "%<__bfloat16%> is redefined from typedef %<short%> to real %<__bf16%> since "
*************** msgid ""
*** 45061,45082 ****
  "%<short%>; an explicit bitcast may be needed here"
  msgstr ""
  
! #: config/i386/i386.cc:25580
  #, gcc-internal-format
  msgid "unknown architecture specific memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25587
  #, gcc-internal-format
  msgid "%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25594
  #, gcc-internal-format
  msgid "%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:26281
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>"
  msgstr ""
--- 45068,45089 ----
  "%<short%>; an explicit bitcast may be needed here"
  msgstr ""
  
! #: config/i386/i386.cc:25578
  #, gcc-internal-format
  msgid "unknown architecture specific memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25585
  #, gcc-internal-format
  msgid "%<HLE_ACQUIRE%> not used with %<ACQUIRE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:25592
  #, gcc-internal-format
  msgid "%<HLE_RELEASE%> not used with %<RELEASE%> or stronger memory model"
  msgstr ""
  
! #: config/i386/i386.cc:26279
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>"
  msgstr ""
*************** msgstr ""
*** 45289,45296 ****
  msgid "%qs cannot be used for compiling a shared library"
  msgstr ""
  
! #: config/loongarch/loongarch-target-attr.cc:246 config/s390/s390.cc:16727
! #: config/s390/s390.cc:16777 config/s390/s390.cc:16794
  #, gcc-internal-format
  msgid "attribute %<target%> argument %qs is unknown"
  msgstr ""
--- 45296,45303 ----
  msgid "%qs cannot be used for compiling a shared library"
  msgstr ""
  
! #: config/loongarch/loongarch-target-attr.cc:246 config/s390/s390.cc:16754
! #: config/s390/s390.cc:16804 config/s390/s390.cc:16821
  #, gcc-internal-format
  msgid "attribute %<target%> argument %qs is unknown"
  msgstr ""
*************** msgstr ""
*** 45411,45417 ****
  msgid "stack limit expression is not supported"
  msgstr ""
  
! #: config/m68k/m68k.cc:7175 config/s390/s390.cc:17417
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not supported on this target"
  msgstr ""
--- 45418,45424 ----
  msgid "stack limit expression is not supported"
  msgstr ""
  
! #: config/m68k/m68k.cc:7175 config/s390/s390.cc:17444
  #, gcc-internal-format
  msgid "%<-fexcess-precision=16%> is not supported on this target"
  msgstr ""
*************** msgstr ""
*** 45421,45454 ****
  msgid "initialized variable %q+D is marked dllimport"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1760
  #, gcc-internal-format
  msgid "%<-fPIC%>/%<-fpic%> not supported for this target"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1772
  #, gcc-internal-format
  msgid "%qs is an invalid argument to %<-mcpu=%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1821
  #, gcc-internal-format
  msgid ""
  "%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1838
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1845
  #, gcc-internal-format
  msgid ""
  "%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1851
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>"
  msgstr ""
--- 45428,45461 ----
  msgid "initialized variable %q+D is marked dllimport"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1764
  #, gcc-internal-format
  msgid "%<-fPIC%>/%<-fpic%> not supported for this target"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1776
  #, gcc-internal-format
  msgid "%qs is an invalid argument to %<-mcpu=%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1825
  #, gcc-internal-format
  msgid ""
  "%<-mxl-multiply-high%> can be used only with %<-mcpu=v6.00.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1842
  #, gcc-internal-format
  msgid "%<-mxl-reorder%> can be used only with %<-mcpu=v8.30.a%> or greater"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1849
  #, gcc-internal-format
  msgid ""
  "%<-mxl-reorder%> requires %<-mxl-pattern-compare%> for %<-mcpu=v8.30.a%>"
  msgstr ""
  
! #: config/microblaze/microblaze.cc:1855
  #, gcc-internal-format
  msgid "%<-mxl-multiply-high%> requires %<-mno-xl-soft-mul%>"
  msgstr ""
*************** msgstr ""
*** 46260,46266 ****
  msgid "malformed ptx file"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:336
  #, gcc-internal-format
  msgid ""
  "%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-"
--- 46267,46273 ----
  msgid "malformed ptx file"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:339
  #, gcc-internal-format
  msgid ""
  "%<omp requires reverse_offload%> requires at least %<sm_35%> for %<-foffload-"
*************** msgid ""
*** 46268,46309 ****
  "device type"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:420 config/nvptx/mkoffload.cc:492
  #, gcc-internal-format
  msgid "Cannot find function declaration for %qs"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:592
  #, gcc-internal-format
  msgid "environment variable COLLECT_GCC_OPTIONS must be set"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:613
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> not specified."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:644
  #, gcc-internal-format
  msgid "COLLECT_GCC must be set."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:692
  #, gcc-internal-format
  msgid "offload compiler %s not found (consider using %<-B%>)"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:715
  #, gcc-internal-format
  msgid "unrecognizable argument of option "
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:804
  #, gcc-internal-format, gfc-internal-format
  msgid "cannot open '%s'"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:860
  #, gcc-internal-format
  msgid "cannot open intermediate ptx file"
  msgstr ""
--- 46275,46316 ----
  "device type"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:426 config/nvptx/mkoffload.cc:498
  #, gcc-internal-format
  msgid "Cannot find function declaration for %qs"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:598
  #, gcc-internal-format
  msgid "environment variable COLLECT_GCC_OPTIONS must be set"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:619
  #, gcc-internal-format
  msgid "%<-foffload-abi-host-opts%> not specified."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:650
  #, gcc-internal-format
  msgid "COLLECT_GCC must be set."
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:698
  #, gcc-internal-format
  msgid "offload compiler %s not found (consider using %<-B%>)"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:721
  #, gcc-internal-format
  msgid "unrecognizable argument of option "
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:810
  #, gcc-internal-format, gfc-internal-format
  msgid "cannot open '%s'"
  msgstr ""
  
! #: config/nvptx/mkoffload.cc:866
  #, gcc-internal-format
  msgid "cannot open intermediate ptx file"
  msgstr ""
*************** msgstr ""
*** 46313,46399 ****
  msgid "option %s is not supported together with %<-fopenacc%>"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:342
  #, gcc-internal-format
  msgid ""
  "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-"
  "misa%> (sm_%s)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:359
  #, gcc-internal-format
  msgid "%<-march=%> must be specified"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:382
  #, gcc-internal-format
  msgid "not generating patch area, nops not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:479
  #, gcc-internal-format
  msgid ""
  "static initialization of variable %q+D in %<.shared%> memory is not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2409
  #, gcc-internal-format
  msgid "cannot emit unaligned pointers in ptx assembly"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2659
  #, gcc-internal-format
  msgid "PTX does not support weak declarations (only weak definitions)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5900
  #, gcc-internal-format
  msgid "%qE attribute requires a void return type"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5923
  #, gcc-internal-format
  msgid "%qE attribute not allowed with auto storage class"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6368
  #, gcc-internal-format
  msgid "barrier value must be within [0,15]"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6381
  #, gcc-internal-format
  msgid "complement argument must be constant"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6721
  #, gcc-internal-format
  msgid ""
  "using %<vector_length (%d)%> due to call to vector-partitionable routine, "
  "ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6729
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6743
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7629
  #, gcc-internal-format
  msgid "variable %qD adjusted for OpenACC privatization level: %qs"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7768
  #, gcc-internal-format
  msgid "weak alias definitions not supported in this configuration"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7781
  #, gcc-internal-format
  msgid "non-function alias definitions not supported in this configuration"
  msgstr ""
--- 46320,46406 ----
  msgid "option %s is not supported together with %<-fopenacc%>"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:348
  #, gcc-internal-format
  msgid ""
  "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-"
  "misa%> (sm_%s)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:365
  #, gcc-internal-format
  msgid "%<-march=%> must be specified"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:388
  #, gcc-internal-format
  msgid "not generating patch area, nops not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:485
  #, gcc-internal-format
  msgid ""
  "static initialization of variable %q+D in %<.shared%> memory is not supported"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2415
  #, gcc-internal-format
  msgid "cannot emit unaligned pointers in ptx assembly"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:2665
  #, gcc-internal-format
  msgid "PTX does not support weak declarations (only weak definitions)"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5906
  #, gcc-internal-format
  msgid "%qE attribute requires a void return type"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:5929
  #, gcc-internal-format
  msgid "%qE attribute not allowed with auto storage class"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6374
  #, gcc-internal-format
  msgid "barrier value must be within [0,15]"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6387
  #, gcc-internal-format
  msgid "complement argument must be constant"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6727
  #, gcc-internal-format
  msgid ""
  "using %<vector_length (%d)%> due to call to vector-partitionable routine, "
  "ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6735
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring runtime setting"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:6749
  #, gcc-internal-format
  msgid "using %<vector_length (%d)%>, ignoring %d"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7635
  #, gcc-internal-format
  msgid "variable %qD adjusted for OpenACC privatization level: %qs"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7774
  #, gcc-internal-format
  msgid "weak alias definitions not supported in this configuration"
  msgstr ""
  
! #: config/nvptx/nvptx.cc:7787
  #, gcc-internal-format
  msgid "non-function alias definitions not supported in this configuration"
  msgstr ""
*************** msgid ""
*** 46817,46916 ****
  "%qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10571
  #, gcc-internal-format
  msgid "%<-mdiv%> requires %<-march%> to subsume the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10576
  #, gcc-internal-format
  msgid "Currently the %<V%> implementation requires the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10636
  #, gcc-internal-format
  msgid ""
  "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' "
  "Extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10642
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support RVV in big-endian mode"
  msgstr ""
  
! #: config/riscv/riscv.cc:10682 config/riscv/riscv.cc:10685
  #, gcc-internal-format
  msgid "code model %qs with %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10714
  #, gcc-internal-format
  msgid "requested ABI requires %<-march%> to subsume the %qc extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10721
  #, gcc-internal-format
  msgid "rv32e requires ilp32e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10723
  #, gcc-internal-format
  msgid "rv64e requires lp64e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10728
  #, gcc-internal-format
  msgid "ILP32E ABI does not support the %qc extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10733
  #, gcc-internal-format
  msgid "LP64E ABI is marked for deprecation in GCC"
  msgstr ""
  
! #: config/riscv/riscv.cc:10734
  msgid "if you need LP64E please notify the GCC project via %{PR116152%}"
  msgstr ""
  
! #: config/riscv/riscv.cc:10742
  #, gcc-internal-format
  msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e"
  msgstr ""
  
! #: config/riscv/riscv.cc:10746
  #, gcc-internal-format
  msgid "ABI requires %<-march=rv%d%>"
  msgstr ""
  
! #: config/riscv/riscv.cc:10756
  #, gcc-internal-format
  msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d"
  msgstr ""
  
! #: config/riscv/riscv.cc:10769
  #, gcc-internal-format
  msgid ""
  "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-"
  "attribute%>]"
  msgstr ""
  
! #: config/riscv/riscv.cc:10796 config/rs6000/rs6000.cc:4530
  #, gcc-internal-format
  msgid "%qs is not a valid base register in %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10810 config/rs6000/rs6000.cc:4513
  #, gcc-internal-format
  msgid "%qs is not a valid number in %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:11305
  #, gcc-internal-format
  msgid "%qs function cannot have different interrupt type"
  msgstr ""
  
! #: config/riscv/riscv.cc:11880
  #, gcc-internal-format
  msgid "cannot allocate vl register for %qs on this target"
  msgstr ""
--- 46824,46923 ----
  "%qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10580
  #, gcc-internal-format
  msgid "%<-mdiv%> requires %<-march%> to subsume the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10585
  #, gcc-internal-format
  msgid "Currently the %<V%> implementation requires the %<M%> extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10645
  #, gcc-internal-format
  msgid ""
  "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' "
  "Extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10651
  #, gcc-internal-format
  msgid "Current RISC-V GCC does not support RVV in big-endian mode"
  msgstr ""
  
! #: config/riscv/riscv.cc:10691 config/riscv/riscv.cc:10694
  #, gcc-internal-format
  msgid "code model %qs with %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10723
  #, gcc-internal-format
  msgid "requested ABI requires %<-march%> to subsume the %qc extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10730
  #, gcc-internal-format
  msgid "rv32e requires ilp32e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10732
  #, gcc-internal-format
  msgid "rv64e requires lp64e ABI"
  msgstr ""
  
! #: config/riscv/riscv.cc:10737
  #, gcc-internal-format
  msgid "ILP32E ABI does not support the %qc extension"
  msgstr ""
  
! #: config/riscv/riscv.cc:10742
  #, gcc-internal-format
  msgid "LP64E ABI is marked for deprecation in GCC"
  msgstr ""
  
! #: config/riscv/riscv.cc:10743
  msgid "if you need LP64E please notify the GCC project via %{PR116152%}"
  msgstr ""
  
! #: config/riscv/riscv.cc:10751
  #, gcc-internal-format
  msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e"
  msgstr ""
  
! #: config/riscv/riscv.cc:10755
  #, gcc-internal-format
  msgid "ABI requires %<-march=rv%d%>"
  msgstr ""
  
! #: config/riscv/riscv.cc:10765
  #, gcc-internal-format
  msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d"
  msgstr ""
  
! #: config/riscv/riscv.cc:10778
  #, gcc-internal-format
  msgid ""
  "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-"
  "attribute%>]"
  msgstr ""
  
! #: config/riscv/riscv.cc:10805 config/rs6000/rs6000.cc:4530
  #, gcc-internal-format
  msgid "%qs is not a valid base register in %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:10819 config/rs6000/rs6000.cc:4513
  #, gcc-internal-format
  msgid "%qs is not a valid number in %qs"
  msgstr ""
  
! #: config/riscv/riscv.cc:11314
  #, gcc-internal-format
  msgid "%qs function cannot have different interrupt type"
  msgstr ""
  
! #: config/riscv/riscv.cc:11889
  #, gcc-internal-format
  msgid "cannot allocate vl register for %qs on this target"
  msgstr ""
*************** msgstr ""
*** 47505,47523 ****
  msgid "Virtual function multiversioning not supported"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28798
  #, gcc-internal-format
  msgid ""
  "the result for the xxspltidp instruction is undefined for subnormal input "
  "values"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29276
  #, gcc-internal-format
  msgid "type %<__vector_quad%> requires the %qs option"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29281
  #, gcc-internal-format
  msgid "type %<__vector_pair%> requires the %qs option"
  msgstr ""
--- 47512,47530 ----
  msgid "Virtual function multiversioning not supported"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:28801
  #, gcc-internal-format
  msgid ""
  "the result for the xxspltidp instruction is undefined for subnormal input "
  "values"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29279
  #, gcc-internal-format
  msgid "type %<__vector_quad%> requires the %qs option"
  msgstr ""
  
! #: config/rs6000/rs6000.cc:29284
  #, gcc-internal-format
  msgid "type %<__vector_pair%> requires the %qs option"
  msgstr ""
*************** msgstr ""
*** 47756,47883 ****
  msgid "nested functions cannot be profiled with %<-mfentry%> on s390"
  msgstr ""
  
! #: config/s390/s390.cc:16296
  #, gcc-internal-format
  msgid "64-bit ABI not supported in ESA/390 mode"
  msgstr ""
  
! #: config/s390/s390.cc:16303
  #, gcc-internal-format
  msgid "thunk-inline is only supported with %<-mindirect-branch-jump%>"
  msgstr ""
  
! #: config/s390/s390.cc:16338
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware vector support not available on %s"
  msgstr ""
  
! #: config/s390/s390.cc:16341
  #, gcc-internal-format
  msgid "hardware vector support not available with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16370
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware decimal floating-point instructions not available on %s"
  msgstr ""
  
! #: config/s390/s390.cc:16374
  #, gcc-internal-format
  msgid ""
  "hardware decimal floating-point instructions not available in ESA/390 mode"
  msgstr ""
  
! #: config/s390/s390.cc:16386
  #, gcc-internal-format
  msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16395
  #, gcc-internal-format
  msgid ""
  "%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in "
  "combination"
  msgstr ""
  
! #: config/s390/s390.cc:16401
  #, gcc-internal-format
  msgid "stack size must be greater than the stack guard value"
  msgstr ""
  
! #: config/s390/s390.cc:16403
  #, gcc-internal-format
  msgid "stack size must not be greater than 64k"
  msgstr ""
  
! #: config/s390/s390.cc:16406
  #, gcc-internal-format
  msgid "%<-mstack-guard%> implies use of %<-mstack-size%>"
  msgstr ""
  
! #: config/s390/s390.cc:16419
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16422
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16425
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16428
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16492
  #, gcc-internal-format
  msgid "%<-mfentry%> is supported only for 64-bit CPUs"
  msgstr ""
  
  #. argument is not a plain number
! #: config/s390/s390.cc:16528
  #, gcc-internal-format
  msgid "arguments to %qs should be non-negative integers"
  msgstr ""
  
! #: config/s390/s390.cc:16535
  #, gcc-internal-format
  msgid "argument to %qs is too large (max. %d)"
  msgstr ""
  
! #: config/s390/s390.cc:16566
  #, gcc-internal-format
  msgid ""
  "%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>"
  msgstr ""
  
  #. Value is not allowed for the target attribute.
! #: config/s390/s390.cc:16733
  #, gcc-internal-format
  msgid "value %qs is not supported by attribute %<target%>"
  msgstr ""
  
! #: config/s390/s390.cc:17792
  #, gcc-internal-format
  msgid "invalid cc output constraint: %qs"
  msgstr ""
  
! #: config/s390/s390.cc:17797
  #, gcc-internal-format
  msgid "multiple cc output constraints not supported"
  msgstr ""
  
! #: config/s390/s390.cc:17802
  #, gcc-internal-format
  msgid "%<asm%> specifier for cc output conflicts with %<asm%> clobber list"
  msgstr ""
  
! #: config/s390/s390.cc:17808
  #, gcc-internal-format
  msgid "invalid type for cc output constraint"
  msgstr ""
--- 47763,47890 ----
  msgid "nested functions cannot be profiled with %<-mfentry%> on s390"
  msgstr ""
  
! #: config/s390/s390.cc:16323
  #, gcc-internal-format
  msgid "64-bit ABI not supported in ESA/390 mode"
  msgstr ""
  
! #: config/s390/s390.cc:16330
  #, gcc-internal-format
  msgid "thunk-inline is only supported with %<-mindirect-branch-jump%>"
  msgstr ""
  
! #: config/s390/s390.cc:16365
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware vector support not available on %s"
  msgstr ""
  
! #: config/s390/s390.cc:16368
  #, gcc-internal-format
  msgid "hardware vector support not available with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16397
  #, gcc-internal-format, gfc-internal-format
  msgid "hardware decimal floating-point instructions not available on %s"
  msgstr ""
  
! #: config/s390/s390.cc:16401
  #, gcc-internal-format
  msgid ""
  "hardware decimal floating-point instructions not available in ESA/390 mode"
  msgstr ""
  
! #: config/s390/s390.cc:16413
  #, gcc-internal-format
  msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>"
  msgstr ""
  
! #: config/s390/s390.cc:16422
  #, gcc-internal-format
  msgid ""
  "%<-mbackchain%> %<-mpacked-stack%> %<-mhard-float%> are not supported in "
  "combination"
  msgstr ""
  
! #: config/s390/s390.cc:16428
  #, gcc-internal-format
  msgid "stack size must be greater than the stack guard value"
  msgstr ""
  
! #: config/s390/s390.cc:16430
  #, gcc-internal-format
  msgid "stack size must not be greater than 64k"
  msgstr ""
  
! #: config/s390/s390.cc:16433
  #, gcc-internal-format
  msgid "%<-mstack-guard%> implies use of %<-mstack-size%>"
  msgstr ""
  
! #: config/s390/s390.cc:16446
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16449
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16452
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16455
  #, gcc-internal-format
  msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095"
  msgstr ""
  
! #: config/s390/s390.cc:16519
  #, gcc-internal-format
  msgid "%<-mfentry%> is supported only for 64-bit CPUs"
  msgstr ""
  
  #. argument is not a plain number
! #: config/s390/s390.cc:16555
  #, gcc-internal-format
  msgid "arguments to %qs should be non-negative integers"
  msgstr ""
  
! #: config/s390/s390.cc:16562
  #, gcc-internal-format
  msgid "argument to %qs is too large (max. %d)"
  msgstr ""
  
! #: config/s390/s390.cc:16593
  #, gcc-internal-format
  msgid ""
  "%<-mno-pic-data-is-text-relative%> cannot be used without %<-fpic%>/%<-fPIC%>"
  msgstr ""
  
  #. Value is not allowed for the target attribute.
! #: config/s390/s390.cc:16760
  #, gcc-internal-format
  msgid "value %qs is not supported by attribute %<target%>"
  msgstr ""
  
! #: config/s390/s390.cc:17819
  #, gcc-internal-format
  msgid "invalid cc output constraint: %qs"
  msgstr ""
  
! #: config/s390/s390.cc:17824
  #, gcc-internal-format
  msgid "multiple cc output constraints not supported"
  msgstr ""
  
! #: config/s390/s390.cc:17829
  #, gcc-internal-format
  msgid "%<asm%> specifier for cc output conflicts with %<asm%> clobber list"
  msgstr ""
  
! #: config/s390/s390.cc:17835
  #, gcc-internal-format
  msgid "invalid type for cc output constraint"
  msgstr ""
*************** msgstr ""
*** 48244,48309 ****
  msgid "subprogram %q+F not marked %<Inline%>"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:4427
  #, gcc-internal-format
  msgid "invalid element type for attribute %qs"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:4451
  #, gcc-internal-format
  msgid "number of components of vector not a power of two"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6705 ada/gcc-interface/utils.cc:6883
! #: ada/gcc-interface/utils.cc:7123
  #, gcc-internal-format
  msgid "%qs attribute ignored"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6760
  #, gcc-internal-format
  msgid "%qs attribute without arguments on a non-prototype"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6775
  #, gcc-internal-format
  msgid "%qs argument has invalid operand number (argument %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6797
  #, gcc-internal-format
  msgid ""
  "%qs argument with out-of-range operand number (argument %lu, operand %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6806
  #, gcc-internal-format
  msgid "%qs argument references non-pointer operand (argument %lu, operand %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6827
  #, gcc-internal-format
  msgid "%qs attribute requires prototypes with named arguments"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6836
  #, gcc-internal-format
  msgid "%qs attribute only applies to variadic functions"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:7083 d/d-attribs.cc:362 d/d-attribs.cc:488
  #: rust/rust-attribs.cc:176
  #, gcc-internal-format
  msgid "%qE attribute has no effect"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:7418
  #, gcc-internal-format
  msgid "attribute %qs applies to array types only"
  msgstr ""
  
! #: c/c-convert.cc:104 c/c-typeck.cc:2730 c/c-typeck.cc:14860 cp/typeck.cc:2520
! #: cp/typeck.cc:9603 cp/typeck.cc:10396 d/d-convert.cc:262
  #, gcc-internal-format
  msgid "void value not ignored as it ought to be"
  msgstr ""
--- 48251,48316 ----
  msgid "subprogram %q+F not marked %<Inline%>"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:4429
  #, gcc-internal-format
  msgid "invalid element type for attribute %qs"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:4453
  #, gcc-internal-format
  msgid "number of components of vector not a power of two"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6707 ada/gcc-interface/utils.cc:6885
! #: ada/gcc-interface/utils.cc:7125
  #, gcc-internal-format
  msgid "%qs attribute ignored"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6762
  #, gcc-internal-format
  msgid "%qs attribute without arguments on a non-prototype"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6777
  #, gcc-internal-format
  msgid "%qs argument has invalid operand number (argument %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6799
  #, gcc-internal-format
  msgid ""
  "%qs argument with out-of-range operand number (argument %lu, operand %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6808
  #, gcc-internal-format
  msgid "%qs argument references non-pointer operand (argument %lu, operand %lu)"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6829
  #, gcc-internal-format
  msgid "%qs attribute requires prototypes with named arguments"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:6838
  #, gcc-internal-format
  msgid "%qs attribute only applies to variadic functions"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:7085 d/d-attribs.cc:362 d/d-attribs.cc:488
  #: rust/rust-attribs.cc:176
  #, gcc-internal-format
  msgid "%qE attribute has no effect"
  msgstr ""
  
! #: ada/gcc-interface/utils.cc:7420
  #, gcc-internal-format
  msgid "attribute %qs applies to array types only"
  msgstr ""
  
! #: c/c-convert.cc:104 c/c-typeck.cc:2730 c/c-typeck.cc:14877 cp/typeck.cc:2520
! #: cp/typeck.cc:9719 cp/typeck.cc:10512 d/d-convert.cc:262
  #, gcc-internal-format
  msgid "void value not ignored as it ought to be"
  msgstr ""
*************** msgid ""
*** 48379,48386 ****
  "underspecified declaration of %qE, which is already declared in this scope"
  msgstr ""
  
! #: c/c-decl.cc:1732 c/c-decl.cc:7925 c/c-decl.cc:8924 c/c-decl.cc:9859
! #: c/c-decl.cc:9865 c/c-decl.cc:10092
  #, gcc-internal-format
  msgid "originally defined here"
  msgstr ""
--- 48386,48393 ----
  "underspecified declaration of %qE, which is already declared in this scope"
  msgstr ""
  
! #: c/c-decl.cc:1732 c/c-decl.cc:7925 c/c-decl.cc:8924 c/c-decl.cc:9862
! #: c/c-decl.cc:9868 c/c-decl.cc:10096
  #, gcc-internal-format
  msgid "originally defined here"
  msgstr ""
*************** msgid ""
*** 48697,48703 ****
  "appears in"
  msgstr ""
  
! #: c/c-decl.cc:4055 cp/decl.cc:3632
  #, gcc-internal-format
  msgid "label %qE referenced outside of any function"
  msgstr ""
--- 48704,48710 ----
  "appears in"
  msgstr ""
  
! #: c/c-decl.cc:4055 cp/decl.cc:3630
  #, gcc-internal-format
  msgid "label %qE referenced outside of any function"
  msgstr ""
*************** msgstr ""
*** 48732,48738 ****
  msgid "duplicate label declaration %qE"
  msgstr ""
  
! #: c/c-decl.cc:4278 cp/decl.cc:4135
  #, gcc-internal-format
  msgid "duplicate label %qD"
  msgstr ""
--- 48739,48745 ----
  msgid "duplicate label declaration %qE"
  msgstr ""
  
! #: c/c-decl.cc:4278 cp/decl.cc:4133
  #, gcc-internal-format
  msgid "duplicate label %qD"
  msgstr ""
*************** msgstr ""
*** 48907,48913 ****
  msgid "invalid use of attributes in empty declaration"
  msgstr ""
  
! #: c/c-decl.cc:5264 c/c-parser.cc:2513
  #, gcc-internal-format
  msgid "empty declaration"
  msgstr ""
--- 48914,48920 ----
  msgid "invalid use of attributes in empty declaration"
  msgstr ""
  
! #: c/c-decl.cc:5264 c/c-parser.cc:2558
  #, gcc-internal-format
  msgid "empty declaration"
  msgstr ""
*************** msgstr ""
*** 48927,48938 ****
  #. C99 6.7.5.2p4
  #. A function definition isn't function prototype scope C99 6.2.1p4.
  #. C99 6.7.5.2p4
! #: c/c-decl.cc:5346 c/c-decl.cc:8448 c/c-decl.cc:10986
  #, gcc-internal-format
  msgid "%<[*]%> not allowed in other than function prototype scope"
  msgstr ""
  
! #: c/c-decl.cc:5539 cp/decl2.cc:1960 cp/name-lookup.cc:8993
  #, gcc-internal-format
  msgid "%<omp::%s%> not allowed to be specified in this context"
  msgstr ""
--- 48934,48945 ----
  #. C99 6.7.5.2p4
  #. A function definition isn't function prototype scope C99 6.2.1p4.
  #. C99 6.7.5.2p4
! #: c/c-decl.cc:5346 c/c-decl.cc:8448 c/c-decl.cc:10990
  #, gcc-internal-format
  msgid "%<[*]%> not allowed in other than function prototype scope"
  msgstr ""
  
! #: c/c-decl.cc:5539 cp/decl2.cc:1960 cp/name-lookup.cc:8996
  #, gcc-internal-format
  msgid "%<omp::%s%> not allowed to be specified in this context"
  msgstr ""
*************** msgstr ""
*** 48942,48948 ****
  msgid "%q+D is usually a function"
  msgstr ""
  
! #: c/c-decl.cc:5627 c/c-decl.cc:10816 cp/decl.cc:18580
  #, gcc-internal-format
  msgid "no previous declaration for %qD"
  msgstr ""
--- 48949,48955 ----
  msgid "%q+D is usually a function"
  msgstr ""
  
! #: c/c-decl.cc:5627 c/c-decl.cc:10820 cp/decl.cc:18578
  #, gcc-internal-format
  msgid "no previous declaration for %qD"
  msgstr ""
*************** msgstr ""
*** 49018,49024 ****
  msgid "uninitialized %<const %D%> is invalid in C++"
  msgstr ""
  
! #: c/c-decl.cc:6178 cp/decl.cc:9535
  #, gcc-internal-format
  msgid "%q+D in declare target directive does not have mappable type"
  msgstr ""
--- 49025,49031 ----
  msgid "uninitialized %<const %D%> is invalid in C++"
  msgstr ""
  
! #: c/c-decl.cc:6178 cp/decl.cc:9533
  #, gcc-internal-format
  msgid "%q+D in declare target directive does not have mappable type"
  msgstr ""
*************** msgstr ""
*** 49163,49169 ****
  msgid "conflicting named address spaces (%s vs %s)"
  msgstr ""
  
! #: c/c-decl.cc:7080 c/c-parser.cc:3794
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified array type"
  msgstr ""
--- 49170,49176 ----
  msgid "conflicting named address spaces (%s vs %s)"
  msgstr ""
  
! #: c/c-decl.cc:7080 c/c-parser.cc:3839
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified array type"
  msgstr ""
*************** msgstr ""
*** 49208,49214 ****
  msgid "storage class specified for unnamed parameter"
  msgstr ""
  
! #: c/c-decl.cc:7141 cp/decl.cc:13709
  #, gcc-internal-format
  msgid "storage class specified for typename"
  msgstr ""
--- 49215,49221 ----
  msgid "storage class specified for unnamed parameter"
  msgstr ""
  
! #: c/c-decl.cc:7141 cp/decl.cc:13707
  #, gcc-internal-format
  msgid "storage class specified for typename"
  msgstr ""
*************** msgstr ""
*** 49380,49392 ****
  msgid "function definition has qualified void return type"
  msgstr ""
  
! #: c/c-decl.cc:7684 cp/decl.cc:14134
  #, gcc-internal-format
  msgid "type qualifiers ignored on function return type"
  msgstr ""
  
  #: c/c-decl.cc:7723 c/c-decl.cc:7891 c/c-decl.cc:7945 c/c-decl.cc:8039
! #: c/c-decl.cc:8161 c/c-parser.cc:3796
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified function type"
  msgstr ""
--- 49387,49399 ----
  msgid "function definition has qualified void return type"
  msgstr ""
  
! #: c/c-decl.cc:7684 cp/decl.cc:14132
  #, gcc-internal-format
  msgid "type qualifiers ignored on function return type"
  msgstr ""
  
  #: c/c-decl.cc:7723 c/c-decl.cc:7891 c/c-decl.cc:7945 c/c-decl.cc:8039
! #: c/c-decl.cc:8161 c/c-parser.cc:3841
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified function type"
  msgstr ""
*************** msgstr ""
*** 49507,49513 ****
  msgid "a member of a structure or union cannot have a variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:7979 cp/decl.cc:12576
  #, gcc-internal-format
  msgid "variable or field %qE declared void"
  msgstr ""
--- 49514,49520 ----
  msgid "a member of a structure or union cannot have a variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:7979 cp/decl.cc:12574
  #, gcc-internal-format
  msgid "variable or field %qE declared void"
  msgstr ""
*************** msgstr ""
*** 49577,49588 ****
  msgid "%<constexpr%> object has variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:8263 c/c-parser.cc:13368
  #, gcc-internal-format
  msgid "invalid qualifiers for %<constexpr%> object"
  msgstr ""
  
! #: c/c-decl.cc:8269 c/c-parser.cc:13371
  #, gcc-internal-format
  msgid "invalid qualifiers for field of %<constexpr%> object"
  msgstr ""
--- 49584,49595 ----
  msgid "%<constexpr%> object has variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:8263 c/c-parser.cc:13413
  #, gcc-internal-format
  msgid "invalid qualifiers for %<constexpr%> object"
  msgstr ""
  
! #: c/c-decl.cc:8269 c/c-parser.cc:13416
  #, gcc-internal-format
  msgid "invalid qualifiers for field of %<constexpr%> object"
  msgstr ""
*************** msgstr ""
*** 49612,49618 ****
  msgid "object with variably modified type must have no linkage"
  msgstr ""
  
! #: c/c-decl.cc:8454 c/c-decl.cc:10790
  #, gcc-internal-format
  msgid "function declaration isn%'t a prototype"
  msgstr ""
--- 49619,49625 ----
  msgid "object with variably modified type must have no linkage"
  msgstr ""
  
! #: c/c-decl.cc:8454 c/c-decl.cc:10794
  #, gcc-internal-format
  msgid "function declaration isn%'t a prototype"
  msgstr ""
*************** msgstr ""
*** 49701,49717 ****
  msgid "nested redefinition of %<struct %E%>"
  msgstr ""
  
! #: c/c-decl.cc:8966 c/c-decl.cc:10120
  #, gcc-internal-format
  msgid "defining type in %qs expression is invalid in C++"
  msgstr ""
  
! #: c/c-decl.cc:8972 c/c-decl.cc:10126
  #, gcc-internal-format
  msgid "%qT defined in underspecified object initializer"
  msgstr ""
  
! #: c/c-decl.cc:9036 cp/decl.cc:5719 cp/parser.cc:28813
  #, gcc-internal-format
  msgid "declaration does not declare anything"
  msgstr ""
--- 49708,49724 ----
  msgid "nested redefinition of %<struct %E%>"
  msgstr ""
  
! #: c/c-decl.cc:8966 c/c-decl.cc:10124
  #, gcc-internal-format
  msgid "defining type in %qs expression is invalid in C++"
  msgstr ""
  
! #: c/c-decl.cc:8972 c/c-decl.cc:10130
  #, gcc-internal-format
  msgid "%qT defined in underspecified object initializer"
  msgstr ""
  
! #: c/c-decl.cc:9036 cp/decl.cc:5717 cp/parser.cc:28867
  #, gcc-internal-format
  msgid "declaration does not declare anything"
  msgstr ""
*************** msgstr ""
*** 49775,49781 ****
  msgid "struct has no members"
  msgstr ""
  
! #: c/c-decl.cc:9640 cp/decl.cc:15166
  #, gcc-internal-format
  msgid "flexible array member in union is a GCC extension"
  msgstr ""
--- 49782,49788 ----
  msgid "struct has no members"
  msgstr ""
  
! #: c/c-decl.cc:9640 cp/decl.cc:15164
  #, gcc-internal-format
  msgid "flexible array member in union is a GCC extension"
  msgstr ""
*************** msgid ""
*** 49791,50415 ****
  "flexible array member in a struct with no named members is a GCC extension"
  msgstr ""
  
! #: c/c-decl.cc:9684
  #, gcc-internal-format
  msgid ""
  "structure containing a flexible array member is not at the end of another "
  "structure"
  msgstr ""
  
! #: c/c-decl.cc:9711
  #, gcc-internal-format
  msgid "type %qT is too large"
  msgstr ""
  
! #: c/c-decl.cc:9775
  #, gcc-internal-format
  msgid "type punning toggles scalar storage order"
  msgstr ""
  
! #: c/c-decl.cc:9842
  #, gcc-internal-format
  msgid "union cannot be made transparent"
  msgstr ""
  
! #: c/c-decl.cc:9856
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT with variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:9863
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT"
  msgstr ""
  
! #: c/c-decl.cc:10042
  #, gcc-internal-format
  msgid "nested redefinition of %<enum %E%>"
  msgstr ""
  
! #: c/c-decl.cc:10090
  #, gcc-internal-format
  msgid "redeclaration of %<enum %E%>"
  msgstr ""
  
! #: c/c-decl.cc:10102
  #, gcc-internal-format
  msgid "%<enum%> declared with but defined without fixed underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10189 cp/decl.cc:17838 m2/gm2-gcc/m2type.cc:2088
  #, gcc-internal-format
  msgid "specified mode too small for enumerated values"
  msgstr ""
  
! #: c/c-decl.cc:10208
  #, gcc-internal-format
  msgid "enumeration values exceed range of largest integer"
  msgstr ""
  
! #: c/c-decl.cc:10217
  #, gcc-internal-format
  msgid "enumeration values exceed range of %qs"
  msgstr ""
  
! #: c/c-decl.cc:10330
  #, gcc-internal-format
  msgid "conflicting redefinition of enum %qT"
  msgstr ""
  
! #: c/c-decl.cc:10363 c/c-decl.cc:10379
  #, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant"
  msgstr ""
  
! #: c/c-decl.cc:10374
  #, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant expression"
  msgstr ""
  
! #: c/c-decl.cc:10398
  #, gcc-internal-format
  msgid "overflow in enumeration values"
  msgstr ""
  
! #: c/c-decl.cc:10405
  #, gcc-internal-format
  msgid "enumerator value outside the range of underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10422
  #, gcc-internal-format
  msgid "value of redeclared enumerator outside the range of %qT"
  msgstr ""
  
! #: c/c-decl.cc:10450
  #, gcc-internal-format
  msgid "enumerator value outside the range of %qs"
  msgstr ""
  
! #: c/c-decl.cc:10456
  #, gcc-internal-format
  msgid "ISO C restricts enumerator values to range of %<int%> before C23"
  msgstr ""
  
! #: c/c-decl.cc:10664 cp/decl.cc:6053 cp/decl.cc:18438
  #, gcc-internal-format
  msgid "inline function %qD given attribute %qs"
  msgstr ""
  
! #: c/c-decl.cc:10683
  #, gcc-internal-format
  msgid "return type is an incomplete type"
  msgstr ""
  
! #: c/c-decl.cc:10695
  #, gcc-internal-format
  msgid "return type defaults to %<int%>"
  msgstr ""
  
! #: c/c-decl.cc:10723
  #, gcc-internal-format
  msgid "%q+D defined as variadic function without prototype"
  msgstr ""
  
! #: c/c-decl.cc:10776
  #, gcc-internal-format
  msgid ""
  "ISO C23 does not allow defining parameters for function %qE declared without "
  "parameters"
  msgstr ""
  
! #: c/c-decl.cc:10799
  #, gcc-internal-format
  msgid "no previous prototype for %qD"
  msgstr ""
  
! #: c/c-decl.cc:10808
  #, gcc-internal-format
  msgid "%qD was used with no prototype before its definition"
  msgstr ""
  
! #: c/c-decl.cc:10826
  #, gcc-internal-format
  msgid "%qD was used with no declaration before its definition"
  msgstr ""
  
! #: c/c-decl.cc:10845
  #, gcc-internal-format
  msgid "return type of %qD is not %<int%>"
  msgstr ""
  
! #: c/c-decl.cc:10847
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified return type of %qD"
  msgstr ""
  
! #: c/c-decl.cc:10854
  #, gcc-internal-format
  msgid "%qD is normally a non-static function"
  msgstr ""
  
! #: c/c-decl.cc:10905
  #, gcc-internal-format
  msgid "old-style parameter declarations in prototyped function definition"
  msgstr ""
  
! #: c/c-decl.cc:10921
  #, gcc-internal-format
  msgid "traditional C rejects ISO C style function definitions"
  msgstr ""
  
! #: c/c-decl.cc:10938
  #, gcc-internal-format
  msgid ""
  "ISO C does not support omitting parameter names in function definitions "
  "before C23"
  msgstr ""
  
! #: c/c-decl.cc:10978 c/c-decl.cc:10982
  #, gcc-internal-format
  msgid "old-style function definition"
  msgstr ""
  
! #: c/c-decl.cc:10995
  #, gcc-internal-format
  msgid "parameter name missing from parameter list"
  msgstr ""
  
! #: c/c-decl.cc:11011
  #, gcc-internal-format
  msgid "%qD declared as a non-parameter"
  msgstr ""
  
! #: c/c-decl.cc:11019
  #, gcc-internal-format
  msgid "multiple parameters named %qD"
  msgstr ""
  
! #: c/c-decl.cc:11028
  #, gcc-internal-format
  msgid "parameter %qD declared with void type"
  msgstr ""
  
! #: c/c-decl.cc:11057 c/c-decl.cc:11062
  #, gcc-internal-format
  msgid "type of %qD defaults to %<int%>"
  msgstr ""
  
! #: c/c-decl.cc:11082
  #, gcc-internal-format
  msgid "parameter %qD has incomplete type"
  msgstr ""
  
! #: c/c-decl.cc:11089
  #, gcc-internal-format
  msgid "declaration for parameter %qD but no such parameter"
  msgstr ""
  
! #: c/c-decl.cc:11142
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11153
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11156 c/c-decl.cc:11203 c/c-decl.cc:11217
  #, gcc-internal-format
  msgid "prototype declaration"
  msgstr ""
  
! #: c/c-decl.cc:11195
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11200
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11210
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11215
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11473 cp/decl.cc:19361
  #, gcc-internal-format
  msgid "no return statement in function returning non-void"
  msgstr ""
  
! #: c/c-decl.cc:11492 cp/decl.cc:19432
  #, gcc-internal-format
  msgid "parameter %qD set but not used"
  msgstr ""
  
! #: c/c-decl.cc:11589
  #, gcc-internal-format
  msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
  msgstr ""
  
! #: c/c-decl.cc:11594
  #, gcc-internal-format
  msgid ""
  "use option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to "
  "compile your code"
  msgstr ""
  
! #: c/c-decl.cc:11601
  #, gcc-internal-format
  msgid "ISO C90 does not support %<for%> loop initial declarations"
  msgstr ""
  
! #: c/c-decl.cc:11635
  #, gcc-internal-format
  msgid "declaration of static variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11639
  #, gcc-internal-format
  msgid ""
  "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11646
  #, gcc-internal-format
  msgid "%<struct %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11651
  #, gcc-internal-format
  msgid "%<union %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11657
  #, gcc-internal-format
  msgid "%<enum %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11661
  #, gcc-internal-format
  msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11961
  #, gcc-internal-format
  msgid "incompatible address space qualifiers %qs and %qs"
  msgstr ""
  
! #: c/c-decl.cc:12020 c/c-decl.cc:12027
  #, gcc-internal-format
  msgid "duplicate %qE declaration specifier"
  msgstr ""
  
! #: c/c-decl.cc:12055 c/c-decl.cc:13176
  #, gcc-internal-format
  msgid "multiple storage classes in declaration specifiers"
  msgstr ""
  
! #: c/c-decl.cc:12057
  #, gcc-internal-format
  msgid "%qs used with %<auto%>"
  msgstr ""
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:12062
  #, gcc-internal-format
  msgid "%<auto%> used with %<constexpr%>"
  msgstr ""
  
! #: c/c-decl.cc:12075 c/c-decl.cc:12513 c/c-decl.cc:12971
  #, gcc-internal-format
  msgid "two or more data types in declaration specifiers"
  msgstr ""
  
! #: c/c-decl.cc:12087 cp/parser.cc:35091
  #, gcc-internal-format
  msgid "%<long long long%> is too long for GCC"
  msgstr ""
  
! #: c/c-decl.cc:12100
  #, gcc-internal-format
  msgid "ISO C90 does not support %<long long%>"
  msgstr ""
  
! #: c/c-decl.cc:12353 c/c-parser.cc:12542
  #, gcc-internal-format
  msgid "ISO C90 does not support complex types"
  msgstr ""
  
! #: c/c-decl.cc:12407
  #, gcc-internal-format
  msgid "ISO C does not support saturating types"
  msgstr ""
  
! #: c/c-decl.cc:12486 c/c-decl.cc:13111 c/c-decl.cc:13170
  #, gcc-internal-format
  msgid "duplicate %qE"
  msgstr ""
  
! #: c/c-decl.cc:12503
  #, gcc-internal-format
  msgid "%qs cannot be defined via %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:12507
  #, gcc-internal-format
  msgid "%qs cannot be used here"
  msgstr ""
  
! #: c/c-decl.cc:12560
  #, gcc-internal-format
  msgid "ISO C does not support %<__int%d%> types"
  msgstr ""
  
! #: c/c-decl.cc:12582
  #, gcc-internal-format
  msgid "%<__int%d%> is not supported on this target"
  msgstr ""
  
! #: c/c-decl.cc:12625
  #, gcc-internal-format
  msgid "ISO C90 does not support boolean types"
  msgstr ""
  
! #: c/c-decl.cc:12744
  #, gcc-internal-format
  msgid "ISO C does not support the %<_Float%d%s%> type before C23"
  msgstr ""
  
! #: c/c-decl.cc:12795 cp/parser.cc:20889
  #, gcc-internal-format
  msgid "%<_Float%d%s%> is not supported on this target"
  msgstr ""
  
! #: c/c-decl.cc:12871
  #, gcc-internal-format
  msgid "ISO C does not support decimal floating-point before C23"
  msgstr ""
  
! #: c/c-decl.cc:12895 c/c-decl.cc:13272 c/c-parser.cc:11443
  #, gcc-internal-format
  msgid "fixed-point types not supported for this target"
  msgstr ""
  
! #: c/c-decl.cc:12897
  #, gcc-internal-format
  msgid "ISO C does not support fixed-point types"
  msgstr ""
  
! #: c/c-decl.cc:12926
  #, gcc-internal-format
  msgid "%<_BitInt%> argument is not an integer constant expression"
  msgstr ""
  
! #: c/c-decl.cc:12932
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is not a positive integer constant expression"
  msgstr ""
  
! #: c/c-decl.cc:12939
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd"
  msgstr ""
  
! #: c/c-decl.cc:12987
  #, gcc-internal-format
  msgid "C++ lookup of %qD would return a field, not a type"
  msgstr ""
  
! #: c/c-decl.cc:13000
  #, gcc-internal-format
  msgid "%qE fails to be a typedef or built in type"
  msgstr ""
  
! #: c/c-decl.cc:13055
  #, gcc-internal-format
  msgid "%qE is not at beginning of declaration"
  msgstr ""
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:13076 c/c-decl.cc:13153
  #, gcc-internal-format
  msgid "%qE used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13078
  #, gcc-internal-format
  msgid "%qE used with %<register%>"
  msgstr ""
  
! #: c/c-decl.cc:13080 c/c-decl.cc:13149
  #, gcc-internal-format
  msgid "%qE used with %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:13082 c/c-decl.cc:13119
  #, gcc-internal-format
  msgid "%qE used with %<constexpr%>"
  msgstr ""
  
! #: c/c-decl.cc:13096 c/c-parser.cc:3320 c/c-parser.cc:4691 c/c-parser.cc:10707
  #, gcc-internal-format
  msgid "ISO C99 does not support %qE"
  msgstr ""
  
! #: c/c-decl.cc:13099 c/c-parser.cc:3323 c/c-parser.cc:4694 c/c-parser.cc:10710
  #, gcc-internal-format
  msgid "ISO C90 does not support %qE"
  msgstr ""
  
! #: c/c-decl.cc:13125
  #, gcc-internal-format
  msgid "%<__thread%> before %<extern%>"
  msgstr ""
  
! #: c/c-decl.cc:13134
  #, gcc-internal-format
  msgid "%<__thread%> before %<static%>"
  msgstr ""
  
! #: c/c-decl.cc:13140
  #, gcc-internal-format
  msgid "%<typedef%> used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13147
  #, gcc-internal-format
  msgid "%qE used with %<extern%>"
  msgstr ""
  
! #: c/c-decl.cc:13155
  #, gcc-internal-format
  msgid "%qE used with %qs"
  msgstr ""
  
! #: c/c-decl.cc:13168
  #, gcc-internal-format
  msgid "duplicate %<_Thread_local%> or %<__thread%>"
  msgstr ""
  
! #: c/c-decl.cc:13184
  #, gcc-internal-format
  msgid "%qs used with %qE"
  msgstr ""
  
! #: c/c-decl.cc:13192
  #, gcc-internal-format
  msgid "%<constexpr%> used with %qE"
  msgstr ""
  
! #: c/c-decl.cc:13269
  #, gcc-internal-format
  msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
  msgstr ""
  
! #: c/c-decl.cc:13284
  #, gcc-internal-format
  msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
  msgstr ""
  
! #: c/c-decl.cc:13295
  #, gcc-internal-format
  msgid "ISO C does not support %<auto%> type deduction before C23"
  msgstr ""
  
! #: c/c-decl.cc:13324
  #, gcc-internal-format
  msgid "%<__auto_type%> followed by %<[[]]%> attributes"
  msgstr ""
  
! #: c/c-decl.cc:13350 c/c-decl.cc:13366 c/c-decl.cc:13392
  #, gcc-internal-format
  msgid "ISO C does not support complex integer types"
  msgstr ""
  
! #: c/c-decl.cc:13538
  #, gcc-internal-format
  msgid "%<signed _BitInt%> argument must be at least 2"
  msgstr ""
  
! #: c/c-decl.cc:13547
  #, gcc-internal-format
  msgid "ISO C does not support %<%s_BitInt(%d)%> before C23"
  msgstr ""
  
! #: c/c-decl.cc:13847 cp/semantics.cc:6784
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare reduction%> combiner refers to variable %qD which is "
  "not %<omp_out%> nor %<omp_in%>"
  msgstr ""
  
! #: c/c-decl.cc:13851 cp/semantics.cc:6788
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare reduction%> initializer refers to variable %qD which "
  "is not %<omp_priv%> nor %<omp_orig%>"
  msgstr ""
  
! #: c/c-decl.cc:13975
  #, gcc-internal-format
  msgid ""
  "ISO C does not support %qs statement with an identifier operand before C2Y"
  msgstr ""
  
! #: c/c-decl.cc:14027
  #, gcc-internal-format
  msgid ""
  "%<break%> statement operand %qE does not refer to a named loop or "
  "%<switch%>; did you mean %qs?"
  msgstr ""
  
! #: c/c-decl.cc:14031
  #, gcc-internal-format
  msgid ""
  "%<continue%> statement operand %qE does not refer to a named loop; did you "
  "mean %qs?"
  msgstr ""
  
! #: c/c-decl.cc:14036
  #, gcc-internal-format
  msgid ""
  "%<break%> statement operand %qE does not refer to a named loop or %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14039
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop"
  msgstr ""
  
! #: c/c-decl.cc:14045
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE refers to a named %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14047 c/c-decl.cc:14064
  #, gcc-internal-format
  msgid "%<switch%> name defined here"
  msgstr ""
  
! #: c/c-decl.cc:14055
  #, gcc-internal-format
  msgid "%qs statement operand %qE refers to a loop outside of its body"
  msgstr ""
  
! #: c/c-decl.cc:14057
  #, gcc-internal-format
  msgid "loop name defined here"
  msgstr ""
  
! #: c/c-decl.cc:14061
  #, gcc-internal-format
  msgid ""
  "%<break%> statement operand %qE refers to a %<switch%> outside of its body"
--- 49798,50422 ----
  "flexible array member in a struct with no named members is a GCC extension"
  msgstr ""
  
! #: c/c-decl.cc:9687
  #, gcc-internal-format
  msgid ""
  "structure containing a flexible array member is not at the end of another "
  "structure"
  msgstr ""
  
! #: c/c-decl.cc:9714
  #, gcc-internal-format
  msgid "type %qT is too large"
  msgstr ""
  
! #: c/c-decl.cc:9778
  #, gcc-internal-format
  msgid "type punning toggles scalar storage order"
  msgstr ""
  
! #: c/c-decl.cc:9845
  #, gcc-internal-format
  msgid "union cannot be made transparent"
  msgstr ""
  
! #: c/c-decl.cc:9859
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT with variably modified type"
  msgstr ""
  
! #: c/c-decl.cc:9866
  #, gcc-internal-format
  msgid "redefinition of struct or union %qT"
  msgstr ""
  
! #: c/c-decl.cc:10046
  #, gcc-internal-format
  msgid "nested redefinition of %<enum %E%>"
  msgstr ""
  
! #: c/c-decl.cc:10094
  #, gcc-internal-format
  msgid "redeclaration of %<enum %E%>"
  msgstr ""
  
! #: c/c-decl.cc:10106
  #, gcc-internal-format
  msgid "%<enum%> declared with but defined without fixed underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10193 cp/decl.cc:17836 m2/gm2-gcc/m2type.cc:2088
  #, gcc-internal-format
  msgid "specified mode too small for enumerated values"
  msgstr ""
  
! #: c/c-decl.cc:10212
  #, gcc-internal-format
  msgid "enumeration values exceed range of largest integer"
  msgstr ""
  
! #: c/c-decl.cc:10221
  #, gcc-internal-format
  msgid "enumeration values exceed range of %qs"
  msgstr ""
  
! #: c/c-decl.cc:10334
  #, gcc-internal-format
  msgid "conflicting redefinition of enum %qT"
  msgstr ""
  
! #: c/c-decl.cc:10367 c/c-decl.cc:10383
  #, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant"
  msgstr ""
  
! #: c/c-decl.cc:10378
  #, gcc-internal-format
  msgid "enumerator value for %qE is not an integer constant expression"
  msgstr ""
  
! #: c/c-decl.cc:10402
  #, gcc-internal-format
  msgid "overflow in enumeration values"
  msgstr ""
  
! #: c/c-decl.cc:10409
  #, gcc-internal-format
  msgid "enumerator value outside the range of underlying type"
  msgstr ""
  
! #: c/c-decl.cc:10426
  #, gcc-internal-format
  msgid "value of redeclared enumerator outside the range of %qT"
  msgstr ""
  
! #: c/c-decl.cc:10454
  #, gcc-internal-format
  msgid "enumerator value outside the range of %qs"
  msgstr ""
  
! #: c/c-decl.cc:10460
  #, gcc-internal-format
  msgid "ISO C restricts enumerator values to range of %<int%> before C23"
  msgstr ""
  
! #: c/c-decl.cc:10668 cp/decl.cc:6051 cp/decl.cc:18436
  #, gcc-internal-format
  msgid "inline function %qD given attribute %qs"
  msgstr ""
  
! #: c/c-decl.cc:10687
  #, gcc-internal-format
  msgid "return type is an incomplete type"
  msgstr ""
  
! #: c/c-decl.cc:10699
  #, gcc-internal-format
  msgid "return type defaults to %<int%>"
  msgstr ""
  
! #: c/c-decl.cc:10727
  #, gcc-internal-format
  msgid "%q+D defined as variadic function without prototype"
  msgstr ""
  
! #: c/c-decl.cc:10780
  #, gcc-internal-format
  msgid ""
  "ISO C23 does not allow defining parameters for function %qE declared without "
  "parameters"
  msgstr ""
  
! #: c/c-decl.cc:10803
  #, gcc-internal-format
  msgid "no previous prototype for %qD"
  msgstr ""
  
! #: c/c-decl.cc:10812
  #, gcc-internal-format
  msgid "%qD was used with no prototype before its definition"
  msgstr ""
  
! #: c/c-decl.cc:10830
  #, gcc-internal-format
  msgid "%qD was used with no declaration before its definition"
  msgstr ""
  
! #: c/c-decl.cc:10849
  #, gcc-internal-format
  msgid "return type of %qD is not %<int%>"
  msgstr ""
  
! #: c/c-decl.cc:10851
  #, gcc-internal-format
  msgid "%<_Atomic%>-qualified return type of %qD"
  msgstr ""
  
! #: c/c-decl.cc:10858
  #, gcc-internal-format
  msgid "%qD is normally a non-static function"
  msgstr ""
  
! #: c/c-decl.cc:10909
  #, gcc-internal-format
  msgid "old-style parameter declarations in prototyped function definition"
  msgstr ""
  
! #: c/c-decl.cc:10925
  #, gcc-internal-format
  msgid "traditional C rejects ISO C style function definitions"
  msgstr ""
  
! #: c/c-decl.cc:10942
  #, gcc-internal-format
  msgid ""
  "ISO C does not support omitting parameter names in function definitions "
  "before C23"
  msgstr ""
  
! #: c/c-decl.cc:10982 c/c-decl.cc:10986
  #, gcc-internal-format
  msgid "old-style function definition"
  msgstr ""
  
! #: c/c-decl.cc:10999
  #, gcc-internal-format
  msgid "parameter name missing from parameter list"
  msgstr ""
  
! #: c/c-decl.cc:11015
  #, gcc-internal-format
  msgid "%qD declared as a non-parameter"
  msgstr ""
  
! #: c/c-decl.cc:11023
  #, gcc-internal-format
  msgid "multiple parameters named %qD"
  msgstr ""
  
! #: c/c-decl.cc:11032
  #, gcc-internal-format
  msgid "parameter %qD declared with void type"
  msgstr ""
  
! #: c/c-decl.cc:11061 c/c-decl.cc:11066
  #, gcc-internal-format
  msgid "type of %qD defaults to %<int%>"
  msgstr ""
  
! #: c/c-decl.cc:11086
  #, gcc-internal-format
  msgid "parameter %qD has incomplete type"
  msgstr ""
  
! #: c/c-decl.cc:11093
  #, gcc-internal-format
  msgid "declaration for parameter %qD but no such parameter"
  msgstr ""
  
! #: c/c-decl.cc:11146
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11157
  #, gcc-internal-format
  msgid "number of arguments doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11160 c/c-decl.cc:11207 c/c-decl.cc:11221
  #, gcc-internal-format
  msgid "prototype declaration"
  msgstr ""
  
! #: c/c-decl.cc:11199
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11204
  #, gcc-internal-format
  msgid "promoted argument %qD doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11214
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match built-in prototype"
  msgstr ""
  
! #: c/c-decl.cc:11219
  #, gcc-internal-format
  msgid "argument %qD doesn%'t match prototype"
  msgstr ""
  
! #: c/c-decl.cc:11477 cp/decl.cc:19359
  #, gcc-internal-format
  msgid "no return statement in function returning non-void"
  msgstr ""
  
! #: c/c-decl.cc:11496 cp/decl.cc:19430
  #, gcc-internal-format
  msgid "parameter %qD set but not used"
  msgstr ""
  
! #: c/c-decl.cc:11593
  #, gcc-internal-format
  msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
  msgstr ""
  
! #: c/c-decl.cc:11598
  #, gcc-internal-format
  msgid ""
  "use option %<-std=c99%>, %<-std=gnu99%>, %<-std=c11%> or %<-std=gnu11%> to "
  "compile your code"
  msgstr ""
  
! #: c/c-decl.cc:11605
  #, gcc-internal-format
  msgid "ISO C90 does not support %<for%> loop initial declarations"
  msgstr ""
  
! #: c/c-decl.cc:11639
  #, gcc-internal-format
  msgid "declaration of static variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11643
  #, gcc-internal-format
  msgid ""
  "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11650
  #, gcc-internal-format
  msgid "%<struct %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11655
  #, gcc-internal-format
  msgid "%<union %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11661
  #, gcc-internal-format
  msgid "%<enum %E%> declared in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11665
  #, gcc-internal-format
  msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
  msgstr ""
  
! #: c/c-decl.cc:11965
  #, gcc-internal-format
  msgid "incompatible address space qualifiers %qs and %qs"
  msgstr ""
  
! #: c/c-decl.cc:12024 c/c-decl.cc:12031
  #, gcc-internal-format
  msgid "duplicate %qE declaration specifier"
  msgstr ""
  
! #: c/c-decl.cc:12059 c/c-decl.cc:13180
  #, gcc-internal-format
  msgid "multiple storage classes in declaration specifiers"
  msgstr ""
  
! #: c/c-decl.cc:12061
  #, gcc-internal-format
  msgid "%qs used with %<auto%>"
  msgstr ""
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:12066
  #, gcc-internal-format
  msgid "%<auto%> used with %<constexpr%>"
  msgstr ""
  
! #: c/c-decl.cc:12079 c/c-decl.cc:12517 c/c-decl.cc:12975
  #, gcc-internal-format
  msgid "two or more data types in declaration specifiers"
  msgstr ""
  
! #: c/c-decl.cc:12091 cp/parser.cc:35150
  #, gcc-internal-format
  msgid "%<long long long%> is too long for GCC"
  msgstr ""
  
! #: c/c-decl.cc:12104
  #, gcc-internal-format
  msgid "ISO C90 does not support %<long long%>"
  msgstr ""
  
! #: c/c-decl.cc:12357 c/c-parser.cc:12587
  #, gcc-internal-format
  msgid "ISO C90 does not support complex types"
  msgstr ""
  
! #: c/c-decl.cc:12411
  #, gcc-internal-format
  msgid "ISO C does not support saturating types"
  msgstr ""
  
! #: c/c-decl.cc:12490 c/c-decl.cc:13115 c/c-decl.cc:13174
  #, gcc-internal-format
  msgid "duplicate %qE"
  msgstr ""
  
! #: c/c-decl.cc:12507
  #, gcc-internal-format
  msgid "%qs cannot be defined via %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:12511
  #, gcc-internal-format
  msgid "%qs cannot be used here"
  msgstr ""
  
! #: c/c-decl.cc:12564
  #, gcc-internal-format
  msgid "ISO C does not support %<__int%d%> types"
  msgstr ""
  
! #: c/c-decl.cc:12586
  #, gcc-internal-format
  msgid "%<__int%d%> is not supported on this target"
  msgstr ""
  
! #: c/c-decl.cc:12629
  #, gcc-internal-format
  msgid "ISO C90 does not support boolean types"
  msgstr ""
  
! #: c/c-decl.cc:12748
  #, gcc-internal-format
  msgid "ISO C does not support the %<_Float%d%s%> type before C23"
  msgstr ""
  
! #: c/c-decl.cc:12799 cp/parser.cc:20893
  #, gcc-internal-format
  msgid "%<_Float%d%s%> is not supported on this target"
  msgstr ""
  
! #: c/c-decl.cc:12875
  #, gcc-internal-format
  msgid "ISO C does not support decimal floating-point before C23"
  msgstr ""
  
! #: c/c-decl.cc:12899 c/c-decl.cc:13276 c/c-parser.cc:11488
  #, gcc-internal-format
  msgid "fixed-point types not supported for this target"
  msgstr ""
  
! #: c/c-decl.cc:12901
  #, gcc-internal-format
  msgid "ISO C does not support fixed-point types"
  msgstr ""
  
! #: c/c-decl.cc:12930
  #, gcc-internal-format
  msgid "%<_BitInt%> argument is not an integer constant expression"
  msgstr ""
  
! #: c/c-decl.cc:12936
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is not a positive integer constant expression"
  msgstr ""
  
! #: c/c-decl.cc:12943
  #, gcc-internal-format
  msgid "%<_BitInt%> argument %qE is larger than %<BITINT_MAXWIDTH%> %qd"
  msgstr ""
  
! #: c/c-decl.cc:12991
  #, gcc-internal-format
  msgid "C++ lookup of %qD would return a field, not a type"
  msgstr ""
  
! #: c/c-decl.cc:13004
  #, gcc-internal-format
  msgid "%qE fails to be a typedef or built in type"
  msgstr ""
  
! #: c/c-decl.cc:13059
  #, gcc-internal-format
  msgid "%qE is not at beginning of declaration"
  msgstr ""
  
  #. auto may only be used with another storage class specifier,
  #. such as constexpr, if the type is inferred.
! #: c/c-decl.cc:13080 c/c-decl.cc:13157
  #, gcc-internal-format
  msgid "%qE used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13082
  #, gcc-internal-format
  msgid "%qE used with %<register%>"
  msgstr ""
  
! #: c/c-decl.cc:13084 c/c-decl.cc:13153
  #, gcc-internal-format
  msgid "%qE used with %<typedef%>"
  msgstr ""
  
! #: c/c-decl.cc:13086 c/c-decl.cc:13123
  #, gcc-internal-format
  msgid "%qE used with %<constexpr%>"
  msgstr ""
  
! #: c/c-decl.cc:13100 c/c-parser.cc:3365 c/c-parser.cc:4736 c/c-parser.cc:10752
  #, gcc-internal-format
  msgid "ISO C99 does not support %qE"
  msgstr ""
  
! #: c/c-decl.cc:13103 c/c-parser.cc:3368 c/c-parser.cc:4739 c/c-parser.cc:10755
  #, gcc-internal-format
  msgid "ISO C90 does not support %qE"
  msgstr ""
  
! #: c/c-decl.cc:13129
  #, gcc-internal-format
  msgid "%<__thread%> before %<extern%>"
  msgstr ""
  
! #: c/c-decl.cc:13138
  #, gcc-internal-format
  msgid "%<__thread%> before %<static%>"
  msgstr ""
  
! #: c/c-decl.cc:13144
  #, gcc-internal-format
  msgid "%<typedef%> used with %<auto%>"
  msgstr ""
  
! #: c/c-decl.cc:13151
  #, gcc-internal-format
  msgid "%qE used with %<extern%>"
  msgstr ""
  
! #: c/c-decl.cc:13159
  #, gcc-internal-format
  msgid "%qE used with %qs"
  msgstr ""
  
! #: c/c-decl.cc:13172
  #, gcc-internal-format
  msgid "duplicate %<_Thread_local%> or %<__thread%>"
  msgstr ""
  
! #: c/c-decl.cc:13188
  #, gcc-internal-format
  msgid "%qs used with %qE"
  msgstr ""
  
! #: c/c-decl.cc:13196
  #, gcc-internal-format
  msgid "%<constexpr%> used with %qE"
  msgstr ""
  
! #: c/c-decl.cc:13273
  #, gcc-internal-format
  msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
  msgstr ""
  
! #: c/c-decl.cc:13288
  #, gcc-internal-format
  msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
  msgstr ""
  
! #: c/c-decl.cc:13299
  #, gcc-internal-format
  msgid "ISO C does not support %<auto%> type deduction before C23"
  msgstr ""
  
! #: c/c-decl.cc:13328
  #, gcc-internal-format
  msgid "%<__auto_type%> followed by %<[[]]%> attributes"
  msgstr ""
  
! #: c/c-decl.cc:13354 c/c-decl.cc:13370 c/c-decl.cc:13396
  #, gcc-internal-format
  msgid "ISO C does not support complex integer types"
  msgstr ""
  
! #: c/c-decl.cc:13542
  #, gcc-internal-format
  msgid "%<signed _BitInt%> argument must be at least 2"
  msgstr ""
  
! #: c/c-decl.cc:13551
  #, gcc-internal-format
  msgid "ISO C does not support %<%s_BitInt(%d)%> before C23"
  msgstr ""
  
! #: c/c-decl.cc:13851 cp/semantics.cc:6784
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare reduction%> combiner refers to variable %qD which is "
  "not %<omp_out%> nor %<omp_in%>"
  msgstr ""
  
! #: c/c-decl.cc:13855 cp/semantics.cc:6788
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare reduction%> initializer refers to variable %qD which "
  "is not %<omp_priv%> nor %<omp_orig%>"
  msgstr ""
  
! #: c/c-decl.cc:13979
  #, gcc-internal-format
  msgid ""
  "ISO C does not support %qs statement with an identifier operand before C2Y"
  msgstr ""
  
! #: c/c-decl.cc:14031
  #, gcc-internal-format
  msgid ""
  "%<break%> statement operand %qE does not refer to a named loop or "
  "%<switch%>; did you mean %qs?"
  msgstr ""
  
! #: c/c-decl.cc:14035
  #, gcc-internal-format
  msgid ""
  "%<continue%> statement operand %qE does not refer to a named loop; did you "
  "mean %qs?"
  msgstr ""
  
! #: c/c-decl.cc:14040
  #, gcc-internal-format
  msgid ""
  "%<break%> statement operand %qE does not refer to a named loop or %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14043
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE does not refer to a named loop"
  msgstr ""
  
! #: c/c-decl.cc:14049
  #, gcc-internal-format
  msgid "%<continue%> statement operand %qE refers to a named %<switch%>"
  msgstr ""
  
! #: c/c-decl.cc:14051 c/c-decl.cc:14068
  #, gcc-internal-format
  msgid "%<switch%> name defined here"
  msgstr ""
  
! #: c/c-decl.cc:14059
  #, gcc-internal-format
  msgid "%qs statement operand %qE refers to a loop outside of its body"
  msgstr ""
  
! #: c/c-decl.cc:14061
  #, gcc-internal-format
  msgid "loop name defined here"
  msgstr ""
  
! #: c/c-decl.cc:14065
  #, gcc-internal-format
  msgid ""
  "%<break%> statement operand %qE refers to a %<switch%> outside of its body"
*************** msgstr ""
*** 50420,50456 ****
  msgid "%qs is a keyword with %qs onwards"
  msgstr ""
  
! #: c/c-fold.cc:392 c/c-typeck.cc:14134 cp/typeck.cc:5803
  #, gcc-internal-format
  msgid "left shift of negative value"
  msgstr ""
  
! #: c/c-fold.cc:405 c/c-typeck.cc:14143 cp/typeck.cc:5811
  #, gcc-internal-format
  msgid "left shift count is negative"
  msgstr ""
  
! #: c/c-fold.cc:406 c/c-typeck.cc:14070 cp/typeck.cc:5750
  #, gcc-internal-format
  msgid "right shift count is negative"
  msgstr ""
  
! #: c/c-fold.cc:416 c/c-typeck.cc:14162 cp/typeck.cc:5819
  #, gcc-internal-format
  msgid "left shift count >= width of type"
  msgstr ""
  
! #: c/c-fold.cc:417 c/c-typeck.cc:14094 cp/typeck.cc:5761
  #, gcc-internal-format
  msgid "right shift count >= width of type"
  msgstr ""
  
! #: c/c-fold.cc:424 c/c-typeck.cc:14154
  #, gcc-internal-format
  msgid "left shift count >= width of vector element"
  msgstr ""
  
! #: c/c-fold.cc:425 c/c-typeck.cc:14081
  #, gcc-internal-format
  msgid "right shift count >= width of vector element"
  msgstr ""
--- 50427,50463 ----
  msgid "%qs is a keyword with %qs onwards"
  msgstr ""
  
! #: c/c-fold.cc:392 c/c-typeck.cc:14151 cp/typeck.cc:5919
  #, gcc-internal-format
  msgid "left shift of negative value"
  msgstr ""
  
! #: c/c-fold.cc:405 c/c-typeck.cc:14160 cp/typeck.cc:5927
  #, gcc-internal-format
  msgid "left shift count is negative"
  msgstr ""
  
! #: c/c-fold.cc:406 c/c-typeck.cc:14087 cp/typeck.cc:5866
  #, gcc-internal-format
  msgid "right shift count is negative"
  msgstr ""
  
! #: c/c-fold.cc:416 c/c-typeck.cc:14179 cp/typeck.cc:5935
  #, gcc-internal-format
  msgid "left shift count >= width of type"
  msgstr ""
  
! #: c/c-fold.cc:417 c/c-typeck.cc:14111 cp/typeck.cc:5877
  #, gcc-internal-format
  msgid "right shift count >= width of type"
  msgstr ""
  
! #: c/c-fold.cc:424 c/c-typeck.cc:14171
  #, gcc-internal-format
  msgid "left shift count >= width of vector element"
  msgstr ""
  
! #: c/c-fold.cc:425 c/c-typeck.cc:14098
  #, gcc-internal-format
  msgid "right shift count >= width of vector element"
  msgstr ""
*************** msgstr ""
*** 50470,50601 ****
  msgid "to match this %qs"
  msgstr ""
  
! #: c/c-parser.cc:1431 cp/parser.cc:35328
  #, gcc-internal-format
  msgid "expected end of line"
  msgstr ""
  
! #: c/c-parser.cc:1950
  #, gcc-internal-format
  msgid "ISO C forbids an empty translation unit"
  msgstr ""
  
! #: c/c-parser.cc:1976 c/c-parser.cc:1985 c/c-parser.cc:27770 cp/parser.cc:51250
  #: cp/semantics.cc:4007 cp/semantics.cc:4016
  #, gcc-internal-format
  msgid "%qs without corresponding %qs"
  msgstr ""
  
! #: c/c-parser.cc:2081 c/c-parser.cc:14533
  #, gcc-internal-format
  msgid "ISO C does not allow extra %<;%> outside of a function"
  msgstr ""
  
! #: c/c-parser.cc:2165
  #, gcc-internal-format
  msgid "%<assume%> attribute at top level"
  msgstr ""
  
! #: c/c-parser.cc:2364
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<struct%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2372
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<union%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2380
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<enum%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2393 c/c-parser.cc:3588 c/c-parser.cc:5295
  #, gcc-internal-format
  msgid "unknown type name %qE; did you mean %qs?"
  msgstr ""
  
! #: c/c-parser.cc:2397 c/c-parser.cc:3592 c/c-parser.cc:5299
  #, gcc-internal-format
  msgid "unknown type name %qE"
  msgstr ""
  
! #: c/c-parser.cc:2424 c/c-parser.cc:15911 c/c-parser.cc:24927
! #: c/c-parser.cc:25670 c/c-parser.cc:26256 cp/parser.cc:48093
! #: cp/parser.cc:53871
  #, gcc-internal-format
  msgid "expected declaration specifiers"
  msgstr ""
  
! #: c/c-parser.cc:2448
  #, gcc-internal-format
  msgid "%qT declared in underspecified object declaration"
  msgstr ""
  
! #: c/c-parser.cc:2453
  #, gcc-internal-format
  msgid "%qT defined in underspecified object declaration"
  msgstr ""
  
! #: c/c-parser.cc:2489
  #, gcc-internal-format
  msgid "%qs in empty declaration"
  msgstr ""
  
! #: c/c-parser.cc:2503
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute at top level"
  msgstr ""
  
! #: c/c-parser.cc:2541 c/c-parser.cc:8296
  #, gcc-internal-format
  msgid ""
  "attribute %<musttail%> mixed with other attributes on %<return%> statement"
  msgstr ""
  
! #: c/c-parser.cc:2557 c/c-parser.cc:4483
  #, gcc-internal-format
  msgid "expected %<;%>, identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:2575 cp/parser.cc:37586 cp/parser.cc:37658
  #, gcc-internal-format
  msgid "prefix attributes are ignored for methods"
  msgstr ""
  
! #: c/c-parser.cc:2610
  #, gcc-internal-format
  msgid "prefix attributes are ignored for implementations"
  msgstr ""
  
! #: c/c-parser.cc:2631
  #, gcc-internal-format
  msgid "unexpected attribute"
  msgstr ""
  
! #: c/c-parser.cc:2641 c/c-parser.cc:8316 cp/parser.cc:13359 cp/parser.cc:13620
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute not followed by %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:2644 c/c-parser.cc:8283 cp/cp-gimplify.cc:3684
  #, gcc-internal-format
  msgid "%<assume%> attribute not followed by %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:2694
  #, gcc-internal-format
  msgid "%<__auto_type%> requires a plain identifier as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2707
  #, gcc-internal-format
  msgid ""
  "%<auto%> requires a plain identifier, possibly with attributes, as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2733
  #, gcc-internal-format
  msgid "data definition has no type or storage class"
  msgstr ""
--- 50477,50608 ----
  msgid "to match this %qs"
  msgstr ""
  
! #: c/c-parser.cc:1476 cp/parser.cc:35387
  #, gcc-internal-format
  msgid "expected end of line"
  msgstr ""
  
! #: c/c-parser.cc:1995
  #, gcc-internal-format
  msgid "ISO C forbids an empty translation unit"
  msgstr ""
  
! #: c/c-parser.cc:2021 c/c-parser.cc:2030 c/c-parser.cc:27816 cp/parser.cc:51309
  #: cp/semantics.cc:4007 cp/semantics.cc:4016
  #, gcc-internal-format
  msgid "%qs without corresponding %qs"
  msgstr ""
  
! #: c/c-parser.cc:2126 c/c-parser.cc:14578
  #, gcc-internal-format
  msgid "ISO C does not allow extra %<;%> outside of a function"
  msgstr ""
  
! #: c/c-parser.cc:2210
  #, gcc-internal-format
  msgid "%<assume%> attribute at top level"
  msgstr ""
  
! #: c/c-parser.cc:2409
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<struct%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2417
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<union%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2425
  #, gcc-internal-format
  msgid "unknown type name %qE; use %<enum%> keyword to refer to the type"
  msgstr ""
  
! #: c/c-parser.cc:2438 c/c-parser.cc:3633 c/c-parser.cc:5340
  #, gcc-internal-format
  msgid "unknown type name %qE; did you mean %qs?"
  msgstr ""
  
! #: c/c-parser.cc:2442 c/c-parser.cc:3637 c/c-parser.cc:5344
  #, gcc-internal-format
  msgid "unknown type name %qE"
  msgstr ""
  
! #: c/c-parser.cc:2469 c/c-parser.cc:15956 c/c-parser.cc:24972
! #: c/c-parser.cc:25715 c/c-parser.cc:26301 cp/parser.cc:48152
! #: cp/parser.cc:53924
  #, gcc-internal-format
  msgid "expected declaration specifiers"
  msgstr ""
  
! #: c/c-parser.cc:2493
  #, gcc-internal-format
  msgid "%qT declared in underspecified object declaration"
  msgstr ""
  
! #: c/c-parser.cc:2498
  #, gcc-internal-format
  msgid "%qT defined in underspecified object declaration"
  msgstr ""
  
! #: c/c-parser.cc:2534
  #, gcc-internal-format
  msgid "%qs in empty declaration"
  msgstr ""
  
! #: c/c-parser.cc:2548
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute at top level"
  msgstr ""
  
! #: c/c-parser.cc:2586 c/c-parser.cc:8341
  #, gcc-internal-format
  msgid ""
  "attribute %<musttail%> mixed with other attributes on %<return%> statement"
  msgstr ""
  
! #: c/c-parser.cc:2602 c/c-parser.cc:4528
  #, gcc-internal-format
  msgid "expected %<;%>, identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:2620 cp/parser.cc:37645 cp/parser.cc:37717
  #, gcc-internal-format
  msgid "prefix attributes are ignored for methods"
  msgstr ""
  
! #: c/c-parser.cc:2655
  #, gcc-internal-format
  msgid "prefix attributes are ignored for implementations"
  msgstr ""
  
! #: c/c-parser.cc:2676
  #, gcc-internal-format
  msgid "unexpected attribute"
  msgstr ""
  
! #: c/c-parser.cc:2686 c/c-parser.cc:8361 cp/parser.cc:13361 cp/parser.cc:13622
  #, gcc-internal-format
  msgid "%<fallthrough%> attribute not followed by %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:2689 c/c-parser.cc:8328 cp/cp-gimplify.cc:3689
  #, gcc-internal-format
  msgid "%<assume%> attribute not followed by %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:2739
  #, gcc-internal-format
  msgid "%<__auto_type%> requires a plain identifier as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2752
  #, gcc-internal-format
  msgid ""
  "%<auto%> requires a plain identifier, possibly with attributes, as declarator"
  msgstr ""
  
! #: c/c-parser.cc:2778
  #, gcc-internal-format
  msgid "data definition has no type or storage class"
  msgstr ""
*************** msgstr ""
*** 50603,50635 ****
  #. This means there is an attribute specifier after
  #. the declarator in a function definition.  Provide
  #. some more information for the user.
! #: c/c-parser.cc:2748
  #, gcc-internal-format
  msgid ""
  "attributes should be specified before the declarator in a function definition"
  msgstr ""
  
! #: c/c-parser.cc:2787
  #, gcc-internal-format
  msgid "%<__auto_type%> used with a bit-field initializer"
  msgstr ""
  
! #: c/c-parser.cc:2899 c/c-parser.cc:3044
  #, gcc-internal-format
  msgid "%qs requires an initialized data declaration"
  msgstr ""
  
! #: c/c-parser.cc:2999
  #, gcc-internal-format
  msgid "%qs may only be used with a single declarator"
  msgstr ""
  
! #: c/c-parser.cc:3031 cp/parser.cc:16635
  #, gcc-internal-format
  msgid "expected %<,%> or %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3036
  #, gcc-internal-format
  msgid "declaration in condition can only declare a single object"
  msgstr ""
--- 50610,50642 ----
  #. This means there is an attribute specifier after
  #. the declarator in a function definition.  Provide
  #. some more information for the user.
! #: c/c-parser.cc:2793
  #, gcc-internal-format
  msgid ""
  "attributes should be specified before the declarator in a function definition"
  msgstr ""
  
! #: c/c-parser.cc:2832
  #, gcc-internal-format
  msgid "%<__auto_type%> used with a bit-field initializer"
  msgstr ""
  
! #: c/c-parser.cc:2944 c/c-parser.cc:3089
  #, gcc-internal-format
  msgid "%qs requires an initialized data declaration"
  msgstr ""
  
! #: c/c-parser.cc:3044
  #, gcc-internal-format
  msgid "%qs may only be used with a single declarator"
  msgstr ""
  
! #: c/c-parser.cc:3076 cp/parser.cc:16639
  #, gcc-internal-format
  msgid "expected %<,%> or %<;%>"
  msgstr ""
  
! #: c/c-parser.cc:3081
  #, gcc-internal-format
  msgid "declaration in condition can only declare a single object"
  msgstr ""
*************** msgstr ""
*** 50637,50952 ****
  #. This can appear in many cases looking nothing like a
  #. function definition, so we don't give a more specific
  #. error suggesting there was one.
! #: c/c-parser.cc:3055 c/c-parser.cc:3097
  #, gcc-internal-format
  msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:3064
  #, gcc-internal-format
  msgid "ISO C forbids nested functions"
  msgstr ""
  
! #: c/c-parser.cc:3346 c/c-parser.cc:9636 c/c-parser.cc:15984
! #: c/c-parser.cc:20710 cp/parser.cc:42983
  #, gcc-internal-format
  msgid "expected string literal"
  msgstr ""
  
! #: c/c-parser.cc:3355
  #, gcc-internal-format
  msgid "ISO C11 does not support omitting the string in %qE"
  msgstr ""
  
! #: c/c-parser.cc:3361
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer"
  msgstr ""
  
! #: c/c-parser.cc:3370
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer constant expression"
  msgstr ""
  
! #: c/c-parser.cc:3375
  #, gcc-internal-format
  msgid "expression in static assertion is not constant"
  msgstr ""
  
! #: c/c-parser.cc:3382
  #, gcc-internal-format
  msgid "static assertion failed: %E"
  msgstr ""
  
! #: c/c-parser.cc:3384 cp/semantics.cc:12469
  #, gcc-internal-format
  msgid "static assertion failed"
  msgstr ""
  
! #: c/c-parser.cc:3764
  #, gcc-internal-format
  msgid "%<_Atomic%> in Objective-C"
  msgstr ""
  
! #: c/c-parser.cc:3767
  #, gcc-internal-format
  msgid "ISO C99 does not support the %<_Atomic%> qualifier"
  msgstr ""
  
! #: c/c-parser.cc:3770
  #, gcc-internal-format
  msgid "ISO C90 does not support the %<_Atomic%> qualifier"
  msgstr ""
  
! #: c/c-parser.cc:3798
  #, gcc-internal-format
  msgid "%<_Atomic%> applied to a qualified type"
  msgstr ""
  
! #: c/c-parser.cc:3828
  #, gcc-internal-format
  msgid "%<__GIMPLE%> only valid with %<-fgimple%>"
  msgstr ""
  
! #: c/c-parser.cc:3865
  #, gcc-internal-format
  msgid "empty enum is invalid"
  msgstr ""
  
! #: c/c-parser.cc:3876
  #, gcc-internal-format
  msgid "cannot use keyword %qs as enumeration constant"
  msgstr ""
  
  #. Otherwise, a more generic error message.
! #: c/c-parser.cc:3888 c/c-parser.cc:5120 c/c-parser.cc:5978 c/c-parser.cc:5995
! #: c/c-parser.cc:6580 c/c-parser.cc:7489 c/c-parser.cc:9503 c/c-parser.cc:9586
! #: c/c-parser.cc:10566 c/c-parser.cc:10881 c/c-parser.cc:10890
! #: c/c-parser.cc:11503 c/c-parser.cc:11791 c/c-parser.cc:11822
! #: c/c-parser.cc:13189 c/c-parser.cc:13763 c/c-parser.cc:13801
! #: c/c-parser.cc:14115 c/c-parser.cc:14166 c/c-parser.cc:14326
! #: c/c-parser.cc:14356 c/c-parser.cc:14364 c/c-parser.cc:14393
! #: c/c-parser.cc:14406 c/c-parser.cc:14712 c/c-parser.cc:14836
! #: c/c-parser.cc:15421 c/c-parser.cc:15474 c/c-parser.cc:15490
! #: c/c-parser.cc:15536 c/c-parser.cc:16557 c/c-parser.cc:16602
! #: c/c-parser.cc:19478 c/c-parser.cc:19615 c/c-parser.cc:20481
! #: c/c-parser.cc:23540 c/c-parser.cc:26738 c/c-parser.cc:26924
! #: c/gimple-parser.cc:1981 c/gimple-parser.cc:2028 cp/parser.cc:9871
! #: cp/parser.cc:35331 cp/parser.cc:38563 cp/parser.cc:41808 cp/parser.cc:42000
! #: cp/parser.cc:49790 cp/parser.cc:53098
  #, gcc-internal-format
  msgid "expected identifier"
  msgstr ""
  
! #: c/c-parser.cc:3961
  #, gcc-internal-format
  msgid "ISO C does not support specifying %<enum%> underlying types before C23"
  msgstr ""
  
! #: c/c-parser.cc:3970
  #, gcc-internal-format
  msgid "%<enum%> declared both with and without fixed underlying type"
  msgstr ""
  
! #: c/c-parser.cc:3993
  #, gcc-internal-format
  msgid "no %<enum%> underlying type specified"
  msgstr ""
  
! #: c/c-parser.cc:3997
  #, gcc-internal-format
  msgid "invalid %<enum%> underlying type"
  msgstr ""
  
! #: c/c-parser.cc:4027
  #, gcc-internal-format
  msgid "%<enum%> underlying type incompatible with previous declaration"
  msgstr ""
  
! #: c/c-parser.cc:4103 cp/parser.cc:22433
  #, gcc-internal-format
  msgid "comma at end of enumerator list"
  msgstr ""
  
! #: c/c-parser.cc:4109 c/c-parser.cc:20758 cp/parser.cc:43046
  #: go/gofrontend/embed.cc:424
  #, gcc-internal-format
  msgid "expected %<,%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4152
  #, gcc-internal-format
  msgid "ISO C forbids forward references to %<enum%> types"
  msgstr ""
  
! #: c/c-parser.cc:4277
  #, gcc-internal-format
  msgid "expected class name"
  msgstr ""
  
! #: c/c-parser.cc:4299
  #, gcc-internal-format
  msgid "extra semicolon in struct or union specified"
  msgstr ""
  
! #: c/c-parser.cc:4328
  #, gcc-internal-format
  msgid "no semicolon at end of struct or union"
  msgstr ""
  
! #: c/c-parser.cc:4445 c/c-parser.cc:6320
  #, gcc-internal-format
  msgid "expected specifier-qualifier-list"
  msgstr ""
  
! #: c/c-parser.cc:4456
  #, gcc-internal-format
  msgid "ISO C forbids member declarations with no members"
  msgstr ""
  
! #: c/c-parser.cc:4550
  #, gcc-internal-format
  msgid "expected %<,%>, %<;%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4557
  #, gcc-internal-format
  msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:4629
  #, gcc-internal-format
  msgid "%<typeof%> applied to a bit-field"
  msgstr ""
  
! #: c/c-parser.cc:4951
  #, gcc-internal-format
  msgid "expected identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:5013
  #, gcc-internal-format
  msgid ""
  "%<static%> may not be used with an unspecified variable length array size"
  msgstr ""
  
! #: c/c-parser.cc:5021
  #, gcc-internal-format
  msgid "%<static%> may not be used without an array size"
  msgstr ""
  
! #: c/c-parser.cc:5181
  #, gcc-internal-format
  msgid "ISO C requires a named argument before %<...%> before C23"
  msgstr ""
  
! #: c/c-parser.cc:5306
  #, gcc-internal-format
  msgid "expected declaration specifiers or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:5536
  #, gcc-internal-format
  msgid "parentheses must be omitted if attribute argument list is empty"
  msgstr ""
  
! #: c/c-parser.cc:5824 cp/parser.cc:30738
  #, gcc-internal-format
  msgid "expected OpenMP directive name"
  msgstr ""
  
! #: c/c-parser.cc:5871 cp/parser.cc:30794
  #, gcc-internal-format
  msgid "expected %<directive%> or %<sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:6016 cp/parser.cc:30962
  #, gcc-internal-format
  msgid "%<omp::%E%> attribute requires argument"
  msgstr ""
  
! #: c/c-parser.cc:6032 cp/parser.cc:30978
  #, gcc-internal-format
  msgid "%qE attribute does not take any arguments"
  msgstr ""
  
! #: c/c-parser.cc:6153
  #, gcc-internal-format
  msgid "ISO C does not support %<[[]]%> attributes before C23"
  msgstr ""
  
! #: c/c-parser.cc:6397 c/c-parser.cc:6463 c/c-typeck.cc:9642
  #, gcc-internal-format
  msgid ""
  "variable-sized object may not be initialized except with an empty initializer"
  msgstr ""
  
! #: c/c-parser.cc:6455
  #, gcc-internal-format
  msgid "ISO C forbids empty initializer braces before C23"
  msgstr ""
  
! #: c/c-parser.cc:6544
  #, gcc-internal-format
  msgid "obsolete use of designated initializer with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:6700
  #, gcc-internal-format
  msgid "ISO C forbids specifying range of elements to initialize"
  msgstr ""
  
! #: c/c-parser.cc:6712
  #, gcc-internal-format
  msgid "ISO C90 forbids specifying subobject to initialize"
  msgstr ""
  
! #: c/c-parser.cc:6720
  #, gcc-internal-format
  msgid "obsolete use of designated initializer without %<=%>"
  msgstr ""
  
! #: c/c-parser.cc:7007 cp/parser.cc:13742
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<#pragma acc loop%>"
  msgstr ""
  
! #: c/c-parser.cc:7014 cp/parser.cc:13749
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<ordered%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7021 cp/parser.cc:13756
  #, gcc-internal-format
  msgid ""
  "inner loops must be perfectly nested with %<reduction%> %<inscan%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7028
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<pragma omp tile%>"
  msgstr ""
  
! #: c/c-parser.cc:7084 c/c-parser.cc:7239 cp/parser.cc:12633 cp/parser.cc:12783
! #: cp/parser.cc:50777
  #, gcc-internal-format
  msgid ""
  "mixing OpenMP directives with attribute and pragma syntax on the same "
  "statement"
  msgstr ""
  
! #: c/c-parser.cc:7092 cp/parser.cc:12641
  #, gcc-internal-format
  msgid "OpenMP %<omp::decl%> attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:7116 c/c-parser.cc:7337 c/c-parser.cc:27447 cp/parser.cc:12665
! #: cp/parser.cc:50757 cp/parser.cc:50896
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs attribute argument"
  msgstr ""
  
! #: c/c-parser.cc:7208 cp/parser.cc:12752
  #, gcc-internal-format
  msgid ""
  "OpenMP construct among %<omp::directive%> attributes requires all %<omp::"
--- 50644,50959 ----
  #. This can appear in many cases looking nothing like a
  #. function definition, so we don't give a more specific
  #. error suggesting there was one.
! #: c/c-parser.cc:3100 c/c-parser.cc:3142
  #, gcc-internal-format
  msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:3109
  #, gcc-internal-format
  msgid "ISO C forbids nested functions"
  msgstr ""
  
! #: c/c-parser.cc:3391 c/c-parser.cc:9681 c/c-parser.cc:16029
! #: c/c-parser.cc:20755 cp/parser.cc:43042
  #, gcc-internal-format
  msgid "expected string literal"
  msgstr ""
  
! #: c/c-parser.cc:3400
  #, gcc-internal-format
  msgid "ISO C11 does not support omitting the string in %qE"
  msgstr ""
  
! #: c/c-parser.cc:3406
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer"
  msgstr ""
  
! #: c/c-parser.cc:3415
  #, gcc-internal-format
  msgid "expression in static assertion is not an integer constant expression"
  msgstr ""
  
! #: c/c-parser.cc:3420
  #, gcc-internal-format
  msgid "expression in static assertion is not constant"
  msgstr ""
  
! #: c/c-parser.cc:3427
  #, gcc-internal-format
  msgid "static assertion failed: %E"
  msgstr ""
  
! #: c/c-parser.cc:3429 cp/semantics.cc:12469
  #, gcc-internal-format
  msgid "static assertion failed"
  msgstr ""
  
! #: c/c-parser.cc:3809
  #, gcc-internal-format
  msgid "%<_Atomic%> in Objective-C"
  msgstr ""
  
! #: c/c-parser.cc:3812
  #, gcc-internal-format
  msgid "ISO C99 does not support the %<_Atomic%> qualifier"
  msgstr ""
  
! #: c/c-parser.cc:3815
  #, gcc-internal-format
  msgid "ISO C90 does not support the %<_Atomic%> qualifier"
  msgstr ""
  
! #: c/c-parser.cc:3843
  #, gcc-internal-format
  msgid "%<_Atomic%> applied to a qualified type"
  msgstr ""
  
! #: c/c-parser.cc:3873
  #, gcc-internal-format
  msgid "%<__GIMPLE%> only valid with %<-fgimple%>"
  msgstr ""
  
! #: c/c-parser.cc:3910
  #, gcc-internal-format
  msgid "empty enum is invalid"
  msgstr ""
  
! #: c/c-parser.cc:3921
  #, gcc-internal-format
  msgid "cannot use keyword %qs as enumeration constant"
  msgstr ""
  
  #. Otherwise, a more generic error message.
! #: c/c-parser.cc:3933 c/c-parser.cc:5165 c/c-parser.cc:6023 c/c-parser.cc:6040
! #: c/c-parser.cc:6625 c/c-parser.cc:7534 c/c-parser.cc:9548 c/c-parser.cc:9631
! #: c/c-parser.cc:10611 c/c-parser.cc:10926 c/c-parser.cc:10935
! #: c/c-parser.cc:11548 c/c-parser.cc:11836 c/c-parser.cc:11867
! #: c/c-parser.cc:13234 c/c-parser.cc:13808 c/c-parser.cc:13846
! #: c/c-parser.cc:14160 c/c-parser.cc:14211 c/c-parser.cc:14371
! #: c/c-parser.cc:14401 c/c-parser.cc:14409 c/c-parser.cc:14438
! #: c/c-parser.cc:14451 c/c-parser.cc:14757 c/c-parser.cc:14881
! #: c/c-parser.cc:15466 c/c-parser.cc:15519 c/c-parser.cc:15535
! #: c/c-parser.cc:15581 c/c-parser.cc:16602 c/c-parser.cc:16647
! #: c/c-parser.cc:19523 c/c-parser.cc:19660 c/c-parser.cc:20526
! #: c/c-parser.cc:23585 c/c-parser.cc:26783 c/c-parser.cc:26970
! #: c/gimple-parser.cc:1981 c/gimple-parser.cc:2028 cp/parser.cc:9873
! #: cp/parser.cc:35390 cp/parser.cc:38622 cp/parser.cc:41867 cp/parser.cc:42059
! #: cp/parser.cc:49849 cp/parser.cc:53151
  #, gcc-internal-format
  msgid "expected identifier"
  msgstr ""
  
! #: c/c-parser.cc:4006
  #, gcc-internal-format
  msgid "ISO C does not support specifying %<enum%> underlying types before C23"
  msgstr ""
  
! #: c/c-parser.cc:4015
  #, gcc-internal-format
  msgid "%<enum%> declared both with and without fixed underlying type"
  msgstr ""
  
! #: c/c-parser.cc:4038
  #, gcc-internal-format
  msgid "no %<enum%> underlying type specified"
  msgstr ""
  
! #: c/c-parser.cc:4042
  #, gcc-internal-format
  msgid "invalid %<enum%> underlying type"
  msgstr ""
  
! #: c/c-parser.cc:4072
  #, gcc-internal-format
  msgid "%<enum%> underlying type incompatible with previous declaration"
  msgstr ""
  
! #: c/c-parser.cc:4148 cp/parser.cc:22437
  #, gcc-internal-format
  msgid "comma at end of enumerator list"
  msgstr ""
  
! #: c/c-parser.cc:4154 c/c-parser.cc:20803 cp/parser.cc:43105
  #: go/gofrontend/embed.cc:424
  #, gcc-internal-format
  msgid "expected %<,%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4197
  #, gcc-internal-format
  msgid "ISO C forbids forward references to %<enum%> types"
  msgstr ""
  
! #: c/c-parser.cc:4322
  #, gcc-internal-format
  msgid "expected class name"
  msgstr ""
  
! #: c/c-parser.cc:4344
  #, gcc-internal-format
  msgid "extra semicolon in struct or union specified"
  msgstr ""
  
! #: c/c-parser.cc:4373
  #, gcc-internal-format
  msgid "no semicolon at end of struct or union"
  msgstr ""
  
! #: c/c-parser.cc:4490 c/c-parser.cc:6365
  #, gcc-internal-format
  msgid "expected specifier-qualifier-list"
  msgstr ""
  
! #: c/c-parser.cc:4501
  #, gcc-internal-format
  msgid "ISO C forbids member declarations with no members"
  msgstr ""
  
! #: c/c-parser.cc:4595
  #, gcc-internal-format
  msgid "expected %<,%>, %<;%> or %<}%>"
  msgstr ""
  
! #: c/c-parser.cc:4602
  #, gcc-internal-format
  msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
  msgstr ""
  
! #: c/c-parser.cc:4674
  #, gcc-internal-format
  msgid "%<typeof%> applied to a bit-field"
  msgstr ""
  
! #: c/c-parser.cc:4996
  #, gcc-internal-format
  msgid "expected identifier or %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:5058
  #, gcc-internal-format
  msgid ""
  "%<static%> may not be used with an unspecified variable length array size"
  msgstr ""
  
! #: c/c-parser.cc:5066
  #, gcc-internal-format
  msgid "%<static%> may not be used without an array size"
  msgstr ""
  
! #: c/c-parser.cc:5226
  #, gcc-internal-format
  msgid "ISO C requires a named argument before %<...%> before C23"
  msgstr ""
  
! #: c/c-parser.cc:5351
  #, gcc-internal-format
  msgid "expected declaration specifiers or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:5581
  #, gcc-internal-format
  msgid "parentheses must be omitted if attribute argument list is empty"
  msgstr ""
  
! #: c/c-parser.cc:5869 cp/parser.cc:30792
  #, gcc-internal-format
  msgid "expected OpenMP directive name"
  msgstr ""
  
! #: c/c-parser.cc:5916 cp/parser.cc:30848
  #, gcc-internal-format
  msgid "expected %<directive%> or %<sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:6061 cp/parser.cc:31016
  #, gcc-internal-format
  msgid "%<omp::%E%> attribute requires argument"
  msgstr ""
  
! #: c/c-parser.cc:6077 cp/parser.cc:31032
  #, gcc-internal-format
  msgid "%qE attribute does not take any arguments"
  msgstr ""
  
! #: c/c-parser.cc:6198
  #, gcc-internal-format
  msgid "ISO C does not support %<[[]]%> attributes before C23"
  msgstr ""
  
! #: c/c-parser.cc:6442 c/c-parser.cc:6508 c/c-typeck.cc:9659
  #, gcc-internal-format
  msgid ""
  "variable-sized object may not be initialized except with an empty initializer"
  msgstr ""
  
! #: c/c-parser.cc:6500
  #, gcc-internal-format
  msgid "ISO C forbids empty initializer braces before C23"
  msgstr ""
  
! #: c/c-parser.cc:6589
  #, gcc-internal-format
  msgid "obsolete use of designated initializer with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:6745
  #, gcc-internal-format
  msgid "ISO C forbids specifying range of elements to initialize"
  msgstr ""
  
! #: c/c-parser.cc:6757
  #, gcc-internal-format
  msgid "ISO C90 forbids specifying subobject to initialize"
  msgstr ""
  
! #: c/c-parser.cc:6765
  #, gcc-internal-format
  msgid "obsolete use of designated initializer without %<=%>"
  msgstr ""
  
! #: c/c-parser.cc:7052 cp/parser.cc:13744
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<#pragma acc loop%>"
  msgstr ""
  
! #: c/c-parser.cc:7059 cp/parser.cc:13751
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<ordered%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7066 cp/parser.cc:13758
  #, gcc-internal-format
  msgid ""
  "inner loops must be perfectly nested with %<reduction%> %<inscan%> clause"
  msgstr ""
  
! #: c/c-parser.cc:7073
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested in %<pragma omp tile%>"
  msgstr ""
  
! #: c/c-parser.cc:7129 c/c-parser.cc:7284 cp/parser.cc:12635 cp/parser.cc:12785
! #: cp/parser.cc:50836
  #, gcc-internal-format
  msgid ""
  "mixing OpenMP directives with attribute and pragma syntax on the same "
  "statement"
  msgstr ""
  
! #: c/c-parser.cc:7137 cp/parser.cc:12643
  #, gcc-internal-format
  msgid "OpenMP %<omp::decl%> attribute on a statement"
  msgstr ""
  
! #: c/c-parser.cc:7161 c/c-parser.cc:7382 c/c-parser.cc:27493 cp/parser.cc:12667
! #: cp/parser.cc:50816 cp/parser.cc:50955
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs attribute argument"
  msgstr ""
  
! #: c/c-parser.cc:7253 cp/parser.cc:12754
  #, gcc-internal-format
  msgid ""
  "OpenMP construct among %<omp::directive%> attributes requires all %<omp::"
*************** msgid ""
*** 50954,51018 ****
  "sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7216 cp/parser.cc:12760
  #, gcc-internal-format
  msgid ""
  "multiple OpenMP standalone directives among %<omp::directive%> attributes "
  "must be all within the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7228 cp/parser.cc:12772
  #, gcc-internal-format
  msgid ""
  "standalone OpenMP directives in %<omp::directive%> attribute can only appear "
  "on an empty statement"
  msgstr ""
  
! #: c/c-parser.cc:7349 cp/parser.cc:12902
  #, gcc-internal-format
  msgid ""
  "mixing OpenMP directives with attribute and pragma syntax on the same "
  "declaration"
  msgstr ""
  
! #: c/c-parser.cc:7407 cp/parser.cc:15356
  #, gcc-internal-format
  msgid "%qs attribute does not take any arguments"
  msgstr ""
  
! #: c/c-parser.cc:7504
  #, gcc-internal-format
  msgid "ISO C forbids label declarations"
  msgstr ""
  
! #: c/c-parser.cc:7510 c/c-parser.cc:7702 c/c-parser.cc:7728
  #: c/gimple-parser.cc:467
  #, gcc-internal-format
  msgid "expected declaration or statement"
  msgstr ""
  
! #: c/c-parser.cc:7629
  #, gcc-internal-format
  msgid ""
  "a label can only be part of a statement and a declaration is not a statement"
  msgstr ""
  
! #: c/c-parser.cc:7649 c/c-parser.cc:7692
  #, gcc-internal-format
  msgid "ISO C90 forbids mixed declarations and code"
  msgstr ""
  
! #: c/c-parser.cc:7736
  #, gcc-internal-format
  msgid "expected %<}%> before %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:7741 cp/parser.cc:13809
  #, gcc-internal-format
  msgid "%<else%> without a previous %<if%>"
  msgstr ""
  
! #: c/c-parser.cc:7776
  #, gcc-internal-format
  msgid "label at end of compound statement"
  msgstr ""
--- 50961,51025 ----
  "sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7261 cp/parser.cc:12762
  #, gcc-internal-format
  msgid ""
  "multiple OpenMP standalone directives among %<omp::directive%> attributes "
  "must be all within the same %<omp::sequence%>"
  msgstr ""
  
! #: c/c-parser.cc:7273 cp/parser.cc:12774
  #, gcc-internal-format
  msgid ""
  "standalone OpenMP directives in %<omp::directive%> attribute can only appear "
  "on an empty statement"
  msgstr ""
  
! #: c/c-parser.cc:7394 cp/parser.cc:12904
  #, gcc-internal-format
  msgid ""
  "mixing OpenMP directives with attribute and pragma syntax on the same "
  "declaration"
  msgstr ""
  
! #: c/c-parser.cc:7452 cp/parser.cc:15358
  #, gcc-internal-format
  msgid "%qs attribute does not take any arguments"
  msgstr ""
  
! #: c/c-parser.cc:7549
  #, gcc-internal-format
  msgid "ISO C forbids label declarations"
  msgstr ""
  
! #: c/c-parser.cc:7555 c/c-parser.cc:7747 c/c-parser.cc:7773
  #: c/gimple-parser.cc:467
  #, gcc-internal-format
  msgid "expected declaration or statement"
  msgstr ""
  
! #: c/c-parser.cc:7674
  #, gcc-internal-format
  msgid ""
  "a label can only be part of a statement and a declaration is not a statement"
  msgstr ""
  
! #: c/c-parser.cc:7694 c/c-parser.cc:7737
  #, gcc-internal-format
  msgid "ISO C90 forbids mixed declarations and code"
  msgstr ""
  
! #: c/c-parser.cc:7781
  #, gcc-internal-format
  msgid "expected %<}%> before %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:7786 cp/parser.cc:13811
  #, gcc-internal-format
  msgid "%<else%> without a previous %<if%>"
  msgstr ""
  
! #: c/c-parser.cc:7821
  #, gcc-internal-format
  msgid "label at end of compound statement"
  msgstr ""
*************** msgstr ""
*** 51021,52449 ****
  #. c_parser_skip_until_found stops at a closing nesting
  #. delimiter without consuming it, but here we need to consume
  #. it to proceed further.
! #: c/c-parser.cc:7833 c/c-parser.cc:7837 c/c-parser.cc:8345
! #: c/gimple-parser.cc:716 c/gimple-parser.cc:2520 cp/parser.cc:13265
  #, gcc-internal-format
  msgid "expected statement"
  msgstr ""
  
! #: c/c-parser.cc:7918
  #, gcc-internal-format
  msgid "expected %<:%> or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:7948
  #, gcc-internal-format
  msgid ""
  "GNU-style attribute between label and declaration appertains to the label"
  msgstr ""
  
! #: c/c-parser.cc:8201
  #, gcc-internal-format
  msgid "expected identifier or %<*%>"
  msgstr ""
  
! #: c/c-parser.cc:8327
  #, gcc-internal-format
  msgid ""
  "only attribute %<fallthrough%> or %<assume%> can be applied to a null "
  "statement"
  msgstr ""
  
! #: c/c-parser.cc:8437
  #, gcc-internal-format
  msgid "ISO C does not support if declarations before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:8459
  #, gcc-internal-format
  msgid "declaration in the controlling expression must have an initializer"
  msgstr ""
  
! #: c/c-parser.cc:8476 cp/parser.cc:5462 cp/parser.cc:16420
  #, gcc-internal-format
  msgid "expected declaration"
  msgstr ""
  
! #: c/c-parser.cc:8557 cp/parser.cc:15492
  #, gcc-internal-format
  msgid "suggest braces around empty body in an %<if%> statement"
  msgstr ""
  
! #: c/c-parser.cc:8600 cp/parser.cc:15495
  #, gcc-internal-format
  msgid "suggest braces around empty body in an %<else%> statement"
  msgstr ""
  
! #: c/c-parser.cc:8694 cp/parser.cc:14223
  #, gcc-internal-format
  msgid "suggest explicit braces to avoid ambiguous %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:8812 c/c-parser.cc:8891 c/c-parser.cc:9026 cp/parser.cc:15085
  #, gcc-internal-format
  msgid "loop not permitted in intervening code in OpenMP loop body"
  msgstr ""
  
! #: c/c-parser.cc:8899
  #, gcc-internal-format
  msgid "suggest braces around empty body in %<do%> statement"
  msgstr ""
  
! #: c/c-parser.cc:9060 c/c-parser.cc:9092
  #, gcc-internal-format
  msgid "multiple iterating variables in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9115
  #, gcc-internal-format
  msgid "invalid iterating variable in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9139 cp/parser.cc:14531
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC ivdep%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9145 cp/parser.cc:14537
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC unroll%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9186
  #, gcc-internal-format
  msgid "missing collection in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9335 c/c-parser.cc:9346 c/c-parser.cc:9357
  #, gcc-internal-format
  msgid "duplicate %<asm%> qualifier %qE"
  msgstr ""
  
! #: c/c-parser.cc:9336 c/c-parser.cc:9347 c/c-parser.cc:9358 cp/parser.cc:23377
! #: cp/parser.cc:23395 cp/parser.cc:23410
  #, gcc-internal-format
  msgid "first seen here"
  msgstr ""
  
! #: c/c-parser.cc:9367
  #, gcc-internal-format
  msgid "%qE is not a valid %<asm%> qualifier"
  msgstr ""
  
! #: c/c-parser.cc:9716 cp/parser.cc:4893
  #, gcc-internal-format
  msgid "a wide string is invalid in this context"
  msgstr ""
  
! #: c/c-parser.cc:9924
  #, gcc-internal-format
  msgid "ISO C forbids omitting the middle term of a %<?:%> expression"
  msgstr ""
  
  #. Location of the binary operator.
  #. Quiet warning.
! #: c/c-parser.cc:10148 cp/typeck.cc:5582
  #, gcc-internal-format
  msgid ""
  "division %<sizeof (%T) / sizeof (%T)%> does not compute the number of array "
  "elements"
  msgstr ""
  
! #: c/c-parser.cc:10154 cp/typeck.cc:5587
  #, gcc-internal-format
  msgid "first %<sizeof%> operand was declared here"
  msgstr ""
  
! #: c/c-parser.cc:10425
  #, gcc-internal-format
  msgid "storage class specifier in cast"
  msgstr ""
  
! #: c/c-parser.cc:10428
  #, gcc-internal-format
  msgid "alignment specified for type name in cast"
  msgstr ""
  
! #: c/c-parser.cc:10529
  #, gcc-internal-format
  msgid "traditional C rejects the unary plus operator"
  msgstr ""
  
! #: c/c-parser.cc:10659
  #, gcc-internal-format
  msgid "storage class specifier in %<sizeof%>"
  msgstr ""
  
! #: c/c-parser.cc:10662
  #, gcc-internal-format
  msgid "alignment specified for type name in %<sizeof%>"
  msgstr ""
  
! #: c/c-parser.cc:10678
  #, gcc-internal-format
  msgid "%<sizeof%> applied to a bit-field"
  msgstr ""
  
! #: c/c-parser.cc:10751
  #, gcc-internal-format
  msgid "storage class specifier in %qE"
  msgstr ""
  
! #: c/c-parser.cc:10754
  #, gcc-internal-format
  msgid "alignment specified for type name in %qE"
  msgstr ""
  
! #: c/c-parser.cc:10778
  #, gcc-internal-format
  msgid "ISO C does not allow %<%E (expression)%>"
  msgstr ""
  
! #: c/c-parser.cc:10931
  #, gcc-internal-format
  msgid "cannot take address of %qs"
  msgstr ""
  
! #: c/c-parser.cc:11038
  #, gcc-internal-format
  msgid "ISO C99 does not support %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11041
  #, gcc-internal-format
  msgid "ISO C90 does not support %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11052
  #, gcc-internal-format
  msgid ""
  "ISO C does not support use of type name as %<_Generic%> controlling operand "
  "before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11123
  #, gcc-internal-format
  msgid ""
  "ISO C does not support %<_Generic%> association with function type before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11127
  #, gcc-internal-format
  msgid ""
  "ISO C does not support %<_Generic%> association with incomplete type before "
  "C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11132
  #, gcc-internal-format
  msgid "%<_Generic%> association has variable length type"
  msgstr ""
  
! #: c/c-parser.cc:11166
  #, gcc-internal-format
  msgid "duplicate %<default%> case in %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11167
  #, gcc-internal-format
  msgid "original %<default%> is here"
  msgstr ""
  
! #: c/c-parser.cc:11175
  #, gcc-internal-format
  msgid "%<_Generic%> specifies two compatible types"
  msgstr ""
  
! #: c/c-parser.cc:11176
  #, gcc-internal-format
  msgid "compatible type is here"
  msgstr ""
  
! #: c/c-parser.cc:11199
  #, gcc-internal-format
  msgid "%<_Generic%> selector matches multiple associations"
  msgstr ""
  
! #: c/c-parser.cc:11201
  #, gcc-internal-format
  msgid "other match is here"
  msgstr ""
  
! #: c/c-parser.cc:11226
  #, gcc-internal-format
  msgid ""
  "%<_Generic%> selector of type %qT is not compatible with any association"
  msgstr ""
  
! #: c/c-parser.cc:11247
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is not a function pointer"
  msgstr ""
  
! #: c/c-parser.cc:11255
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is unprototyped"
  msgstr ""
  
! #: c/c-parser.cc:11261
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has variable arguments"
  msgstr ""
  
! #: c/c-parser.cc:11277
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has no arguments"
  msgstr ""
  
! #: c/c-parser.cc:11300 c/c-parser.cc:11304
  #, gcc-internal-format
  msgid "ISO C does not support %qs predefined identifier"
  msgstr ""
  
! #: c/c-parser.cc:11308
  #, gcc-internal-format
  msgid "ISO C90 does not support %<__func__%> predefined identifier"
  msgstr ""
  
! #: c/c-parser.cc:11517 c/c-parser.cc:13256 c/c-parser.cc:13278
! #: c/c-parser.cc:22957 c/gimple-parser.cc:1897 c/gimple-parser.cc:2537
! #: cp/parser.cc:44516
  #, gcc-internal-format
  msgid "expected expression"
  msgstr ""
  
! #: c/c-parser.cc:11539
  #, gcc-internal-format
  msgid "braced-group within expression allowed only inside a function"
  msgstr ""
  
! #: c/c-parser.cc:11554
  #, gcc-internal-format
  msgid "ISO C forbids braced-groups within expressions"
  msgstr ""
  
! #: c/c-parser.cc:11665
  #, gcc-internal-format
  msgid "optional second parameter of %<va_start%> not last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11704
  #, gcc-internal-format
  msgid ""
  "%<va_start%> macro used with additional arguments other than identifier of "
  "the last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11849
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_choose_expr%>"
  msgstr ""
  
! #: c/c-parser.cc:11865
  #, gcc-internal-format
  msgid "first argument to %<__builtin_choose_expr%> not a constant"
  msgstr ""
  
! #: c/c-parser.cc:11935 c/c-parser.cc:11952 c/c-parser.cc:11959
  #, gcc-internal-format
  msgid "too few arguments to %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:11980
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has wrong number of arguments"
  msgstr ""
  
! #: c/c-parser.cc:12024 c/c-parser.cc:12034
  #, gcc-internal-format
  msgid ""
  "invalid type-generic return type for argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12056 c/c-parser.cc:12066
  #, gcc-internal-format
  msgid ""
  "invalid type-generic type for argument %u of argument %u of "
  "%<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12099
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> all have the same type"
  msgstr ""
  
! #: c/c-parser.cc:12118
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> lack type-generic parameter"
  msgstr ""
  
! #: c/c-parser.cc:12166
  #, gcc-internal-format
  msgid ""
  "duplicate type-generic parameter type for function argument %u of "
  "%<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12189
  #, gcc-internal-format
  msgid "bad return type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12206
  #, gcc-internal-format
  msgid ""
  "bad type for argument %u of function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12246
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid type of argument %u of type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12257
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "decimal floating-point argument %u to complex-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12265
  #, gcc-internal-format, gfc-internal-format
  msgid "decimal floating-point argument %u to binary-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12273 c/c-parser.cc:12303
  #, gcc-internal-format
  msgid ""
  "both complex and decimal floating-point arguments to type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12281 c/c-parser.cc:12323
  #, gcc-internal-format
  msgid ""
  "both binary and decimal floating-point arguments to type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12295
  #, gcc-internal-format, gfc-internal-format
  msgid "complex argument %u to decimal-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12315
  #, gcc-internal-format, gfc-internal-format
  msgid "binary argument %u to decimal-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12422
  #, gcc-internal-format
  msgid "no matching function for type-generic call"
  msgstr ""
  
! #: c/c-parser.cc:12463
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_call_with_static_chain%>"
  msgstr ""
  
! #: c/c-parser.cc:12476
  #, gcc-internal-format
  msgid ""
  "first argument to %<__builtin_call_with_static_chain%> must be a call "
  "expression"
  msgstr ""
  
! #: c/c-parser.cc:12480
  #, gcc-internal-format
  msgid ""
  "second argument to %<__builtin_call_with_static_chain%> must be a pointer "
  "type"
  msgstr ""
  
! #: c/c-parser.cc:12506
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_complex%>"
  msgstr ""
  
! #: c/c-parser.cc:12528
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operand not of real binary floating-point type"
  msgstr ""
  
! #: c/c-parser.cc:12537
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operands of different types"
  msgstr ""
  
! #: c/c-parser.cc:12568
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_counted_by_ref%>"
  msgstr ""
  
! #: c/c-parser.cc:12579
  #, gcc-internal-format
  msgid "the argument to %<__builtin_counted_by_ref%> must be an array"
  msgstr ""
  
! #: c/c-parser.cc:12630 c/c-parser.cc:12659 cp/parser.cc:8032
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_shuffle%>"
  msgstr ""
  
! #: c/c-parser.cc:12830
  #, gcc-internal-format
  msgid "wrong number of arguments to %qs"
  msgstr ""
  
! #: c/c-parser.cc:12839 c/c-parser.cc:12919
  #, gcc-internal-format
  msgid "%qs operand not an integral type"
  msgstr ""
  
! #: c/c-parser.cc:12845 c/c-parser.cc:12925
  #, gcc-internal-format
  msgid "argument %u in call to function %qs has enumerated type"
  msgstr ""
  
! #: c/c-parser.cc:12852
  #, gcc-internal-format
  msgid "argument %u in call to function %qs has boolean type"
  msgstr ""
  
! #: c/c-parser.cc:12859
  #, gcc-internal-format
  msgid "argument 1 in call to function %qs has signed type"
  msgstr ""
  
! #: c/c-parser.cc:12867
  #, gcc-internal-format
  msgid "argument 1 in call to function %qs has %<char%> type"
  msgstr ""
  
! #: c/c-parser.cc:12941
  #, gcc-internal-format
  msgid "rotate count is negative"
  msgstr ""
  
! #: c/c-parser.cc:13233 cp/parser.cc:6380
  #, gcc-internal-format
  msgid "%<omp_all_memory%> may only be used in OpenMP %<depend%> clause"
  msgstr ""
  
! #: c/c-parser.cc:13243
  #, gcc-internal-format
  msgid "ISO C does not support %qs before C23"
  msgstr ""
  
! #: c/c-parser.cc:13331
  #, gcc-internal-format
  msgid "%qT declared in %<constexpr%> compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13336
  #, gcc-internal-format
  msgid "%qT defined in %<constexpr%> compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13351
  #, gcc-internal-format
  msgid "compound literal has variable size"
  msgstr ""
  
! #: c/c-parser.cc:13356
  #, gcc-internal-format
  msgid "compound literal has function type"
  msgstr ""
  
! #: c/c-parser.cc:13387
  #, gcc-internal-format
  msgid "compound literal qualified by address-space qualifier"
  msgstr ""
  
! #: c/c-parser.cc:13392
  #, gcc-internal-format
  msgid "ISO C90 forbids compound literals"
  msgstr ""
  
! #: c/c-parser.cc:13394
  #, gcc-internal-format
  msgid "ISO C forbids storage class specifiers in compound literals before C23"
  msgstr ""
  
! #: c/c-parser.cc:13408
  #, gcc-internal-format
  msgid "%<_Alignas%> specifiers cannot reduce alignment of compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13483
  #, gcc-internal-format
  msgid ""
  "using integer absolute value function %qD when argument is of floating-point "
  "type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13488
  #, gcc-internal-format
  msgid ""
  "using integer absolute value function %qD when argument is of complex type "
  "%qT"
  msgstr ""
  
! #: c/c-parser.cc:13496
  #, gcc-internal-format
  msgid "taking the absolute value of unsigned type %qT has no effect"
  msgstr ""
  
! #: c/c-parser.cc:13507
  #, gcc-internal-format
  msgid ""
  "using floating-point absolute value function %qD when argument is of integer "
  "type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13511
  #, gcc-internal-format
  msgid ""
  "using floating-point absolute value function %qD when argument is of decimal "
  "floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13516
  #, gcc-internal-format
  msgid ""
  "using floating-point absolute value function %qD when argument is of complex "
  "type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13529
  #, gcc-internal-format
  msgid ""
  "using complex absolute value function %qD when argument is of integer type "
  "%qT"
  msgstr ""
  
! #: c/c-parser.cc:13533
  #, gcc-internal-format
  msgid ""
  "using complex absolute value function %qD when argument is of floating-point "
  "type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13551
  #, gcc-internal-format
  msgid ""
  "using decimal floating-point absolute value function %qD when argument is of "
  "integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13556
  #, gcc-internal-format
  msgid ""
  "using decimal floating-point absolute value function %qD when argument is of "
  "floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13561
  #, gcc-internal-format
  msgid ""
  "using decimal floating-point absolute value function %qD when argument is of "
  "complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13587
  #, gcc-internal-format
  msgid ""
  "absolute value function %qD given an argument of type %qT but has parameter "
  "of type %qT which may cause truncation of value"
  msgstr ""
  
! #: c/c-parser.cc:13717 cp/parser.cc:8468
  #, gcc-internal-format
  msgid "calls to the OpenMP runtime API are not permitted in intervening code"
  msgstr ""
  
! #: c/c-parser.cc:14137
  #, gcc-internal-format
  msgid "expected identifier or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:14233
  #, gcc-internal-format
  msgid "extra semicolon"
  msgstr ""
  
! #: c/c-parser.cc:14481
  #, gcc-internal-format
  msgid "extra semicolon in method definition specified"
  msgstr ""
  
! #: c/c-parser.cc:14613
  #, gcc-internal-format
  msgid "method attributes must be specified at the end only"
  msgstr ""
  
! #: c/c-parser.cc:14633
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%> after method attribute definition"
  msgstr ""
  
! #: c/c-parser.cc:14755
  #, gcc-internal-format
  msgid "objective-c method declaration is expected"
  msgstr ""
  
! #: c/c-parser.cc:15207
  #, gcc-internal-format
  msgid "no type or storage class may be specified here,"
  msgstr ""
  
! #: c/c-parser.cc:15275 cp/parser.cc:38420
  #, gcc-internal-format
  msgid "empty property attribute list"
  msgstr ""
  
! #: c/c-parser.cc:15289 cp/parser.cc:38433
  #, gcc-internal-format
  msgid "missing property attribute"
  msgstr ""
  
! #: c/c-parser.cc:15328
  #, gcc-internal-format
  msgid "unknown property attribute %<%s%s%>"
  msgstr ""
  
! #: c/c-parser.cc:15331 cp/parser.cc:38470
  #, gcc-internal-format
  msgid "unknown property attribute"
  msgstr ""
  
! #: c/c-parser.cc:15340 cp/parser.cc:38479
  #, gcc-internal-format
  msgid "expected %<=%> after Objective-C %qE"
  msgstr ""
  
! #: c/c-parser.cc:15351 cp/parser.cc:38493
  #, gcc-internal-format
  msgid "expected %qE selector name"
  msgstr ""
  
! #: c/c-parser.cc:15367 cp/parser.cc:38512
  #, gcc-internal-format
  msgid "setter method names must terminate with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:15591 cp/semantics.cc:14071
  #, gcc-internal-format
  msgid ""
  "%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a "
  "non-negative integral constant less than %u"
  msgstr ""
  
! #: c/c-parser.cc:15629 cp/parser.cc:53453
  #, gcc-internal-format
  msgid "intervening code must not contain OpenMP directives"
  msgstr ""
  
! #: c/c-parser.cc:15649 c/c-parser.cc:25667 c/c-parser.cc:25976
! #: c/c-parser.cc:26039 c/c-parser.cc:26149 cp/parser.cc:48090
! #: cp/parser.cc:48438 cp/parser.cc:48553 cp/parser.cc:48652 cp/parser.cc:53485
! #: cp/parser.cc:53501 cp/parser.cc:53517 cp/parser.cc:53533 cp/parser.cc:53550
! #: cp/parser.cc:53567 cp/parser.cc:53584 cp/parser.cc:53611 cp/parser.cc:53625
! #: cp/parser.cc:53650 cp/parser.cc:53664
  #, gcc-internal-format
  msgid "%<#pragma %s%> may only be used in compound statements"
  msgstr ""
  
! #: c/c-parser.cc:15672 cp/parser.cc:53639
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be at file scope"
  msgstr ""
  
! #: c/c-parser.cc:15771 cp/parser.cc:53769
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp scan%> may only be used in a loop construct with %<inscan%> "
  "%<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:15778 cp/parser.cc:53775
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp section%> may only be used in %<#pragma omp sections%> "
  "construct"
  msgstr ""
  
! #: c/c-parser.cc:15790 c/c-parser.cc:15806
  #, gcc-internal-format
  msgid "%<#pragma %s%> may only be used at file scope"
  msgstr ""
  
! #: c/c-parser.cc:15877 cp/parser.cc:53858
  #, gcc-internal-format
  msgid "for, while or do statement expected"
  msgstr ""
  
! #: c/c-parser.cc:15893 cp/parser.cc:53475
  #, gcc-internal-format
  msgid "%<#pragma GCC pch_preprocess%> must be first"
  msgstr ""
  
! #: c/c-parser.cc:16276 c/c-parser.cc:20196 c/c-parser.cc:22425
! #: c/c-parser.cc:22444 c/c-parser.cc:22697 c/c-parser.cc:22755
! #: c/c-parser.cc:22762 c/c-parser.cc:22769 c/c-parser.cc:27120
! #: c/c-parser.cc:28325 c/c-parser.cc:28333 c/c-parser.cc:28709
! #: c/c-parser.cc:28719 c/c-parser.cc:28813 c/c-parser.cc:28820
! #: c/c-parser.cc:28827 cp/parser.cc:38959 cp/parser.cc:42640 cp/parser.cc:44042
! #: cp/parser.cc:44079 cp/parser.cc:44268 cp/parser.cc:44331 cp/parser.cc:44338
! #: cp/parser.cc:44345 cp/parser.cc:50011 cp/parser.cc:50018 cp/parser.cc:50025
! #: cp/parser.cc:50558 cp/parser.cc:52339 cp/parser.cc:52347 cp/parser.cc:52499
! #: cp/parser.cc:52509
  #, gcc-internal-format
  msgid "too many %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:16303
  #, gcc-internal-format
  msgid "expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:16910 c/c-parser.cc:29539
  #, gcc-internal-format
  msgid "%qD is not a variable"
  msgstr ""
  
! #: c/c-parser.cc:16914 cp/semantics.cc:9112
  #, gcc-internal-format
  msgid "%qD is not a pointer variable"
  msgstr ""
  
! #: c/c-parser.cc:16956 cp/parser.cc:39850
  #, gcc-internal-format
  msgid "collapse argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:17051 cp/parser.cc:39928
  #, gcc-internal-format
  msgid "expected %<none%> or %<present%>"
  msgstr ""
  
! #: c/c-parser.cc:17053 cp/parser.cc:39930
  #, gcc-internal-format
  msgid "expected %<none%>, %<shared%>, %<private%> or %<firstprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:17138 cp/parser.cc:40000
  #, gcc-internal-format
  msgid "expected constant logical expression"
  msgstr ""
  
! #: c/c-parser.cc:17215 cp/parser.cc:40082
  #, gcc-internal-format
  msgid "expected %<data%>, %<update%>, %<enter%> or %<exit%>"
  msgstr ""
  
! #: c/c-parser.cc:17235 c/c-parser.cc:26032 c/c-parser.cc:26142
! #: cp/parser.cc:40100 cp/parser.cc:48430 cp/parser.cc:48545
  #, gcc-internal-format
  msgid "expected %<data%>"
  msgstr ""
  
! #: c/c-parser.cc:17288 cp/parser.cc:40155
  #, gcc-internal-format
  msgid "too many %<if%> clauses with %qs modifier"
  msgstr ""
  
! #: c/c-parser.cc:17295 cp/parser.cc:40162
  #, gcc-internal-format
  msgid "too many %<if%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:17297 cp/parser.cc:40164
  #, gcc-internal-format
  msgid "too many %<if%> clauses without modifier"
  msgstr ""
  
! #: c/c-parser.cc:17303 cp/parser.cc:40170
  #, gcc-internal-format
  msgid ""
  "if any %<if%> clause has modifier, then all %<if%> clauses have to use "
  "modifier"
  msgstr ""
  
! #: c/c-parser.cc:17408 c/c-parser.cc:17468 c/c-parser.cc:17530
! #: c/c-parser.cc:17578 c/c-parser.cc:17658 c/c-parser.cc:18055
! #: c/c-parser.cc:18137 c/c-parser.cc:18742 c/c-parser.cc:18887
! #: c/c-parser.cc:18955 c/c-parser.cc:20133
  #, gcc-internal-format
  msgid "expected integer expression"
  msgstr ""
  
! #: c/c-parser.cc:17419
  #, gcc-internal-format
  msgid "%<num_threads%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17480
  #, gcc-internal-format
  msgid "%<num_tasks%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17542 cp/semantics.cc:9327
  #, gcc-internal-format
  msgid "%<grainsize%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17591 cp/semantics.cc:9357
  #, gcc-internal-format
  msgid "%<priority%> value must be non-negative"
  msgstr ""
  
! #: c/c-parser.cc:17625 cp/parser.cc:40396
  #, gcc-internal-format
  msgid "expected constant integer expression with valid sync-hint value"
  msgstr ""
  
! #: c/c-parser.cc:17697 cp/parser.cc:40466
  #, gcc-internal-format
  msgid ""
  "expected %<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> "
  "or %<default%>"
  msgstr ""
  
! #: c/c-parser.cc:17765
  #, gcc-internal-format
  msgid "expected %<scalar%>, %<aggregate%>, %<pointer%> or %<all%>"
  msgstr ""
  
! #: c/c-parser.cc:17842 cp/parser.cc:40618
  #, gcc-internal-format
  msgid "too many %<defaultmap%> clauses with %qs category"
  msgstr ""
  
! #: c/c-parser.cc:17845 cp/parser.cc:40621
  #, gcc-internal-format
  msgid "too many %<defaultmap%> clauses with unspecified category"
  msgstr ""
  
! #: c/c-parser.cc:17929 cp/semantics.cc:8181 cp/semantics.cc:8236
  #, gcc-internal-format
  msgid "%qs expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:17941 c/c-parser.cc:18064 cp/semantics.cc:8215
  #: cp/semantics.cc:8250
  #, gcc-internal-format
  msgid "%qs value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18003 cp/parser.cc:39613
  #, gcc-internal-format
  msgid "too many %<static%> arguments"
  msgstr ""
  
! #: c/c-parser.cc:18037 cp/parser.cc:39646
  #, gcc-internal-format
  msgid "unexpected argument"
  msgstr ""
  
! #: c/c-parser.cc:18204 cp/semantics.cc:9543
  #, gcc-internal-format
  msgid "%<tile%> argument needs positive integral constant"
  msgstr ""
  
! #: c/c-parser.cc:18272 cp/parser.cc:43259
  #, gcc-internal-format
  msgid "too many %<self%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:18314 cp/parser.cc:40671
  #, gcc-internal-format
  msgid "expected %<reproducible%> or %<unconstrained%>"
  msgstr ""
  
! #: c/c-parser.cc:18323 c/c-parser.cc:18329 cp/parser.cc:40680
! #: cp/parser.cc:40690
  #, gcc-internal-format
  msgid "expected %<concurrent%>"
  msgstr ""
  
! #: c/c-parser.cc:18365 cp/parser.cc:40730
  #, gcc-internal-format
  msgid "expected %<teams%>, %<parallel%> or %<thread%>"
  msgstr ""
  
! #: c/c-parser.cc:18418 cp/parser.cc:40798
  #, gcc-internal-format
  msgid "ordered argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:18543 c/c-parser.cc:27870 cp/parser.cc:51949
  #, gcc-internal-format
  msgid ""
  "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or "
  "identifier"
  msgstr ""
  
! #: c/c-parser.cc:18665 cp/parser.cc:41056
  #, gcc-internal-format
  msgid "both %<monotonic%> and %<nonmonotonic%> modifiers specified"
  msgstr ""
  
! #: c/c-parser.cc:18719 cp/parser.cc:41072
  #, gcc-internal-format
  msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18723 cp/parser.cc:41075
  #, gcc-internal-format
  msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18736 cp/semantics.cc:8297
  #, gcc-internal-format
  msgid "chunk size value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18759 cp/parser.cc:41095
  #, gcc-internal-format
  msgid "invalid schedule kind"
  msgstr ""
  
! #: c/c-parser.cc:18898 c/c-parser.cc:18909
  #, gcc-internal-format
  msgid "%<num_teams%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18917 cp/semantics.cc:8264
  #, gcc-internal-format
  msgid "%<num_teams%> lower bound %qE bigger than upper bound %qE"
  msgstr ""
  
! #: c/c-parser.cc:18966 cp/semantics.cc:8393
  #, gcc-internal-format
  msgid "%<thread_limit%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:19011 cp/semantics.cc:8521
  #, gcc-internal-format
  msgid ""
  "%<aligned%> clause alignment expression must be positive constant integer "
  "expression"
  msgstr ""
  
! #: c/c-parser.cc:19123 c/c-parser.cc:22412 cp/parser.cc:44034
  #, gcc-internal-format
  msgid "expected %<allocator%> or %<align%>"
  msgstr ""
  
! #: c/c-parser.cc:19130
  #, gcc-internal-format
  msgid "duplicate %qs modifier"
  msgstr ""
  
! #: c/c-parser.cc:19178 cp/semantics.cc:8654
  #, gcc-internal-format
  msgid ""
  "%<allocate%> clause allocator expression has type %qT rather than "
  "%<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:19189 cp/semantics.cc:8609 cp/semantics.cc:8625
  #, gcc-internal-format
  msgid ""
  "%<allocate%> clause %<align%> modifier argument needs to be positive "
  "constant power of two integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19308 cp/parser.cc:41634
  #, gcc-internal-format
  msgid "multiple linear modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19320 cp/parser.cc:41647
  #, gcc-internal-format
  msgid "multiple %<step%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19328 c/c-parser.cc:19356
  #, gcc-internal-format
  msgid "%<linear%> clause step expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:19408
  #, gcc-internal-format
  msgid ""
  "%<safelen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19447
  #, gcc-internal-format
  msgid ""
  "%<simdlen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19807 cp/parser.cc:42194
  #, gcc-internal-format
  msgid "%<iterator%> modifier incompatible with %qs"
  msgstr ""
  
! #: c/c-parser.cc:19855 cp/parser.cc:42249 cp/parser.cc:42701 cp/parser.cc:42768
  #, gcc-internal-format
  msgid "invalid depend kind"
  msgstr ""
  
! #: c/c-parser.cc:19916 cp/parser.cc:42279
  #, gcc-internal-format
  msgid "invalid doacross kind"
  msgstr ""
  
! #: c/c-parser.cc:19985 cp/parser.cc:42422
  #, gcc-internal-format
  msgid "too many %<always%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19995 cp/parser.cc:42435
  #, gcc-internal-format
  msgid "too many %<close%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:20005 cp/parser.cc:42448
  #, gcc-internal-format
  msgid "too many %<present%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:20013 cp/parser.cc:42459
  #, gcc-internal-format
  msgid ""
  "%<map%> clause with map-type modifier other than %<always%>, %<close%> or "
  "%<present%>"
  msgstr ""
  
! #: c/c-parser.cc:20051 cp/parser.cc:42499
  #, gcc-internal-format
  msgid "invalid map kind"
  msgstr ""
  
! #: c/c-parser.cc:20103 cp/parser.cc:42563
  #, gcc-internal-format
  msgid ""
  "%<ancestor%> device modifier not preceded by %<requires%> directive with "
  "%<reverse_offload%> clause"
  msgstr ""
  
! #: c/c-parser.cc:20115 cp/parser.cc:42574
  #, gcc-internal-format
  msgid "expected %<ancestor%> or %<device_num%>"
  msgstr ""
  
! #: c/c-parser.cc:20138 cp/semantics.cc:8418
  #, gcc-internal-format
  msgid "the %<device%> clause expression must evaluate to %<1%>"
  msgstr ""
  
! #: c/c-parser.cc:20171 cp/parser.cc:42645
  #, gcc-internal-format
  msgid "invalid dist_schedule kind"
  msgstr ""
  
! #: c/c-parser.cc:20250
  #, gcc-internal-format
  msgid "invalid proc_bind kind"
  msgstr ""
  
! #: c/c-parser.cc:20294
  #, gcc-internal-format
  msgid "expected %<host%>, %<nohost%> or %<any%>"
  msgstr ""
  
! #: c/c-parser.cc:20400 cp/semantics.cc:9665 cp/semantics.cc:9683
  #, gcc-internal-format
  msgid "%<partial%> argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:20501 cp/semantics.cc:8837
  #, gcc-internal-format
  msgid ""
  "%<detach%> clause event handle has type %qT rather than "
  "%<omp_event_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:20572 c/c-parser.cc:20666 cp/parser.cc:42828
! #: cp/parser.cc:42940
  #, gcc-internal-format
  msgid "string literal must not contain %<\\0%>"
  msgstr ""
  
! #: c/c-parser.cc:20581 c/c-parser.cc:20702 cp/parser.cc:42835
! #: cp/parser.cc:42975
  #, gcc-internal-format
  msgid "unknown foreign runtime identifier %qs"
  msgstr ""
  
! #: c/c-parser.cc:20596 c/c-parser.cc:20725 cp/parser.cc:42850
! #: cp/parser.cc:42997
  #, gcc-internal-format
  msgid "expected string literal or constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:20604 c/c-parser.cc:20733 cp/parser.cc:42858
! #: cp/parser.cc:43005 cp/semantics.cc:7513
  #, gcc-internal-format
  msgid "unknown foreign runtime identifier %qwd"
  msgstr ""
  
! #: c/c-parser.cc:20642 cp/parser.cc:42917
  #, gcc-internal-format
  msgid "expected %<fr%> or %<attr%> preference selector"
  msgstr ""
  
! #: c/c-parser.cc:20650 cp/parser.cc:42925
  #, gcc-internal-format
  msgid "duplicated %<fr%> preference selector"
  msgstr ""
  
! #: c/c-parser.cc:20676 cp/parser.cc:42949
  #, gcc-internal-format
  msgid "%<attr%> string literal must start with %<ompx_%>"
  msgstr ""
  
! #: c/c-parser.cc:20684 cp/parser.cc:42956
  #, gcc-internal-format
  msgid "%<attr%> string literal must not contain a comma"
  msgstr ""
  
! #: c/c-parser.cc:20696 cp/parser.cc:42968
  #, gcc-internal-format
  msgid "non-empty string literal expected"
  msgstr ""
  
! #: c/c-parser.cc:20806 cp/parser.cc:43108
  #, gcc-internal-format
  msgid "duplicate %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20813 cp/parser.cc:43115
  #, gcc-internal-format
  msgid "duplicate %<target%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20820 cp/parser.cc:43122
  #, gcc-internal-format
  msgid "duplicate %<prefer_type%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20841 cp/parser.cc:43143
  #, gcc-internal-format
  msgid "expected %<prefer_type%>, %<target%>, or %<targetsync%>"
  msgstr ""
  
! #: c/c-parser.cc:20877 c/c-parser.cc:27149 cp/parser.cc:43180
! #: cp/parser.cc:50583
  #, gcc-internal-format
  msgid "missing required %<target%> and/or %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:21118 cp/parser.cc:43475
  #, gcc-internal-format
  msgid "expected an OpenACC clause"
  msgstr ""
  
! #: c/c-parser.cc:21129 c/c-parser.cc:21526 c/c-parser.cc:29112
! #: cp/parser.cc:43486 cp/parser.cc:43939 cp/parser.cc:51427
  #, gcc-internal-format
  msgid "%qs is not valid for %qs"
  msgstr ""
  
! #: c/c-parser.cc:21174 cp/parser.cc:43534
  #, gcc-internal-format
  msgid "clauses in %<simd%> trait should be separated by %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:21327 cp/parser.cc:43727
  #, gcc-internal-format
  msgid "%qs must be the first clause of %qs"
  msgstr ""
  
! #: c/c-parser.cc:21515 cp/parser.cc:43928
  #, gcc-internal-format
  msgid "expected an OpenMP clause"
  msgstr ""
  
! #: c/c-parser.cc:21676 cp/parser.cc:49115
  #, gcc-internal-format
  msgid "no valid clauses specified in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21686 cp/parser.cc:49125
  #, gcc-internal-format
  msgid "array section in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21706 cp/parser.cc:49145
  #, gcc-internal-format
  msgid "%qD must be a global variable in %<#pragma acc declare link%>"
  msgstr ""
  
! #: c/c-parser.cc:21717 cp/parser.cc:49156
  #, gcc-internal-format
  msgid "invalid OpenACC clause at file scope"
  msgstr ""
  
! #: c/c-parser.cc:21724 cp/parser.cc:49163
  #, gcc-internal-format
  msgid "invalid use of %<extern%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21732 cp/parser.cc:49171
  #, gcc-internal-format
  msgid "invalid use of %<global%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21743 cp/parser.cc:49193
  #, gcc-internal-format
  msgid ""
  "%qD must be a variable declared in the same scope as %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21753 cp/parser.cc:49216
  #, gcc-internal-format
  msgid "variable %qD used more than once with %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21846 cp/parser.cc:49300
  #, gcc-internal-format
  msgid "expected %<data%> after %<#pragma acc %s%>"
  msgstr ""
  
! #: c/c-parser.cc:21862 cp/parser.cc:49317
  #, gcc-internal-format
  msgid "%<#pragma acc %s data%> has no data movement clause"
  msgstr ""
  
! #: c/c-parser.cc:21894 cp/parser.cc:49075
  #, gcc-internal-format
  msgid "%<host_data%> construct requires %<use_device%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22123 cp/parser.cc:3533
  #, gcc-internal-format
  msgid "%qE has not been declared"
  msgstr ""
  
! #: c/c-parser.cc:22127
  #, gcc-internal-format
  msgid "expected function name"
  msgstr ""
  
! #: c/c-parser.cc:22145 cp/parser.cc:52766
  #, gcc-internal-format
  msgid "%qD does not refer to a function"
  msgstr ""
  
! #: c/c-parser.cc:22168 c/c-parser.cc:22216 cp/parser.cc:1779
  #, gcc-internal-format
  msgid ""
  "%<#pragma acc routine%> not immediately followed by function declaration or "
  "definition"
  msgstr ""
  
! #: c/c-parser.cc:22208 cp/parser.cc:52817 cp/parser.cc:52864
  #, gcc-internal-format
  msgid ""
  "%<#pragma acc routine%> not immediately followed by a single function "
  "declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:22239 cp/parser.cc:52892
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be applied before use"
  msgstr ""
  
! #: c/c-parser.cc:22240 cp/parser.cc:52894
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be applied before definition"
  msgstr ""
  
! #: c/c-parser.cc:22285 cp/parser.cc:49533
  #, gcc-internal-format
  msgid ""
  "%<#pragma acc update%> must contain at least one %<device%> or %<host%> or "
  "%<self%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22343
  #, gcc-internal-format
  msgid ""
  "variable %qD used in the %<allocator%> clause must be declared before %qD"
  msgstr ""
  
! #: c/c-parser.cc:22347 c/c-parser.cc:22370
  #, gcc-internal-format
  msgid "to be allocated variable declared here"
  msgstr ""
  
! #: c/c-parser.cc:22365
  #, gcc-internal-format
  msgid ""
  "variable %qD used in the %<allocator%> clause must not be modified between "
  "declaration of %qD and its %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22368
  #, gcc-internal-format
  msgid "modified here"
  msgstr ""
  
! #: c/c-parser.cc:22436 cp/parser.cc:44054 cp/parser.cc:44069
  #, gcc-internal-format
  msgid ""
  "%<align%> clause argument needs to be positive constant power of two integer "
  "expression"
  msgstr ""
  
! #: c/c-parser.cc:22460
  #, gcc-internal-format
  msgid ""
  "%<allocator%> clause allocator expression has type %qT rather than "
  "%<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:22477
  #, gcc-internal-format
  msgid ""
  "function parameter %qD may not appear as list item in an %<allocate%> "
  "directive"
  msgstr ""
  
! #: c/c-parser.cc:22484
  #, gcc-internal-format
  msgid "%<allocate%> directive must be in the same scope as %qD"
  msgstr ""
  
! #: c/c-parser.cc:22492
  #, gcc-internal-format
  msgid "%qD already appeared as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22501
  #, gcc-internal-format
  msgid "%<allocator%> clause required for static variable %qD"
  msgstr ""
  
! #: c/c-parser.cc:22512
  #, gcc-internal-format
  msgid "%<allocator%> clause requires a predefined allocator as %qD is static"
  msgstr ""
  
! #: c/c-parser.cc:22663 cp/parser.cc:44234
  #, gcc-internal-format
  msgid "expected %<read%>, %<write%>, %<update%>, or %<capture%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22702 cp/parser.cc:44273
  #, gcc-internal-format
  msgid "expected %<seq_cst%>, %<acquire%> or %<relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:22726 cp/parser.cc:44302
  #, gcc-internal-format
  msgid ""
  "expected %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, "
--- 51028,52456 ----
  #. c_parser_skip_until_found stops at a closing nesting
  #. delimiter without consuming it, but here we need to consume
  #. it to proceed further.
! #: c/c-parser.cc:7878 c/c-parser.cc:7882 c/c-parser.cc:8390
! #: c/gimple-parser.cc:716 c/gimple-parser.cc:2520 cp/parser.cc:13267
  #, gcc-internal-format
  msgid "expected statement"
  msgstr ""
  
! #: c/c-parser.cc:7963
  #, gcc-internal-format
  msgid "expected %<:%> or %<...%>"
  msgstr ""
  
! #: c/c-parser.cc:7993
  #, gcc-internal-format
  msgid ""
  "GNU-style attribute between label and declaration appertains to the label"
  msgstr ""
  
! #: c/c-parser.cc:8246
  #, gcc-internal-format
  msgid "expected identifier or %<*%>"
  msgstr ""
  
! #: c/c-parser.cc:8372
  #, gcc-internal-format
  msgid ""
  "only attribute %<fallthrough%> or %<assume%> can be applied to a null "
  "statement"
  msgstr ""
  
! #: c/c-parser.cc:8482
  #, gcc-internal-format
  msgid "ISO C does not support if declarations before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:8504
  #, gcc-internal-format
  msgid "declaration in the controlling expression must have an initializer"
  msgstr ""
  
! #: c/c-parser.cc:8521 cp/parser.cc:5462 cp/parser.cc:16424
  #, gcc-internal-format
  msgid "expected declaration"
  msgstr ""
  
! #: c/c-parser.cc:8602 cp/parser.cc:15494
  #, gcc-internal-format
  msgid "suggest braces around empty body in an %<if%> statement"
  msgstr ""
  
! #: c/c-parser.cc:8645 cp/parser.cc:15497
  #, gcc-internal-format
  msgid "suggest braces around empty body in an %<else%> statement"
  msgstr ""
  
! #: c/c-parser.cc:8739 cp/parser.cc:14225
  #, gcc-internal-format
  msgid "suggest explicit braces to avoid ambiguous %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:8857 c/c-parser.cc:8936 c/c-parser.cc:9071 cp/parser.cc:15087
  #, gcc-internal-format
  msgid "loop not permitted in intervening code in OpenMP loop body"
  msgstr ""
  
! #: c/c-parser.cc:8944
  #, gcc-internal-format
  msgid "suggest braces around empty body in %<do%> statement"
  msgstr ""
  
! #: c/c-parser.cc:9105 c/c-parser.cc:9137
  #, gcc-internal-format
  msgid "multiple iterating variables in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9160
  #, gcc-internal-format
  msgid "invalid iterating variable in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9184 cp/parser.cc:14533
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC ivdep%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9190 cp/parser.cc:14539
  #, gcc-internal-format
  msgid "missing loop condition in loop with %<GCC unroll%> pragma"
  msgstr ""
  
! #: c/c-parser.cc:9231
  #, gcc-internal-format
  msgid "missing collection in fast enumeration"
  msgstr ""
  
! #: c/c-parser.cc:9380 c/c-parser.cc:9391 c/c-parser.cc:9402
  #, gcc-internal-format
  msgid "duplicate %<asm%> qualifier %qE"
  msgstr ""
  
! #: c/c-parser.cc:9381 c/c-parser.cc:9392 c/c-parser.cc:9403 cp/parser.cc:23381
! #: cp/parser.cc:23399 cp/parser.cc:23414
  #, gcc-internal-format
  msgid "first seen here"
  msgstr ""
  
! #: c/c-parser.cc:9412
  #, gcc-internal-format
  msgid "%qE is not a valid %<asm%> qualifier"
  msgstr ""
  
! #: c/c-parser.cc:9761 cp/parser.cc:4893
  #, gcc-internal-format
  msgid "a wide string is invalid in this context"
  msgstr ""
  
! #: c/c-parser.cc:9969
  #, gcc-internal-format
  msgid "ISO C forbids omitting the middle term of a %<?:%> expression"
  msgstr ""
  
  #. Location of the binary operator.
  #. Quiet warning.
! #: c/c-parser.cc:10193 cp/typeck.cc:5698
  #, gcc-internal-format
  msgid ""
  "division %<sizeof (%T) / sizeof (%T)%> does not compute the number of array "
  "elements"
  msgstr ""
  
! #: c/c-parser.cc:10199 cp/typeck.cc:5703
  #, gcc-internal-format
  msgid "first %<sizeof%> operand was declared here"
  msgstr ""
  
! #: c/c-parser.cc:10470
  #, gcc-internal-format
  msgid "storage class specifier in cast"
  msgstr ""
  
! #: c/c-parser.cc:10473
  #, gcc-internal-format
  msgid "alignment specified for type name in cast"
  msgstr ""
  
! #: c/c-parser.cc:10574
  #, gcc-internal-format
  msgid "traditional C rejects the unary plus operator"
  msgstr ""
  
! #: c/c-parser.cc:10704
  #, gcc-internal-format
  msgid "storage class specifier in %<sizeof%>"
  msgstr ""
  
! #: c/c-parser.cc:10707
  #, gcc-internal-format
  msgid "alignment specified for type name in %<sizeof%>"
  msgstr ""
  
! #: c/c-parser.cc:10723
  #, gcc-internal-format
  msgid "%<sizeof%> applied to a bit-field"
  msgstr ""
  
! #: c/c-parser.cc:10796
  #, gcc-internal-format
  msgid "storage class specifier in %qE"
  msgstr ""
  
! #: c/c-parser.cc:10799
  #, gcc-internal-format
  msgid "alignment specified for type name in %qE"
  msgstr ""
  
! #: c/c-parser.cc:10823
  #, gcc-internal-format
  msgid "ISO C does not allow %<%E (expression)%>"
  msgstr ""
  
! #: c/c-parser.cc:10976
  #, gcc-internal-format
  msgid "cannot take address of %qs"
  msgstr ""
  
! #: c/c-parser.cc:11083
  #, gcc-internal-format
  msgid "ISO C99 does not support %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11086
  #, gcc-internal-format
  msgid "ISO C90 does not support %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11097
  #, gcc-internal-format
  msgid ""
  "ISO C does not support use of type name as %<_Generic%> controlling operand "
  "before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11168
  #, gcc-internal-format
  msgid ""
  "ISO C does not support %<_Generic%> association with function type before C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11172
  #, gcc-internal-format
  msgid ""
  "ISO C does not support %<_Generic%> association with incomplete type before "
  "C2Y"
  msgstr ""
  
! #: c/c-parser.cc:11177
  #, gcc-internal-format
  msgid "%<_Generic%> association has variable length type"
  msgstr ""
  
! #: c/c-parser.cc:11211
  #, gcc-internal-format
  msgid "duplicate %<default%> case in %<_Generic%>"
  msgstr ""
  
! #: c/c-parser.cc:11212
  #, gcc-internal-format
  msgid "original %<default%> is here"
  msgstr ""
  
! #: c/c-parser.cc:11220
  #, gcc-internal-format
  msgid "%<_Generic%> specifies two compatible types"
  msgstr ""
  
! #: c/c-parser.cc:11221
  #, gcc-internal-format
  msgid "compatible type is here"
  msgstr ""
  
! #: c/c-parser.cc:11244
  #, gcc-internal-format
  msgid "%<_Generic%> selector matches multiple associations"
  msgstr ""
  
! #: c/c-parser.cc:11246
  #, gcc-internal-format
  msgid "other match is here"
  msgstr ""
  
! #: c/c-parser.cc:11271
  #, gcc-internal-format
  msgid ""
  "%<_Generic%> selector of type %qT is not compatible with any association"
  msgstr ""
  
! #: c/c-parser.cc:11292
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is not a function pointer"
  msgstr ""
  
! #: c/c-parser.cc:11300
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> is unprototyped"
  msgstr ""
  
! #: c/c-parser.cc:11306
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has variable arguments"
  msgstr ""
  
! #: c/c-parser.cc:11322
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has no arguments"
  msgstr ""
  
! #: c/c-parser.cc:11345 c/c-parser.cc:11349
  #, gcc-internal-format
  msgid "ISO C does not support %qs predefined identifier"
  msgstr ""
  
! #: c/c-parser.cc:11353
  #, gcc-internal-format
  msgid "ISO C90 does not support %<__func__%> predefined identifier"
  msgstr ""
  
! #: c/c-parser.cc:11562 c/c-parser.cc:13301 c/c-parser.cc:13323
! #: c/c-parser.cc:23002 c/gimple-parser.cc:1897 c/gimple-parser.cc:2537
! #: cp/parser.cc:44575
  #, gcc-internal-format
  msgid "expected expression"
  msgstr ""
  
! #: c/c-parser.cc:11584
  #, gcc-internal-format
  msgid "braced-group within expression allowed only inside a function"
  msgstr ""
  
! #: c/c-parser.cc:11599
  #, gcc-internal-format
  msgid "ISO C forbids braced-groups within expressions"
  msgstr ""
  
! #: c/c-parser.cc:11710
  #, gcc-internal-format
  msgid "optional second parameter of %<va_start%> not last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11749
  #, gcc-internal-format
  msgid ""
  "%<va_start%> macro used with additional arguments other than identifier of "
  "the last named argument"
  msgstr ""
  
! #: c/c-parser.cc:11894
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_choose_expr%>"
  msgstr ""
  
! #: c/c-parser.cc:11910
  #, gcc-internal-format
  msgid "first argument to %<__builtin_choose_expr%> not a constant"
  msgstr ""
  
! #: c/c-parser.cc:11980 c/c-parser.cc:11997 c/c-parser.cc:12004
  #, gcc-internal-format
  msgid "too few arguments to %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12025
  #, gcc-internal-format
  msgid "argument %u of %<__builtin_tgmath%> has wrong number of arguments"
  msgstr ""
  
! #: c/c-parser.cc:12069 c/c-parser.cc:12079
  #, gcc-internal-format
  msgid ""
  "invalid type-generic return type for argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12101 c/c-parser.cc:12111
  #, gcc-internal-format
  msgid ""
  "invalid type-generic type for argument %u of argument %u of "
  "%<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12144
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> all have the same type"
  msgstr ""
  
! #: c/c-parser.cc:12163
  #, gcc-internal-format
  msgid "function arguments of %<__builtin_tgmath%> lack type-generic parameter"
  msgstr ""
  
! #: c/c-parser.cc:12211
  #, gcc-internal-format
  msgid ""
  "duplicate type-generic parameter type for function argument %u of "
  "%<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12234
  #, gcc-internal-format
  msgid "bad return type for function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12251
  #, gcc-internal-format
  msgid ""
  "bad type for argument %u of function argument %u of %<__builtin_tgmath%>"
  msgstr ""
  
! #: c/c-parser.cc:12291
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid type of argument %u of type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12302
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "decimal floating-point argument %u to complex-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12310
  #, gcc-internal-format, gfc-internal-format
  msgid "decimal floating-point argument %u to binary-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12318 c/c-parser.cc:12348
  #, gcc-internal-format
  msgid ""
  "both complex and decimal floating-point arguments to type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12326 c/c-parser.cc:12368
  #, gcc-internal-format
  msgid ""
  "both binary and decimal floating-point arguments to type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12340
  #, gcc-internal-format, gfc-internal-format
  msgid "complex argument %u to decimal-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12360
  #, gcc-internal-format, gfc-internal-format
  msgid "binary argument %u to decimal-only type-generic function"
  msgstr ""
  
! #: c/c-parser.cc:12467
  #, gcc-internal-format
  msgid "no matching function for type-generic call"
  msgstr ""
  
! #: c/c-parser.cc:12508
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_call_with_static_chain%>"
  msgstr ""
  
! #: c/c-parser.cc:12521
  #, gcc-internal-format
  msgid ""
  "first argument to %<__builtin_call_with_static_chain%> must be a call "
  "expression"
  msgstr ""
  
! #: c/c-parser.cc:12525
  #, gcc-internal-format
  msgid ""
  "second argument to %<__builtin_call_with_static_chain%> must be a pointer "
  "type"
  msgstr ""
  
! #: c/c-parser.cc:12551
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_complex%>"
  msgstr ""
  
! #: c/c-parser.cc:12573
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operand not of real binary floating-point type"
  msgstr ""
  
! #: c/c-parser.cc:12582
  #, gcc-internal-format
  msgid "%<__builtin_complex%> operands of different types"
  msgstr ""
  
! #: c/c-parser.cc:12613
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_counted_by_ref%>"
  msgstr ""
  
! #: c/c-parser.cc:12624
  #, gcc-internal-format
  msgid "the argument to %<__builtin_counted_by_ref%> must be an array"
  msgstr ""
  
! #: c/c-parser.cc:12675 c/c-parser.cc:12704 cp/parser.cc:8032
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_shuffle%>"
  msgstr ""
  
! #: c/c-parser.cc:12875
  #, gcc-internal-format
  msgid "wrong number of arguments to %qs"
  msgstr ""
  
! #: c/c-parser.cc:12884 c/c-parser.cc:12964
  #, gcc-internal-format
  msgid "%qs operand not an integral type"
  msgstr ""
  
! #: c/c-parser.cc:12890 c/c-parser.cc:12970
  #, gcc-internal-format
  msgid "argument %u in call to function %qs has enumerated type"
  msgstr ""
  
! #: c/c-parser.cc:12897
  #, gcc-internal-format
  msgid "argument %u in call to function %qs has boolean type"
  msgstr ""
  
! #: c/c-parser.cc:12904
  #, gcc-internal-format
  msgid "argument 1 in call to function %qs has signed type"
  msgstr ""
  
! #: c/c-parser.cc:12912
  #, gcc-internal-format
  msgid "argument 1 in call to function %qs has %<char%> type"
  msgstr ""
  
! #: c/c-parser.cc:12986
  #, gcc-internal-format
  msgid "rotate count is negative"
  msgstr ""
  
! #: c/c-parser.cc:13278 cp/parser.cc:6380
  #, gcc-internal-format
  msgid "%<omp_all_memory%> may only be used in OpenMP %<depend%> clause"
  msgstr ""
  
! #: c/c-parser.cc:13288
  #, gcc-internal-format
  msgid "ISO C does not support %qs before C23"
  msgstr ""
  
! #: c/c-parser.cc:13376
  #, gcc-internal-format
  msgid "%qT declared in %<constexpr%> compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13381
  #, gcc-internal-format
  msgid "%qT defined in %<constexpr%> compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13396
  #, gcc-internal-format
  msgid "compound literal has variable size"
  msgstr ""
  
! #: c/c-parser.cc:13401
  #, gcc-internal-format
  msgid "compound literal has function type"
  msgstr ""
  
! #: c/c-parser.cc:13432
  #, gcc-internal-format
  msgid "compound literal qualified by address-space qualifier"
  msgstr ""
  
! #: c/c-parser.cc:13437
  #, gcc-internal-format
  msgid "ISO C90 forbids compound literals"
  msgstr ""
  
! #: c/c-parser.cc:13439
  #, gcc-internal-format
  msgid "ISO C forbids storage class specifiers in compound literals before C23"
  msgstr ""
  
! #: c/c-parser.cc:13453
  #, gcc-internal-format
  msgid "%<_Alignas%> specifiers cannot reduce alignment of compound literal"
  msgstr ""
  
! #: c/c-parser.cc:13528
  #, gcc-internal-format
  msgid ""
  "using integer absolute value function %qD when argument is of floating-point "
  "type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13533
  #, gcc-internal-format
  msgid ""
  "using integer absolute value function %qD when argument is of complex type "
  "%qT"
  msgstr ""
  
! #: c/c-parser.cc:13541
  #, gcc-internal-format
  msgid "taking the absolute value of unsigned type %qT has no effect"
  msgstr ""
  
! #: c/c-parser.cc:13552
  #, gcc-internal-format
  msgid ""
  "using floating-point absolute value function %qD when argument is of integer "
  "type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13556
  #, gcc-internal-format
  msgid ""
  "using floating-point absolute value function %qD when argument is of decimal "
  "floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13561
  #, gcc-internal-format
  msgid ""
  "using floating-point absolute value function %qD when argument is of complex "
  "type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13574
  #, gcc-internal-format
  msgid ""
  "using complex absolute value function %qD when argument is of integer type "
  "%qT"
  msgstr ""
  
! #: c/c-parser.cc:13578
  #, gcc-internal-format
  msgid ""
  "using complex absolute value function %qD when argument is of floating-point "
  "type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13596
  #, gcc-internal-format
  msgid ""
  "using decimal floating-point absolute value function %qD when argument is of "
  "integer type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13601
  #, gcc-internal-format
  msgid ""
  "using decimal floating-point absolute value function %qD when argument is of "
  "floating-point type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13606
  #, gcc-internal-format
  msgid ""
  "using decimal floating-point absolute value function %qD when argument is of "
  "complex type %qT"
  msgstr ""
  
! #: c/c-parser.cc:13632
  #, gcc-internal-format
  msgid ""
  "absolute value function %qD given an argument of type %qT but has parameter "
  "of type %qT which may cause truncation of value"
  msgstr ""
  
! #: c/c-parser.cc:13762 cp/parser.cc:8468
  #, gcc-internal-format
  msgid "calls to the OpenMP runtime API are not permitted in intervening code"
  msgstr ""
  
! #: c/c-parser.cc:14182
  #, gcc-internal-format
  msgid "expected identifier or %<)%>"
  msgstr ""
  
! #: c/c-parser.cc:14278
  #, gcc-internal-format
  msgid "extra semicolon"
  msgstr ""
  
! #: c/c-parser.cc:14526
  #, gcc-internal-format
  msgid "extra semicolon in method definition specified"
  msgstr ""
  
! #: c/c-parser.cc:14658
  #, gcc-internal-format
  msgid "method attributes must be specified at the end only"
  msgstr ""
  
! #: c/c-parser.cc:14678
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%> after method attribute definition"
  msgstr ""
  
! #: c/c-parser.cc:14800
  #, gcc-internal-format
  msgid "objective-c method declaration is expected"
  msgstr ""
  
! #: c/c-parser.cc:15252
  #, gcc-internal-format
  msgid "no type or storage class may be specified here,"
  msgstr ""
  
! #: c/c-parser.cc:15320 cp/parser.cc:38479
  #, gcc-internal-format
  msgid "empty property attribute list"
  msgstr ""
  
! #: c/c-parser.cc:15334 cp/parser.cc:38492
  #, gcc-internal-format
  msgid "missing property attribute"
  msgstr ""
  
! #: c/c-parser.cc:15373
  #, gcc-internal-format
  msgid "unknown property attribute %<%s%s%>"
  msgstr ""
  
! #: c/c-parser.cc:15376 cp/parser.cc:38529
  #, gcc-internal-format
  msgid "unknown property attribute"
  msgstr ""
  
! #: c/c-parser.cc:15385 cp/parser.cc:38538
  #, gcc-internal-format
  msgid "expected %<=%> after Objective-C %qE"
  msgstr ""
  
! #: c/c-parser.cc:15396 cp/parser.cc:38552
  #, gcc-internal-format
  msgid "expected %qE selector name"
  msgstr ""
  
! #: c/c-parser.cc:15412 cp/parser.cc:38571
  #, gcc-internal-format
  msgid "setter method names must terminate with %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:15636 cp/semantics.cc:14071
  #, gcc-internal-format
  msgid ""
  "%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a "
  "non-negative integral constant less than %u"
  msgstr ""
  
! #: c/c-parser.cc:15674 cp/parser.cc:53506
  #, gcc-internal-format
  msgid "intervening code must not contain OpenMP directives"
  msgstr ""
  
! #: c/c-parser.cc:15694 c/c-parser.cc:25712 c/c-parser.cc:26021
! #: c/c-parser.cc:26084 c/c-parser.cc:26194 cp/parser.cc:48149
! #: cp/parser.cc:48497 cp/parser.cc:48612 cp/parser.cc:48711 cp/parser.cc:53538
! #: cp/parser.cc:53554 cp/parser.cc:53570 cp/parser.cc:53586 cp/parser.cc:53603
! #: cp/parser.cc:53620 cp/parser.cc:53637 cp/parser.cc:53664 cp/parser.cc:53678
! #: cp/parser.cc:53703 cp/parser.cc:53717
  #, gcc-internal-format
  msgid "%<#pragma %s%> may only be used in compound statements"
  msgstr ""
  
! #: c/c-parser.cc:15717 cp/parser.cc:53692
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be at file scope"
  msgstr ""
  
! #: c/c-parser.cc:15816 cp/parser.cc:53822
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp scan%> may only be used in a loop construct with %<inscan%> "
  "%<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:15823 cp/parser.cc:53828
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp section%> may only be used in %<#pragma omp sections%> "
  "construct"
  msgstr ""
  
! #: c/c-parser.cc:15835 c/c-parser.cc:15851
  #, gcc-internal-format
  msgid "%<#pragma %s%> may only be used at file scope"
  msgstr ""
  
! #: c/c-parser.cc:15922 cp/parser.cc:53911
  #, gcc-internal-format
  msgid "for, while or do statement expected"
  msgstr ""
  
! #: c/c-parser.cc:15938 cp/parser.cc:53528
  #, gcc-internal-format
  msgid "%<#pragma GCC pch_preprocess%> must be first"
  msgstr ""
  
! #: c/c-parser.cc:16321 c/c-parser.cc:20241 c/c-parser.cc:22470
! #: c/c-parser.cc:22489 c/c-parser.cc:22742 c/c-parser.cc:22800
! #: c/c-parser.cc:22807 c/c-parser.cc:22814 c/c-parser.cc:27166
! #: c/c-parser.cc:28371 c/c-parser.cc:28379 c/c-parser.cc:28755
! #: c/c-parser.cc:28765 c/c-parser.cc:28859 c/c-parser.cc:28866
! #: c/c-parser.cc:28873 cp/parser.cc:39018 cp/parser.cc:42699 cp/parser.cc:44101
! #: cp/parser.cc:44138 cp/parser.cc:44327 cp/parser.cc:44390 cp/parser.cc:44397
! #: cp/parser.cc:44404 cp/parser.cc:50070 cp/parser.cc:50077 cp/parser.cc:50084
! #: cp/parser.cc:50617 cp/parser.cc:52392 cp/parser.cc:52400 cp/parser.cc:52552
! #: cp/parser.cc:52562
  #, gcc-internal-format
  msgid "too many %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:16348
  #, gcc-internal-format
  msgid "expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:16955 c/c-parser.cc:29582
  #, gcc-internal-format
  msgid "%qD is not a variable"
  msgstr ""
  
! #: c/c-parser.cc:16959 cp/semantics.cc:9112
  #, gcc-internal-format
  msgid "%qD is not a pointer variable"
  msgstr ""
  
! #: c/c-parser.cc:17001 cp/parser.cc:39909
  #, gcc-internal-format
  msgid "collapse argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:17096 cp/parser.cc:39987
  #, gcc-internal-format
  msgid "expected %<none%> or %<present%>"
  msgstr ""
  
! #: c/c-parser.cc:17098 cp/parser.cc:39989
  #, gcc-internal-format
  msgid "expected %<none%>, %<shared%>, %<private%> or %<firstprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:17183 cp/parser.cc:40059
  #, gcc-internal-format
  msgid "expected constant logical expression"
  msgstr ""
  
! #: c/c-parser.cc:17260 cp/parser.cc:40141
  #, gcc-internal-format
  msgid "expected %<data%>, %<update%>, %<enter%> or %<exit%>"
  msgstr ""
  
! #: c/c-parser.cc:17280 c/c-parser.cc:26077 c/c-parser.cc:26187
! #: cp/parser.cc:40159 cp/parser.cc:48489 cp/parser.cc:48604
  #, gcc-internal-format
  msgid "expected %<data%>"
  msgstr ""
  
! #: c/c-parser.cc:17333 cp/parser.cc:40214
  #, gcc-internal-format
  msgid "too many %<if%> clauses with %qs modifier"
  msgstr ""
  
! #: c/c-parser.cc:17340 cp/parser.cc:40221
  #, gcc-internal-format
  msgid "too many %<if%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:17342 cp/parser.cc:40223
  #, gcc-internal-format
  msgid "too many %<if%> clauses without modifier"
  msgstr ""
  
! #: c/c-parser.cc:17348 cp/parser.cc:40229
  #, gcc-internal-format
  msgid ""
  "if any %<if%> clause has modifier, then all %<if%> clauses have to use "
  "modifier"
  msgstr ""
  
! #: c/c-parser.cc:17453 c/c-parser.cc:17513 c/c-parser.cc:17575
! #: c/c-parser.cc:17623 c/c-parser.cc:17703 c/c-parser.cc:18100
! #: c/c-parser.cc:18182 c/c-parser.cc:18787 c/c-parser.cc:18932
! #: c/c-parser.cc:19000 c/c-parser.cc:20178
  #, gcc-internal-format
  msgid "expected integer expression"
  msgstr ""
  
! #: c/c-parser.cc:17464
  #, gcc-internal-format
  msgid "%<num_threads%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17525
  #, gcc-internal-format
  msgid "%<num_tasks%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17587 cp/semantics.cc:9327
  #, gcc-internal-format
  msgid "%<grainsize%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:17636 cp/semantics.cc:9357
  #, gcc-internal-format
  msgid "%<priority%> value must be non-negative"
  msgstr ""
  
! #: c/c-parser.cc:17670 cp/parser.cc:40455
  #, gcc-internal-format
  msgid "expected constant integer expression with valid sync-hint value"
  msgstr ""
  
! #: c/c-parser.cc:17742 cp/parser.cc:40525
  #, gcc-internal-format
  msgid ""
  "expected %<alloc%>, %<to%>, %<from%>, %<tofrom%>, %<firstprivate%>, %<none%> "
  "or %<default%>"
  msgstr ""
  
! #: c/c-parser.cc:17810
  #, gcc-internal-format
  msgid "expected %<scalar%>, %<aggregate%>, %<pointer%> or %<all%>"
  msgstr ""
  
! #: c/c-parser.cc:17887 cp/parser.cc:40677
  #, gcc-internal-format
  msgid "too many %<defaultmap%> clauses with %qs category"
  msgstr ""
  
! #: c/c-parser.cc:17890 cp/parser.cc:40680
  #, gcc-internal-format
  msgid "too many %<defaultmap%> clauses with unspecified category"
  msgstr ""
  
! #: c/c-parser.cc:17974 cp/semantics.cc:8181 cp/semantics.cc:8236
  #, gcc-internal-format
  msgid "%qs expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:17986 c/c-parser.cc:18109 cp/semantics.cc:8215
  #: cp/semantics.cc:8250
  #, gcc-internal-format
  msgid "%qs value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18048 cp/parser.cc:39672
  #, gcc-internal-format
  msgid "too many %<static%> arguments"
  msgstr ""
  
! #: c/c-parser.cc:18082 cp/parser.cc:39705
  #, gcc-internal-format
  msgid "unexpected argument"
  msgstr ""
  
! #: c/c-parser.cc:18249 cp/semantics.cc:9543
  #, gcc-internal-format
  msgid "%<tile%> argument needs positive integral constant"
  msgstr ""
  
! #: c/c-parser.cc:18317 cp/parser.cc:43318
  #, gcc-internal-format
  msgid "too many %<self%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:18359 cp/parser.cc:40730
  #, gcc-internal-format
  msgid "expected %<reproducible%> or %<unconstrained%>"
  msgstr ""
  
! #: c/c-parser.cc:18368 c/c-parser.cc:18374 cp/parser.cc:40739
! #: cp/parser.cc:40749
  #, gcc-internal-format
  msgid "expected %<concurrent%>"
  msgstr ""
  
! #: c/c-parser.cc:18410 cp/parser.cc:40789
  #, gcc-internal-format
  msgid "expected %<teams%>, %<parallel%> or %<thread%>"
  msgstr ""
  
! #: c/c-parser.cc:18463 cp/parser.cc:40857
  #, gcc-internal-format
  msgid "ordered argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:18588 c/c-parser.cc:27916 cp/parser.cc:52002
  #, gcc-internal-format
  msgid ""
  "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or "
  "identifier"
  msgstr ""
  
! #: c/c-parser.cc:18710 cp/parser.cc:41115
  #, gcc-internal-format
  msgid "both %<monotonic%> and %<nonmonotonic%> modifiers specified"
  msgstr ""
  
! #: c/c-parser.cc:18764 cp/parser.cc:41131
  #, gcc-internal-format
  msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18768 cp/parser.cc:41134
  #, gcc-internal-format
  msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
  msgstr ""
  
! #: c/c-parser.cc:18781 cp/semantics.cc:8297
  #, gcc-internal-format
  msgid "chunk size value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18804 cp/parser.cc:41154
  #, gcc-internal-format
  msgid "invalid schedule kind"
  msgstr ""
  
! #: c/c-parser.cc:18943 c/c-parser.cc:18954
  #, gcc-internal-format
  msgid "%<num_teams%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:18962 cp/semantics.cc:8264
  #, gcc-internal-format
  msgid "%<num_teams%> lower bound %qE bigger than upper bound %qE"
  msgstr ""
  
! #: c/c-parser.cc:19011 cp/semantics.cc:8393
  #, gcc-internal-format
  msgid "%<thread_limit%> value must be positive"
  msgstr ""
  
! #: c/c-parser.cc:19056 cp/semantics.cc:8521
  #, gcc-internal-format
  msgid ""
  "%<aligned%> clause alignment expression must be positive constant integer "
  "expression"
  msgstr ""
  
! #: c/c-parser.cc:19168 c/c-parser.cc:22457 cp/parser.cc:44093
  #, gcc-internal-format
  msgid "expected %<allocator%> or %<align%>"
  msgstr ""
  
! #: c/c-parser.cc:19175
  #, gcc-internal-format
  msgid "duplicate %qs modifier"
  msgstr ""
  
! #: c/c-parser.cc:19223 cp/semantics.cc:8654
  #, gcc-internal-format
  msgid ""
  "%<allocate%> clause allocator expression has type %qT rather than "
  "%<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:19234 cp/semantics.cc:8609 cp/semantics.cc:8625
  #, gcc-internal-format
  msgid ""
  "%<allocate%> clause %<align%> modifier argument needs to be positive "
  "constant power of two integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19353 cp/parser.cc:41693
  #, gcc-internal-format
  msgid "multiple linear modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19365 cp/parser.cc:41706
  #, gcc-internal-format
  msgid "multiple %<step%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:19373 c/c-parser.cc:19401
  #, gcc-internal-format
  msgid "%<linear%> clause step expression must be integral"
  msgstr ""
  
! #: c/c-parser.cc:19453
  #, gcc-internal-format
  msgid ""
  "%<safelen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19492
  #, gcc-internal-format
  msgid ""
  "%<simdlen%> clause expression must be positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:19852 cp/parser.cc:42253
  #, gcc-internal-format
  msgid "%<iterator%> modifier incompatible with %qs"
  msgstr ""
  
! #: c/c-parser.cc:19900 cp/parser.cc:42308 cp/parser.cc:42760 cp/parser.cc:42827
  #, gcc-internal-format
  msgid "invalid depend kind"
  msgstr ""
  
! #: c/c-parser.cc:19961 cp/parser.cc:42338
  #, gcc-internal-format
  msgid "invalid doacross kind"
  msgstr ""
  
! #: c/c-parser.cc:20030 cp/parser.cc:42481
  #, gcc-internal-format
  msgid "too many %<always%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:20040 cp/parser.cc:42494
  #, gcc-internal-format
  msgid "too many %<close%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:20050 cp/parser.cc:42507
  #, gcc-internal-format
  msgid "too many %<present%> modifiers"
  msgstr ""
  
! #: c/c-parser.cc:20058 cp/parser.cc:42518
  #, gcc-internal-format
  msgid ""
  "%<map%> clause with map-type modifier other than %<always%>, %<close%> or "
  "%<present%>"
  msgstr ""
  
! #: c/c-parser.cc:20096 cp/parser.cc:42558
  #, gcc-internal-format
  msgid "invalid map kind"
  msgstr ""
  
! #: c/c-parser.cc:20148 cp/parser.cc:42622
  #, gcc-internal-format
  msgid ""
  "%<ancestor%> device modifier not preceded by %<requires%> directive with "
  "%<reverse_offload%> clause"
  msgstr ""
  
! #: c/c-parser.cc:20160 cp/parser.cc:42633
  #, gcc-internal-format
  msgid "expected %<ancestor%> or %<device_num%>"
  msgstr ""
  
! #: c/c-parser.cc:20183 cp/semantics.cc:8418
  #, gcc-internal-format
  msgid "the %<device%> clause expression must evaluate to %<1%>"
  msgstr ""
  
! #: c/c-parser.cc:20216 cp/parser.cc:42704
  #, gcc-internal-format
  msgid "invalid dist_schedule kind"
  msgstr ""
  
! #: c/c-parser.cc:20295
  #, gcc-internal-format
  msgid "invalid proc_bind kind"
  msgstr ""
  
! #: c/c-parser.cc:20339
  #, gcc-internal-format
  msgid "expected %<host%>, %<nohost%> or %<any%>"
  msgstr ""
  
! #: c/c-parser.cc:20445 cp/semantics.cc:9665 cp/semantics.cc:9683
  #, gcc-internal-format
  msgid "%<partial%> argument needs positive constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:20546 cp/semantics.cc:8837
  #, gcc-internal-format
  msgid ""
  "%<detach%> clause event handle has type %qT rather than "
  "%<omp_event_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:20617 c/c-parser.cc:20711 cp/parser.cc:42887
! #: cp/parser.cc:42999
  #, gcc-internal-format
  msgid "string literal must not contain %<\\0%>"
  msgstr ""
  
! #: c/c-parser.cc:20626 c/c-parser.cc:20747 cp/parser.cc:42894
! #: cp/parser.cc:43034
  #, gcc-internal-format
  msgid "unknown foreign runtime identifier %qs"
  msgstr ""
  
! #: c/c-parser.cc:20641 c/c-parser.cc:20770 cp/parser.cc:42909
! #: cp/parser.cc:43056
  #, gcc-internal-format
  msgid "expected string literal or constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:20649 c/c-parser.cc:20778 cp/parser.cc:42917
! #: cp/parser.cc:43064 cp/semantics.cc:7513
  #, gcc-internal-format
  msgid "unknown foreign runtime identifier %qwd"
  msgstr ""
  
! #: c/c-parser.cc:20687 cp/parser.cc:42976
  #, gcc-internal-format
  msgid "expected %<fr%> or %<attr%> preference selector"
  msgstr ""
  
! #: c/c-parser.cc:20695 cp/parser.cc:42984
  #, gcc-internal-format
  msgid "duplicated %<fr%> preference selector"
  msgstr ""
  
! #: c/c-parser.cc:20721 cp/parser.cc:43008
  #, gcc-internal-format
  msgid "%<attr%> string literal must start with %<ompx_%>"
  msgstr ""
  
! #: c/c-parser.cc:20729 cp/parser.cc:43015
  #, gcc-internal-format
  msgid "%<attr%> string literal must not contain a comma"
  msgstr ""
  
! #: c/c-parser.cc:20741 cp/parser.cc:43027
  #, gcc-internal-format
  msgid "non-empty string literal expected"
  msgstr ""
  
! #: c/c-parser.cc:20851 cp/parser.cc:43167
  #, gcc-internal-format
  msgid "duplicate %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20858 cp/parser.cc:43174
  #, gcc-internal-format
  msgid "duplicate %<target%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20865 cp/parser.cc:43181
  #, gcc-internal-format
  msgid "duplicate %<prefer_type%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:20886 cp/parser.cc:43202
  #, gcc-internal-format
  msgid "expected %<prefer_type%>, %<target%>, or %<targetsync%>"
  msgstr ""
  
! #: c/c-parser.cc:20922 c/c-parser.cc:27195 cp/parser.cc:43239
! #: cp/parser.cc:50642
  #, gcc-internal-format
  msgid "missing required %<target%> and/or %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-parser.cc:21163 cp/parser.cc:43534
  #, gcc-internal-format
  msgid "expected an OpenACC clause"
  msgstr ""
  
! #: c/c-parser.cc:21174 c/c-parser.cc:21571 c/c-parser.cc:29156
! #: cp/parser.cc:43545 cp/parser.cc:43998 cp/parser.cc:51484
  #, gcc-internal-format
  msgid "%qs is not valid for %qs"
  msgstr ""
  
! #: c/c-parser.cc:21219 cp/parser.cc:43593
  #, gcc-internal-format
  msgid "clauses in %<simd%> trait should be separated by %<,%>"
  msgstr ""
  
! #: c/c-parser.cc:21372 cp/parser.cc:43786
  #, gcc-internal-format
  msgid "%qs must be the first clause of %qs"
  msgstr ""
  
! #: c/c-parser.cc:21560 cp/parser.cc:43987
  #, gcc-internal-format
  msgid "expected an OpenMP clause"
  msgstr ""
  
! #: c/c-parser.cc:21721 cp/parser.cc:49174
  #, gcc-internal-format
  msgid "no valid clauses specified in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21731 cp/parser.cc:49184
  #, gcc-internal-format
  msgid "array section in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21751 cp/parser.cc:49204
  #, gcc-internal-format
  msgid "%qD must be a global variable in %<#pragma acc declare link%>"
  msgstr ""
  
! #: c/c-parser.cc:21762 cp/parser.cc:49215
  #, gcc-internal-format
  msgid "invalid OpenACC clause at file scope"
  msgstr ""
  
! #: c/c-parser.cc:21769 cp/parser.cc:49222
  #, gcc-internal-format
  msgid "invalid use of %<extern%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21777 cp/parser.cc:49230
  #, gcc-internal-format
  msgid "invalid use of %<global%> variable %qD in %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21788 cp/parser.cc:49252
  #, gcc-internal-format
  msgid ""
  "%qD must be a variable declared in the same scope as %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21798 cp/parser.cc:49275
  #, gcc-internal-format
  msgid "variable %qD used more than once with %<#pragma acc declare%>"
  msgstr ""
  
! #: c/c-parser.cc:21891 cp/parser.cc:49359
  #, gcc-internal-format
  msgid "expected %<data%> after %<#pragma acc %s%>"
  msgstr ""
  
! #: c/c-parser.cc:21907 cp/parser.cc:49376
  #, gcc-internal-format
  msgid "%<#pragma acc %s data%> has no data movement clause"
  msgstr ""
  
! #: c/c-parser.cc:21939 cp/parser.cc:49134
  #, gcc-internal-format
  msgid "%<host_data%> construct requires %<use_device%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22168 cp/parser.cc:3533
  #, gcc-internal-format
  msgid "%qE has not been declared"
  msgstr ""
  
! #: c/c-parser.cc:22172
  #, gcc-internal-format
  msgid "expected function name"
  msgstr ""
  
! #: c/c-parser.cc:22190 cp/parser.cc:52819
  #, gcc-internal-format
  msgid "%qD does not refer to a function"
  msgstr ""
  
! #: c/c-parser.cc:22213 c/c-parser.cc:22261 cp/parser.cc:1779
  #, gcc-internal-format
  msgid ""
  "%<#pragma acc routine%> not immediately followed by function declaration or "
  "definition"
  msgstr ""
  
! #: c/c-parser.cc:22253 cp/parser.cc:52870 cp/parser.cc:52917
  #, gcc-internal-format
  msgid ""
  "%<#pragma acc routine%> not immediately followed by a single function "
  "declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:22284 cp/parser.cc:52945
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be applied before use"
  msgstr ""
  
! #: c/c-parser.cc:22285 cp/parser.cc:52947
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> must be applied before definition"
  msgstr ""
  
! #: c/c-parser.cc:22330 cp/parser.cc:49592
  #, gcc-internal-format
  msgid ""
  "%<#pragma acc update%> must contain at least one %<device%> or %<host%> or "
  "%<self%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22388
  #, gcc-internal-format
  msgid ""
  "variable %qD used in the %<allocator%> clause must be declared before %qD"
  msgstr ""
  
! #: c/c-parser.cc:22392 c/c-parser.cc:22415
  #, gcc-internal-format
  msgid "to be allocated variable declared here"
  msgstr ""
  
! #: c/c-parser.cc:22410
  #, gcc-internal-format
  msgid ""
  "variable %qD used in the %<allocator%> clause must not be modified between "
  "declaration of %qD and its %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22413
  #, gcc-internal-format
  msgid "modified here"
  msgstr ""
  
! #: c/c-parser.cc:22481 cp/parser.cc:44113 cp/parser.cc:44128
  #, gcc-internal-format
  msgid ""
  "%<align%> clause argument needs to be positive constant power of two integer "
  "expression"
  msgstr ""
  
! #: c/c-parser.cc:22505
  #, gcc-internal-format
  msgid ""
  "%<allocator%> clause allocator expression has type %qT rather than "
  "%<omp_allocator_handle_t%>"
  msgstr ""
  
! #: c/c-parser.cc:22522
  #, gcc-internal-format
  msgid ""
  "function parameter %qD may not appear as list item in an %<allocate%> "
  "directive"
  msgstr ""
  
! #: c/c-parser.cc:22529
  #, gcc-internal-format
  msgid "%<allocate%> directive must be in the same scope as %qD"
  msgstr ""
  
! #: c/c-parser.cc:22537
  #, gcc-internal-format
  msgid "%qD already appeared as list item in an %<allocate%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22546
  #, gcc-internal-format
  msgid "%<allocator%> clause required for static variable %qD"
  msgstr ""
  
! #: c/c-parser.cc:22557
  #, gcc-internal-format
  msgid "%<allocator%> clause requires a predefined allocator as %qD is static"
  msgstr ""
  
! #: c/c-parser.cc:22708 cp/parser.cc:44293
  #, gcc-internal-format
  msgid "expected %<read%>, %<write%>, %<update%>, or %<capture%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22747 cp/parser.cc:44332
  #, gcc-internal-format
  msgid "expected %<seq_cst%>, %<acquire%> or %<relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:22771 cp/parser.cc:44361
  #, gcc-internal-format
  msgid ""
  "expected %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, "
*************** msgid ""
*** 52451,52619 ****
  "%<hint%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22741 cp/parser.cc:44317
  #, gcc-internal-format
  msgid "too many atomic clauses"
  msgstr ""
  
! #: c/c-parser.cc:22748 cp/parser.cc:44324
  #, gcc-internal-format
  msgid "too many memory order clauses"
  msgstr ""
  
! #: c/c-parser.cc:22786 c/c-parser.cc:22793 cp/parser.cc:44362
! #: cp/parser.cc:44369
  #, gcc-internal-format
  msgid "%qs clause is incompatible with %<read%> or %<write%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:22799 c/c-parser.cc:22804 cp/parser.cc:44375
! #: cp/parser.cc:44380
  #, gcc-internal-format
  msgid "%qs clause requires %qs clause"
  msgstr ""
  
! #: c/c-parser.cc:22827 cp/parser.cc:44403
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp atomic write%> incompatible with %<acquire%> clause implicitly "
  "provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22838 cp/parser.cc:44414
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp atomic read%> incompatible with %<release%> clause implicitly "
  "provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22870 cp/parser.cc:44446
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22880 cp/parser.cc:44456
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23001 cp/parser.cc:44556
  #, gcc-internal-format
  msgid "expected %<==%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23008 cp/parser.cc:44563
  #, gcc-internal-format
  msgid "expected %<==%>, %<<%> or %<>%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23081 cp/parser.cc:44628 cp/parser.cc:44911 cp/parser.cc:45005
! #: cp/parser.cc:45023
  #, gcc-internal-format
  msgid "invalid form of %<#pragma omp atomic compare%>"
  msgstr ""
  
! #: c/c-parser.cc:23092 cp/parser.cc:44639
  #, gcc-internal-format
  msgid "unexpected %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:23152 cp/parser.cc:45078
  #, gcc-internal-format
  msgid "invalid form of %<pragma omp atomic compare%>"
  msgstr ""
  
! #: c/c-parser.cc:23423 cp/parser.cc:44932 cp/parser.cc:44958
  #, gcc-internal-format
  msgid "invalid form of %<#pragma omp atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:23427 cp/parser.cc:44998 cp/parser.cc:45032
  #, gcc-internal-format
  msgid "invalid operator for %<#pragma omp atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:23478 cp/parser.cc:45067
  #, gcc-internal-format
  msgid "%<weak%> clause requires atomic equality comparison"
  msgstr ""
  
! #: c/c-parser.cc:23484 cp/semantics.cc:11909 cp/semantics.cc:11919
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp atomic capture%> uses two different expressions for memory"
  msgstr ""
  
! #: c/c-parser.cc:23587 cp/semantics.cc:11996
  #, gcc-internal-format
  msgid "%<depobj%> expression is not lvalue expression"
  msgstr ""
  
! #: c/c-parser.cc:23630
  #, gcc-internal-format
  msgid "%<destroy%> expression is not lvalue expression"
  msgstr ""
  
! #: c/c-parser.cc:23636 cp/parser.cc:45220
  #, gcc-internal-format
  msgid ""
  "the %<destroy%> expression %qE should be the same as the %<depobj%> argument "
  "%qE"
  msgstr ""
  
! #: c/c-parser.cc:23667 cp/parser.cc:45256
  #, gcc-internal-format
  msgid "expected %<in%>, %<out%>, %<inout%>, %<mutexinoutset%> or %<inoutset%>"
  msgstr ""
  
! #: c/c-parser.cc:23679 cp/parser.cc:45272
  #, gcc-internal-format
  msgid "expected %<depend%>, %<destroy%> or %<update%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23720 cp/parser.cc:45310
  #, gcc-internal-format
  msgid "expected %<seq_cst%>, %<acq_rel%>, %<release%> or %<acquire%>"
  msgstr ""
  
! #: c/c-parser.cc:23728 cp/parser.cc:45318
  #, gcc-internal-format
  msgid "%<flush%> list specified together with memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:23733
  #, gcc-internal-format
  msgid "expected %<(%> or end of line"
  msgstr ""
  
! #: c/c-parser.cc:23804 cp/parser.cc:46039
  #, gcc-internal-format
  msgid ""
  "%<[[omp::directive(%s)]]%> must be the only specified attribute on a "
  "statement"
  msgstr ""
  
! #: c/c-parser.cc:23871 cp/parser.cc:46108
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero preceding executable statements"
  msgstr ""
  
! #: c/c-parser.cc:23905 cp/parser.cc:46141
  #, gcc-internal-format
  msgid "expected %<inclusive%> or %<exclusive%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23910 cp/parser.cc:46147
  #, gcc-internal-format
  msgid "expected %<#pragma omp scan%>"
  msgstr ""
  
! #: c/c-parser.cc:23919 cp/parser.cc:46156
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero succeeding executable statements"
  msgstr ""
  
! #: c/c-parser.cc:23944 cp/parser.cc:46179
  #, gcc-internal-format
  msgid "for statement expected"
  msgstr ""
--- 52458,52626 ----
  "%<hint%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22786 cp/parser.cc:44376
  #, gcc-internal-format
  msgid "too many atomic clauses"
  msgstr ""
  
! #: c/c-parser.cc:22793 cp/parser.cc:44383
  #, gcc-internal-format
  msgid "too many memory order clauses"
  msgstr ""
  
! #: c/c-parser.cc:22831 c/c-parser.cc:22838 cp/parser.cc:44421
! #: cp/parser.cc:44428
  #, gcc-internal-format
  msgid "%qs clause is incompatible with %<read%> or %<write%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:22844 c/c-parser.cc:22849 cp/parser.cc:44434
! #: cp/parser.cc:44439
  #, gcc-internal-format
  msgid "%qs clause requires %qs clause"
  msgstr ""
  
! #: c/c-parser.cc:22872 cp/parser.cc:44462
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp atomic write%> incompatible with %<acquire%> clause implicitly "
  "provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22883 cp/parser.cc:44473
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp atomic read%> incompatible with %<release%> clause implicitly "
  "provided by a %<requires%> directive"
  msgstr ""
  
! #: c/c-parser.cc:22915 cp/parser.cc:44505
  #, gcc-internal-format
  msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause"
  msgstr ""
  
! #: c/c-parser.cc:22925 cp/parser.cc:44515
  #, gcc-internal-format
  msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23046 cp/parser.cc:44615
  #, gcc-internal-format
  msgid "expected %<==%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23053 cp/parser.cc:44622
  #, gcc-internal-format
  msgid "expected %<==%>, %<<%> or %<>%> comparison in %<if%> condition"
  msgstr ""
  
! #: c/c-parser.cc:23126 cp/parser.cc:44687 cp/parser.cc:44970 cp/parser.cc:45064
! #: cp/parser.cc:45082
  #, gcc-internal-format
  msgid "invalid form of %<#pragma omp atomic compare%>"
  msgstr ""
  
! #: c/c-parser.cc:23137 cp/parser.cc:44698
  #, gcc-internal-format
  msgid "unexpected %<else%>"
  msgstr ""
  
! #: c/c-parser.cc:23197 cp/parser.cc:45137
  #, gcc-internal-format
  msgid "invalid form of %<pragma omp atomic compare%>"
  msgstr ""
  
! #: c/c-parser.cc:23468 cp/parser.cc:44991 cp/parser.cc:45017
  #, gcc-internal-format
  msgid "invalid form of %<#pragma omp atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:23472 cp/parser.cc:45057 cp/parser.cc:45091
  #, gcc-internal-format
  msgid "invalid operator for %<#pragma omp atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:23523 cp/parser.cc:45126
  #, gcc-internal-format
  msgid "%<weak%> clause requires atomic equality comparison"
  msgstr ""
  
! #: c/c-parser.cc:23529 cp/semantics.cc:11909 cp/semantics.cc:11919
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp atomic capture%> uses two different expressions for memory"
  msgstr ""
  
! #: c/c-parser.cc:23632 cp/semantics.cc:11996
  #, gcc-internal-format
  msgid "%<depobj%> expression is not lvalue expression"
  msgstr ""
  
! #: c/c-parser.cc:23675
  #, gcc-internal-format
  msgid "%<destroy%> expression is not lvalue expression"
  msgstr ""
  
! #: c/c-parser.cc:23681 cp/parser.cc:45279
  #, gcc-internal-format
  msgid ""
  "the %<destroy%> expression %qE should be the same as the %<depobj%> argument "
  "%qE"
  msgstr ""
  
! #: c/c-parser.cc:23712 cp/parser.cc:45315
  #, gcc-internal-format
  msgid "expected %<in%>, %<out%>, %<inout%>, %<mutexinoutset%> or %<inoutset%>"
  msgstr ""
  
! #: c/c-parser.cc:23724 cp/parser.cc:45331
  #, gcc-internal-format
  msgid "expected %<depend%>, %<destroy%> or %<update%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23765 cp/parser.cc:45369
  #, gcc-internal-format
  msgid "expected %<seq_cst%>, %<acq_rel%>, %<release%> or %<acquire%>"
  msgstr ""
  
! #: c/c-parser.cc:23773 cp/parser.cc:45377
  #, gcc-internal-format
  msgid "%<flush%> list specified together with memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:23778
  #, gcc-internal-format
  msgid "expected %<(%> or end of line"
  msgstr ""
  
! #: c/c-parser.cc:23849 cp/parser.cc:46098
  #, gcc-internal-format
  msgid ""
  "%<[[omp::directive(%s)]]%> must be the only specified attribute on a "
  "statement"
  msgstr ""
  
! #: c/c-parser.cc:23916 cp/parser.cc:46167
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero preceding executable statements"
  msgstr ""
  
! #: c/c-parser.cc:23950 cp/parser.cc:46200
  #, gcc-internal-format
  msgid "expected %<inclusive%> or %<exclusive%> clause"
  msgstr ""
  
! #: c/c-parser.cc:23955 cp/parser.cc:46206
  #, gcc-internal-format
  msgid "expected %<#pragma omp scan%>"
  msgstr ""
  
! #: c/c-parser.cc:23964 cp/parser.cc:46215
  #, gcc-internal-format
  msgid "%<#pragma omp scan%> with zero succeeding executable statements"
  msgstr ""
  
! #: c/c-parser.cc:23989 cp/parser.cc:46238
  #, gcc-internal-format
  msgid "for statement expected"
  msgstr ""
*************** msgstr ""
*** 52621,53056 ****
  #. Don't call cp_parser_error here since it overrides the
  #. provided message with a more confusing one if there was
  #. a bad pragma or attribute directive.
! #: c/c-parser.cc:23973 cp/parser.cc:46201 cp/parser.cc:46203 cp/parser.cc:46388
  #, gcc-internal-format
  msgid "loop nest expected"
  msgstr ""
  
! #: c/c-parser.cc:24025 cp/parser.cc:46276
  #, gcc-internal-format
  msgid ""
  "attributes other than OpenMP directives are not allowed on %<for%> in loop "
  "nest"
  msgstr ""
  
! #: c/c-parser.cc:24054 cp/parser.cc:46307
  #, gcc-internal-format
  msgid ""
  "%<unroll%> construct with %<partial%> clause generates just one loop with "
  "canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24065 cp/parser.cc:46318
  #, gcc-internal-format
  msgid ""
  "generated loop of %<unroll%> construct without %<partial%> clause does not "
  "have canonical form"
  msgstr ""
  
! #: c/c-parser.cc:24088 cp/parser.cc:46344
  #, gcc-internal-format
  msgid ""
  "%<tile%> construct generates %d loops with canonical form but %d loops are "
  "needed"
  msgstr ""
  
! #: c/c-parser.cc:24099 cp/parser.cc:46355
  #, gcc-internal-format
  msgid "expected %<for%> loop or OpenMP loop transformation construct"
  msgstr ""
  
! #: c/c-parser.cc:24187 cp/semantics.cc:11471 cp/semantics.cc:11564
  #, gcc-internal-format
  msgid "expected iteration declaration or initialization"
  msgstr ""
  
! #: c/c-parser.cc:24276 c/c-parser.cc:24291 cp/parser.cc:46682
! #: cp/parser.cc:46697
  #, gcc-internal-format
  msgid "not enough nested loops"
  msgstr ""
  
! #: c/c-parser.cc:24394 cp/parser.cc:46982
  #, gcc-internal-format
  msgid "%<ordered%> clause parameter is less than %<collapse%>"
  msgstr ""
  
! #: c/c-parser.cc:24517 cp/parser.cc:46517 cp/parser.cc:46560 cp/pt.cc:18586
  #, gcc-internal-format
  msgid "iteration variable %qD should not be firstprivate"
  msgstr ""
  
! #: c/c-parser.cc:24951 cp/parser.cc:47528
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp ordered%> with %qs clause may only be used in compound "
  "statements"
  msgstr ""
  
! #: c/c-parser.cc:25167 cp/parser.cc:47734
  #, gcc-internal-format
  msgid "expected %<for%> after %qs"
  msgstr ""
  
! #: c/c-parser.cc:25380 c/c-parser.cc:25388
  #, gcc-internal-format
  msgid "expected a function name"
  msgstr ""
  
! #: c/c-parser.cc:25401 cp/parser.cc:50217
  #, gcc-internal-format
  msgid "expected target-function call"
  msgstr ""
  
! #: c/c-parser.cc:25471
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp dispatch%> must be followed by a function call with optional "
  "assignment"
  msgstr ""
  
! #: c/c-parser.cc:25658 cp/parser.cc:48081
  #, gcc-internal-format
  msgid "expected %<point%>"
  msgstr ""
  
! #: c/c-parser.cc:25925 cp/parser.cc:48368
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, "
  "%<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:25941 cp/parser.cc:48384
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target data%> must contain at least one %<map%>, "
  "%<use_device_ptr%> or %<use_device_addr%> clause"
  msgstr ""
  
! #: c/c-parser.cc:25989 cp/parser.cc:48665
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target update%> must contain at least one %<from%> or %<to%> "
  "clauses"
  msgstr ""
  
! #: c/c-parser.cc:26091 cp/parser.cc:48491
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target enter data%> with map-type other than %<to%>, "
  "%<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26103 cp/parser.cc:48503
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target enter data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26202 cp/parser.cc:48608
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target exit data%> with map-type other than %<from%>, "
  "%<tofrom%>, %<release%> or %<delete%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26215 cp/parser.cc:48621
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target exit data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26460 cp/semantics.cc:10974
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> "
  "or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26521
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> must be followed by function declaration or "
  "definition or another %<#pragma omp declare %s%>"
  msgstr ""
  
! #: c/c-parser.cc:26572 c/c-parser.cc:26610
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> must be followed by function declaration or "
  "definition"
  msgstr ""
  
! #: c/c-parser.cc:26643 cp/parser.cc:49677
  #, gcc-internal-format
  msgid "expected trait selector name"
  msgstr ""
  
! #: c/c-parser.cc:26655 cp/parser.cc:49691
  #, gcc-internal-format
  msgid "unknown selector %qs for context selector set %qs"
  msgstr ""
  
! #: c/c-parser.cc:26683 cp/parser.cc:49720
  #, gcc-internal-format
  msgid "selector %qs does not accept any properties"
  msgstr ""
  
! #: c/c-parser.cc:26705 cp/parser.cc:49752
  #, gcc-internal-format
  msgid "%<score%> cannot be specified in traits in the %qs trait-selector-set"
  msgstr ""
  
! #: c/c-parser.cc:26714 cp/parser.cc:49762 cp/pt.cc:18254
  #, gcc-internal-format
  msgid "%<score%> argument must be constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:26717 cp/parser.cc:49765 cp/pt.cc:18261
  #, gcc-internal-format
  msgid "%<score%> argument must be non-negative"
  msgstr ""
  
! #: c/c-parser.cc:26758 cp/parser.cc:49811
  #, gcc-internal-format
  msgid "expected identifier or string literal"
  msgstr ""
  
! #: c/c-parser.cc:26781 cp/parser.cc:49841 cp/pt.cc:18278
  #, gcc-internal-format
  msgid "property must be integer expression"
  msgstr ""
  
! #: c/c-parser.cc:26794 cp/parser.cc:49852
  #, gcc-internal-format
  msgid ""
  "properties for %<simd%> selector may not be specified in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:26815 cp/parser.cc:49868 fortran/openmp.cc:6534
  #, gcc-internal-format
  msgid "%<requires%> selector is not supported yet"
  msgstr ""
  
! #: c/c-parser.cc:26874 cp/parser.cc:49931
  #, gcc-internal-format
  msgid "expected context selector set name"
  msgstr ""
  
! #: c/c-parser.cc:26986 cp/parser.cc:50435
  #, gcc-internal-format
  msgid "expected %<match%>, %<adjust_args%> or %<append_args%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27002 cp/parser.cc:50448
  #, gcc-internal-format
  msgid "too many %<match%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27013
  #, gcc-internal-format
  msgid "variant %qD is not a function"
  msgstr ""
  
! #: c/c-parser.cc:27028 cp/decl.cc:8621
  #, gcc-internal-format
  msgid "variant %qD is a built-in"
  msgstr ""
  
! #: c/c-parser.cc:27074 cp/parser.cc:50510
  #, gcc-internal-format
  msgid "%qD is specified more than once"
  msgstr ""
  
! #: c/c-parser.cc:27081
  #, gcc-internal-format
  msgid "%qD is not of pointer type"
  msgstr ""
  
! #: c/c-parser.cc:27101 cp/parser.cc:50543
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%>"
  msgstr ""
  
! #: c/c-parser.cc:27104
  #, gcc-internal-format
  msgid "%<need_device_addr%> is not valid for C"
  msgstr ""
  
! #: c/c-parser.cc:27111 cp/parser.cc:50550
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%> followed by %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:27131 cp/parser.cc:50567
  #, gcc-internal-format
  msgid "expected %<interop%>"
  msgstr ""
  
! #: c/c-parser.cc:27229 cp/decl.cc:8603
  #, gcc-internal-format
  msgid "argument %d of %qD must be of %<omp_interop_t%>"
  msgstr ""
  
! #: c/c-parser.cc:27231 cp/decl.cc:8500 cp/decl.cc:8606
  #, gcc-internal-format
  msgid "%<append_args%> specified here"
  msgstr ""
  
! #: c/c-parser.cc:27277 cp/decl.cc:8612
  #, gcc-internal-format
  msgid "variant %qD and base %qD have incompatible types"
  msgstr ""
  
! #: c/c-parser.cc:27302 cp/parser.cc:50635
  #, gcc-internal-format
  msgid "an %qs clause requires a %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27315
  #, gcc-internal-format
  msgid ""
  "an %qs clause can only be specified if the %<dispatch%> selector of the "
  "%<construct%> selector set appears in the %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27358
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> not immediately followed by a function "
  "declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:27366 cp/parser.cc:50680
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> not immediately followed by a single function "
  "declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:27573 cp/parser.cc:50969
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:27577 cp/parser.cc:50973
  #, gcc-internal-format
  msgid ""
  "%qD specified both in declare target %<link%> and %<to%> or %<enter%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27637 cp/parser.cc:51106
  #, gcc-internal-format
  msgid "directive with only %<device_type%> or %<indirect%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27640 cp/parser.cc:51109
  #, gcc-internal-format
  msgid ""
  "%<device_type%> clause must specify 'any' when used with an %<indirect%> "
  "clause"
  msgstr ""
  
! #: c/c-parser.cc:27689 c/c-parser.cc:27731 cp/parser.cc:51164
! #: cp/parser.cc:51211
  #, gcc-internal-format
  msgid "expected %<target%>"
  msgstr ""
  
! #: c/c-parser.cc:27703 cp/parser.cc:51177
  #, gcc-internal-format
  msgid "expected %<declare target%> or %<assumes%>"
  msgstr ""
  
! #: c/c-parser.cc:27738 cp/parser.cc:51218
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp end declare target%> without corresponding %<#pragma omp "
  "declare target%> or %<#pragma omp begin declare target%>"
  msgstr ""
  
! #: c/c-parser.cc:27749 c/c-parser.cc:27780 cp/parser.cc:51229
! #: cp/parser.cc:51260
  #, gcc-internal-format
  msgid "%qs in attribute syntax terminated with %qs in pragma syntax"
  msgstr ""
  
! #: c/c-parser.cc:27756 c/c-parser.cc:27785 cp/parser.cc:51236
! #: cp/parser.cc:51265
  #, gcc-internal-format
  msgid "%qs in pragma syntax terminated with %qs in attribute syntax"
  msgstr ""
  
! #: c/c-parser.cc:27793 cp/parser.cc:51273
  #, gcc-internal-format
  msgid "expected %<declare%> or %<assumes%>"
  msgstr ""
  
! #: c/c-parser.cc:27820
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> not at file or block scope"
  msgstr ""
  
! #: c/c-parser.cc:27897
  #, gcc-internal-format
  msgid "predeclared arithmetic type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27901
  #, gcc-internal-format
  msgid "function or array type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27904
  #, gcc-internal-format
  msgid "%<_Atomic%> qualified type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27907
  #, gcc-internal-format
  msgid ""
  "const, volatile or restrict qualified type in %<#pragma omp declare "
  "reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27915
  #, gcc-internal-format
  msgid "redeclaration of %qs %<#pragma omp declare reduction%> for type %qT"
  msgstr ""
  
! #: c/c-parser.cc:27924
  #, gcc-internal-format
  msgid "previous %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:28045
  #, gcc-internal-format
  msgid "expected %<omp_priv%> or function-name"
  msgstr ""
  
! #: c/c-parser.cc:28056
  #, gcc-internal-format
  msgid "expected function-name %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:28075
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<&omp_priv%>"
  msgstr ""
  
! #: c/c-parser.cc:28209 cp/parser.cc:52195
  #, gcc-internal-format
  msgid "expected %<simd%>, %<reduction%>, %<target%> or %<variant%>"
  msgstr ""
  
! #: c/c-parser.cc:28280 cp/parser.cc:52288
  #, gcc-internal-format
  msgid ""
  "expected %<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> or %<seq_cst%>"
  msgstr ""
  
! #: c/c-parser.cc:28309 cp/parser.cc:52323
  #, gcc-internal-format
  msgid ""
  "expected %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, "
--- 52628,53063 ----
  #. Don't call cp_parser_error here since it overrides the
  #. provided message with a more confusing one if there was
  #. a bad pragma or attribute directive.
! #: c/c-parser.cc:24018 cp/parser.cc:46260 cp/parser.cc:46262 cp/parser.cc:46447
  #, gcc-internal-format
  msgid "loop nest expected"
  msgstr ""
  
! #: c/c-parser.cc:24070 cp/parser.cc:46335
  #, gcc-internal-format
  msgid ""
  "attributes other than OpenMP directives are not allowed on %<for%> in loop "
  "nest"
  msgstr ""
  
! #: c/c-parser.cc:24099 cp/parser.cc:46366
  #, gcc-internal-format
  msgid ""
  "%<unroll%> construct with %<partial%> clause generates just one loop with "
  "canonical form but %d loops are needed"
  msgstr ""
  
! #: c/c-parser.cc:24110 cp/parser.cc:46377
  #, gcc-internal-format
  msgid ""
  "generated loop of %<unroll%> construct without %<partial%> clause does not "
  "have canonical form"
  msgstr ""
  
! #: c/c-parser.cc:24133 cp/parser.cc:46403
  #, gcc-internal-format
  msgid ""
  "%<tile%> construct generates %d loops with canonical form but %d loops are "
  "needed"
  msgstr ""
  
! #: c/c-parser.cc:24144 cp/parser.cc:46414
  #, gcc-internal-format
  msgid "expected %<for%> loop or OpenMP loop transformation construct"
  msgstr ""
  
! #: c/c-parser.cc:24232 cp/semantics.cc:11471 cp/semantics.cc:11564
  #, gcc-internal-format
  msgid "expected iteration declaration or initialization"
  msgstr ""
  
! #: c/c-parser.cc:24321 c/c-parser.cc:24336 cp/parser.cc:46741
! #: cp/parser.cc:46756
  #, gcc-internal-format
  msgid "not enough nested loops"
  msgstr ""
  
! #: c/c-parser.cc:24439 cp/parser.cc:47041
  #, gcc-internal-format
  msgid "%<ordered%> clause parameter is less than %<collapse%>"
  msgstr ""
  
! #: c/c-parser.cc:24562 cp/parser.cc:46576 cp/parser.cc:46619 cp/pt.cc:18615
  #, gcc-internal-format
  msgid "iteration variable %qD should not be firstprivate"
  msgstr ""
  
! #: c/c-parser.cc:24996 cp/parser.cc:47587
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp ordered%> with %qs clause may only be used in compound "
  "statements"
  msgstr ""
  
! #: c/c-parser.cc:25212 cp/parser.cc:47793
  #, gcc-internal-format
  msgid "expected %<for%> after %qs"
  msgstr ""
  
! #: c/c-parser.cc:25425 c/c-parser.cc:25433
  #, gcc-internal-format
  msgid "expected a function name"
  msgstr ""
  
! #: c/c-parser.cc:25446 cp/parser.cc:50276
  #, gcc-internal-format
  msgid "expected target-function call"
  msgstr ""
  
! #: c/c-parser.cc:25516
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp dispatch%> must be followed by a function call with optional "
  "assignment"
  msgstr ""
  
! #: c/c-parser.cc:25703 cp/parser.cc:48140
  #, gcc-internal-format
  msgid "expected %<point%>"
  msgstr ""
  
! #: c/c-parser.cc:25970 cp/parser.cc:48427
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, "
  "%<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:25986 cp/parser.cc:48443
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target data%> must contain at least one %<map%>, "
  "%<use_device_ptr%> or %<use_device_addr%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26034 cp/parser.cc:48724
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target update%> must contain at least one %<from%> or %<to%> "
  "clauses"
  msgstr ""
  
! #: c/c-parser.cc:26136 cp/parser.cc:48550
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target enter data%> with map-type other than %<to%>, "
  "%<tofrom%> or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26148 cp/parser.cc:48562
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target enter data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26247 cp/parser.cc:48667
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target exit data%> with map-type other than %<from%>, "
  "%<tofrom%>, %<release%> or %<delete%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26260 cp/parser.cc:48680
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target exit data%> must contain at least one %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26505 cp/semantics.cc:10974
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> "
  "or %<alloc%> on %<map%> clause"
  msgstr ""
  
! #: c/c-parser.cc:26566
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> must be followed by function declaration or "
  "definition or another %<#pragma omp declare %s%>"
  msgstr ""
  
! #: c/c-parser.cc:26617 c/c-parser.cc:26655
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> must be followed by function declaration or "
  "definition"
  msgstr ""
  
! #: c/c-parser.cc:26688 cp/parser.cc:49736
  #, gcc-internal-format
  msgid "expected trait selector name"
  msgstr ""
  
! #: c/c-parser.cc:26700 cp/parser.cc:49750
  #, gcc-internal-format
  msgid "unknown selector %qs for context selector set %qs"
  msgstr ""
  
! #: c/c-parser.cc:26728 cp/parser.cc:49779
  #, gcc-internal-format
  msgid "selector %qs does not accept any properties"
  msgstr ""
  
! #: c/c-parser.cc:26750 cp/parser.cc:49811
  #, gcc-internal-format
  msgid "%<score%> cannot be specified in traits in the %qs trait-selector-set"
  msgstr ""
  
! #: c/c-parser.cc:26759 cp/parser.cc:49821 cp/pt.cc:18283
  #, gcc-internal-format
  msgid "%<score%> argument must be constant integer expression"
  msgstr ""
  
! #: c/c-parser.cc:26762 cp/parser.cc:49824 cp/pt.cc:18290
  #, gcc-internal-format
  msgid "%<score%> argument must be non-negative"
  msgstr ""
  
! #: c/c-parser.cc:26803 cp/parser.cc:49870
  #, gcc-internal-format
  msgid "expected identifier or string literal"
  msgstr ""
  
! #: c/c-parser.cc:26827 cp/parser.cc:49900 cp/pt.cc:18307
  #, gcc-internal-format
  msgid "property must be integer expression"
  msgstr ""
  
! #: c/c-parser.cc:26837 cp/parser.cc:49911
  #, gcc-internal-format
  msgid ""
  "properties for %<simd%> selector may not be specified in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:26858 cp/parser.cc:49927 fortran/openmp.cc:6534
  #, gcc-internal-format
  msgid "%<requires%> selector is not supported yet"
  msgstr ""
  
! #: c/c-parser.cc:26917 cp/parser.cc:49990
  #, gcc-internal-format
  msgid "expected context selector set name"
  msgstr ""
  
! #: c/c-parser.cc:27032 cp/parser.cc:50494
  #, gcc-internal-format
  msgid "expected %<match%>, %<adjust_args%> or %<append_args%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27048 cp/parser.cc:50507
  #, gcc-internal-format
  msgid "too many %<match%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27059
  #, gcc-internal-format
  msgid "variant %qD is not a function"
  msgstr ""
  
! #: c/c-parser.cc:27074 cp/decl.cc:8619
  #, gcc-internal-format
  msgid "variant %qD is a built-in"
  msgstr ""
  
! #: c/c-parser.cc:27120 cp/parser.cc:50569
  #, gcc-internal-format
  msgid "%qD is specified more than once"
  msgstr ""
  
! #: c/c-parser.cc:27127
  #, gcc-internal-format
  msgid "%qD is not of pointer type"
  msgstr ""
  
! #: c/c-parser.cc:27147 cp/parser.cc:50602
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%>"
  msgstr ""
  
! #: c/c-parser.cc:27150
  #, gcc-internal-format
  msgid "%<need_device_addr%> is not valid for C"
  msgstr ""
  
! #: c/c-parser.cc:27157 cp/parser.cc:50609
  #, gcc-internal-format
  msgid "expected %<nothing%> or %<need_device_ptr%> followed by %<:%>"
  msgstr ""
  
! #: c/c-parser.cc:27177 cp/parser.cc:50626
  #, gcc-internal-format
  msgid "expected %<interop%>"
  msgstr ""
  
! #: c/c-parser.cc:27275 cp/decl.cc:8601
  #, gcc-internal-format
  msgid "argument %d of %qD must be of %<omp_interop_t%>"
  msgstr ""
  
! #: c/c-parser.cc:27277 cp/decl.cc:8498 cp/decl.cc:8604
  #, gcc-internal-format
  msgid "%<append_args%> specified here"
  msgstr ""
  
! #: c/c-parser.cc:27323 cp/decl.cc:8610
  #, gcc-internal-format
  msgid "variant %qD and base %qD have incompatible types"
  msgstr ""
  
! #: c/c-parser.cc:27348 cp/parser.cc:50694
  #, gcc-internal-format
  msgid "an %qs clause requires a %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27361
  #, gcc-internal-format
  msgid ""
  "an %qs clause can only be specified if the %<dispatch%> selector of the "
  "%<construct%> selector set appears in the %<match%> clause"
  msgstr ""
  
! #: c/c-parser.cc:27404
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> not immediately followed by a function "
  "declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:27412 cp/parser.cc:50739
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> not immediately followed by a single function "
  "declaration or definition"
  msgstr ""
  
! #: c/c-parser.cc:27619 cp/parser.cc:51028
  #, gcc-internal-format
  msgid "%qD specified both in declare target %<link%> and %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:27623 cp/parser.cc:51032
  #, gcc-internal-format
  msgid ""
  "%qD specified both in declare target %<link%> and %<to%> or %<enter%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27683 cp/parser.cc:51165
  #, gcc-internal-format
  msgid "directive with only %<device_type%> or %<indirect%> clauses"
  msgstr ""
  
! #: c/c-parser.cc:27686 cp/parser.cc:51168
  #, gcc-internal-format
  msgid ""
  "%<device_type%> clause must specify 'any' when used with an %<indirect%> "
  "clause"
  msgstr ""
  
! #: c/c-parser.cc:27735 c/c-parser.cc:27777 cp/parser.cc:51223
! #: cp/parser.cc:51270
  #, gcc-internal-format
  msgid "expected %<target%>"
  msgstr ""
  
! #: c/c-parser.cc:27749 cp/parser.cc:51236
  #, gcc-internal-format
  msgid "expected %<declare target%> or %<assumes%>"
  msgstr ""
  
! #: c/c-parser.cc:27784 cp/parser.cc:51277
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp end declare target%> without corresponding %<#pragma omp "
  "declare target%> or %<#pragma omp begin declare target%>"
  msgstr ""
  
! #: c/c-parser.cc:27795 c/c-parser.cc:27826 cp/parser.cc:51288
! #: cp/parser.cc:51319
  #, gcc-internal-format
  msgid "%qs in attribute syntax terminated with %qs in pragma syntax"
  msgstr ""
  
! #: c/c-parser.cc:27802 c/c-parser.cc:27831 cp/parser.cc:51295
! #: cp/parser.cc:51324
  #, gcc-internal-format
  msgid "%qs in pragma syntax terminated with %qs in attribute syntax"
  msgstr ""
  
! #: c/c-parser.cc:27839 cp/parser.cc:51332
  #, gcc-internal-format
  msgid "expected %<declare%> or %<assumes%>"
  msgstr ""
  
! #: c/c-parser.cc:27866
  #, gcc-internal-format
  msgid "%<#pragma omp declare reduction%> not at file or block scope"
  msgstr ""
  
! #: c/c-parser.cc:27943
  #, gcc-internal-format
  msgid "predeclared arithmetic type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27947
  #, gcc-internal-format
  msgid "function or array type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27950
  #, gcc-internal-format
  msgid "%<_Atomic%> qualified type in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27953
  #, gcc-internal-format
  msgid ""
  "const, volatile or restrict qualified type in %<#pragma omp declare "
  "reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:27961
  #, gcc-internal-format
  msgid "redeclaration of %qs %<#pragma omp declare reduction%> for type %qT"
  msgstr ""
  
! #: c/c-parser.cc:27970
  #, gcc-internal-format
  msgid "previous %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: c/c-parser.cc:28091
  #, gcc-internal-format
  msgid "expected %<omp_priv%> or function-name"
  msgstr ""
  
! #: c/c-parser.cc:28102
  #, gcc-internal-format
  msgid "expected function-name %<(%>"
  msgstr ""
  
! #: c/c-parser.cc:28121
  #, gcc-internal-format
  msgid "one of the initializer call arguments should be %<&omp_priv%>"
  msgstr ""
  
! #: c/c-parser.cc:28255 cp/parser.cc:52248
  #, gcc-internal-format
  msgid "expected %<simd%>, %<reduction%>, %<target%> or %<variant%>"
  msgstr ""
  
! #: c/c-parser.cc:28326 cp/parser.cc:52341
  #, gcc-internal-format
  msgid ""
  "expected %<acq_rel%>, %<acquire%>, %<relaxed%>, %<release%> or %<seq_cst%>"
  msgstr ""
  
! #: c/c-parser.cc:28355 cp/parser.cc:52376
  #, gcc-internal-format
  msgid ""
  "expected %<unified_address%>, %<unified_shared_memory%>, %<self_maps%>, "
*************** msgid ""
*** 53058,53249 ****
  "clause"
  msgstr ""
  
! #: c/c-parser.cc:28328 cp/parser.cc:52342
  #, gcc-internal-format
  msgid ""
  "%qs clause used lexically after first target construct or offloading API"
  msgstr ""
  
! #: c/c-parser.cc:28340 cp/parser.cc:52354
  #, gcc-internal-format
  msgid ""
  "more than one %<atomic_default_mem_order%> clause in a single compilation "
  "unit"
  msgstr ""
  
! #: c/c-parser.cc:28349 cp/parser.cc:52363
  #, gcc-internal-format
  msgid ""
  "%<atomic_default_mem_order%> clause used lexically after first %<atomic%> "
  "construct without memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:28363 cp/parser.cc:52377
  #, gcc-internal-format
  msgid "%<pragma omp requires%> requires at least one clause"
  msgstr ""
  
! #: c/c-parser.cc:28382
  #, gcc-internal-format
  msgid "zero sized type %qT in %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28388
  #, gcc-internal-format
  msgid "variable sized type %qT in %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28506 cp/parser.cc:48884
  #, gcc-internal-format
  msgid "expected %<sizes%>"
  msgstr ""
  
! #: c/c-parser.cc:28535 cp/semantics.cc:9567 cp/semantics.cc:9584
  #, gcc-internal-format
  msgid "%<sizes%> argument needs positive integral constant"
  msgstr ""
  
! #: c/c-parser.cc:28651 cp/parser.cc:52434
  #, gcc-internal-format
  msgid "expected %<at%>, %<severity%> or %<message%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28684 cp/parser.cc:52469
  #, gcc-internal-format
  msgid "expected %qs or %qs"
  msgstr ""
  
! #: c/c-parser.cc:28741 cp/parser.cc:52531
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp error%> with %<at(execution)%> clause may only be used in "
  "compound statements"
  msgstr ""
  
! #: c/c-parser.cc:28764 cp/parser.cc:52558
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered: %s"
  msgstr ""
  
! #: c/c-parser.cc:28767 cp/parser.cc:52561
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered"
  msgstr ""
  
! #: c/c-parser.cc:28794 cp/parser.cc:49992
  #, gcc-internal-format
  msgid "expected at least one assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:28880 c/c-parser.cc:29181 cp/parser.cc:50078
! #: cp/parser.cc:51497 cp/parser.cc:51525
  #, gcc-internal-format
  msgid "expected directive name"
  msgstr ""
  
! #: c/c-parser.cc:28891 cp/parser.cc:50089
  #, gcc-internal-format
  msgid ""
  "invalid OpenMP directive name in %qs clause argument: declarative, "
  "informational, and meta directives not permitted"
  msgstr ""
  
! #: c/c-parser.cc:28899 cp/parser.cc:50097
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs clause argument"
  msgstr ""
  
! #: c/c-parser.cc:28906 cp/parser.cc:50104
  #, gcc-internal-format
  msgid ""
  "%<%s%s%s%s%s%> directive mentioned in both %<absent%> and %<contains%> "
  "clauses"
  msgstr ""
  
! #: c/c-parser.cc:28917 cp/parser.cc:50115
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:28940 cp/parser.cc:50142
  #, gcc-internal-format
  msgid "unknown assumption clause %qs"
  msgstr ""
  
! #: c/c-parser.cc:28953 cp/parser.cc:50152
  #, gcc-internal-format
  msgid "expected assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:29082 cp/parser.cc:51395
  #, gcc-internal-format
  msgid "expected %<when%>, %<otherwise%>, or %<default%> clause"
  msgstr ""
  
! #: c/c-parser.cc:29096 cp/parser.cc:51410
  #, gcc-internal-format
  msgid "too many %<otherwise%> or %<default%> clauses in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29105 cp/parser.cc:51420
  #, gcc-internal-format
  msgid ""
  "%<otherwise%> or %<default%> clause must appear last in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29195 cp/parser.cc:51511
  #, gcc-internal-format
  msgid "unknown directive name"
  msgstr ""
  
! #: c/c-parser.cc:29210 cp/parser.cc:51531
  #, gcc-internal-format
  msgid "metadirectives cannot be used as variants of a %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29216 cp/parser.cc:51537
  #, gcc-internal-format
  msgid "declarative directive variants of a %<metadirective%> are not supported"
  msgstr ""
  
! #: c/c-parser.cc:29541 cp/semantics.cc:10340
  #, gcc-internal-format
  msgid "%qE declared %<threadprivate%> after first use"
  msgstr ""
  
! #: c/c-parser.cc:29543 cp/semantics.cc:10342
  #, gcc-internal-format
  msgid "automatic variable %qE cannot be %<threadprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:29547 cp/semantics.cc:10344
  #, gcc-internal-format
  msgid "%<threadprivate%> %qE has incomplete type"
  msgstr ""
  
! #: c/c-parser.cc:29727 cp/parser.cc:53320
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> without transactional memory support enabled"
  msgstr ""
  
! #: c/c-parser.cc:29733 cp/parser.cc:53326
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:29742
  #, gcc-internal-format
  msgid ""
  "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or "
  "a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: c/c-parser.cc:29750 cp/parser.cc:53344
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:29843
  #, gcc-internal-format
  msgid "no closing brace"
  msgstr ""
--- 53065,53256 ----
  "clause"
  msgstr ""
  
! #: c/c-parser.cc:28374 cp/parser.cc:52395
  #, gcc-internal-format
  msgid ""
  "%qs clause used lexically after first target construct or offloading API"
  msgstr ""
  
! #: c/c-parser.cc:28386 cp/parser.cc:52407
  #, gcc-internal-format
  msgid ""
  "more than one %<atomic_default_mem_order%> clause in a single compilation "
  "unit"
  msgstr ""
  
! #: c/c-parser.cc:28395 cp/parser.cc:52416
  #, gcc-internal-format
  msgid ""
  "%<atomic_default_mem_order%> clause used lexically after first %<atomic%> "
  "construct without memory order clause"
  msgstr ""
  
! #: c/c-parser.cc:28409 cp/parser.cc:52430
  #, gcc-internal-format
  msgid "%<pragma omp requires%> requires at least one clause"
  msgstr ""
  
! #: c/c-parser.cc:28428
  #, gcc-internal-format
  msgid "zero sized type %qT in %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28434
  #, gcc-internal-format
  msgid "variable sized type %qT in %<reduction%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28552 cp/parser.cc:48943
  #, gcc-internal-format
  msgid "expected %<sizes%>"
  msgstr ""
  
! #: c/c-parser.cc:28581 cp/semantics.cc:9567 cp/semantics.cc:9584
  #, gcc-internal-format
  msgid "%<sizes%> argument needs positive integral constant"
  msgstr ""
  
! #: c/c-parser.cc:28697 cp/parser.cc:52487
  #, gcc-internal-format
  msgid "expected %<at%>, %<severity%> or %<message%> clause"
  msgstr ""
  
! #: c/c-parser.cc:28730 cp/parser.cc:52522
  #, gcc-internal-format
  msgid "expected %qs or %qs"
  msgstr ""
  
! #: c/c-parser.cc:28787 cp/parser.cc:52584
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp error%> with %<at(execution)%> clause may only be used in "
  "compound statements"
  msgstr ""
  
! #: c/c-parser.cc:28810 cp/parser.cc:52611
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered: %s"
  msgstr ""
  
! #: c/c-parser.cc:28813 cp/parser.cc:52614
  #, gcc-internal-format
  msgid "%<pragma omp error%> encountered"
  msgstr ""
  
! #: c/c-parser.cc:28840 cp/parser.cc:50051
  #, gcc-internal-format
  msgid "expected at least one assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:28926 c/c-parser.cc:29224 cp/parser.cc:50137
! #: cp/parser.cc:51553 cp/parser.cc:51580
  #, gcc-internal-format
  msgid "expected directive name"
  msgstr ""
  
! #: c/c-parser.cc:28937 cp/parser.cc:50148
  #, gcc-internal-format
  msgid ""
  "invalid OpenMP directive name in %qs clause argument: declarative, "
  "informational, and meta directives not permitted"
  msgstr ""
  
! #: c/c-parser.cc:28945 cp/parser.cc:50156
  #, gcc-internal-format
  msgid "unknown OpenMP directive name in %qs clause argument"
  msgstr ""
  
! #: c/c-parser.cc:28952 cp/parser.cc:50163
  #, gcc-internal-format
  msgid ""
  "%<%s%s%s%s%s%> directive mentioned in both %<absent%> and %<contains%> "
  "clauses"
  msgstr ""
  
! #: c/c-parser.cc:28963 cp/parser.cc:50174
  #, gcc-internal-format
  msgid "%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses"
  msgstr ""
  
! #: c/c-parser.cc:28986 cp/parser.cc:50201
  #, gcc-internal-format
  msgid "unknown assumption clause %qs"
  msgstr ""
  
! #: c/c-parser.cc:28999 cp/parser.cc:50211
  #, gcc-internal-format
  msgid "expected assumption clause"
  msgstr ""
  
! #: c/c-parser.cc:29128 cp/parser.cc:51454
  #, gcc-internal-format
  msgid "expected %<when%>, %<otherwise%>, or %<default%> clause"
  msgstr ""
  
! #: c/c-parser.cc:29142 cp/parser.cc:51469
  #, gcc-internal-format
  msgid "too many %<otherwise%> or %<default%> clauses in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29150 cp/parser.cc:51478
  #, gcc-internal-format
  msgid ""
  "%<otherwise%> or %<default%> clause must appear last in %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29237 cp/parser.cc:51566
  #, gcc-internal-format
  msgid "unknown directive name"
  msgstr ""
  
! #: c/c-parser.cc:29252 cp/parser.cc:51586
  #, gcc-internal-format
  msgid "metadirectives cannot be used as variants of a %<metadirective%>"
  msgstr ""
  
! #: c/c-parser.cc:29258 cp/parser.cc:51592
  #, gcc-internal-format
  msgid "declarative directive variants of a %<metadirective%> are not supported"
  msgstr ""
  
! #: c/c-parser.cc:29584 cp/semantics.cc:10340
  #, gcc-internal-format
  msgid "%qE declared %<threadprivate%> after first use"
  msgstr ""
  
! #: c/c-parser.cc:29586 cp/semantics.cc:10342
  #, gcc-internal-format
  msgid "automatic variable %qE cannot be %<threadprivate%>"
  msgstr ""
  
! #: c/c-parser.cc:29590 cp/semantics.cc:10344
  #, gcc-internal-format
  msgid "%<threadprivate%> %qE has incomplete type"
  msgstr ""
  
! #: c/c-parser.cc:29770 cp/parser.cc:53373
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> without transactional memory support enabled"
  msgstr ""
  
! #: c/c-parser.cc:29776 cp/parser.cc:53379
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
  msgstr ""
  
! #: c/c-parser.cc:29785
  #, gcc-internal-format
  msgid ""
  "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or "
  "a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: c/c-parser.cc:29793 cp/parser.cc:53397
  #, gcc-internal-format
  msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
  msgstr ""
  
! #: c/c-parser.cc:29886
  #, gcc-internal-format
  msgid "no closing brace"
  msgstr ""
*************** msgstr ""
*** 53253,53259 ****
  msgid "%qD has an incomplete type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:252 c/c-typeck.cc:12542 c/c-typeck.cc:12617 cp/call.cc:5062
  #, gcc-internal-format
  msgid "invalid use of void expression"
  msgstr ""
--- 53260,53266 ----
  msgid "%qD has an incomplete type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:252 c/c-typeck.cc:12559 c/c-typeck.cc:12634 cp/call.cc:5062
  #, gcc-internal-format
  msgid "invalid use of void expression"
  msgstr ""
*************** msgid ""
*** 53343,53354 ****
  "pointer in C++"
  msgstr ""
  
! #: c/c-typeck.cc:3109 c/c-typeck.cc:10693
  #, gcc-internal-format
  msgid "%qT has no member named %qE; did you mean %qE?"
  msgstr ""
  
! #: c/c-typeck.cc:3113 c/c-typeck.cc:10697
  #, gcc-internal-format
  msgid "%qT has no member named %qE"
  msgstr ""
--- 53350,53361 ----
  "pointer in C++"
  msgstr ""
  
! #: c/c-typeck.cc:3109 c/c-typeck.cc:10710
  #, gcc-internal-format
  msgid "%qT has no member named %qE; did you mean %qE?"
  msgstr ""
  
! #: c/c-typeck.cc:3113 c/c-typeck.cc:10714
  #, gcc-internal-format
  msgid "%qT has no member named %qE"
  msgstr ""
*************** msgstr ""
*** 53390,53396 ****
  msgid "subscripted value is neither array nor pointer nor vector"
  msgstr ""
  
! #: c/c-typeck.cc:3324 cp/typeck.cc:4035 cp/typeck.cc:4130
  #, gcc-internal-format
  msgid "array subscript is not an integer"
  msgstr ""
--- 53397,53403 ----
  msgid "subscripted value is neither array nor pointer nor vector"
  msgstr ""
  
! #: c/c-typeck.cc:3324 cp/typeck.cc:4151 cp/typeck.cc:4246
  #, gcc-internal-format
  msgid "array subscript is not an integer"
  msgstr ""
*************** msgstr ""
*** 53536,55051 ****
  msgid "too many arguments to built-in function %qE expecting %d"
  msgstr ""
  
! #: c/c-typeck.cc:4351
  #, gcc-internal-format
  msgid ""
  "ISO C23 does not allow arguments for method %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4356
  #, gcc-internal-format
  msgid ""
  "ISO C23 does not allow arguments for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4432
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT when passing argument to function"
  msgstr ""
  
! #: c/c-typeck.cc:4513
  #, gcc-internal-format
  msgid "too few arguments to function %qE; expected at least %i, have %i"
  msgstr ""
  
! #: c/c-typeck.cc:4514
  #, gcc-internal-format
  msgid "too few arguments to function %qE; expected %i, have %i"
  msgstr ""
  
! #: c/c-typeck.cc:4528
  #, gcc-internal-format
  msgid "too few arguments to built-in function %qE expecting %u"
  msgstr ""
  
! #: c/c-typeck.cc:4706 c/c-typeck.cc:4734 cp/typeck.cc:5849 cp/typeck.cc:6137
  #, gcc-internal-format
  msgid "comparison with string literal results in unspecified behavior"
  msgstr ""
  
! #: c/c-typeck.cc:4714 c/c-typeck.cc:4725 cp/typeck.cc:5886 cp/typeck.cc:5910
  #, gcc-internal-format
  msgid "comparison between pointer and zero character constant"
  msgstr ""
  
! #: c/c-typeck.cc:4717 c/c-typeck.cc:4728 cp/typeck.cc:5889 cp/typeck.cc:5913
  #, gcc-internal-format
  msgid "did you mean to dereference the pointer?"
  msgstr ""
  
! #: c/c-typeck.cc:4746 c/c-typeck.cc:4753 c/c-typeck.cc:6130 c/c-typeck.cc:6135
! #: c/c-typeck.cc:8683 cp/tree.cc:6464
  #, gcc-internal-format
  msgid "zero as null pointer constant"
  msgstr ""
  
! #: c/c-typeck.cc:4774
  #, gcc-internal-format
  msgid "comparison between %qT and %qT"
  msgstr ""
  
! #: c/c-typeck.cc:4833
  #, gcc-internal-format
  msgid "pointer of type %<void *%> used in subtraction"
  msgstr ""
  
! #: c/c-typeck.cc:4836
  #, gcc-internal-format
  msgid "pointer to a function used in subtraction"
  msgstr ""
  
! #: c/c-typeck.cc:4870
  #, gcc-internal-format
  msgid "arithmetic on pointer to an incomplete type"
  msgstr ""
  
! #: c/c-typeck.cc:4879 cp/typeck.cc:6937
  #, gcc-internal-format
  msgid "arithmetic on pointer to an empty aggregate"
  msgstr ""
  
! #: c/c-typeck.cc:5328
  #, gcc-internal-format
  msgid "%<~%> on a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5332
  #, gcc-internal-format
  msgid "did you mean to use logical not?"
  msgstr ""
  
! #: c/c-typeck.cc:5342
  #, gcc-internal-format
  msgid "ISO C does not support %<~%> for complex conjugation"
  msgstr ""
  
! #: c/c-typeck.cc:5366
  #, gcc-internal-format
  msgid "wrong type argument to absu"
  msgstr ""
  
! #: c/c-typeck.cc:5392
  #, gcc-internal-format
  msgid "wrong type argument to unary exclamation mark"
  msgstr ""
  
! #: c/c-typeck.cc:5450
  #, gcc-internal-format
  msgid "increment of enumeration value is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:5453
  #, gcc-internal-format
  msgid "decrement of enumeration value is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:5460
  #, gcc-internal-format
  msgid "increment of a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5463
  #, gcc-internal-format
  msgid "decrement of a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5479
  #, gcc-internal-format
  msgid "ISO C does not support %<++%> and %<--%> on complex types before C2Y"
  msgstr ""
  
! #: c/c-typeck.cc:5506 c/c-typeck.cc:5540
  #, gcc-internal-format
  msgid "wrong type argument to increment"
  msgstr ""
  
! #: c/c-typeck.cc:5508 c/c-typeck.cc:5543
  #, gcc-internal-format
  msgid "wrong type argument to decrement"
  msgstr ""
  
! #: c/c-typeck.cc:5528
  #, gcc-internal-format
  msgid "increment of pointer to an incomplete type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:5532
  #, gcc-internal-format
  msgid "decrement of pointer to an incomplete type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:5640
  #, gcc-internal-format
  msgid "taking address of expression of type %<void%>"
  msgstr ""
  
! #: c/c-typeck.cc:5703 c/c-typeck.cc:5899
  #, gcc-internal-format
  msgid "cannot take address of bit-field %qD"
  msgstr ""
  
! #: c/c-typeck.cc:5717
  #, gcc-internal-format
  msgid "cannot take address of scalar with reverse storage order"
  msgstr ""
  
! #: c/c-typeck.cc:5725
  #, gcc-internal-format
  msgid "address of array with reverse scalar storage order requested"
  msgstr ""
  
! #: c/c-typeck.cc:5914
  #, gcc-internal-format
  msgid "address of register compound literal requested"
  msgstr ""
  
! #: c/c-typeck.cc:5935
  #, gcc-internal-format
  msgid "global register variable %qD used in nested function"
  msgstr ""
  
! #: c/c-typeck.cc:5938
  #, gcc-internal-format
  msgid "register variable %qD used in nested function"
  msgstr ""
  
! #: c/c-typeck.cc:5943
  #, gcc-internal-format
  msgid "address of global register variable %qD requested"
  msgstr ""
  
! #: c/c-typeck.cc:5945 d/d-codegen.cc:761
  #, gcc-internal-format
  msgid "address of register variable %qD requested"
  msgstr ""
  
! #: c/c-typeck.cc:6084
  #, gcc-internal-format
  msgid "non-lvalue array in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6180
  #, gcc-internal-format
  msgid ""
  "implicit conversion from %qT to %qT to match other result of conditional"
  msgstr ""
  
! #: c/c-typeck.cc:6239 c/c-typeck.cc:6245
  #, gcc-internal-format
  msgid ""
  "operand of %<?:%> changes signedness from %qT to %qT due to unsignedness of "
  "other operand"
  msgstr ""
  
! #: c/c-typeck.cc:6262
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr with only one void side"
  msgstr ""
  
! #: c/c-typeck.cc:6279
  #, gcc-internal-format
  msgid "pointers to disjoint address spaces used in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6303
  #, gcc-internal-format
  msgid "pointer to array loses qualifier in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6307
  #, gcc-internal-format
  msgid ""
  "pointer to array loses qualifier in conditional expression in ISO C before "
  "C23"
  msgstr ""
  
! #: c/c-typeck.cc:6312
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6334
  #, gcc-internal-format
  msgid "pointer type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6337
  #, gcc-internal-format
  msgid "first expression has type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6338
  #, gcc-internal-format
  msgid "second expression has type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6349 c/c-typeck.cc:6362
  #, gcc-internal-format
  msgid "pointer/integer type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6389
  #, gcc-internal-format
  msgid "type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6505
  #, gcc-internal-format
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>: %E"
  msgstr ""
  
! #: c/c-typeck.cc:6509
  #, gcc-internal-format
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>"
  msgstr ""
  
! #: c/c-typeck.cc:6528
  #, gcc-internal-format
  msgid ""
  "ignoring return value of type %qT, declared with attribute %<nodiscard%>: %E"
  msgstr ""
  
! #: c/c-typeck.cc:6533
  #, gcc-internal-format
  msgid ""
  "ignoring return value of type %qT, declared with attribute %<nodiscard%>"
  msgstr ""
  
! #: c/c-typeck.cc:6542 cp/cvt.cc:1132 rust/backend/rust-tree.cc:640
  #, gcc-internal-format
  msgid "in call to %qD, declared here"
  msgstr ""
  
! #: c/c-typeck.cc:6591
  #, gcc-internal-format
  msgid "left-hand operand of comma expression has no effect"
  msgstr ""
  
! #: c/c-typeck.cc:6609 c/c-typeck.cc:13209
  #, gcc-internal-format
  msgid "right-hand operand of comma expression has no effect"
  msgstr ""
  
! #: c/c-typeck.cc:6680
  msgid "cast adds %q#v qualifier to function type"
  msgstr ""
  
! #: c/c-typeck.cc:6686
  msgid "cast discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:6721
  #, gcc-internal-format
  msgid ""
  "to be safe all intermediate pointers in cast from %qT to %qT must be "
  "%<const%> qualified"
  msgstr ""
  
! #: c/c-typeck.cc:6818
  #, gcc-internal-format
  msgid "cast specifies array type"
  msgstr ""
  
! #: c/c-typeck.cc:6824
  #, gcc-internal-format
  msgid "cast specifies function type"
  msgstr ""
  
! #: c/c-typeck.cc:6839
  #, gcc-internal-format
  msgid "ISO C forbids casting nonscalar to the same type"
  msgstr ""
  
! #: c/c-typeck.cc:6843
  #, gcc-internal-format
  msgid "useless cast to type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6863
  #, gcc-internal-format
  msgid "ISO C forbids casts to union type"
  msgstr ""
  
! #: c/c-typeck.cc:6873
  #, gcc-internal-format
  msgid "cast to union type from type not present in union"
  msgstr ""
  
! #: c/c-typeck.cc:6908
  #, gcc-internal-format
  msgid ""
  "cast to %qs address space pointer from disjoint generic address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6913
  #, gcc-internal-format
  msgid ""
  "cast to generic address space pointer from disjoint %qs address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6918
  #, gcc-internal-format
  msgid ""
  "cast to %qs address space pointer from disjoint %qs address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6951
  #, gcc-internal-format
  msgid "cast increases required alignment of target type"
  msgstr ""
  
! #: c/c-typeck.cc:6963
  #, gcc-internal-format
  msgid "cast from pointer to integer of different size"
  msgstr ""
  
! #: c/c-typeck.cc:6968
  #, gcc-internal-format
  msgid "cast from function call of type %qT to non-matching type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6978 cp/typeck.cc:9383
  #, gcc-internal-format
  msgid "cast to pointer from integer of different size"
  msgstr ""
  
! #: c/c-typeck.cc:6992
  #, gcc-internal-format
  msgid "ISO C forbids conversion of function pointer to object pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:7001
  #, gcc-internal-format
  msgid "ISO C forbids conversion of object pointer to function pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:7011
  #, gcc-internal-format
  msgid "cast between incompatible function types from %qT to %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7126
  #, gcc-internal-format
  msgid "defining a type in a cast is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7168
  #, gcc-internal-format
  msgid "assignment to expression with array type"
  msgstr ""
  
! #: c/c-typeck.cc:7294
  #, gcc-internal-format
  msgid "enum conversion in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7496 c/c-typeck.cc:7515 c/c-typeck.cc:7572
  #, gcc-internal-format
  msgid "(near initialization for %qs)"
  msgstr ""
  
! #: c/c-typeck.cc:7588
  #, gcc-internal-format
  msgid "array initialized from parenthesized string constant"
  msgstr ""
  
! #: c/c-typeck.cc:7638
  msgid "expected %e but argument is of type %e"
  msgstr ""
  
! #: c/c-typeck.cc:7672
  #, gcc-internal-format
  msgid ""
  "%qD argument %d type is %qT where %qT is expected in a call to built-in "
  "function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7675
  #, gcc-internal-format
  msgid ""
  "%qD argument %d promotes to %qT where %qT is expected in a call to built-in "
  "function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7680
  #, gcc-internal-format
  msgid "built-in %qD declared here"
  msgstr ""
  
! #: c/c-typeck.cc:7737 c/c-typeck.cc:8645
  msgid "%e declared here"
  msgstr ""
  
! #: c/c-typeck.cc:7930
  #, gcc-internal-format
  msgid "enum conversion when passing argument %d of %qE is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7935
  #, gcc-internal-format
  msgid "expected %qT but argument is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7939
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7944
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7949
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in return is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7967
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8149 c/c-typeck.cc:8548
  msgid ""
  "passing argument %d of %qE makes %q#v qualified function pointer from "
  "unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8152 c/c-typeck.cc:8551
  msgid "assignment makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8155 c/c-typeck.cc:8553
  msgid "initialization makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8158 c/c-typeck.cc:8555
  msgid "return makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8166 c/c-typeck.cc:8438 c/c-typeck.cc:8481
  msgid ""
  "passing argument %d of %qE discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8168 c/c-typeck.cc:8440 c/c-typeck.cc:8483
  msgid "assignment discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8170 c/c-typeck.cc:8442 c/c-typeck.cc:8485
  msgid "initialization discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8172 c/c-typeck.cc:8444 c/c-typeck.cc:8487
  msgid "return discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8181
  #, gcc-internal-format
  msgid "ISO C prohibits argument conversion to union type"
  msgstr ""
  
! #: c/c-typeck.cc:8249
  #, gcc-internal-format
  msgid "request for implicit conversion from %qT to %qT not permitted in C++"
  msgstr ""
  
! #: c/c-typeck.cc:8276
  #, gcc-internal-format
  msgid "passing argument %d of %qE from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8287
  #, gcc-internal-format
  msgid "assignment from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8298
  #, gcc-internal-format
  msgid "initialization from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8308
  #, gcc-internal-format
  msgid "return from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8324
  #, gcc-internal-format
  msgid "expected %qT but pointer is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8339
  #, gcc-internal-format
  msgid "argument %d of %qE might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8345
  #, gcc-internal-format
  msgid "assignment left-hand side might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8351
  #, gcc-internal-format
  msgid ""
  "initialization left-hand side might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8356 cp/typeck.cc:10559
  #, gcc-internal-format
  msgid "return type might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8380
  #, gcc-internal-format
  msgid "passing argument %d of %qE from incompatible scalar storage order"
  msgstr ""
  
! #: c/c-typeck.cc:8390
  #, gcc-internal-format
  msgid ""
  "assignment to %qT from pointer type %qT with incompatible scalar storage "
  "order"
  msgstr ""
  
! #: c/c-typeck.cc:8400
  #, gcc-internal-format
  msgid ""
  "initialization of %qT from pointer type %qT with incompatible scalar storage "
  "order"
  msgstr ""
  
! #: c/c-typeck.cc:8405
  #, gcc-internal-format
  msgid ""
  "returning %qT from pointer type with incompatible scalar storage order %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8455
  #, gcc-internal-format
  msgid ""
  "ISO C forbids passing argument %d of %qE between function pointer and %<void "
  "*%>"
  msgstr ""
  
! #: c/c-typeck.cc:8458
  #, gcc-internal-format
  msgid "ISO C forbids assignment between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8460
  #, gcc-internal-format
  msgid "ISO C forbids initialization between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8462
  #, gcc-internal-format
  msgid "ISO C forbids return between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8492
  #, gcc-internal-format
  msgid "array with qualifier on the element is not qualified before C23"
  msgstr ""
  
! #: c/c-typeck.cc:8510
  #, gcc-internal-format
  msgid "pointer targets in passing argument %d of %qE differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8518
  #, gcc-internal-format
  msgid "pointer targets in assignment from %qT to %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8524
  #, gcc-internal-format
  msgid "pointer targets in initialization of %qT from %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8529
  #, gcc-internal-format
  msgid ""
  "pointer targets in returning %qT from a function with return type %qT differ "
  "in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8576
  #, gcc-internal-format
  msgid "passing argument %d of %qE from incompatible pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:8587
  msgid "assignment to %e from pointer to %qD with incompatible type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8593
  msgid "assignment to %e from incompatible pointer type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8602
  msgid "initialization of %e from pointer to %qD with incompatible type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8608
  msgid "initialization of %e from incompatible pointer type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8616
  msgid ""
  "returning pointer to %qD of type %e from a function with incompatible type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8622
  msgid "returning %e from a function with incompatible return type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8698
  #, gcc-internal-format
  msgid "passing argument %d of %qE makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8708
  #, gcc-internal-format
  msgid "assignment to %qT from %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8714
  #, gcc-internal-format
  msgid ""
  "initialization of %qT from %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8719
  #, gcc-internal-format
  msgid ""
  "returning %qT from a function with return type %qT makes pointer from "
  "integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8741
  #, gcc-internal-format
  msgid "passing argument %d of %qE makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8751
  #, gcc-internal-format
  msgid "assignment to %qT from %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8757
  #, gcc-internal-format
  msgid ""
  "initialization of %qT from %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8761
  #, gcc-internal-format
  msgid ""
  "returning %qT from a function with return type %qT makes integer from "
  "pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8794
  #, gcc-internal-format
  msgid "incompatible type for argument %d of %qE"
  msgstr ""
  
! #: c/c-typeck.cc:8805
  #, gcc-internal-format
  msgid "incompatible types when assigning to type %qT from type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8816
  #, gcc-internal-format
  msgid "incompatible types when initializing type %qT using type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8826
  #, gcc-internal-format
  msgid "incompatible types when returning type %qT but %qT was expected"
  msgstr ""
  
! #: c/c-typeck.cc:8906
  #, gcc-internal-format
  msgid "traditional C rejects automatic aggregate initialization"
  msgstr ""
  
! #: c/c-typeck.cc:9148
  #, gcc-internal-format
  msgid "%<constexpr%> pointer initializer is not null"
  msgstr ""
  
! #: c/c-typeck.cc:9156
  #, gcc-internal-format
! msgid "%<constexpr%> integer initializer is not an integer constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:9159 c/c-typeck.cc:9221 c/c-typeck.cc:9374
  #, gcc-internal-format
! msgid "%<constexpr%> initializer not representable in type of object"
  msgstr ""
  
! #: c/c-typeck.cc:9169
  #, gcc-internal-format
  msgid "%<constexpr%> initializer is not an arithmetic constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:9186
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a real type is of complex type"
  msgstr ""
  
! #: c/c-typeck.cc:9195
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> initializer for a binary floating-point type is of decimal type"
  msgstr ""
  
! #: c/c-typeck.cc:9339 c/c-typeck.cc:10307 cp/typeck2.cc:1241
  #, gcc-internal-format
  msgid "initialization of a flexible array member"
  msgstr ""
  
! #: c/c-typeck.cc:9355 cp/typeck2.cc:1258
  #, gcc-internal-format
  msgid ""
  "cannot initialize array of %qT from a string literal with type array of %qT"
  msgstr ""
  
! #: c/c-typeck.cc:9401
  #, gcc-internal-format
  msgid ""
  "initializer-string for array of %qT is too long (%wu chars into %wu "
  "available)"
  msgstr ""
  
! #: c/c-typeck.cc:9406
  #, gcc-internal-format
  msgid ""
  "initializer-string for array of %qT is too long for C++ (%wu chars into %wu "
  "available)"
  msgstr ""
  
! #: c/c-typeck.cc:9413
  #, gcc-internal-format
  msgid ""
  "initializer-string for array of %qT truncates NUL terminator but destination "
  "lacks %qs attribute (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9425
  #, gcc-internal-format
  msgid "array of inappropriate type initialized from string constant"
  msgstr ""
  
! #: c/c-typeck.cc:9493 cp/typeck.cc:2556
  #, gcc-internal-format
  msgid "invalid use of non-lvalue array"
  msgstr ""
  
! #: c/c-typeck.cc:9507 c/c-typeck.cc:9647 c/c-typeck.cc:10401
  #, gcc-internal-format
  msgid "invalid initializer"
  msgstr ""
  
! #: c/c-typeck.cc:9519 c/c-typeck.cc:9543 c/c-typeck.cc:9546 c/c-typeck.cc:9554
! #: c/c-typeck.cc:9616 c/c-typeck.cc:11384 c/c-typeck.cc:11468
  #, gcc-internal-format
  msgid "initializer element is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:9528
  #, gcc-internal-format
  msgid "array initialized from non-constant array expression"
  msgstr ""
  
! #: c/c-typeck.cc:9559 c/c-typeck.cc:9629 c/c-typeck.cc:11478
  #, gcc-internal-format
  msgid "initializer element is not a constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:9581 cp/typeck2.cc:1340
  #, gcc-internal-format
  msgid "conversion from %qT to %qT changes value from %qd to %qd"
  msgstr ""
  
! #: c/c-typeck.cc:9623 c/c-typeck.cc:11473
  #, gcc-internal-format
  msgid "initializer element is not computable at load time"
  msgstr ""
  
! #: c/c-typeck.cc:9929 cp/decl.cc:7906
  #, gcc-internal-format
  msgid "opaque vector types cannot be initialized"
  msgstr ""
  
! #: c/c-typeck.cc:10155
  #, gcc-internal-format
  msgid "extra brace group at end of initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10239
  #, gcc-internal-format
  msgid "braces around scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10309 c/c-typeck.cc:10313 c/c-typeck.cc:12076
! #: c/c-typeck.cc:12201 cp/typeck2.cc:1268 cp/typeck2.cc:1621
  #, gcc-internal-format
  msgid "initialization of flexible array member in a nested context"
  msgstr ""
  
! #: c/c-typeck.cc:10350
  #, gcc-internal-format
  msgid "missing braces around initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10373
  #, gcc-internal-format
  msgid "missing initializer for field %qD of %qT"
  msgstr ""
  
! #: c/c-typeck.cc:10413
  #, gcc-internal-format
  msgid "extra elements in scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10535 c/c-typeck.cc:10617
  #, gcc-internal-format
  msgid "array index in non-array initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10540 c/c-typeck.cc:10679
  #, gcc-internal-format
  msgid "field name not in record or union initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10590
  #, gcc-internal-format
  msgid "array index in initializer not of integer type"
  msgstr ""
  
! #: c/c-typeck.cc:10599 c/c-typeck.cc:10608
  #, gcc-internal-format
  msgid "array index in initializer is not an integer constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:10613 c/c-typeck.cc:10615
  #, gcc-internal-format
  msgid "nonconstant array index in initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10619 c/c-typeck.cc:10622
  #, gcc-internal-format
  msgid "array index in initializer exceeds array bounds"
  msgstr ""
  
! #: c/c-typeck.cc:10641
  #, gcc-internal-format
  msgid "empty index range in initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10650
  #, gcc-internal-format
  msgid "array index range in initializer exceeds array bounds"
  msgstr ""
  
! #: c/c-typeck.cc:10784 c/c-typeck.cc:10839 c/c-typeck.cc:10880
! #: c/c-typeck.cc:10940 c/c-typeck.cc:10987 c/c-typeck.cc:11575
  #, gcc-internal-format
  msgid "initialized field overwritten"
  msgstr ""
  
! #: c/c-typeck.cc:10875 c/c-typeck.cc:10936 c/c-typeck.cc:10983
! #: c/c-typeck.cc:11572
  #, gcc-internal-format
  msgid "initialized field with side-effects overwritten"
  msgstr ""
  
! #: c/c-typeck.cc:11500
  #, gcc-internal-format
  msgid "enum conversion in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:11946
  #, gcc-internal-format
  msgid "excess elements in %qT initializer"
  msgstr ""
  
! #: c/c-typeck.cc:11958 c/c-typeck.cc:12035
  #, gcc-internal-format
  msgid "excess elements in struct initializer"
  msgstr ""
  
! #: c/c-typeck.cc:11979
  #, gcc-internal-format
  msgid ""
  "positional initialization of field in %<struct%> declared with "
  "%<designated_init%> attribute"
  msgstr ""
  
! #: c/c-typeck.cc:12050 c/c-typeck.cc:12176 cp/typeck2.cc:1245
  #, gcc-internal-format
  msgid "non-static initialization of a flexible array member"
  msgstr ""
  
! #: c/c-typeck.cc:12146
  #, gcc-internal-format
  msgid "excess elements in union initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12168
  #, gcc-internal-format
  msgid "traditional C rejects initialization of unions"
  msgstr ""
  
! #: c/c-typeck.cc:12267
  #, gcc-internal-format
  msgid "excess elements in array initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12344 c/c-typeck.cc:12346
  #, gcc-internal-format
  msgid "excess elements in vector initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12380
  #, gcc-internal-format
  msgid "excess elements in scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12547 c/c-typeck.cc:12623 cp/semantics.cc:2346
  #: cp/semantics.cc:2455
  #, gcc-internal-format
  msgid "constraint allows registers outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12559 cp/semantics.cc:2358
  #, gcc-internal-format
  msgid "side-effects in output operand outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12570 cp/semantics.cc:2374
  #, gcc-internal-format
  msgid "output operand outside of a function is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:12578 c/c-typeck.cc:12668 cp/semantics.cc:2385
  #: cp/semantics.cc:2518
  #, gcc-internal-format
  msgid "%<-%> modifier used inside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12636 cp/semantics.cc:2468
  #, gcc-internal-format
  msgid ""
  "%<:%> constraint operand is not address of a function or non-automatic "
  "variable"
  msgstr ""
  
! #: c/c-typeck.cc:12649 cp/semantics.cc:2481
  #, gcc-internal-format
  msgid "side-effects in input operand outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12660 cp/semantics.cc:2496 cp/semantics.cc:2510
  #, gcc-internal-format
  msgid "input operand outside of a function is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:12712
  #, gcc-internal-format
  msgid "ISO C forbids %<goto *expr;%>"
  msgstr ""
  
! #: c/c-typeck.cc:12718
  #, gcc-internal-format
  msgid "computed goto must be pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:12748 c/gimple-parser.cc:2648 cp/typeck.cc:11159
  #, gcc-internal-format
  msgid "function declared %<noreturn%> has a %<return%> statement"
  msgstr ""
  
! #: c/c-typeck.cc:12777
  #, gcc-internal-format
  msgid "%<return%> with no value, in function returning non-void"
  msgstr ""
  
! #: c/c-typeck.cc:12790 c/gimple-parser.cc:2658
  #, gcc-internal-format
  msgid "%<return%> with a value, in function returning void"
  msgstr ""
  
! #: c/c-typeck.cc:12793
  #, gcc-internal-format
  msgid "ISO C forbids %<return%> with expression, in function returning void"
  msgstr ""
  
! #: c/c-typeck.cc:12875
  #, gcc-internal-format
  msgid "function returns address of label"
  msgstr ""
  
! #: c/c-typeck.cc:12966 cp/semantics.cc:1921
  #, gcc-internal-format
  msgid "switch quantity not an integer"
  msgstr ""
  
! #: c/c-typeck.cc:12991
  #, gcc-internal-format
  msgid "%<long%> switch expression not converted to %<int%> in ISO C"
  msgstr ""
  
! #: c/c-typeck.cc:13029 c/c-typeck.cc:13037
  #, gcc-internal-format
  msgid "case label is not an integer constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:13043 cp/parser.cc:13521
  #, gcc-internal-format
  msgid "case label not within a switch statement"
  msgstr ""
  
! #: c/c-typeck.cc:13045
  #, gcc-internal-format
  msgid "%<default%> label not within a switch statement"
  msgstr ""
  
! #: c/c-typeck.cc:13121 cp/parser.cc:15291
  #, gcc-internal-format
  msgid "break statement not within loop or switch"
  msgstr ""
  
! #: c/c-typeck.cc:13124 c/c-typeck.cc:13144 cp/decl.cc:4107 cp/parser.cc:15301
! #: cp/parser.cc:15322
  #, gcc-internal-format
  msgid "invalid exit from OpenMP structured block"
  msgstr ""
  
! #: c/c-typeck.cc:13127 cp/parser.cc:15304
  #, gcc-internal-format
  msgid "break statement used with OpenMP for loop"
  msgstr ""
  
! #: c/c-typeck.cc:13141 cp/parser.cc:15314
  #, gcc-internal-format
  msgid "continue statement not within a loop"
  msgstr ""
  
! #: c/c-typeck.cc:13191 cp/cp-gimplify.cc:277
  #, gcc-internal-format
  msgid "statement with no effect"
  msgstr ""
  
! #: c/c-typeck.cc:13235
  #, gcc-internal-format
  msgid "expression statement has incomplete type"
  msgstr ""
  
! #: c/c-typeck.cc:13526
  #, gcc-internal-format
  msgid ""
  "the comparison will always evaluate as %<false%> for the pointer operand in "
  "%qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13531
  #, gcc-internal-format
  msgid ""
  "the comparison will always evaluate as %<true%> for the pointer operand in "
  "%qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13549 c/c-typeck.cc:13587
  #, gcc-internal-format
  msgid ""
  "the comparison will always evaluate as %<false%> for the address of %qE will "
  "never be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13554 c/c-typeck.cc:13592
  #, gcc-internal-format
  msgid ""
  "the comparison will always evaluate as %<true%> for the address of %qE will "
  "never be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:14184 c/c-typeck.cc:14348 cp/typeck.cc:6163
  #, gcc-internal-format
  msgid "comparing vectors with different element types"
  msgstr ""
  
! #: c/c-typeck.cc:14192 c/c-typeck.cc:14356 cp/typeck.cc:6177
  #, gcc-internal-format
  msgid "comparing vectors with different number of elements"
  msgstr ""
  
! #: c/c-typeck.cc:14207 c/c-typeck.cc:14371 cp/typeck.cc:6195
  #, gcc-internal-format
  msgid "comparison between types %qT and %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14217 c/c-typeck.cc:14381 cp/typeck.cc:6212
  #, gcc-internal-format
  msgid "could not find an integer type of the same size as %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14231 cp/typeck.cc:5838
  #, gcc-internal-format
  msgid "comparing floating-point with %<==%> or %<!=%> is unsafe"
  msgstr ""
  
! #: c/c-typeck.cc:14270 c/c-typeck.cc:14422
  #, gcc-internal-format
  msgid "comparison of pointers to disjoint address spaces"
  msgstr ""
  
! #: c/c-typeck.cc:14277 c/c-typeck.cc:14283
  #, gcc-internal-format
  msgid "ISO C forbids comparison of %<void *%> with function pointer"
  msgstr ""
  
! #: c/c-typeck.cc:14290 c/c-typeck.cc:14432
  #, gcc-internal-format
  msgid "comparison of distinct pointer types lacks a cast"
  msgstr ""
  
! #: c/c-typeck.cc:14303 c/c-typeck.cc:14309 c/c-typeck.cc:14459
! #: c/c-typeck.cc:14465
  #, gcc-internal-format
  msgid "comparison between pointer and integer"
  msgstr ""
  
! #: c/c-typeck.cc:14410
  #, gcc-internal-format
  msgid "comparison of complete and incomplete pointers"
  msgstr ""
  
! #: c/c-typeck.cc:14412
  #, gcc-internal-format
  msgid "ISO C forbids ordered comparisons of pointers to functions"
  msgstr ""
  
! #: c/c-typeck.cc:14417
  #, gcc-internal-format
  msgid "ordered comparison of pointer with null pointer"
  msgstr ""
  
! #: c/c-typeck.cc:14440 c/c-typeck.cc:14443 c/c-typeck.cc:14450
! #: c/c-typeck.cc:14453
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero"
  msgstr ""
  
! #: c/c-typeck.cc:14530
  #, gcc-internal-format
  msgid ""
  "implicit conversion from %qT to %qT to match other operand of binary "
  "expression"
  msgstr ""
  
! #: c/c-typeck.cc:14848
  #, gcc-internal-format
  msgid "used array that cannot be converted to pointer where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14852
  #, gcc-internal-format
  msgid "used struct type value where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14856
  #, gcc-internal-format
  msgid "used union type value where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14872
  #, gcc-internal-format
  msgid "used vector type where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:15075 cp/semantics.cc:12069
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp cancel%> must specify one of %<parallel%>, %<for%>, "
  "%<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15086 c/c-typeck.cc:15096 cp/semantics.cc:12080
  #: cp/semantics.cc:12090
  #, gcc-internal-format
  msgid "expected %<cancel%> %<if%> clause modifier"
  msgstr ""
  
! #: c/c-typeck.cc:15131 cp/semantics.cc:12125
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp cancellation point%> must specify one of %<parallel%>, "
  "%<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15199 cp/semantics.cc:5948 cp/semantics.cc:9059
  #, gcc-internal-format
  msgid "%qD is not a variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15203 c/c-typeck.cc:17020 cp/semantics.cc:5952
  #: cp/semantics.cc:9063
  #, gcc-internal-format
  msgid "%qE is not a variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15211
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15221 c/c-typeck.cc:17027 c/c-typeck.cc:17181
  #: cp/semantics.cc:5961 cp/semantics.cc:9070 cp/semantics.cc:9259
  #, gcc-internal-format
  msgid "%qD is threadprivate variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15258 cp/semantics.cc:5995
  #, gcc-internal-format
  msgid "low bound %qE of array section does not have integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15265 cp/semantics.cc:6002
  #, gcc-internal-format
  msgid "length %qE of array section does not have integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15288 cp/semantics.cc:6035
  #, gcc-internal-format
  msgid "expected single pointer in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15306 c/c-typeck.cc:15373 c/c-typeck.cc:15666
  #: cp/semantics.cc:6053 cp/semantics.cc:6120
  #, gcc-internal-format
  msgid "zero length array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15325 cp/semantics.cc:6072
  #, gcc-internal-format
  msgid "for unknown bound array type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15333 cp/semantics.cc:6080
  #, gcc-internal-format
  msgid "negative low bound in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15342 c/c-typeck.cc:15466 cp/semantics.cc:6089
  #: cp/semantics.cc:6213
  #, gcc-internal-format
  msgid "negative length in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15359 cp/semantics.cc:6106
  #, gcc-internal-format
  msgid "low bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15402 cp/semantics.cc:6149
  #, gcc-internal-format
  msgid "length %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15417 cp/semantics.cc:6164
  #, gcc-internal-format
  msgid "high bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15454 cp/semantics.cc:6201
  #, gcc-internal-format
  msgid "for array function parameter length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15458 cp/semantics.cc:6205
  #, gcc-internal-format
  msgid "for pointer type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15486 c/c-typeck.cc:15605 cp/semantics.cc:6232
  #: cp/semantics.cc:6368
  #, gcc-internal-format
  msgid "array section is not contiguous in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15496 cp/semantics.cc:6242
  #, gcc-internal-format
  msgid "%qE does not have pointer or array type"
  msgstr ""
  
! #: c/c-typeck.cc:15872 cp/semantics.cc:7305
  #, gcc-internal-format
  msgid "iterator %qD has neither integral nor pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:15879
  #, gcc-internal-format
  msgid "iterator %qD has %<_Atomic%> qualified type"
  msgstr ""
  
! #: c/c-typeck.cc:15885 cp/semantics.cc:7312
  #, gcc-internal-format
  msgid "iterator %qD has const qualified type"
  msgstr ""
  
! #: c/c-typeck.cc:15898 cp/semantics.cc:7328
  #, gcc-internal-format
  msgid "iterator step with non-integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15918 cp/semantics.cc:7364
  #, gcc-internal-format
  msgid "iterator %qD has zero step"
  msgstr ""
  
! #: c/c-typeck.cc:15945
  #, gcc-internal-format
  msgid "type of iterator %qD refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15952 cp/semantics.cc:7398
  #, gcc-internal-format
  msgid "begin expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15958 cp/semantics.cc:7404
  #, gcc-internal-format
  msgid "end expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15964 cp/semantics.cc:7410
  #, gcc-internal-format
  msgid "step expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:16001 cp/semantics.cc:7458
  #, gcc-internal-format
  msgid "expected pointer in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16104 cp/semantics.cc:7624
  #, gcc-internal-format
  msgid ""
  "%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct"
  msgstr ""
  
! #: c/c-typeck.cc:16126 cp/semantics.cc:7644
  #, gcc-internal-format
  msgid "%<inscan%> %<reduction%> clause with array section"
  msgstr ""
  
! #: c/c-typeck.cc:16152 c/c-typeck.cc:16162
  #, gcc-internal-format
  msgid "%qD in %<reduction%> clause is a zero size array"
  msgstr ""
  
! #: c/c-typeck.cc:16182
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16194
  #, gcc-internal-format
  msgid "zero sized type %qT in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16202
  #, gcc-internal-format
  msgid "variable sized type %qT in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16246
  #, gcc-internal-format
  msgid "%qE has invalid type for %<reduction(%s)%>"
  msgstr ""
  
! #: c/c-typeck.cc:16255 cp/semantics.cc:7197
  #, gcc-internal-format
  msgid "user defined reduction not found for %qE"
  msgstr ""
  
! #: c/c-typeck.cc:16343
  #, gcc-internal-format
  msgid "variable length element type in array %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16361 c/c-typeck.cc:17275 cp/semantics.cc:9943
  #, gcc-internal-format
  msgid "%<nowait%> clause must not be used together with %<copyprivate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16373 cp/semantics.cc:10011
  #, gcc-internal-format
  msgid "%qE must be %<threadprivate%> for %<copyin%>"
  msgstr ""
  
! #: c/c-typeck.cc:16388 cp/semantics.cc:7687
  #, gcc-internal-format
  msgid ""
  "modifier should not be specified in %<linear%> clause on %<simd%> or %<for%> "
  "constructs when not using OpenMP 5.2 modifiers"
  msgstr ""
  
! #: c/c-typeck.cc:16397
  #, gcc-internal-format
  msgid ""
  "linear clause applied to non-integral non-pointer variable with type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:16405
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<linear%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16424 cp/semantics.cc:7771
  #, gcc-internal-format
  msgid "%<linear%> clause step %qE is neither constant nor a parameter"
  msgstr ""
  
! #: c/c-typeck.cc:16454 c/c-typeck.cc:17175 c/c-typeck.cc:17446
  #: cp/semantics.cc:7858 cp/semantics.cc:9253 cp/semantics.cc:9644
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %qs"
  msgstr ""
  
! #: c/c-typeck.cc:16471 cp/semantics.cc:7876
  #, gcc-internal-format
  msgid "%qD appears more than once in data-sharing clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16482 cp/semantics.cc:7887
  #, gcc-internal-format
  msgid "%qD appears more than once in reduction clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16496 c/c-typeck.cc:16566 c/c-typeck.cc:16601
  #, gcc-internal-format
  msgid "%qE appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16506 c/c-typeck.cc:16574 c/c-typeck.cc:16923
! #: c/c-typeck.cc:17075 c/c-typeck.cc:17083 c/c-typeck.cc:17099
! #: c/c-typeck.cc:17108 c/c-typeck.cc:17116 cp/semantics.cc:7901
  #: cp/semantics.cc:7911 cp/semantics.cc:8004 cp/semantics.cc:8012
  #: cp/semantics.cc:8059 cp/semantics.cc:8941 cp/semantics.cc:9131
  #: cp/semantics.cc:9139 cp/semantics.cc:9159 cp/semantics.cc:9168
--- 53543,55058 ----
  msgid "too many arguments to built-in function %qE expecting %d"
  msgstr ""
  
! #: c/c-typeck.cc:4352
  #, gcc-internal-format
  msgid ""
  "ISO C23 does not allow arguments for method %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4357
  #, gcc-internal-format
  msgid ""
  "ISO C23 does not allow arguments for function %qE declared without parameters"
  msgstr ""
  
! #: c/c-typeck.cc:4433
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT when passing argument to function"
  msgstr ""
  
! #: c/c-typeck.cc:4514
  #, gcc-internal-format
  msgid "too few arguments to function %qE; expected at least %i, have %i"
  msgstr ""
  
! #: c/c-typeck.cc:4515
  #, gcc-internal-format
  msgid "too few arguments to function %qE; expected %i, have %i"
  msgstr ""
  
! #: c/c-typeck.cc:4529
  #, gcc-internal-format
  msgid "too few arguments to built-in function %qE expecting %u"
  msgstr ""
  
! #: c/c-typeck.cc:4707 c/c-typeck.cc:4735 cp/typeck.cc:5965 cp/typeck.cc:6253
  #, gcc-internal-format
  msgid "comparison with string literal results in unspecified behavior"
  msgstr ""
  
! #: c/c-typeck.cc:4715 c/c-typeck.cc:4726 cp/typeck.cc:6002 cp/typeck.cc:6026
  #, gcc-internal-format
  msgid "comparison between pointer and zero character constant"
  msgstr ""
  
! #: c/c-typeck.cc:4718 c/c-typeck.cc:4729 cp/typeck.cc:6005 cp/typeck.cc:6029
  #, gcc-internal-format
  msgid "did you mean to dereference the pointer?"
  msgstr ""
  
! #: c/c-typeck.cc:4747 c/c-typeck.cc:4754 c/c-typeck.cc:6131 c/c-typeck.cc:6136
! #: c/c-typeck.cc:8684 cp/tree.cc:6464
  #, gcc-internal-format
  msgid "zero as null pointer constant"
  msgstr ""
  
! #: c/c-typeck.cc:4775
  #, gcc-internal-format
  msgid "comparison between %qT and %qT"
  msgstr ""
  
! #: c/c-typeck.cc:4834
  #, gcc-internal-format
  msgid "pointer of type %<void *%> used in subtraction"
  msgstr ""
  
! #: c/c-typeck.cc:4837
  #, gcc-internal-format
  msgid "pointer to a function used in subtraction"
  msgstr ""
  
! #: c/c-typeck.cc:4871
  #, gcc-internal-format
  msgid "arithmetic on pointer to an incomplete type"
  msgstr ""
  
! #: c/c-typeck.cc:4880 cp/typeck.cc:7053
  #, gcc-internal-format
  msgid "arithmetic on pointer to an empty aggregate"
  msgstr ""
  
! #: c/c-typeck.cc:5329
  #, gcc-internal-format
  msgid "%<~%> on a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5333
  #, gcc-internal-format
  msgid "did you mean to use logical not?"
  msgstr ""
  
! #: c/c-typeck.cc:5343
  #, gcc-internal-format
  msgid "ISO C does not support %<~%> for complex conjugation"
  msgstr ""
  
! #: c/c-typeck.cc:5367
  #, gcc-internal-format
  msgid "wrong type argument to absu"
  msgstr ""
  
! #: c/c-typeck.cc:5393
  #, gcc-internal-format
  msgid "wrong type argument to unary exclamation mark"
  msgstr ""
  
! #: c/c-typeck.cc:5451
  #, gcc-internal-format
  msgid "increment of enumeration value is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:5454
  #, gcc-internal-format
  msgid "decrement of enumeration value is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:5461
  #, gcc-internal-format
  msgid "increment of a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5464
  #, gcc-internal-format
  msgid "decrement of a boolean expression"
  msgstr ""
  
! #: c/c-typeck.cc:5480
  #, gcc-internal-format
  msgid "ISO C does not support %<++%> and %<--%> on complex types before C2Y"
  msgstr ""
  
! #: c/c-typeck.cc:5507 c/c-typeck.cc:5541
  #, gcc-internal-format
  msgid "wrong type argument to increment"
  msgstr ""
  
! #: c/c-typeck.cc:5509 c/c-typeck.cc:5544
  #, gcc-internal-format
  msgid "wrong type argument to decrement"
  msgstr ""
  
! #: c/c-typeck.cc:5529
  #, gcc-internal-format
  msgid "increment of pointer to an incomplete type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:5533
  #, gcc-internal-format
  msgid "decrement of pointer to an incomplete type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:5641
  #, gcc-internal-format
  msgid "taking address of expression of type %<void%>"
  msgstr ""
  
! #: c/c-typeck.cc:5704 c/c-typeck.cc:5900
  #, gcc-internal-format
  msgid "cannot take address of bit-field %qD"
  msgstr ""
  
! #: c/c-typeck.cc:5718
  #, gcc-internal-format
  msgid "cannot take address of scalar with reverse storage order"
  msgstr ""
  
! #: c/c-typeck.cc:5726
  #, gcc-internal-format
  msgid "address of array with reverse scalar storage order requested"
  msgstr ""
  
! #: c/c-typeck.cc:5915
  #, gcc-internal-format
  msgid "address of register compound literal requested"
  msgstr ""
  
! #: c/c-typeck.cc:5936
  #, gcc-internal-format
  msgid "global register variable %qD used in nested function"
  msgstr ""
  
! #: c/c-typeck.cc:5939
  #, gcc-internal-format
  msgid "register variable %qD used in nested function"
  msgstr ""
  
! #: c/c-typeck.cc:5944
  #, gcc-internal-format
  msgid "address of global register variable %qD requested"
  msgstr ""
  
! #: c/c-typeck.cc:5946 d/d-codegen.cc:761
  #, gcc-internal-format
  msgid "address of register variable %qD requested"
  msgstr ""
  
! #: c/c-typeck.cc:6085
  #, gcc-internal-format
  msgid "non-lvalue array in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6181
  #, gcc-internal-format
  msgid ""
  "implicit conversion from %qT to %qT to match other result of conditional"
  msgstr ""
  
! #: c/c-typeck.cc:6240 c/c-typeck.cc:6246
  #, gcc-internal-format
  msgid ""
  "operand of %<?:%> changes signedness from %qT to %qT due to unsignedness of "
  "other operand"
  msgstr ""
  
! #: c/c-typeck.cc:6263
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr with only one void side"
  msgstr ""
  
! #: c/c-typeck.cc:6280
  #, gcc-internal-format
  msgid "pointers to disjoint address spaces used in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6304
  #, gcc-internal-format
  msgid "pointer to array loses qualifier in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6308
  #, gcc-internal-format
  msgid ""
  "pointer to array loses qualifier in conditional expression in ISO C before "
  "C23"
  msgstr ""
  
! #: c/c-typeck.cc:6313
  #, gcc-internal-format
  msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6335
  #, gcc-internal-format
  msgid "pointer type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6338
  #, gcc-internal-format
  msgid "first expression has type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6339
  #, gcc-internal-format
  msgid "second expression has type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6350 c/c-typeck.cc:6363
  #, gcc-internal-format
  msgid "pointer/integer type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6390
  #, gcc-internal-format
  msgid "type mismatch in conditional expression"
  msgstr ""
  
! #: c/c-typeck.cc:6506
  #, gcc-internal-format
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>: %E"
  msgstr ""
  
! #: c/c-typeck.cc:6510
  #, gcc-internal-format
  msgid "ignoring return value of %qD, declared with attribute %<nodiscard%>"
  msgstr ""
  
! #: c/c-typeck.cc:6529
  #, gcc-internal-format
  msgid ""
  "ignoring return value of type %qT, declared with attribute %<nodiscard%>: %E"
  msgstr ""
  
! #: c/c-typeck.cc:6534
  #, gcc-internal-format
  msgid ""
  "ignoring return value of type %qT, declared with attribute %<nodiscard%>"
  msgstr ""
  
! #: c/c-typeck.cc:6543 cp/cvt.cc:1132 rust/backend/rust-tree.cc:640
  #, gcc-internal-format
  msgid "in call to %qD, declared here"
  msgstr ""
  
! #: c/c-typeck.cc:6592
  #, gcc-internal-format
  msgid "left-hand operand of comma expression has no effect"
  msgstr ""
  
! #: c/c-typeck.cc:6610 c/c-typeck.cc:13226
  #, gcc-internal-format
  msgid "right-hand operand of comma expression has no effect"
  msgstr ""
  
! #: c/c-typeck.cc:6681
  msgid "cast adds %q#v qualifier to function type"
  msgstr ""
  
! #: c/c-typeck.cc:6687
  msgid "cast discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:6722
  #, gcc-internal-format
  msgid ""
  "to be safe all intermediate pointers in cast from %qT to %qT must be "
  "%<const%> qualified"
  msgstr ""
  
! #: c/c-typeck.cc:6819
  #, gcc-internal-format
  msgid "cast specifies array type"
  msgstr ""
  
! #: c/c-typeck.cc:6825
  #, gcc-internal-format
  msgid "cast specifies function type"
  msgstr ""
  
! #: c/c-typeck.cc:6840
  #, gcc-internal-format
  msgid "ISO C forbids casting nonscalar to the same type"
  msgstr ""
  
! #: c/c-typeck.cc:6844
  #, gcc-internal-format
  msgid "useless cast to type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6864
  #, gcc-internal-format
  msgid "ISO C forbids casts to union type"
  msgstr ""
  
! #: c/c-typeck.cc:6874
  #, gcc-internal-format
  msgid "cast to union type from type not present in union"
  msgstr ""
  
! #: c/c-typeck.cc:6909
  #, gcc-internal-format
  msgid ""
  "cast to %qs address space pointer from disjoint generic address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6914
  #, gcc-internal-format
  msgid ""
  "cast to generic address space pointer from disjoint %qs address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6919
  #, gcc-internal-format
  msgid ""
  "cast to %qs address space pointer from disjoint %qs address space pointer"
  msgstr ""
  
! #: c/c-typeck.cc:6952
  #, gcc-internal-format
  msgid "cast increases required alignment of target type"
  msgstr ""
  
! #: c/c-typeck.cc:6964
  #, gcc-internal-format
  msgid "cast from pointer to integer of different size"
  msgstr ""
  
! #: c/c-typeck.cc:6969
  #, gcc-internal-format
  msgid "cast from function call of type %qT to non-matching type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:6979 cp/typeck.cc:9499
  #, gcc-internal-format
  msgid "cast to pointer from integer of different size"
  msgstr ""
  
! #: c/c-typeck.cc:6993
  #, gcc-internal-format
  msgid "ISO C forbids conversion of function pointer to object pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:7002
  #, gcc-internal-format
  msgid "ISO C forbids conversion of object pointer to function pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:7012
  #, gcc-internal-format
  msgid "cast between incompatible function types from %qT to %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7127
  #, gcc-internal-format
  msgid "defining a type in a cast is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7169
  #, gcc-internal-format
  msgid "assignment to expression with array type"
  msgstr ""
  
! #: c/c-typeck.cc:7295
  #, gcc-internal-format
  msgid "enum conversion in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7497 c/c-typeck.cc:7516 c/c-typeck.cc:7573
  #, gcc-internal-format
  msgid "(near initialization for %qs)"
  msgstr ""
  
! #: c/c-typeck.cc:7589
  #, gcc-internal-format
  msgid "array initialized from parenthesized string constant"
  msgstr ""
  
! #: c/c-typeck.cc:7639
  msgid "expected %e but argument is of type %e"
  msgstr ""
  
! #: c/c-typeck.cc:7673
  #, gcc-internal-format
  msgid ""
  "%qD argument %d type is %qT where %qT is expected in a call to built-in "
  "function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7676
  #, gcc-internal-format
  msgid ""
  "%qD argument %d promotes to %qT where %qT is expected in a call to built-in "
  "function declared without prototype"
  msgstr ""
  
! #: c/c-typeck.cc:7681
  #, gcc-internal-format
  msgid "built-in %qD declared here"
  msgstr ""
  
! #: c/c-typeck.cc:7738 c/c-typeck.cc:8646
  msgid "%e declared here"
  msgstr ""
  
! #: c/c-typeck.cc:7931
  #, gcc-internal-format
  msgid "enum conversion when passing argument %d of %qE is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7936
  #, gcc-internal-format
  msgid "expected %qT but argument is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:7940
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in assignment is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7945
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7950
  #, gcc-internal-format
  msgid "enum conversion from %qT to %qT in return is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:7968
  #, gcc-internal-format
  msgid "implicit conversion from %qT to %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8150 c/c-typeck.cc:8549
  msgid ""
  "passing argument %d of %qE makes %q#v qualified function pointer from "
  "unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8153 c/c-typeck.cc:8552
  msgid "assignment makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8156 c/c-typeck.cc:8554
  msgid "initialization makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8159 c/c-typeck.cc:8556
  msgid "return makes %q#v qualified function pointer from unqualified"
  msgstr ""
  
! #: c/c-typeck.cc:8167 c/c-typeck.cc:8439 c/c-typeck.cc:8482
  msgid ""
  "passing argument %d of %qE discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8169 c/c-typeck.cc:8441 c/c-typeck.cc:8484
  msgid "assignment discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8171 c/c-typeck.cc:8443 c/c-typeck.cc:8486
  msgid "initialization discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8173 c/c-typeck.cc:8445 c/c-typeck.cc:8488
  msgid "return discards %qv qualifier from pointer target type"
  msgstr ""
  
! #: c/c-typeck.cc:8182
  #, gcc-internal-format
  msgid "ISO C prohibits argument conversion to union type"
  msgstr ""
  
! #: c/c-typeck.cc:8250
  #, gcc-internal-format
  msgid "request for implicit conversion from %qT to %qT not permitted in C++"
  msgstr ""
  
! #: c/c-typeck.cc:8277
  #, gcc-internal-format
  msgid "passing argument %d of %qE from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8288
  #, gcc-internal-format
  msgid "assignment from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8299
  #, gcc-internal-format
  msgid "initialization from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8309
  #, gcc-internal-format
  msgid "return from pointer to non-enclosed address space"
  msgstr ""
  
! #: c/c-typeck.cc:8325
  #, gcc-internal-format
  msgid "expected %qT but pointer is of type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8340
  #, gcc-internal-format
  msgid "argument %d of %qE might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8346
  #, gcc-internal-format
  msgid "assignment left-hand side might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8352
  #, gcc-internal-format
  msgid ""
  "initialization left-hand side might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8357 cp/typeck.cc:10675
  #, gcc-internal-format
  msgid "return type might be a candidate for a format attribute"
  msgstr ""
  
! #: c/c-typeck.cc:8381
  #, gcc-internal-format
  msgid "passing argument %d of %qE from incompatible scalar storage order"
  msgstr ""
  
! #: c/c-typeck.cc:8391
  #, gcc-internal-format
  msgid ""
  "assignment to %qT from pointer type %qT with incompatible scalar storage "
  "order"
  msgstr ""
  
! #: c/c-typeck.cc:8401
  #, gcc-internal-format
  msgid ""
  "initialization of %qT from pointer type %qT with incompatible scalar storage "
  "order"
  msgstr ""
  
! #: c/c-typeck.cc:8406
  #, gcc-internal-format
  msgid ""
  "returning %qT from pointer type with incompatible scalar storage order %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8456
  #, gcc-internal-format
  msgid ""
  "ISO C forbids passing argument %d of %qE between function pointer and %<void "
  "*%>"
  msgstr ""
  
! #: c/c-typeck.cc:8459
  #, gcc-internal-format
  msgid "ISO C forbids assignment between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8461
  #, gcc-internal-format
  msgid "ISO C forbids initialization between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8463
  #, gcc-internal-format
  msgid "ISO C forbids return between function pointer and %<void *%>"
  msgstr ""
  
! #: c/c-typeck.cc:8493
  #, gcc-internal-format
  msgid "array with qualifier on the element is not qualified before C23"
  msgstr ""
  
! #: c/c-typeck.cc:8511
  #, gcc-internal-format
  msgid "pointer targets in passing argument %d of %qE differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8519
  #, gcc-internal-format
  msgid "pointer targets in assignment from %qT to %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8525
  #, gcc-internal-format
  msgid "pointer targets in initialization of %qT from %qT differ in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8530
  #, gcc-internal-format
  msgid ""
  "pointer targets in returning %qT from a function with return type %qT differ "
  "in signedness"
  msgstr ""
  
! #: c/c-typeck.cc:8577
  #, gcc-internal-format
  msgid "passing argument %d of %qE from incompatible pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:8588
  msgid "assignment to %e from pointer to %qD with incompatible type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8594
  msgid "assignment to %e from incompatible pointer type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8603
  msgid "initialization of %e from pointer to %qD with incompatible type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8609
  msgid "initialization of %e from incompatible pointer type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8617
  msgid ""
  "returning pointer to %qD of type %e from a function with incompatible type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8623
  msgid "returning %e from a function with incompatible return type %e"
  msgstr ""
  
! #: c/c-typeck.cc:8699
  #, gcc-internal-format
  msgid "passing argument %d of %qE makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8709
  #, gcc-internal-format
  msgid "assignment to %qT from %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8715
  #, gcc-internal-format
  msgid ""
  "initialization of %qT from %qT makes pointer from integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8720
  #, gcc-internal-format
  msgid ""
  "returning %qT from a function with return type %qT makes pointer from "
  "integer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8742
  #, gcc-internal-format
  msgid "passing argument %d of %qE makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8752
  #, gcc-internal-format
  msgid "assignment to %qT from %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8758
  #, gcc-internal-format
  msgid ""
  "initialization of %qT from %qT makes integer from pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8762
  #, gcc-internal-format
  msgid ""
  "returning %qT from a function with return type %qT makes integer from "
  "pointer without a cast"
  msgstr ""
  
! #: c/c-typeck.cc:8795
  #, gcc-internal-format
  msgid "incompatible type for argument %d of %qE"
  msgstr ""
  
! #: c/c-typeck.cc:8806
  #, gcc-internal-format
  msgid "incompatible types when assigning to type %qT from type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8817
  #, gcc-internal-format
  msgid "incompatible types when initializing type %qT using type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:8827
  #, gcc-internal-format
  msgid "incompatible types when returning type %qT but %qT was expected"
  msgstr ""
  
! #: c/c-typeck.cc:8907
  #, gcc-internal-format
  msgid "traditional C rejects automatic aggregate initialization"
  msgstr ""
  
! #: c/c-typeck.cc:9149
  #, gcc-internal-format
  msgid "%<constexpr%> pointer initializer is not null"
  msgstr ""
  
! #: c/c-typeck.cc:9166 c/c-typeck.cc:9176 c/c-typeck.cc:9238 c/c-typeck.cc:9391
  #, gcc-internal-format
! msgid "%<constexpr%> initializer not representable in type of object"
  msgstr ""
  
! #: c/c-typeck.cc:9172
  #, gcc-internal-format
! msgid "%<constexpr%> integer initializer is not an integer constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:9186
  #, gcc-internal-format
  msgid "%<constexpr%> initializer is not an arithmetic constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:9203
  #, gcc-internal-format
  msgid "%<constexpr%> initializer for a real type is of complex type"
  msgstr ""
  
! #: c/c-typeck.cc:9212
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> initializer for a binary floating-point type is of decimal type"
  msgstr ""
  
! #: c/c-typeck.cc:9356 c/c-typeck.cc:10324 cp/typeck2.cc:1241
  #, gcc-internal-format
  msgid "initialization of a flexible array member"
  msgstr ""
  
! #: c/c-typeck.cc:9372 cp/typeck2.cc:1258
  #, gcc-internal-format
  msgid ""
  "cannot initialize array of %qT from a string literal with type array of %qT"
  msgstr ""
  
! #: c/c-typeck.cc:9418
  #, gcc-internal-format
  msgid ""
  "initializer-string for array of %qT is too long (%wu chars into %wu "
  "available)"
  msgstr ""
  
! #: c/c-typeck.cc:9423
  #, gcc-internal-format
  msgid ""
  "initializer-string for array of %qT is too long for C++ (%wu chars into %wu "
  "available)"
  msgstr ""
  
! #: c/c-typeck.cc:9430
  #, gcc-internal-format
  msgid ""
  "initializer-string for array of %qT truncates NUL terminator but destination "
  "lacks %qs attribute (%wu chars into %wu available)"
  msgstr ""
  
! #: c/c-typeck.cc:9442
  #, gcc-internal-format
  msgid "array of inappropriate type initialized from string constant"
  msgstr ""
  
! #: c/c-typeck.cc:9510 cp/typeck.cc:2556
  #, gcc-internal-format
  msgid "invalid use of non-lvalue array"
  msgstr ""
  
! #: c/c-typeck.cc:9524 c/c-typeck.cc:9664 c/c-typeck.cc:10418
  #, gcc-internal-format
  msgid "invalid initializer"
  msgstr ""
  
! #: c/c-typeck.cc:9536 c/c-typeck.cc:9560 c/c-typeck.cc:9563 c/c-typeck.cc:9571
! #: c/c-typeck.cc:9633 c/c-typeck.cc:11401 c/c-typeck.cc:11485
  #, gcc-internal-format
  msgid "initializer element is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:9545
  #, gcc-internal-format
  msgid "array initialized from non-constant array expression"
  msgstr ""
  
! #: c/c-typeck.cc:9576 c/c-typeck.cc:9646 c/c-typeck.cc:11495
  #, gcc-internal-format
  msgid "initializer element is not a constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:9598 cp/typeck2.cc:1340
  #, gcc-internal-format
  msgid "conversion from %qT to %qT changes value from %qd to %qd"
  msgstr ""
  
! #: c/c-typeck.cc:9640 c/c-typeck.cc:11490
  #, gcc-internal-format
  msgid "initializer element is not computable at load time"
  msgstr ""
  
! #: c/c-typeck.cc:9946 cp/decl.cc:7904
  #, gcc-internal-format
  msgid "opaque vector types cannot be initialized"
  msgstr ""
  
! #: c/c-typeck.cc:10172
  #, gcc-internal-format
  msgid "extra brace group at end of initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10256
  #, gcc-internal-format
  msgid "braces around scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10326 c/c-typeck.cc:10330 c/c-typeck.cc:12093
! #: c/c-typeck.cc:12218 cp/typeck2.cc:1268 cp/typeck2.cc:1621
  #, gcc-internal-format
  msgid "initialization of flexible array member in a nested context"
  msgstr ""
  
! #: c/c-typeck.cc:10367
  #, gcc-internal-format
  msgid "missing braces around initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10390
  #, gcc-internal-format
  msgid "missing initializer for field %qD of %qT"
  msgstr ""
  
! #: c/c-typeck.cc:10430
  #, gcc-internal-format
  msgid "extra elements in scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10552 c/c-typeck.cc:10634
  #, gcc-internal-format
  msgid "array index in non-array initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10557 c/c-typeck.cc:10696
  #, gcc-internal-format
  msgid "field name not in record or union initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10607
  #, gcc-internal-format
  msgid "array index in initializer not of integer type"
  msgstr ""
  
! #: c/c-typeck.cc:10616 c/c-typeck.cc:10625
  #, gcc-internal-format
  msgid "array index in initializer is not an integer constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:10630 c/c-typeck.cc:10632
  #, gcc-internal-format
  msgid "nonconstant array index in initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10636 c/c-typeck.cc:10639
  #, gcc-internal-format
  msgid "array index in initializer exceeds array bounds"
  msgstr ""
  
! #: c/c-typeck.cc:10658
  #, gcc-internal-format
  msgid "empty index range in initializer"
  msgstr ""
  
! #: c/c-typeck.cc:10667
  #, gcc-internal-format
  msgid "array index range in initializer exceeds array bounds"
  msgstr ""
  
! #: c/c-typeck.cc:10801 c/c-typeck.cc:10856 c/c-typeck.cc:10897
! #: c/c-typeck.cc:10957 c/c-typeck.cc:11004 c/c-typeck.cc:11592
  #, gcc-internal-format
  msgid "initialized field overwritten"
  msgstr ""
  
! #: c/c-typeck.cc:10892 c/c-typeck.cc:10953 c/c-typeck.cc:11000
! #: c/c-typeck.cc:11589
  #, gcc-internal-format
  msgid "initialized field with side-effects overwritten"
  msgstr ""
  
! #: c/c-typeck.cc:11517
  #, gcc-internal-format
  msgid "enum conversion in initialization is invalid in C++"
  msgstr ""
  
! #: c/c-typeck.cc:11963
  #, gcc-internal-format
  msgid "excess elements in %qT initializer"
  msgstr ""
  
! #: c/c-typeck.cc:11975 c/c-typeck.cc:12052
  #, gcc-internal-format
  msgid "excess elements in struct initializer"
  msgstr ""
  
! #: c/c-typeck.cc:11996
  #, gcc-internal-format
  msgid ""
  "positional initialization of field in %<struct%> declared with "
  "%<designated_init%> attribute"
  msgstr ""
  
! #: c/c-typeck.cc:12067 c/c-typeck.cc:12193 cp/typeck2.cc:1245
  #, gcc-internal-format
  msgid "non-static initialization of a flexible array member"
  msgstr ""
  
! #: c/c-typeck.cc:12163
  #, gcc-internal-format
  msgid "excess elements in union initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12185
  #, gcc-internal-format
  msgid "traditional C rejects initialization of unions"
  msgstr ""
  
! #: c/c-typeck.cc:12284
  #, gcc-internal-format
  msgid "excess elements in array initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12361 c/c-typeck.cc:12363
  #, gcc-internal-format
  msgid "excess elements in vector initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12397
  #, gcc-internal-format
  msgid "excess elements in scalar initializer"
  msgstr ""
  
! #: c/c-typeck.cc:12564 c/c-typeck.cc:12640 cp/semantics.cc:2346
  #: cp/semantics.cc:2455
  #, gcc-internal-format
  msgid "constraint allows registers outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12576 cp/semantics.cc:2358
  #, gcc-internal-format
  msgid "side-effects in output operand outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12587 cp/semantics.cc:2374
  #, gcc-internal-format
  msgid "output operand outside of a function is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:12595 c/c-typeck.cc:12685 cp/semantics.cc:2385
  #: cp/semantics.cc:2518
  #, gcc-internal-format
  msgid "%<-%> modifier used inside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12653 cp/semantics.cc:2468
  #, gcc-internal-format
  msgid ""
  "%<:%> constraint operand is not address of a function or non-automatic "
  "variable"
  msgstr ""
  
! #: c/c-typeck.cc:12666 cp/semantics.cc:2481
  #, gcc-internal-format
  msgid "side-effects in input operand outside of a function"
  msgstr ""
  
! #: c/c-typeck.cc:12677 cp/semantics.cc:2496 cp/semantics.cc:2510
  #, gcc-internal-format
  msgid "input operand outside of a function is not constant"
  msgstr ""
  
! #: c/c-typeck.cc:12729
  #, gcc-internal-format
  msgid "ISO C forbids %<goto *expr;%>"
  msgstr ""
  
! #: c/c-typeck.cc:12735
  #, gcc-internal-format
  msgid "computed goto must be pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:12765 c/gimple-parser.cc:2648 cp/typeck.cc:11275
  #, gcc-internal-format
  msgid "function declared %<noreturn%> has a %<return%> statement"
  msgstr ""
  
! #: c/c-typeck.cc:12794
  #, gcc-internal-format
  msgid "%<return%> with no value, in function returning non-void"
  msgstr ""
  
! #: c/c-typeck.cc:12807 c/gimple-parser.cc:2658
  #, gcc-internal-format
  msgid "%<return%> with a value, in function returning void"
  msgstr ""
  
! #: c/c-typeck.cc:12810
  #, gcc-internal-format
  msgid "ISO C forbids %<return%> with expression, in function returning void"
  msgstr ""
  
! #: c/c-typeck.cc:12892
  #, gcc-internal-format
  msgid "function returns address of label"
  msgstr ""
  
! #: c/c-typeck.cc:12983 cp/semantics.cc:1921
  #, gcc-internal-format
  msgid "switch quantity not an integer"
  msgstr ""
  
! #: c/c-typeck.cc:13008
  #, gcc-internal-format
  msgid "%<long%> switch expression not converted to %<int%> in ISO C"
  msgstr ""
  
! #: c/c-typeck.cc:13046 c/c-typeck.cc:13054
  #, gcc-internal-format
  msgid "case label is not an integer constant expression"
  msgstr ""
  
! #: c/c-typeck.cc:13060 cp/parser.cc:13523
  #, gcc-internal-format
  msgid "case label not within a switch statement"
  msgstr ""
  
! #: c/c-typeck.cc:13062
  #, gcc-internal-format
  msgid "%<default%> label not within a switch statement"
  msgstr ""
  
! #: c/c-typeck.cc:13138 cp/parser.cc:15293
  #, gcc-internal-format
  msgid "break statement not within loop or switch"
  msgstr ""
  
! #: c/c-typeck.cc:13141 c/c-typeck.cc:13161 cp/decl.cc:4105 cp/parser.cc:15303
! #: cp/parser.cc:15324
  #, gcc-internal-format
  msgid "invalid exit from OpenMP structured block"
  msgstr ""
  
! #: c/c-typeck.cc:13144 cp/parser.cc:15306
  #, gcc-internal-format
  msgid "break statement used with OpenMP for loop"
  msgstr ""
  
! #: c/c-typeck.cc:13158 cp/parser.cc:15316
  #, gcc-internal-format
  msgid "continue statement not within a loop"
  msgstr ""
  
! #: c/c-typeck.cc:13208 cp/cp-gimplify.cc:277
  #, gcc-internal-format
  msgid "statement with no effect"
  msgstr ""
  
! #: c/c-typeck.cc:13252
  #, gcc-internal-format
  msgid "expression statement has incomplete type"
  msgstr ""
  
! #: c/c-typeck.cc:13543
  #, gcc-internal-format
  msgid ""
  "the comparison will always evaluate as %<false%> for the pointer operand in "
  "%qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13548
  #, gcc-internal-format
  msgid ""
  "the comparison will always evaluate as %<true%> for the pointer operand in "
  "%qE must not be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13566 c/c-typeck.cc:13604
  #, gcc-internal-format
  msgid ""
  "the comparison will always evaluate as %<false%> for the address of %qE will "
  "never be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:13571 c/c-typeck.cc:13609
  #, gcc-internal-format
  msgid ""
  "the comparison will always evaluate as %<true%> for the address of %qE will "
  "never be NULL"
  msgstr ""
  
! #: c/c-typeck.cc:14201 c/c-typeck.cc:14365 cp/typeck.cc:6279
  #, gcc-internal-format
  msgid "comparing vectors with different element types"
  msgstr ""
  
! #: c/c-typeck.cc:14209 c/c-typeck.cc:14373 cp/typeck.cc:6293
  #, gcc-internal-format
  msgid "comparing vectors with different number of elements"
  msgstr ""
  
! #: c/c-typeck.cc:14224 c/c-typeck.cc:14388 cp/typeck.cc:6311
  #, gcc-internal-format
  msgid "comparison between types %qT and %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14234 c/c-typeck.cc:14398 cp/typeck.cc:6328
  #, gcc-internal-format
  msgid "could not find an integer type of the same size as %qT"
  msgstr ""
  
! #: c/c-typeck.cc:14248 cp/typeck.cc:5954
  #, gcc-internal-format
  msgid "comparing floating-point with %<==%> or %<!=%> is unsafe"
  msgstr ""
  
! #: c/c-typeck.cc:14287 c/c-typeck.cc:14439
  #, gcc-internal-format
  msgid "comparison of pointers to disjoint address spaces"
  msgstr ""
  
! #: c/c-typeck.cc:14294 c/c-typeck.cc:14300
  #, gcc-internal-format
  msgid "ISO C forbids comparison of %<void *%> with function pointer"
  msgstr ""
  
! #: c/c-typeck.cc:14307 c/c-typeck.cc:14449
  #, gcc-internal-format
  msgid "comparison of distinct pointer types lacks a cast"
  msgstr ""
  
! #: c/c-typeck.cc:14320 c/c-typeck.cc:14326 c/c-typeck.cc:14476
! #: c/c-typeck.cc:14482
  #, gcc-internal-format
  msgid "comparison between pointer and integer"
  msgstr ""
  
! #: c/c-typeck.cc:14427
  #, gcc-internal-format
  msgid "comparison of complete and incomplete pointers"
  msgstr ""
  
! #: c/c-typeck.cc:14429
  #, gcc-internal-format
  msgid "ISO C forbids ordered comparisons of pointers to functions"
  msgstr ""
  
! #: c/c-typeck.cc:14434
  #, gcc-internal-format
  msgid "ordered comparison of pointer with null pointer"
  msgstr ""
  
! #: c/c-typeck.cc:14457 c/c-typeck.cc:14460 c/c-typeck.cc:14467
! #: c/c-typeck.cc:14470
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero"
  msgstr ""
  
! #: c/c-typeck.cc:14547
  #, gcc-internal-format
  msgid ""
  "implicit conversion from %qT to %qT to match other operand of binary "
  "expression"
  msgstr ""
  
! #: c/c-typeck.cc:14865
  #, gcc-internal-format
  msgid "used array that cannot be converted to pointer where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14869
  #, gcc-internal-format
  msgid "used struct type value where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14873
  #, gcc-internal-format
  msgid "used union type value where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:14889
  #, gcc-internal-format
  msgid "used vector type where scalar is required"
  msgstr ""
  
! #: c/c-typeck.cc:15092 cp/semantics.cc:12069
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp cancel%> must specify one of %<parallel%>, %<for%>, "
  "%<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15103 c/c-typeck.cc:15113 cp/semantics.cc:12080
  #: cp/semantics.cc:12090
  #, gcc-internal-format
  msgid "expected %<cancel%> %<if%> clause modifier"
  msgstr ""
  
! #: c/c-typeck.cc:15148 cp/semantics.cc:12125
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp cancellation point%> must specify one of %<parallel%>, "
  "%<for%>, %<sections%> or %<taskgroup%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:15216 cp/semantics.cc:5948 cp/semantics.cc:9059
  #, gcc-internal-format
  msgid "%qD is not a variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15220 c/c-typeck.cc:17037 cp/semantics.cc:5952
  #: cp/semantics.cc:9063
  #, gcc-internal-format
  msgid "%qE is not a variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15228
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15238 c/c-typeck.cc:17044 c/c-typeck.cc:17198
  #: cp/semantics.cc:5961 cp/semantics.cc:9070 cp/semantics.cc:9259
  #, gcc-internal-format
  msgid "%qD is threadprivate variable in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15275 cp/semantics.cc:5995
  #, gcc-internal-format
  msgid "low bound %qE of array section does not have integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15282 cp/semantics.cc:6002
  #, gcc-internal-format
  msgid "length %qE of array section does not have integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15305 cp/semantics.cc:6035
  #, gcc-internal-format
  msgid "expected single pointer in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15323 c/c-typeck.cc:15390 c/c-typeck.cc:15683
  #: cp/semantics.cc:6053 cp/semantics.cc:6120
  #, gcc-internal-format
  msgid "zero length array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15342 cp/semantics.cc:6072
  #, gcc-internal-format
  msgid "for unknown bound array type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15350 cp/semantics.cc:6080
  #, gcc-internal-format
  msgid "negative low bound in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15359 c/c-typeck.cc:15483 cp/semantics.cc:6089
  #: cp/semantics.cc:6213
  #, gcc-internal-format
  msgid "negative length in array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15376 cp/semantics.cc:6106
  #, gcc-internal-format
  msgid "low bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15419 cp/semantics.cc:6149
  #, gcc-internal-format
  msgid "length %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15434 cp/semantics.cc:6164
  #, gcc-internal-format
  msgid "high bound %qE above array section size in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15471 cp/semantics.cc:6201
  #, gcc-internal-format
  msgid "for array function parameter length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15475 cp/semantics.cc:6205
  #, gcc-internal-format
  msgid "for pointer type length expression must be specified"
  msgstr ""
  
! #: c/c-typeck.cc:15503 c/c-typeck.cc:15622 cp/semantics.cc:6232
  #: cp/semantics.cc:6368
  #, gcc-internal-format
  msgid "array section is not contiguous in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:15513 cp/semantics.cc:6242
  #, gcc-internal-format
  msgid "%qE does not have pointer or array type"
  msgstr ""
  
! #: c/c-typeck.cc:15889 cp/semantics.cc:7305
  #, gcc-internal-format
  msgid "iterator %qD has neither integral nor pointer type"
  msgstr ""
  
! #: c/c-typeck.cc:15896
  #, gcc-internal-format
  msgid "iterator %qD has %<_Atomic%> qualified type"
  msgstr ""
  
! #: c/c-typeck.cc:15902 cp/semantics.cc:7312
  #, gcc-internal-format
  msgid "iterator %qD has const qualified type"
  msgstr ""
  
! #: c/c-typeck.cc:15915 cp/semantics.cc:7328
  #, gcc-internal-format
  msgid "iterator step with non-integral type"
  msgstr ""
  
! #: c/c-typeck.cc:15935 cp/semantics.cc:7364
  #, gcc-internal-format
  msgid "iterator %qD has zero step"
  msgstr ""
  
! #: c/c-typeck.cc:15962
  #, gcc-internal-format
  msgid "type of iterator %qD refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15969 cp/semantics.cc:7398
  #, gcc-internal-format
  msgid "begin expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15975 cp/semantics.cc:7404
  #, gcc-internal-format
  msgid "end expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:15981 cp/semantics.cc:7410
  #, gcc-internal-format
  msgid "step expression refers to outer iterator %qD"
  msgstr ""
  
! #: c/c-typeck.cc:16018 cp/semantics.cc:7458
  #, gcc-internal-format
  msgid "expected pointer in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16121 cp/semantics.cc:7624
  #, gcc-internal-format
  msgid ""
  "%<inscan%> and non-%<inscan%> %<reduction%> clauses on the same construct"
  msgstr ""
  
! #: c/c-typeck.cc:16143 cp/semantics.cc:7644
  #, gcc-internal-format
  msgid "%<inscan%> %<reduction%> clause with array section"
  msgstr ""
  
! #: c/c-typeck.cc:16169 c/c-typeck.cc:16179
  #, gcc-internal-format
  msgid "%qD in %<reduction%> clause is a zero size array"
  msgstr ""
  
! #: c/c-typeck.cc:16199
  #, gcc-internal-format
  msgid "%<_Atomic%> %qE in %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16211
  #, gcc-internal-format
  msgid "zero sized type %qT in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16219
  #, gcc-internal-format
  msgid "variable sized type %qT in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16263
  #, gcc-internal-format
  msgid "%qE has invalid type for %<reduction(%s)%>"
  msgstr ""
  
! #: c/c-typeck.cc:16272 cp/semantics.cc:7197
  #, gcc-internal-format
  msgid "user defined reduction not found for %qE"
  msgstr ""
  
! #: c/c-typeck.cc:16360
  #, gcc-internal-format
  msgid "variable length element type in array %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16378 c/c-typeck.cc:17292 cp/semantics.cc:9943
  #, gcc-internal-format
  msgid "%<nowait%> clause must not be used together with %<copyprivate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16390 cp/semantics.cc:10011
  #, gcc-internal-format
  msgid "%qE must be %<threadprivate%> for %<copyin%>"
  msgstr ""
  
! #: c/c-typeck.cc:16405 cp/semantics.cc:7687
  #, gcc-internal-format
  msgid ""
  "modifier should not be specified in %<linear%> clause on %<simd%> or %<for%> "
  "constructs when not using OpenMP 5.2 modifiers"
  msgstr ""
  
! #: c/c-typeck.cc:16414
  #, gcc-internal-format
  msgid ""
  "linear clause applied to non-integral non-pointer variable with type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:16422
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<linear%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16441 cp/semantics.cc:7771
  #, gcc-internal-format
  msgid "%<linear%> clause step %qE is neither constant nor a parameter"
  msgstr ""
  
! #: c/c-typeck.cc:16471 c/c-typeck.cc:17192 c/c-typeck.cc:17463
  #: cp/semantics.cc:7858 cp/semantics.cc:9253 cp/semantics.cc:9644
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %qs"
  msgstr ""
  
! #: c/c-typeck.cc:16488 cp/semantics.cc:7876
  #, gcc-internal-format
  msgid "%qD appears more than once in data-sharing clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16499 cp/semantics.cc:7887
  #, gcc-internal-format
  msgid "%qD appears more than once in reduction clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16513 c/c-typeck.cc:16583 c/c-typeck.cc:16618
  #, gcc-internal-format
  msgid "%qE appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16523 c/c-typeck.cc:16591 c/c-typeck.cc:16940
! #: c/c-typeck.cc:17092 c/c-typeck.cc:17100 c/c-typeck.cc:17116
! #: c/c-typeck.cc:17125 c/c-typeck.cc:17133 cp/semantics.cc:7901
  #: cp/semantics.cc:7911 cp/semantics.cc:8004 cp/semantics.cc:8012
  #: cp/semantics.cc:8059 cp/semantics.cc:8941 cp/semantics.cc:9131
  #: cp/semantics.cc:9139 cp/semantics.cc:9159 cp/semantics.cc:9168
*************** msgstr ""
*** 55054,55324 ****
  msgid "%qD appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16509 c/c-typeck.cc:16580 c/c-typeck.cc:17119
  #: cp/semantics.cc:7914 cp/semantics.cc:8018 cp/semantics.cc:9179
  #, gcc-internal-format
  msgid "%qD appears both in data and map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16554 cp/semantics.cc:7991
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %<firstprivate%>"
  msgstr ""
  
! #: c/c-typeck.cc:16594 cp/semantics.cc:8051
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %<lastprivate%>"
  msgstr ""
  
! #: c/c-typeck.cc:16613 cp/semantics.cc:8473
  #, gcc-internal-format
  msgid "%qE is not a variable in %<aligned%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16620
  #, gcc-internal-format
  msgid "%qE in %<aligned%> clause is neither a pointer nor an array"
  msgstr ""
  
! #: c/c-typeck.cc:16627
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<aligned%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16634
  #, gcc-internal-format
  msgid "%qE appears more than once in %<aligned%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16647 cp/semantics.cc:8542
  #, gcc-internal-format
  msgid "%qE is not a variable in %<nontemporal%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16653
  #, gcc-internal-format
  msgid "%qE appears more than once in %<nontemporal%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16666 cp/semantics.cc:8581
  #, gcc-internal-format
  msgid "%qE is not a variable in %<allocate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16672
  #, gcc-internal-format
  msgid "%qE appears more than once in %<allocate%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16744 cp/semantics.cc:8709
  #, gcc-internal-format
  msgid "%<depend%> clause with %<depobj%> dependence type on array section"
  msgstr ""
  
! #: c/c-typeck.cc:16759 cp/semantics.cc:8724
  #, gcc-internal-format
  msgid ""
  "%<omp_all_memory%> used with %<depend%> kind other than %<out%> or %<inout%>"
  msgstr ""
  
! #: c/c-typeck.cc:16767 cp/semantics.cc:8742
  #, gcc-internal-format
  msgid "%qE is not lvalue expression nor array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16788 cp/semantics.cc:8764
  #, gcc-internal-format
  msgid ""
  "%qE does not have %<omp_depend_t%> type in %<depend%> clause with %<depobj%> "
  "dependence type"
  msgstr ""
  
! #: c/c-typeck.cc:16798 cp/semantics.cc:8776
  #, gcc-internal-format
  msgid ""
  "%qE should not have %<omp_depend_t%> type in %<depend%> clause with "
  "dependence type other than %<depobj%>"
  msgstr ""
  
! #: c/c-typeck.cc:16859 cp/semantics.cc:8876
  #, gcc-internal-format
  msgid "array section does not have mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16879 c/c-typeck.cc:16955 c/c-typeck.cc:16991
  #: cp/semantics.cc:8896 cp/semantics.cc:8975 cp/semantics.cc:9011
  #, gcc-internal-format
  msgid "unsupported map expression %qE"
  msgstr ""
  
! #: c/c-typeck.cc:16919 c/c-typeck.cc:17096 cp/semantics.cc:8937
  #: cp/semantics.cc:9156
  #, gcc-internal-format
  msgid "%qD appears more than once in motion clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16927 c/c-typeck.cc:17102 cp/semantics.cc:8945
  #: cp/semantics.cc:9162
  #, gcc-internal-format
  msgid "%qD appears more than once in map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17046 c/c-typeck.cc:17188 cp/semantics.cc:9099
  #: cp/semantics.cc:9267
  #, gcc-internal-format
  msgid "%qD does not have a mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:17171 cp/semantics.cc:9248
  #, gcc-internal-format
  msgid "%qE is neither a variable nor a function name in clause %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17197 cp/semantics.cc:9279
  #, gcc-internal-format
  msgid "%qE appears more than once on the same %<declare target%> directive"
  msgstr ""
  
! #: c/c-typeck.cc:17211 cp/semantics.cc:9295
  #, gcc-internal-format
  msgid "%qD is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17214 cp/semantics.cc:9298
  #, gcc-internal-format
  msgid "%qE is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17233
  #, gcc-internal-format
  msgid "%qs variable is not a pointer"
  msgstr ""
  
! #: c/c-typeck.cc:17240
  #, gcc-internal-format
  msgid "%qs variable is neither a pointer nor an array"
  msgstr ""
  
! #: c/c-typeck.cc:17288 c/c-typeck.cc:17393 cp/semantics.cc:9894
  #, gcc-internal-format
  msgid "%<order%> clause must not be used together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17308 cp/semantics.cc:8816
  #, gcc-internal-format
  msgid "too many %qs clauses on a task construct"
  msgstr ""
  
! #: c/c-typeck.cc:17429 cp/semantics.cc:9612
  #, gcc-internal-format
  msgid "%<inbranch%> clause is incompatible with %<notinbranch%>"
  msgstr ""
  
! #: c/c-typeck.cc:17464 cp/semantics.cc:9706
  #, gcc-internal-format
  msgid "%qD appears more than once in action clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17475 cp/semantics.cc:9720
  #, gcc-internal-format
  msgid "%qD must be of %<omp_interop_t%>"
  msgstr ""
  
! #: c/c-typeck.cc:17484 cp/semantics.cc:9729
  #, gcc-internal-format
  msgid "%qD shall not be const"
  msgstr ""
  
! #: c/c-typeck.cc:17533 cp/semantics.cc:10082
  #, gcc-internal-format
  msgid "%qE is predetermined %qs for %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17543
  #, gcc-internal-format
  msgid ""
  "%<const%> qualified %qE may appear only in %<shared%> or %<firstprivate%> "
  "clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17574 cp/semantics.cc:9835
  #, gcc-internal-format
  msgid "%<simdlen%> clause value is bigger than %<safelen%> clause value"
  msgstr ""
  
! #: c/c-typeck.cc:17586 cp/semantics.cc:9848
  #, gcc-internal-format
  msgid ""
  "%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17597 c/c-typeck.cc:17605 cp/semantics.cc:9857
  #: cp/semantics.cc:9886
  #, gcc-internal-format
  msgid "%qs clause specified together with %<inscan%> %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17653 cp/semantics.cc:9815
  #, gcc-internal-format
  msgid ""
  "%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17704 cp/semantics.cc:9865
  #, gcc-internal-format
  msgid "%<nogroup%> clause must not be used together with %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17712 cp/semantics.cc:9876
  #, gcc-internal-format
  msgid ""
  "%<grainsize%> clause must not be used together with %<num_tasks%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17720 cp/semantics.cc:9932
  #, gcc-internal-format
  msgid "%<full%> clause must not be used together with %<partial%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17730 cp/semantics.cc:9905
  #, gcc-internal-format
  msgid "%<detach%> clause must not be used together with %<mergeable%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17748 cp/semantics.cc:10107
  #, gcc-internal-format
  msgid ""
  "the event handle of a %<detach%> clause should not be in a data-sharing "
  "clause"
  msgstr ""
  
! #: c/c-typeck.cc:17766 cp/semantics.cc:10178
  #, gcc-internal-format
  msgid ""
  "%<depend%> clause requires action clauses with %<targetsync%> interop-type"
  msgstr ""
  
! #: c/c-typeck.cc:17770 cp/semantics.cc:10182
  #, gcc-internal-format
  msgid "%<init%> clause lacks the %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-typeck.cc:17942
  #, gcc-internal-format
  msgid "cannot use %<va_arg%> with reverse storage order"
  msgstr ""
  
! #: c/c-typeck.cc:17947
  #, gcc-internal-format
  msgid "second argument to %<va_arg%> is of incomplete type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:17953
  #, gcc-internal-format
  msgid "second argument to %<va_arg%> is a function type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:17959
  #, gcc-internal-format
  msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
  msgstr ""
--- 55061,55331 ----
  msgid "%qD appears more than once in data clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16526 c/c-typeck.cc:16597 c/c-typeck.cc:17136
  #: cp/semantics.cc:7914 cp/semantics.cc:8018 cp/semantics.cc:9179
  #, gcc-internal-format
  msgid "%qD appears both in data and map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16571 cp/semantics.cc:7991
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %<firstprivate%>"
  msgstr ""
  
! #: c/c-typeck.cc:16611 cp/semantics.cc:8051
  #, gcc-internal-format
  msgid "%qE is not a variable in clause %<lastprivate%>"
  msgstr ""
  
! #: c/c-typeck.cc:16630 cp/semantics.cc:8473
  #, gcc-internal-format
  msgid "%qE is not a variable in %<aligned%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16637
  #, gcc-internal-format
  msgid "%qE in %<aligned%> clause is neither a pointer nor an array"
  msgstr ""
  
! #: c/c-typeck.cc:16644
  #, gcc-internal-format
  msgid "%<_Atomic%> %qD in %<aligned%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16651
  #, gcc-internal-format
  msgid "%qE appears more than once in %<aligned%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16664 cp/semantics.cc:8542
  #, gcc-internal-format
  msgid "%qE is not a variable in %<nontemporal%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16670
  #, gcc-internal-format
  msgid "%qE appears more than once in %<nontemporal%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16683 cp/semantics.cc:8581
  #, gcc-internal-format
  msgid "%qE is not a variable in %<allocate%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:16689
  #, gcc-internal-format
  msgid "%qE appears more than once in %<allocate%> clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16761 cp/semantics.cc:8709
  #, gcc-internal-format
  msgid "%<depend%> clause with %<depobj%> dependence type on array section"
  msgstr ""
  
! #: c/c-typeck.cc:16776 cp/semantics.cc:8724
  #, gcc-internal-format
  msgid ""
  "%<omp_all_memory%> used with %<depend%> kind other than %<out%> or %<inout%>"
  msgstr ""
  
! #: c/c-typeck.cc:16784 cp/semantics.cc:8742
  #, gcc-internal-format
  msgid "%qE is not lvalue expression nor array section in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16805 cp/semantics.cc:8764
  #, gcc-internal-format
  msgid ""
  "%qE does not have %<omp_depend_t%> type in %<depend%> clause with %<depobj%> "
  "dependence type"
  msgstr ""
  
! #: c/c-typeck.cc:16815 cp/semantics.cc:8776
  #, gcc-internal-format
  msgid ""
  "%qE should not have %<omp_depend_t%> type in %<depend%> clause with "
  "dependence type other than %<depobj%>"
  msgstr ""
  
! #: c/c-typeck.cc:16876 cp/semantics.cc:8876
  #, gcc-internal-format
  msgid "array section does not have mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:16896 c/c-typeck.cc:16972 c/c-typeck.cc:17008
  #: cp/semantics.cc:8896 cp/semantics.cc:8975 cp/semantics.cc:9011
  #, gcc-internal-format
  msgid "unsupported map expression %qE"
  msgstr ""
  
! #: c/c-typeck.cc:16936 c/c-typeck.cc:17113 cp/semantics.cc:8937
  #: cp/semantics.cc:9156
  #, gcc-internal-format
  msgid "%qD appears more than once in motion clauses"
  msgstr ""
  
! #: c/c-typeck.cc:16944 c/c-typeck.cc:17119 cp/semantics.cc:8945
  #: cp/semantics.cc:9162
  #, gcc-internal-format
  msgid "%qD appears more than once in map clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17063 c/c-typeck.cc:17205 cp/semantics.cc:9099
  #: cp/semantics.cc:9267
  #, gcc-internal-format
  msgid "%qD does not have a mappable type in %qs clause"
  msgstr ""
  
! #: c/c-typeck.cc:17188 cp/semantics.cc:9248
  #, gcc-internal-format
  msgid "%qE is neither a variable nor a function name in clause %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17214 cp/semantics.cc:9279
  #, gcc-internal-format
  msgid "%qE appears more than once on the same %<declare target%> directive"
  msgstr ""
  
! #: c/c-typeck.cc:17228 cp/semantics.cc:9295
  #, gcc-internal-format
  msgid "%qD is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17231 cp/semantics.cc:9298
  #, gcc-internal-format
  msgid "%qE is not an argument in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17250
  #, gcc-internal-format
  msgid "%qs variable is not a pointer"
  msgstr ""
  
! #: c/c-typeck.cc:17257
  #, gcc-internal-format
  msgid "%qs variable is neither a pointer nor an array"
  msgstr ""
  
! #: c/c-typeck.cc:17305 c/c-typeck.cc:17410 cp/semantics.cc:9894
  #, gcc-internal-format
  msgid "%<order%> clause must not be used together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17325 cp/semantics.cc:8816
  #, gcc-internal-format
  msgid "too many %qs clauses on a task construct"
  msgstr ""
  
! #: c/c-typeck.cc:17446 cp/semantics.cc:9612
  #, gcc-internal-format
  msgid "%<inbranch%> clause is incompatible with %<notinbranch%>"
  msgstr ""
  
! #: c/c-typeck.cc:17481 cp/semantics.cc:9706
  #, gcc-internal-format
  msgid "%qD appears more than once in action clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17492 cp/semantics.cc:9720
  #, gcc-internal-format
  msgid "%qD must be of %<omp_interop_t%>"
  msgstr ""
  
! #: c/c-typeck.cc:17501 cp/semantics.cc:9729
  #, gcc-internal-format
  msgid "%qD shall not be const"
  msgstr ""
  
! #: c/c-typeck.cc:17550 cp/semantics.cc:10082
  #, gcc-internal-format
  msgid "%qE is predetermined %qs for %qs"
  msgstr ""
  
! #: c/c-typeck.cc:17560
  #, gcc-internal-format
  msgid ""
  "%<const%> qualified %qE may appear only in %<shared%> or %<firstprivate%> "
  "clauses"
  msgstr ""
  
! #: c/c-typeck.cc:17591 cp/semantics.cc:9835
  #, gcc-internal-format
  msgid "%<simdlen%> clause value is bigger than %<safelen%> clause value"
  msgstr ""
  
! #: c/c-typeck.cc:17603 cp/semantics.cc:9848
  #, gcc-internal-format
  msgid ""
  "%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17614 c/c-typeck.cc:17622 cp/semantics.cc:9857
  #: cp/semantics.cc:9886
  #, gcc-internal-format
  msgid "%qs clause specified together with %<inscan%> %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17670 cp/semantics.cc:9815
  #, gcc-internal-format
  msgid ""
  "%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17721 cp/semantics.cc:9865
  #, gcc-internal-format
  msgid "%<nogroup%> clause must not be used together with %<reduction%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17729 cp/semantics.cc:9876
  #, gcc-internal-format
  msgid ""
  "%<grainsize%> clause must not be used together with %<num_tasks%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17737 cp/semantics.cc:9932
  #, gcc-internal-format
  msgid "%<full%> clause must not be used together with %<partial%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17747 cp/semantics.cc:9905
  #, gcc-internal-format
  msgid "%<detach%> clause must not be used together with %<mergeable%> clause"
  msgstr ""
  
! #: c/c-typeck.cc:17765 cp/semantics.cc:10107
  #, gcc-internal-format
  msgid ""
  "the event handle of a %<detach%> clause should not be in a data-sharing "
  "clause"
  msgstr ""
  
! #: c/c-typeck.cc:17783 cp/semantics.cc:10178
  #, gcc-internal-format
  msgid ""
  "%<depend%> clause requires action clauses with %<targetsync%> interop-type"
  msgstr ""
  
! #: c/c-typeck.cc:17787 cp/semantics.cc:10182
  #, gcc-internal-format
  msgid "%<init%> clause lacks the %<targetsync%> modifier"
  msgstr ""
  
! #: c/c-typeck.cc:17959
  #, gcc-internal-format
  msgid "cannot use %<va_arg%> with reverse storage order"
  msgstr ""
  
! #: c/c-typeck.cc:17964
  #, gcc-internal-format
  msgid "second argument to %<va_arg%> is of incomplete type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:17970
  #, gcc-internal-format
  msgid "second argument to %<va_arg%> is a function type %qT"
  msgstr ""
  
! #: c/c-typeck.cc:17976
  #, gcc-internal-format
  msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
  msgstr ""
*************** msgstr ""
*** 55534,55885 ****
  msgid "expected case label"
  msgstr ""
  
! #: cobol/cdf-copy.cc:109
  msgid "REPLACING %zu characters exceeds system capacity'%s'"
  msgstr ""
  
! #: cobol/cobol1.cc:275
  #, gcc-internal-format
  msgid "COBOL requires a 64-bit configuration"
  msgstr ""
  
! #: cobol/cobol1.cc:326
  #, gcc-internal-format, gfc-internal-format
  msgid "exception '%s'"
  msgstr ""
  
! #: cobol/cobol1.cc:408
  #, gcc-internal-format, gfc-internal-format
  msgid "could not execute preprocessor %s"
  msgstr ""
  
! #: cobol/cobol1.cc:413
  #, gcc-internal-format, gfc-internal-format
  msgid "could not include %s"
  msgstr ""
  
  #. This isn't right.  All OPT_main should be replaced
! #: cobol/cobol1.cc:419
  #, gcc-internal-format
  msgid "We should never see a non-equal dash-main in cobol1.c"
  msgstr ""
  
! #: cobol/except.cc:53
! msgid "no such exception: 0x%04x"
  msgstr ""
  
! #: cobol/genapi.cc:332
  #, gcc-internal-format
  msgid "Probable cause: it was referenced without being defined."
  msgstr ""
  
! #: cobol/genapi.cc:571
  #, gcc-internal-format
! msgid "Nice try, but you can't fire me. I quit!"
  msgstr ""
  
! #: cobol/genapi.cc:1486
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): Knows not the variable type %s for %s"
  msgstr ""
  
! #: cobol/genapi.cc:2176
  #, gcc-internal-format, gfc-internal-format
! msgid "I don't know how to MOVE an alphabetical string to %s(%s) \n"
  msgstr ""
  
! #: cobol/genapi.cc:2244
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): field->type %s must be literal or alphanumeric"
  msgstr ""
  
! #: cobol/genapi.cc:5728
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): Invalid field type %s:"
  msgstr ""
  
! #: cobol/genapi.cc:6929 cobol/genapi.cc:6935 cobol/genapi.cc:6941
  #, gcc-internal-format, gfc-internal-format
  msgid ""
! "parser_logop() was called with variable %s on line %d, which is not a "
! "FldConditional\n"
  msgstr ""
  
! #: cobol/genapi.cc:7048 cobol/genapi.cc:7112
! #, gcc-internal-format, gfc-internal-format
  msgid ""
! "parser_relop() was called with variable %s, which is not a FldConditional\n"
  msgstr ""
  
! #: cobol/genapi.cc:7158
! #, gcc-internal-format, gfc-internal-format
  msgid ""
! "parser_if() was called with variable %s, which is not a FldConditional\n"
  msgstr ""
  
! #: cobol/genapi.cc:7411
! #, gcc-internal-format, gfc-internal-format
! msgid "###### candidate %s has unimplemented CVT_type %d(%s)\n"
  msgstr ""
  
! #: cobol/genapi.cc:7422
! #, gcc-internal-format, gfc-internal-format
! msgid "###### unknown setop_t code %d\n"
  msgstr ""
  
! #: cobol/genapi.cc:7618
! msgid "%s:%d: %zu exceeds MAXIMUM_UNTILS of %d, line %d"
  msgstr ""
  
! #: cobol/genapi.cc:8624
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: ignoring subscripts"
  msgstr ""
  
! #: cobol/genapi.cc:8846 cobol/genapi.cc:9306
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:8971
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s access mode is 'file_inaccessible_e' in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9044
  #, gcc-internal-format
! msgid "parser_file_open called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9049
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_open for %s called with NULL var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9054
  #, gcc-internal-format, gfc-internal-format
  msgid "EXTEND can only be used where %s is ACCESS MODE SEQUENTIAL"
  msgstr ""
  
! #: cobol/genapi.cc:9122
  #, gcc-internal-format
! msgid "parser_file_close called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9127
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_close for %s called with NULL file->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9180
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'where' is zero in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9190
  #, gcc-internal-format
! msgid "parser_file_read called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9195
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_read for %s called with NULL file->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9200
  #, gcc-internal-format
! msgid "parser_file_read called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:9205
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_file_read for %s called with NULL field->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9210
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s is RELATIVE/SEQUENTIAL, but 'where' >= 0"
  msgstr ""
  
! #: cobol/genapi.cc:9219
! #, gcc-internal-format, gfc-internal-format
! msgid "%s:%d file %s is RELATIVE/RANDOM, but 'where' < 0"
  msgstr ""
  
! #: cobol/genapi.cc:9262
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'sequentially' is %d in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9311
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): for %s called with NULL file->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9317
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:9322
! #, gcc-internal-format, gfc-internal-format
! msgid "%s(): for %s called with NULL field->var_decl_node"
  msgstr ""
  
! #: cobol/genapi.cc:9457
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is false"
  msgstr ""
  
! #: cobol/genapi.cc:11122
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): asked to sort %s, but it's not a table"
  msgstr ""
  
  #. Having both or neither violates SORT syntax
! #: cobol/genapi.cc:11250
  #, gcc-internal-format, gfc-internal-format
! msgid ""
! "%s(): syntax error -- both (or neither) USING and input-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:11379
  #, gcc-internal-format, gfc-internal-format
  msgid ""
! "%s(): syntax error -- both (or neither) GIVING and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:11786
  #, gcc-internal-format, gfc-internal-format
! msgid ""
! "%s(): syntax error -- both (or neither) files and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12187
  #, gcc-internal-format
  msgid "CALL USING BY CONTENT <temporary> would require REPOSITORY PROTOTYPES."
  msgstr ""
  
! #: cobol/genapi.cc:12439
  #, gcc-internal-format, gfc-internal-format
! msgid "%s(): What in the name of Nero's fiddle are we doing here?"
  msgstr ""
  
! #: cobol/genapi.cc:13948
! #, gcc-internal-format, gfc-internal-format
  msgid ""
! "In parser_move(%s to %s), the move of FldLiteralN to %s hasn't been "
! "implemented"
  msgstr ""
  
! #: cobol/genapi.cc:14184
! #, gcc-internal-format, gfc-internal-format
  msgid ""
! "In mh_dest_is_float(%s to %s), the move of %s to %s hasn't been implemented"
  msgstr ""
  
! #: cobol/genapi.cc:16279
  #, gcc-internal-format, gfc-internal-format
  msgid "LEVEL 01 (%s) OCCURS has insufficient data.memsize"
  msgstr ""
  
! #: cobol/genapi.cc:16351
  #, gcc-internal-format
! msgid "parser_symbol_add() was called with a NULL new_var\n"
  msgstr ""
  
! #: cobol/genapi.cc:16379
! msgid "%s(): %2.2d %s is a table, but it improperly has a capacity of zero"
  msgstr ""
  
! #: cobol/genapi.cc:16419
  #, gcc-internal-format, gfc-internal-format
! msgid "parser_symbol_add(): %s is its own ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:16425
! msgid "parser_symbol_add(): %2.2d %s has null ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:16433
  #, gcc-internal-format, gfc-internal-format
! msgid "parser_symbol_add( %s ) improperly has a non-null var_decl_node\n"
  msgstr ""
  
! #: cobol/genapi.cc:16638
! msgid "%s(): %2.2d %s<%s> improperly has a data.capacity of zero"
  msgstr ""
  
! #: cobol/gengen.cc:363
  #, gcc-internal-format
! msgid "The given type is not NULL, and that's just not fair"
  msgstr ""
  
! #: cobol/gengen.cc:372
  #, gcc-internal-format
! msgid "The given type is not a DECL or a TYPE"
  msgstr ""
  
! #: cobol/gengen.cc:416
  #, gcc-internal-format, gfc-internal-format
  msgid "Unknown type %d"
  msgstr ""
  
! #: cobol/gengen.cc:2941
  #, gcc-internal-format
! msgid "Residual context count!"
  msgstr ""
  
! #: cobol/genmath.cc:1392
! #, gcc-internal-format, gfc-internal-format
! msgid "parser_op() doesn't know how to evaluate \"%s = %s %c %s\"\n"
  msgstr ""
  
! #: cobol/genutil.cc:322 cobol/genutil.cc:601
  #, gcc-internal-format
  msgid "Too many subscripts"
  msgstr ""
  
! #: cobol/lexio.cc:1490
  #, gcc-internal-format, gfc-internal-format
! msgid "%s pid %d terminated by %s"
  msgstr ""
  
! #: cobol/lexio.cc:1495
  #, gcc-internal-format, gfc-internal-format
  msgid "%s exited with status %d"
  msgstr ""
  
! #: cobol/symbols.cc:450
  msgid "%s:%d: LblNone '%s' has parent #%zu"
  msgstr ""
  
! #: cobol/symbols.cc:1907
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: key must be field"
  msgstr ""
  
! #: cobol/symbols.cc:3709 cobol/symbols.cc:3816 cobol/symbols.cc:3846
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: could not add '%s'"
  msgstr ""
  
! #: cobol/util.cc:1108
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: MOVE %s %s invalid type:"
  msgstr ""
  
! #: cobol/util.cc:1705
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: regcomp: %s"
  msgstr ""
  
! #: cobol/util.cc:1815
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: missing inode for %s"
  msgstr ""
  
! #: cobol/util.cc:2141
  #, gcc-internal-format, gfc-internal-format
  msgid "failed compiling %s"
  msgstr ""
--- 55541,55940 ----
  msgid "expected case label"
  msgstr ""
  
! #: cobol/cdf-copy.cc:108
  msgid "REPLACING %zu characters exceeds system capacity'%s'"
  msgstr ""
  
! #: cobol/cobol1.cc:274
  #, gcc-internal-format
  msgid "COBOL requires a 64-bit configuration"
  msgstr ""
  
! #: cobol/cobol1.cc:325
  #, gcc-internal-format, gfc-internal-format
  msgid "exception '%s'"
  msgstr ""
  
! #: cobol/cobol1.cc:414
  #, gcc-internal-format, gfc-internal-format
  msgid "could not execute preprocessor %s"
  msgstr ""
  
! #: cobol/cobol1.cc:420
  #, gcc-internal-format, gfc-internal-format
  msgid "could not include %s"
  msgstr ""
  
  #. This isn't right.  All OPT_main should be replaced
! #: cobol/cobol1.cc:426
  #, gcc-internal-format
  msgid "We should never see a non-equal dash-main in cobol1.c"
  msgstr ""
  
! #: cobol/except.cc:54
! #, gcc-internal-format
! msgid "no such exception: 0x%x"
  msgstr ""
  
! #: cobol/genapi.cc:354
  #, gcc-internal-format
  msgid "Probable cause: it was referenced without being defined."
  msgstr ""
  
! #: cobol/genapi.cc:600
  #, gcc-internal-format
! msgid "Nice try, but you cannot fire me."
  msgstr ""
  
! #: cobol/genapi.cc:1214
  #, gcc-internal-format, gfc-internal-format
! msgid "%s should not be null"
  msgstr ""
  
! #: cobol/genapi.cc:1792
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: Knows not the variable type %s for %s"
  msgstr ""
  
! #: cobol/genapi.cc:2481
! #, gcc-internal-format
! msgid "I don%'t know how to MOVE an alphabetical string to %s(%s)"
  msgstr ""
  
! #: cobol/genapi.cc:2549
! #, gcc-internal-format
! msgid "%s: %<field->type%> %s must be literal or alphanumeric"
  msgstr ""
  
! #: cobol/genapi.cc:4460
! #, gcc-internal-format
! msgid "Not valid for ACCEPT statement."
! msgstr ""
! 
! #: cobol/genapi.cc:5488
! #, gcc-internal-format
! msgid "Attempting to send to an input device."
! msgstr ""
! 
! #: cobol/genapi.cc:5511
! #, gcc-internal-format
! msgid "Not valid for DISPLAY statement."
! msgstr ""
! 
! #: cobol/genapi.cc:6412
  #, gcc-internal-format, gfc-internal-format
+ msgid "%s: Invalid field type %s:"
+ msgstr ""
+ 
+ #: cobol/genapi.cc:7622 cobol/genapi.cc:7628 cobol/genapi.cc:7634
+ #, gcc-internal-format
  msgid ""
! "%<parser_logop()%> was called with variable %s on line %d, which is not a "
! "FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:7741
! #, gcc-internal-format
  msgid ""
! "%<parser_relop%> was called with variable %qs, which is not a FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:7805
! #, gcc-internal-format
  msgid ""
! "%<parser_relop()%> was called with variable %s, which is not a FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:7851
! #, gcc-internal-format
! msgid ""
! "%<parser_if()%> was called with variable %s, which is not a FldConditional"
  msgstr ""
  
! #: cobol/genapi.cc:8116
! #, gcc-internal-format
! msgid "candidate %s has unimplemented %<CVT_type%> %d(%s)"
  msgstr ""
  
! #: cobol/genapi.cc:8127
! #, gcc-internal-format
! msgid "unknown %<setop_t%> code %d"
  msgstr ""
  
! #: cobol/genapi.cc:8315
! #, gcc-internal-format
! msgid "%s:%d: %u exceeds %<MAXIMUM_UNTILS%> of %d, line %d"
! msgstr ""
! 
! #: cobol/genapi.cc:9324
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: ignoring subscripts"
  msgstr ""
  
! #: cobol/genapi.cc:9538 cobol/genapi.cc:10006
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9663
! #, gcc-internal-format
! msgid "%s:%d file %s access mode is %<file_inaccessible_e%> in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9737
  #, gcc-internal-format
! msgid "%<parser_file_open%> called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9742
! #, gcc-internal-format
! msgid "%<parser_file_open%> for %s called with NULL %<var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9748
  #, gcc-internal-format, gfc-internal-format
  msgid "EXTEND can only be used where %s is ACCESS MODE SEQUENTIAL"
  msgstr ""
  
! #: cobol/genapi.cc:9817
  #, gcc-internal-format
! msgid "%<parser_file_close%> called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9822
! #, gcc-internal-format
! msgid "%<parser_file_close%> for %s called with NULL %<file->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9877
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'where' is zero in %s"
  msgstr ""
  
! #: cobol/genapi.cc:9887
  #, gcc-internal-format
! msgid "%<parser_file_read%> called with NULL *file"
  msgstr ""
  
! #: cobol/genapi.cc:9892
! #, gcc-internal-format
! msgid "%<parser_file_read%> for %s called with NULL %<file->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9898
  #, gcc-internal-format
! msgid "%<parser_file_read%> called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:9903
! #, gcc-internal-format
! msgid "%<parser_file_read%> for %s called with NULL %<field->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:9909
! #, gcc-internal-format
! msgid "%s:%d file %s is RELATIVE/SEQUENTIAL, but %<where >= 0%>"
  msgstr ""
  
! #: cobol/genapi.cc:9918
! #, gcc-internal-format
! msgid "%s:%d file %s is RELATIVE/RANDOM, but %<where < 0%>"
  msgstr ""
  
! #: cobol/genapi.cc:9962
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s 'sequentially' is %d in %s"
  msgstr ""
  
! #: cobol/genapi.cc:10011
! #, gcc-internal-format
! msgid "%s: for %s called with NULL %<file->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:10017
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: called with NULL *field"
  msgstr ""
  
! #: cobol/genapi.cc:10022
! #, gcc-internal-format
! msgid "%s: for %s called with NULL %<field->var_decl_node%>"
  msgstr ""
  
! #: cobol/genapi.cc:10107
! #, gcc-internal-format
! msgid "The file pointer should not be null"
! msgstr ""
! 
! #: cobol/genapi.cc:10161
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is false"
  msgstr ""
  
! #: cobol/genapi.cc:11881
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: asked to sort %s, which is not a table"
  msgstr ""
  
  #. Having both or neither violates SORT syntax
! #: cobol/genapi.cc:12013
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: syntax error: both (or neither) USING and input-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12147
  #, gcc-internal-format, gfc-internal-format
  msgid ""
! "%s: syntax error: both (or neither) GIVING and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12569
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: syntax error: both (or neither) files and output-proc are specified"
  msgstr ""
  
! #: cobol/genapi.cc:12973
  #, gcc-internal-format
  msgid "CALL USING BY CONTENT <temporary> would require REPOSITORY PROTOTYPES."
  msgstr ""
  
! #: cobol/genapi.cc:13264
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: What in the name of Nero are we doing here?"
  msgstr ""
  
! #: cobol/genapi.cc:14560
! #, gcc-internal-format
  msgid ""
! "In %<parser_move(%s to %s)%>, the move of FldLiteralN to %s is unimplemented"
  msgstr ""
  
! #: cobol/genapi.cc:14796
! #, gcc-internal-format
  msgid ""
! "In %<mh_dest_is_float%>(%s to %s), the move of %s to %s is unimplemented"
  msgstr ""
  
! #: cobol/genapi.cc:16918
  #, gcc-internal-format, gfc-internal-format
  msgid "LEVEL 01 (%s) OCCURS has insufficient data.memsize"
  msgstr ""
  
! #: cobol/genapi.cc:16990
  #, gcc-internal-format
! msgid "%<parser_symbol_add()%> was called with a NULL %<new_var%>"
  msgstr ""
  
! #: cobol/genapi.cc:17020
! #, gcc-internal-format, gfc-internal-format
! msgid "%s: %d %s is a table, but it improperly has a capacity of zero"
  msgstr ""
  
! #: cobol/genapi.cc:17060
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: %s is its own ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:17065
! #, gcc-internal-format
! msgid "%s: %d %qs has NULL ancestor"
  msgstr ""
  
! #: cobol/genapi.cc:17072
! #, gcc-internal-format
! msgid "%s(%s) improperly has a non-null %<var_decl_node%>"
! msgstr ""
! 
! #: cobol/genapi.cc:17267
  #, gcc-internal-format, gfc-internal-format
! msgid "%s: %d %s<%s> improperly has a data.capacity of zero"
  msgstr ""
  
! #: cobol/genapi.cc:17334
! #, gcc-internal-format
! msgid "%<bytes_to_allocate%> is zero for %s (symbol number "
  msgstr ""
  
! #: cobol/gengen.cc:360
  #, gcc-internal-format
! msgid "The given type is NULL, and that is just not fair"
  msgstr ""
  
! #: cobol/gengen.cc:369
  #, gcc-internal-format
! msgid "The given type is not a declaration or a TYPE"
  msgstr ""
  
! #: cobol/gengen.cc:413
  #, gcc-internal-format, gfc-internal-format
  msgid "Unknown type %d"
  msgstr ""
  
! #: cobol/gengen.cc:482
  #, gcc-internal-format
! msgid "Attempting an assignment of differing types."
  msgstr ""
  
! #: cobol/gengen.cc:2893
! #, gcc-internal-format
! msgid "Residual context count"
  msgstr ""
  
! #: cobol/genmath.cc:1385
! #, gcc-internal-format
! msgid "%<parser_op()%> doesn%'t know how to evaluate %<%s = %s %c %s%>"
! msgstr ""
! 
! #: cobol/genutil.cc:596
  #, gcc-internal-format
  msgid "Too many subscripts"
  msgstr ""
  
! #: cobol/genutil.cc:761
! #, gcc-internal-format
! msgid "cannot get %<float%> value from %s"
! msgstr ""
! 
! #: cobol/lexio.cc:1581
  #, gcc-internal-format, gfc-internal-format
! msgid "%s pid %ld terminated by %s"
  msgstr ""
  
! #: cobol/lexio.cc:1586
  #, gcc-internal-format, gfc-internal-format
  msgid "%s exited with status %d"
  msgstr ""
  
! #: cobol/symbols.cc:418
  msgid "%s:%d: LblNone '%s' has parent #%zu"
  msgstr ""
  
! #: cobol/symbols.cc:1901
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: key must be field"
  msgstr ""
  
! #: cobol/symbols.cc:3712 cobol/symbols.cc:3815 cobol/symbols.cc:3845
  #, gcc-internal-format, gfc-internal-format
  msgid "%s:%d: could not add '%s'"
  msgstr ""
  
! #: cobol/util.cc:1276
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: MOVE %s %s invalid type:"
  msgstr ""
  
! #: cobol/util.cc:1873
  #, gcc-internal-format, gfc-internal-format
  msgid "%s: regcomp: %s"
  msgstr ""
  
! #: cobol/util.cc:2022
  #, gcc-internal-format, gfc-internal-format
  msgid "logic error: missing inode for %s"
  msgstr ""
  
! #: cobol/util.cc:2430
  #, gcc-internal-format, gfc-internal-format
  msgid "failed compiling %s"
  msgstr ""
*************** msgstr ""
*** 56350,56356 ****
  msgid "%q#D is private within this context"
  msgstr ""
  
! #: cp/call.cc:8377 cp/decl.cc:9615
  #, gcc-internal-format
  msgid "declared private here"
  msgstr ""
--- 56405,56411 ----
  msgid "%q#D is private within this context"
  msgstr ""
  
! #: cp/call.cc:8377 cp/decl.cc:9613
  #, gcc-internal-format
  msgid "declared private here"
  msgstr ""
*************** msgstr ""
*** 56360,56366 ****
  msgid "%q#D is protected within this context"
  msgstr ""
  
! #: cp/call.cc:8383 cp/decl.cc:9616
  #, gcc-internal-format
  msgid "declared protected here"
  msgstr ""
--- 56415,56421 ----
  msgid "%q#D is protected within this context"
  msgstr ""
  
! #: cp/call.cc:8383 cp/decl.cc:9614
  #, gcc-internal-format
  msgid "declared protected here"
  msgstr ""
*************** msgstr ""
*** 56716,56722 ****
  msgid "constructor delegates to itself"
  msgstr ""
  
! #: cp/call.cc:11805 cp/typeck.cc:10490
  msgid "cannot convert %qH to %qI"
  msgstr ""
  
--- 56771,56777 ----
  msgid "constructor delegates to itself"
  msgstr ""
  
! #: cp/call.cc:11805 cp/typeck.cc:10606
  msgid "cannot convert %qH to %qI"
  msgstr ""
  
*************** msgstr ""
*** 56735,56741 ****
  msgid "call to non-function %qD"
  msgstr ""
  
! #: cp/call.cc:11947 cp/pt.cc:17467 cp/typeck.cc:3508
  #, gcc-internal-format
  msgid "cannot call constructor %<%T::%D%> directly"
  msgstr ""
--- 56790,56796 ----
  msgid "call to non-function %qD"
  msgstr ""
  
! #: cp/call.cc:11947 cp/pt.cc:17496 cp/typeck.cc:3508
  #, gcc-internal-format
  msgid "cannot call constructor %<%T::%D%> directly"
  msgstr ""
*************** msgstr ""
*** 56905,56912 ****
  msgid "%q#D cannot be overloaded with %q#D"
  msgstr ""
  
! #: cp/class.cc:1461 cp/decl.cc:1946 cp/decl.cc:1958 cp/decl.cc:1984
! #: cp/decl.cc:2006 cp/name-lookup.cc:2918 cp/name-lookup.cc:3235
  #, gcc-internal-format
  msgid "previous declaration %q#D"
  msgstr ""
--- 56960,56967 ----
  msgid "%q#D cannot be overloaded with %q#D"
  msgstr ""
  
! #: cp/class.cc:1461 cp/decl.cc:1944 cp/decl.cc:1956 cp/decl.cc:1982
! #: cp/decl.cc:2004 cp/name-lookup.cc:2918 cp/name-lookup.cc:3235
  #, gcc-internal-format
  msgid "previous declaration %q#D"
  msgstr ""
*************** msgstr ""
*** 57242,57443 ****
  msgid "  non-static data member %qD has volatile type"
  msgstr ""
  
! #: cp/class.cc:6466
  #, gcc-internal-format
  msgid "base class %q#T has accessible non-virtual destructor"
  msgstr ""
  
! #: cp/class.cc:6495
  #, gcc-internal-format
  msgid "non-static reference %q#D in class without a constructor"
  msgstr ""
  
! #: cp/class.cc:6501
  #, gcc-internal-format
  msgid "non-static const member %q#D in class without a constructor"
  msgstr ""
  
! #: cp/class.cc:6834
  #, gcc-internal-format
  msgid ""
  "offset of %qT base class for %<-std=c++14%> and up changes in %<-fabi-"
  "version=17%> (GCC 12)"
  msgstr ""
  
! #: cp/class.cc:6838
  #, gcc-internal-format
  msgid ""
  "offset of %qD for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC "
  "12)"
  msgstr ""
  
! #: cp/class.cc:6878
  #, gcc-internal-format
  msgid "direct base %qT inaccessible in %qT due to ambiguity"
  msgstr ""
  
! #: cp/class.cc:6890
  #, gcc-internal-format
  msgid "virtual base %qT inaccessible in %qT due to ambiguity"
  msgstr ""
  
! #: cp/class.cc:7132
  #, gcc-internal-format
  msgid ""
  "offset of %qD is not ABI-compliant and may change in a future version of GCC"
  msgstr ""
  
! #: cp/class.cc:7328
  #, gcc-internal-format
  msgid "size of type %qT is too large (%qE bytes)"
  msgstr ""
  
! #: cp/class.cc:7649
  #, gcc-internal-format
  msgid "invalid use of %q#T with a zero-size array in %q#D"
  msgstr ""
  
! #: cp/class.cc:7650
  #, gcc-internal-format
  msgid "invalid use of %q#T with a flexible array member in %q#T"
  msgstr ""
  
! #: cp/class.cc:7655
  #, gcc-internal-format
  msgid "array member %q#D declared here"
  msgstr ""
  
! #: cp/class.cc:7684
  #, gcc-internal-format
  msgid "zero-size array member %qD not at end of %q#T"
  msgstr ""
  
! #: cp/class.cc:7686
  #, gcc-internal-format
  msgid "zero-size array member %qD in an otherwise empty %q#T"
  msgstr ""
  
! #: cp/class.cc:7695 cp/class.cc:7730
  #, gcc-internal-format
  msgid "in the definition of %q#T"
  msgstr ""
  
! #: cp/class.cc:7703
  #, gcc-internal-format
  msgid "flexible array member %qD not at end of %q#T"
  msgstr ""
  
! #: cp/class.cc:7705
  #, gcc-internal-format
  msgid "flexible array member %qD in an otherwise empty %q#T is a GCC extension"
  msgstr ""
  
! #: cp/class.cc:7728
  #, gcc-internal-format
  msgid "next member %q#D declared here"
  msgstr ""
  
! #: cp/class.cc:7840 cp/decl.cc:18273 cp/parser.cc:28411
  #, gcc-internal-format
  msgid "redefinition of %q#T"
  msgstr ""
  
! #: cp/class.cc:7987
  #, gcc-internal-format
  msgid "%q#T has virtual functions and accessible non-virtual destructor"
  msgstr ""
  
! #: cp/class.cc:8015
  #, gcc-internal-format
  msgid "type transparent %q#T does not have any fields"
  msgstr ""
  
! #: cp/class.cc:8021
  #, gcc-internal-format
  msgid "type transparent class %qT has base classes"
  msgstr ""
  
! #: cp/class.cc:8025
  #, gcc-internal-format
  msgid "type transparent class %qT has virtual functions"
  msgstr ""
  
! #: cp/class.cc:8031
  #, gcc-internal-format
  msgid ""
  "type transparent %q#T cannot be made transparent because the type of the "
  "first field has a different ABI from the class overall"
  msgstr ""
  
! #: cp/class.cc:8202
  #, gcc-internal-format
  msgid "definition of %qD does not match %<#include <initializer_list>%>"
  msgstr ""
  
! #: cp/class.cc:8213
  #, gcc-internal-format
  msgid "trying to finish struct, but kicked out due to previous parse errors"
  msgstr ""
  
! #: cp/class.cc:8720
  #, gcc-internal-format
  msgid "language string %<\"%E\"%> not recognized"
  msgstr ""
  
! #: cp/class.cc:8810
  #, gcc-internal-format
  msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
  msgstr ""
  
! #: cp/class.cc:8976
  #, gcc-internal-format
  msgid "no matches converting function %qD to type %q#T"
  msgstr ""
  
! #: cp/class.cc:9004
  #, gcc-internal-format
  msgid "converting overloaded function %qD to type %q#T is ambiguous"
  msgstr ""
  
! #: cp/class.cc:9046
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of an unqualified or parenthesized non-"
  "static member function to form a pointer to explicit object member function."
  msgstr ""
  
! #: cp/class.cc:9051
  #, gcc-internal-format
  msgid ""
  "a pointer to explicit object member function can only be formed with %<&%E%>"
  msgstr ""
  
! #: cp/class.cc:9061
  #, gcc-internal-format
  msgid "assuming pointer to member %qD"
  msgstr ""
  
! #: cp/class.cc:9064
  #, gcc-internal-format
  msgid "(a pointer to member can only be formed with %<&%E%>)"
  msgstr ""
  
! #: cp/class.cc:9143
  #, gcc-internal-format
  msgid "not enough type information"
  msgstr ""
  
! #: cp/class.cc:9163
  #, gcc-internal-format
  msgid "cannot convert %qE from type %qT to type %qT"
  msgstr ""
  
! #: cp/class.cc:9464
  #, gcc-internal-format
  msgid "declaration of %q#D changes meaning of %qD"
  msgstr ""
  
! #: cp/class.cc:9467
  #, gcc-internal-format
  msgid "used here to mean %q#D"
  msgstr ""
--- 57297,57512 ----
  msgid "  non-static data member %qD has volatile type"
  msgstr ""
  
! #: cp/class.cc:6478
  #, gcc-internal-format
  msgid "base class %q#T has accessible non-virtual destructor"
  msgstr ""
  
! #: cp/class.cc:6507
  #, gcc-internal-format
  msgid "non-static reference %q#D in class without a constructor"
  msgstr ""
  
! #: cp/class.cc:6513
  #, gcc-internal-format
  msgid "non-static const member %q#D in class without a constructor"
  msgstr ""
  
! #: cp/class.cc:6853
  #, gcc-internal-format
  msgid ""
  "offset of %qT base class for %<-std=c++14%> and up changes in %<-fabi-"
  "version=17%> (GCC 12)"
  msgstr ""
  
! #: cp/class.cc:6858
! #, gcc-internal-format
! msgid ""
! "offset of %qT base class for %<-std=c++20%> and up changes in %<-fabi-"
! "version=21%> (GCC 16)"
! msgstr ""
! 
! #: cp/class.cc:6866
  #, gcc-internal-format
  msgid ""
  "offset of %qD for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC "
  "12)"
  msgstr ""
  
! #: cp/class.cc:6871
! #, gcc-internal-format
! msgid ""
! "offset of %qD for %<-std=c++20%> and up changes in %<-fabi-version=21%> (GCC "
! "16)"
! msgstr ""
! 
! #: cp/class.cc:6912
  #, gcc-internal-format
  msgid "direct base %qT inaccessible in %qT due to ambiguity"
  msgstr ""
  
! #: cp/class.cc:6924
  #, gcc-internal-format
  msgid "virtual base %qT inaccessible in %qT due to ambiguity"
  msgstr ""
  
! #: cp/class.cc:7166
  #, gcc-internal-format
  msgid ""
  "offset of %qD is not ABI-compliant and may change in a future version of GCC"
  msgstr ""
  
! #: cp/class.cc:7362
  #, gcc-internal-format
  msgid "size of type %qT is too large (%qE bytes)"
  msgstr ""
  
! #: cp/class.cc:7683
  #, gcc-internal-format
  msgid "invalid use of %q#T with a zero-size array in %q#D"
  msgstr ""
  
! #: cp/class.cc:7684
  #, gcc-internal-format
  msgid "invalid use of %q#T with a flexible array member in %q#T"
  msgstr ""
  
! #: cp/class.cc:7689
  #, gcc-internal-format
  msgid "array member %q#D declared here"
  msgstr ""
  
! #: cp/class.cc:7718
  #, gcc-internal-format
  msgid "zero-size array member %qD not at end of %q#T"
  msgstr ""
  
! #: cp/class.cc:7720
  #, gcc-internal-format
  msgid "zero-size array member %qD in an otherwise empty %q#T"
  msgstr ""
  
! #: cp/class.cc:7729 cp/class.cc:7764
  #, gcc-internal-format
  msgid "in the definition of %q#T"
  msgstr ""
  
! #: cp/class.cc:7737
  #, gcc-internal-format
  msgid "flexible array member %qD not at end of %q#T"
  msgstr ""
  
! #: cp/class.cc:7739
  #, gcc-internal-format
  msgid "flexible array member %qD in an otherwise empty %q#T is a GCC extension"
  msgstr ""
  
! #: cp/class.cc:7762
  #, gcc-internal-format
  msgid "next member %q#D declared here"
  msgstr ""
  
! #: cp/class.cc:7874 cp/decl.cc:18271 cp/parser.cc:28464
  #, gcc-internal-format
  msgid "redefinition of %q#T"
  msgstr ""
  
! #: cp/class.cc:8021
  #, gcc-internal-format
  msgid "%q#T has virtual functions and accessible non-virtual destructor"
  msgstr ""
  
! #: cp/class.cc:8049
  #, gcc-internal-format
  msgid "type transparent %q#T does not have any fields"
  msgstr ""
  
! #: cp/class.cc:8055
  #, gcc-internal-format
  msgid "type transparent class %qT has base classes"
  msgstr ""
  
! #: cp/class.cc:8059
  #, gcc-internal-format
  msgid "type transparent class %qT has virtual functions"
  msgstr ""
  
! #: cp/class.cc:8065
  #, gcc-internal-format
  msgid ""
  "type transparent %q#T cannot be made transparent because the type of the "
  "first field has a different ABI from the class overall"
  msgstr ""
  
! #: cp/class.cc:8236
  #, gcc-internal-format
  msgid "definition of %qD does not match %<#include <initializer_list>%>"
  msgstr ""
  
! #: cp/class.cc:8247
  #, gcc-internal-format
  msgid "trying to finish struct, but kicked out due to previous parse errors"
  msgstr ""
  
! #: cp/class.cc:8754
  #, gcc-internal-format
  msgid "language string %<\"%E\"%> not recognized"
  msgstr ""
  
! #: cp/class.cc:8844
  #, gcc-internal-format
  msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
  msgstr ""
  
! #: cp/class.cc:9010
  #, gcc-internal-format
  msgid "no matches converting function %qD to type %q#T"
  msgstr ""
  
! #: cp/class.cc:9038
  #, gcc-internal-format
  msgid "converting overloaded function %qD to type %q#T is ambiguous"
  msgstr ""
  
! #: cp/class.cc:9080
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of an unqualified or parenthesized non-"
  "static member function to form a pointer to explicit object member function."
  msgstr ""
  
! #: cp/class.cc:9085
  #, gcc-internal-format
  msgid ""
  "a pointer to explicit object member function can only be formed with %<&%E%>"
  msgstr ""
  
! #: cp/class.cc:9095
  #, gcc-internal-format
  msgid "assuming pointer to member %qD"
  msgstr ""
  
! #: cp/class.cc:9098
  #, gcc-internal-format
  msgid "(a pointer to member can only be formed with %<&%E%>)"
  msgstr ""
  
! #: cp/class.cc:9177
  #, gcc-internal-format
  msgid "not enough type information"
  msgstr ""
  
! #: cp/class.cc:9197
  #, gcc-internal-format
  msgid "cannot convert %qE from type %qT to type %qT"
  msgstr ""
  
! #: cp/class.cc:9498
  #, gcc-internal-format
  msgid "declaration of %q#D changes meaning of %qD"
  msgstr ""
  
! #: cp/class.cc:9501
  #, gcc-internal-format
  msgid "used here to mean %q#D"
  msgstr ""
*************** msgstr ""
*** 57475,57481 ****
  msgid "lambdas are implicitly %<constexpr%> only in C++17 and later"
  msgstr ""
  
! #: cp/constexpr.cc:270 cp/decl.cc:15267
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> destructors only available with %<-std=c++20%> or %<-std=gnu+"
--- 57544,57550 ----
  msgid "lambdas are implicitly %<constexpr%> only in C++17 and later"
  msgstr ""
  
! #: cp/constexpr.cc:270 cp/decl.cc:15265
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> destructors only available with %<-std=c++20%> or %<-std=gnu+"
*************** msgstr ""
*** 57527,57533 ****
  msgid "%qD is not usable as a %<constexpr%> function because:"
  msgstr ""
  
! #: cp/constexpr.cc:1347 cp/constexpr.cc:6580
  #, gcc-internal-format
  msgid "destroying %qE outside its lifetime"
  msgstr ""
--- 57596,57602 ----
  msgid "%qD is not usable as a %<constexpr%> function because:"
  msgstr ""
  
! #: cp/constexpr.cc:1347 cp/constexpr.cc:6596
  #, gcc-internal-format
  msgid "destroying %qE outside its lifetime"
  msgstr ""
*************** msgid "%q+E is not a constant expression
*** 57546,57557 ****
  msgstr ""
  
  #: cp/constexpr.cc:1897 cp/constexpr.cc:2796 cp/constexpr.cc:3080
! #: cp/constexpr.cc:10113 rust/backend/rust-constexpr.cc:5789
  #, gcc-internal-format
  msgid "call to non-%<constexpr%> function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:1944 cp/constexpr.cc:6138 cp/constexpr.cc:8586
  #: rust/backend/rust-constexpr.cc:875 rust/backend/rust-constexpr.cc:2494
  #, gcc-internal-format
  msgid "dereferencing a null pointer"
--- 57615,57626 ----
  msgstr ""
  
  #: cp/constexpr.cc:1897 cp/constexpr.cc:2796 cp/constexpr.cc:3080
! #: cp/constexpr.cc:10135 rust/backend/rust-constexpr.cc:5789
  #, gcc-internal-format
  msgid "call to non-%<constexpr%> function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:1944 cp/constexpr.cc:6153 cp/constexpr.cc:8608
  #: rust/backend/rust-constexpr.cc:875 rust/backend/rust-constexpr.cc:2494
  #, gcc-internal-format
  msgid "dereferencing a null pointer"
*************** msgstr ""
*** 57572,57578 ****
  msgid "failed %<assume%> attribute assumption"
  msgstr ""
  
! #: cp/constexpr.cc:2249 cp/constexpr.cc:10077
  #: rust/backend/rust-constexpr.cc:5758
  #, gcc-internal-format
  msgid "call to internal function %qE"
--- 57641,57647 ----
  msgid "failed %<assume%> attribute assumption"
  msgstr ""
  
! #: cp/constexpr.cc:2249 cp/constexpr.cc:10099
  #: rust/backend/rust-constexpr.cc:5758
  #, gcc-internal-format
  msgid "call to internal function %qE"
*************** msgstr ""
*** 57770,57780 ****
  msgid "dereferencing a null pointer in %qE"
  msgstr ""
  
! #: cp/constexpr.cc:4797 cp/constexpr.cc:4913 cp/constexpr.cc:4925
! #: cp/constexpr.cc:7761 cp/constexpr.cc:7892 cp/constexpr.cc:10027
! #: rust/backend/rust-constexpr.cc:1738 rust/backend/rust-constexpr.cc:1983
! #: rust/backend/rust-constexpr.cc:2225 rust/backend/rust-constexpr.cc:4743
! #: rust/backend/rust-constexpr.cc:5712
  #, gcc-internal-format
  msgid "%qE is not a constant expression"
  msgstr ""
--- 57839,57849 ----
  msgid "dereferencing a null pointer in %qE"
  msgstr ""
  
! #: cp/constexpr.cc:4797 cp/constexpr.cc:4925 cp/constexpr.cc:4937
! #: cp/constexpr.cc:7777 cp/constexpr.cc:7908 cp/constexpr.cc:10049
! #: cp/constexpr.cc:11043 rust/backend/rust-constexpr.cc:1738
! #: rust/backend/rust-constexpr.cc:1983 rust/backend/rust-constexpr.cc:2225
! #: rust/backend/rust-constexpr.cc:4743 rust/backend/rust-constexpr.cc:5712
  #, gcc-internal-format
  msgid "%qE is not a constant expression"
  msgstr ""
*************** msgstr ""
*** 57784,58047 ****
  msgid "mutable %qD is not usable in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:4837 cp/constexpr.cc:4873 cp/constexpr.cc:6748
  #: rust/backend/rust-constexpr.cc:1774 rust/backend/rust-constexpr.cc:1797
  #, gcc-internal-format
  msgid "accessing uninitialized member %qD"
  msgstr ""
  
! #: cp/constexpr.cc:4839 cp/constexpr.cc:4852 cp/constexpr.cc:6743
  #: rust/backend/rust-constexpr.cc:1776
  #, gcc-internal-format
  msgid ""
  "accessing %qD member instead of initialized %qD member in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:4991
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a union type"
  msgstr ""
  
! #: cp/constexpr.cc:4994
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a union type"
  msgstr ""
  
! #: cp/constexpr.cc:5005
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer type"
  msgstr ""
  
! #: cp/constexpr.cc:5008
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer type"
  msgstr ""
  
! #: cp/constexpr.cc:5019
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a reference type"
  msgstr ""
  
! #: cp/constexpr.cc:5022
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a reference type"
  msgstr ""
  
! #: cp/constexpr.cc:5033
  #, gcc-internal-format
  msgid ""
  "%qs is not a constant expression because %qT is a pointer to member type"
  msgstr ""
  
! #: cp/constexpr.cc:5037
  #, gcc-internal-format
  msgid ""
  "%qs is not a constant expression because %qT contains a pointer to member "
  "type"
  msgstr ""
  
! #: cp/constexpr.cc:5048
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is volatile"
  msgstr ""
  
! #: cp/constexpr.cc:5051
  #, gcc-internal-format
  msgid ""
  "%qs is not a constant expression because %qT contains a volatile subobject"
  msgstr ""
  
! #: cp/constexpr.cc:5206
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated on the target"
  msgstr ""
  
! #: cp/constexpr.cc:5215 cp/constexpr.cc:5225
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the type is too large"
  msgstr ""
  
! #: cp/constexpr.cc:5245
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be encoded"
  msgstr ""
  
! #: cp/constexpr.cc:5291
  #, gcc-internal-format
  msgid "%qs accessing uninitialized byte at offset %d"
  msgstr ""
  
! #: cp/constexpr.cc:5303
  #, gcc-internal-format
  msgid ""
  "%qs cannot be constant evaluated because the argument cannot be interpreted"
  msgstr ""
  
! #: cp/constexpr.cc:6158 rust/backend/rust-constexpr.cc:895
  #, gcc-internal-format
  msgid "accessing value of %qE through a %qT glvalue in a constant expression"
  msgstr ""
  
  #. Provide a more accurate message for deleted variables.
! #: cp/constexpr.cc:6198 cp/constexpr.cc:6231
  #, gcc-internal-format
  msgid "use of allocated storage after deallocation in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6200 cp/constexpr.cc:6226 cp/constexpr.cc:6233
! #: cp/constexpr.cc:6575
  #, gcc-internal-format
  msgid "allocated here"
  msgstr ""
  
! #: cp/constexpr.cc:6204
  #, gcc-internal-format
  msgid "accessing %qE outside its lifetime"
  msgstr ""
  
! #: cp/constexpr.cc:6224
  #, gcc-internal-format
  msgid ""
  "the content of uninitialized storage is not usable in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6236 rust/backend/rust-constexpr.cc:4041
  #, gcc-internal-format
  msgid "the value of %qD is not usable in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6244
  #, gcc-internal-format
  msgid "%qD used in its own initializer"
  msgstr ""
  
! #: cp/constexpr.cc:6249
  #, gcc-internal-format
  msgid "%q#D is not const"
  msgstr ""
  
! #: cp/constexpr.cc:6252
  #, gcc-internal-format
  msgid "%q#D is volatile"
  msgstr ""
  
! #: cp/constexpr.cc:6257 cp/constexpr.cc:6264
  #, gcc-internal-format
  msgid "%qD was not initialized with a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6270
  #, gcc-internal-format
  msgid "%qD was not declared %<constexpr%>"
  msgstr ""
  
! #: cp/constexpr.cc:6273
  #, gcc-internal-format
  msgid "%qD does not have integral or enumeration type"
  msgstr ""
  
! #: cp/constexpr.cc:6573
  #, gcc-internal-format
  msgid ""
  "modification of allocated storage after deallocation is not a constant "
  "expression"
  msgstr ""
  
! #: cp/constexpr.cc:6582
  #, gcc-internal-format
  msgid "modification of %qE outside its lifetime is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6589
  #, gcc-internal-format
  msgid ""
  "destroying %qE from outside current evaluation is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6592
  #, gcc-internal-format
  msgid ""
  "modification of %qE from outside current evaluation is not a constant "
  "expression"
  msgstr ""
  
! #: cp/constexpr.cc:6723
  #, gcc-internal-format
  msgid ""
  "change of the active member of a union from %qD to %qD is not a constant "
  "expression before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:6752
  #, gcc-internal-format
  msgid ""
  "%qD does not implicitly begin its lifetime because %qT does not have a non-"
  "deleted trivial default constructor, use %<std::construct_at%> instead"
  msgstr ""
  
! #: cp/constexpr.cc:6759
  #, gcc-internal-format
  msgid ""
  "initializing %qD requires a member access expression as the left operand of "
  "the assignment"
  msgstr ""
  
! #: cp/constexpr.cc:6771 rust/backend/rust-constexpr.cc:2820
  #, gcc-internal-format
  msgid ""
  "change of the active member of a union from %qD to %qD during initialization"
  msgstr ""
  
! #: cp/constexpr.cc:7223 cp/constexpr.cc:8928 cp/constexpr.cc:8940
  #: rust/backend/rust-constexpr.cc:4668
  #, gcc-internal-format
  msgid "statement is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:7430 rust/backend/rust-constexpr.cc:4933
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> loop iteration count exceeds limit of %d (use %<-fconstexpr-"
  "loop-limit=%> to increase the limit)"
  msgstr ""
  
! #: cp/constexpr.cc:7539 rust/backend/rust-constexpr.cc:999
  #, gcc-internal-format
  msgid "inline assembly is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:7541 rust/backend/rust-constexpr.cc:1000
  #, gcc-internal-format
  msgid ""
  "only unevaluated inline assembly is allowed in a %<constexpr%> function in C+"
  "+20"
  msgstr ""
  
! #: cp/constexpr.cc:7560
  #, gcc-internal-format
  msgid "use of %qD"
  msgstr ""
  
! #: cp/constexpr.cc:7564
  #, gcc-internal-format
  msgid ""
  "its value can vary between compiler versions or with different %<-mtune%> or "
  "%<-mcpu%> flags"
  msgstr ""
  
! #: cp/constexpr.cc:7566
  #, gcc-internal-format
  msgid ""
  "if this use is part of a public ABI, change it to instead use a constant "
  "variable you define"
  msgstr ""
  
! #: cp/constexpr.cc:7568
  #, gcc-internal-format, gfc-internal-format
  msgid "the default value for the current CPU tuning is %d bytes"
  msgstr ""
  
! #: cp/constexpr.cc:7570
  #, gcc-internal-format
  msgid ""
  "you can stabilize this value with %<--param "
--- 57853,58116 ----
  msgid "mutable %qD is not usable in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:4837 cp/constexpr.cc:4873 cp/constexpr.cc:6764
  #: rust/backend/rust-constexpr.cc:1774 rust/backend/rust-constexpr.cc:1797
  #, gcc-internal-format
  msgid "accessing uninitialized member %qD"
  msgstr ""
  
! #: cp/constexpr.cc:4839 cp/constexpr.cc:4852 cp/constexpr.cc:6759
  #: rust/backend/rust-constexpr.cc:1776
  #, gcc-internal-format
  msgid ""
  "accessing %qD member instead of initialized %qD member in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:5003
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a union type"
  msgstr ""
  
! #: cp/constexpr.cc:5006
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a union type"
  msgstr ""
  
! #: cp/constexpr.cc:5017
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a pointer type"
  msgstr ""
  
! #: cp/constexpr.cc:5020
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a pointer type"
  msgstr ""
  
! #: cp/constexpr.cc:5031
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is a reference type"
  msgstr ""
  
! #: cp/constexpr.cc:5034
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT contains a reference type"
  msgstr ""
  
! #: cp/constexpr.cc:5045
  #, gcc-internal-format
  msgid ""
  "%qs is not a constant expression because %qT is a pointer to member type"
  msgstr ""
  
! #: cp/constexpr.cc:5049
  #, gcc-internal-format
  msgid ""
  "%qs is not a constant expression because %qT contains a pointer to member "
  "type"
  msgstr ""
  
! #: cp/constexpr.cc:5060
  #, gcc-internal-format
  msgid "%qs is not a constant expression because %qT is volatile"
  msgstr ""
  
! #: cp/constexpr.cc:5063
  #, gcc-internal-format
  msgid ""
  "%qs is not a constant expression because %qT contains a volatile subobject"
  msgstr ""
  
! #: cp/constexpr.cc:5218
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated on the target"
  msgstr ""
  
! #: cp/constexpr.cc:5227 cp/constexpr.cc:5237
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the type is too large"
  msgstr ""
  
! #: cp/constexpr.cc:5257
  #, gcc-internal-format
  msgid "%qs cannot be constant evaluated because the argument cannot be encoded"
  msgstr ""
  
! #: cp/constexpr.cc:5303
  #, gcc-internal-format
  msgid "%qs accessing uninitialized byte at offset %d"
  msgstr ""
  
! #: cp/constexpr.cc:5315
  #, gcc-internal-format
  msgid ""
  "%qs cannot be constant evaluated because the argument cannot be interpreted"
  msgstr ""
  
! #: cp/constexpr.cc:6173 rust/backend/rust-constexpr.cc:895
  #, gcc-internal-format
  msgid "accessing value of %qE through a %qT glvalue in a constant expression"
  msgstr ""
  
  #. Provide a more accurate message for deleted variables.
! #: cp/constexpr.cc:6213 cp/constexpr.cc:6246
  #, gcc-internal-format
  msgid "use of allocated storage after deallocation in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6215 cp/constexpr.cc:6241 cp/constexpr.cc:6248
! #: cp/constexpr.cc:6591
  #, gcc-internal-format
  msgid "allocated here"
  msgstr ""
  
! #: cp/constexpr.cc:6219
  #, gcc-internal-format
  msgid "accessing %qE outside its lifetime"
  msgstr ""
  
! #: cp/constexpr.cc:6239
  #, gcc-internal-format
  msgid ""
  "the content of uninitialized storage is not usable in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6251 rust/backend/rust-constexpr.cc:4041
  #, gcc-internal-format
  msgid "the value of %qD is not usable in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6259
  #, gcc-internal-format
  msgid "%qD used in its own initializer"
  msgstr ""
  
! #: cp/constexpr.cc:6264
  #, gcc-internal-format
  msgid "%q#D is not const"
  msgstr ""
  
! #: cp/constexpr.cc:6267
  #, gcc-internal-format
  msgid "%q#D is volatile"
  msgstr ""
  
! #: cp/constexpr.cc:6272 cp/constexpr.cc:6279
  #, gcc-internal-format
  msgid "%qD was not initialized with a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6285
  #, gcc-internal-format
  msgid "%qD was not declared %<constexpr%>"
  msgstr ""
  
! #: cp/constexpr.cc:6288
  #, gcc-internal-format
  msgid "%qD does not have integral or enumeration type"
  msgstr ""
  
! #: cp/constexpr.cc:6589
  #, gcc-internal-format
  msgid ""
  "modification of allocated storage after deallocation is not a constant "
  "expression"
  msgstr ""
  
! #: cp/constexpr.cc:6598
  #, gcc-internal-format
  msgid "modification of %qE outside its lifetime is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6605
  #, gcc-internal-format
  msgid ""
  "destroying %qE from outside current evaluation is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:6608
  #, gcc-internal-format
  msgid ""
  "modification of %qE from outside current evaluation is not a constant "
  "expression"
  msgstr ""
  
! #: cp/constexpr.cc:6739
  #, gcc-internal-format
  msgid ""
  "change of the active member of a union from %qD to %qD is not a constant "
  "expression before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:6768
  #, gcc-internal-format
  msgid ""
  "%qD does not implicitly begin its lifetime because %qT does not have a non-"
  "deleted trivial default constructor, use %<std::construct_at%> instead"
  msgstr ""
  
! #: cp/constexpr.cc:6775
  #, gcc-internal-format
  msgid ""
  "initializing %qD requires a member access expression as the left operand of "
  "the assignment"
  msgstr ""
  
! #: cp/constexpr.cc:6787 rust/backend/rust-constexpr.cc:2820
  #, gcc-internal-format
  msgid ""
  "change of the active member of a union from %qD to %qD during initialization"
  msgstr ""
  
! #: cp/constexpr.cc:7239 cp/constexpr.cc:8950 cp/constexpr.cc:8962
  #: rust/backend/rust-constexpr.cc:4668
  #, gcc-internal-format
  msgid "statement is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:7446 rust/backend/rust-constexpr.cc:4933
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> loop iteration count exceeds limit of %d (use %<-fconstexpr-"
  "loop-limit=%> to increase the limit)"
  msgstr ""
  
! #: cp/constexpr.cc:7555 rust/backend/rust-constexpr.cc:999
  #, gcc-internal-format
  msgid "inline assembly is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:7557 rust/backend/rust-constexpr.cc:1000
  #, gcc-internal-format
  msgid ""
  "only unevaluated inline assembly is allowed in a %<constexpr%> function in C+"
  "+20"
  msgstr ""
  
! #: cp/constexpr.cc:7576
  #, gcc-internal-format
  msgid "use of %qD"
  msgstr ""
  
! #: cp/constexpr.cc:7580
  #, gcc-internal-format
  msgid ""
  "its value can vary between compiler versions or with different %<-mtune%> or "
  "%<-mcpu%> flags"
  msgstr ""
  
! #: cp/constexpr.cc:7582
  #, gcc-internal-format
  msgid ""
  "if this use is part of a public ABI, change it to instead use a constant "
  "variable you define"
  msgstr ""
  
! #: cp/constexpr.cc:7584
  #, gcc-internal-format, gfc-internal-format
  msgid "the default value for the current CPU tuning is %d bytes"
  msgstr ""
  
! #: cp/constexpr.cc:7586
  #, gcc-internal-format
  msgid ""
  "you can stabilize this value with %<--param "
*************** msgid ""
*** 58049,58282 ****
  "Wno-interference-size%>"
  msgstr ""
  
! #: cp/constexpr.cc:7723
  #, gcc-internal-format
  msgid "value %qE of type %qT is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:7736
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> evaluation operation count exceeds limit of %wd (use %<-"
  "fconstexpr-ops-limit=%> to increase the limit)"
  msgstr ""
  
! #: cp/constexpr.cc:7922
  #, gcc-internal-format
  msgid "control passes through definition of %qD with thread storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:7925
  #, gcc-internal-format
  msgid "control passes through definition of %qD with static storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:7990 cp/constexpr.cc:10723
  #: rust/backend/rust-constexpr.cc:2056 rust/backend/rust-constexpr.cc:6206
  #, gcc-internal-format
  msgid "temporary of non-literal type %qT in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8448 cp/constexpr.cc:10228
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8479 rust/backend/rust-constexpr.cc:2461
  #, gcc-internal-format
  msgid ""
  "conversion from pointer type %qT to arithmetic type %qT in a constant "
  "expression"
  msgstr ""
  
! #: cp/constexpr.cc:8531
  #, gcc-internal-format
  msgid ""
  "cast from %qT is not allowed in a constant expression because pointed-to "
  "type %qT is not similar to %qT"
  msgstr ""
  
! #: cp/constexpr.cc:8541
  #, gcc-internal-format
  msgid "pointed-to object declared here"
  msgstr ""
  
! #: cp/constexpr.cc:8549
  #, gcc-internal-format
  msgid "cast from %qT is not allowed in a constant expression before C++26"
  msgstr ""
  
! #: cp/constexpr.cc:8563
  #, gcc-internal-format
  msgid "%qE is not a constant expression when the class %qT is still incomplete"
  msgstr ""
  
! #: cp/constexpr.cc:8603 rust/backend/rust-constexpr.cc:2506
  #, gcc-internal-format
  msgid "%<reinterpret_cast<%T>(%E)%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8741 cp/constexpr.cc:10535 cp/constexpr.cc:10946
  #: rust/backend/rust-constexpr.cc:6100 rust/backend/rust-constexpr.cc:6415
  #, gcc-internal-format
  msgid "expression %qE is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8785 cp/constexpr.cc:10987
  #, gcc-internal-format
  msgid "%<goto%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8843
  #, gcc-internal-format
  msgid "contract predicate is false in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8878
  #, gcc-internal-format
  msgid "address of a call to %qs is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8943
  #, gcc-internal-format
  msgid "unexpected expression %qE of kind %s"
  msgstr ""
  
! #: cp/constexpr.cc:9242 rust/backend/rust-constexpr.cc:5158
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because it refers to mutable subobjects of "
  "%qT"
  msgstr ""
  
! #: cp/constexpr.cc:9250 rust/backend/rust-constexpr.cc:5167
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because it refers to an incompletely "
  "initialized variable"
  msgstr ""
  
! #: cp/constexpr.cc:9266 rust/backend/rust-constexpr.cc:5183
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because it refers to a result of %<operator "
  "new%>"
  msgstr ""
  
! #: cp/constexpr.cc:9277 rust/backend/rust-constexpr.cc:5195
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because allocated storage has not been "
  "deallocated"
  msgstr ""
  
! #: cp/constexpr.cc:9297 rust/backend/rust-constexpr.cc:5213
  #, gcc-internal-format
  msgid "immediate evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9301
  #, gcc-internal-format
  msgid "constant evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9336
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because it initializes a %qT rather than %qT"
  msgstr ""
  
! #: cp/constexpr.cc:9964 rust/backend/rust-constexpr.cc:5667
  #, gcc-internal-format
  msgid "lvalue-to-rvalue conversion of a volatile lvalue %qE with type %qT"
  msgstr ""
  
! #: cp/constexpr.cc:10193
  #, gcc-internal-format
  msgid "lambda capture of %qE is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10196
  #, gcc-internal-format
  msgid "because it is used as a glvalue"
  msgstr ""
  
! #: cp/constexpr.cc:10252 rust/backend/rust-constexpr.cc:5893
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> from integer to pointer"
  msgstr ""
  
! #: cp/constexpr.cc:10286 rust/backend/rust-constexpr.cc:5921
  #, gcc-internal-format
  msgid ""
  "address-of an object %qE with thread local or automatic storage is not a "
  "constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10470
  #, gcc-internal-format
  msgid "lambda-expression is not a constant expression before C++17"
  msgstr ""
  
! #: cp/constexpr.cc:10482
  #, gcc-internal-format
  msgid "new-expression is not a constant expression before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:10549
  #, gcc-internal-format
  msgid "virtual functions cannot be %<constexpr%> before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:10565
  #, gcc-internal-format
  msgid ""
  "%<typeid%> is not a constant expression because %qE is of polymorphic type"
  msgstr ""
  
! #: cp/constexpr.cc:10629
  #, gcc-internal-format
  msgid "cast to non-integral type %qT in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10687
  #, gcc-internal-format
  msgid "%qD defined %<thread_local%> in %<constexpr%> context"
  msgstr ""
  
! #: cp/constexpr.cc:10695
  #, gcc-internal-format
  msgid "%qD defined %<static%> in %<constexpr%> context"
  msgstr ""
  
! #: cp/constexpr.cc:10773 rust/backend/rust-constexpr.cc:6251
  #, gcc-internal-format
  msgid "division by zero is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10874 rust/backend/rust-constexpr.cc:6349
  #, gcc-internal-format
  msgid "%<delete[]%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10943
  #, gcc-internal-format
  msgid "neither branch of %<if%> is a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10956
  #, gcc-internal-format
  msgid "non-constant array initialization"
  msgstr ""
  
! #: cp/constexpr.cc:11004
  #, gcc-internal-format
  msgid ""
  "label definition in %<constexpr%> function only available with %<-std=c+"
  "+23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/constexpr.cc:11040 rust/backend/rust-constexpr.cc:6438
  #, gcc-internal-format, gfc-internal-format
  msgid "unexpected AST of kind %s"
  msgstr ""
--- 58118,58351 ----
  "Wno-interference-size%>"
  msgstr ""
  
! #: cp/constexpr.cc:7739
  #, gcc-internal-format
  msgid "value %qE of type %qT is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:7752
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> evaluation operation count exceeds limit of %wd (use %<-"
  "fconstexpr-ops-limit=%> to increase the limit)"
  msgstr ""
  
! #: cp/constexpr.cc:7938
  #, gcc-internal-format
  msgid "control passes through definition of %qD with thread storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:7941
  #, gcc-internal-format
  msgid "control passes through definition of %qD with static storage duration"
  msgstr ""
  
! #: cp/constexpr.cc:8006 cp/constexpr.cc:10745
  #: rust/backend/rust-constexpr.cc:2056 rust/backend/rust-constexpr.cc:6206
  #, gcc-internal-format
  msgid "temporary of non-literal type %qT in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8470 cp/constexpr.cc:10250
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8501 rust/backend/rust-constexpr.cc:2461
  #, gcc-internal-format
  msgid ""
  "conversion from pointer type %qT to arithmetic type %qT in a constant "
  "expression"
  msgstr ""
  
! #: cp/constexpr.cc:8553
  #, gcc-internal-format
  msgid ""
  "cast from %qT is not allowed in a constant expression because pointed-to "
  "type %qT is not similar to %qT"
  msgstr ""
  
! #: cp/constexpr.cc:8563
  #, gcc-internal-format
  msgid "pointed-to object declared here"
  msgstr ""
  
! #: cp/constexpr.cc:8571
  #, gcc-internal-format
  msgid "cast from %qT is not allowed in a constant expression before C++26"
  msgstr ""
  
! #: cp/constexpr.cc:8585
  #, gcc-internal-format
  msgid "%qE is not a constant expression when the class %qT is still incomplete"
  msgstr ""
  
! #: cp/constexpr.cc:8625 rust/backend/rust-constexpr.cc:2506
  #, gcc-internal-format
  msgid "%<reinterpret_cast<%T>(%E)%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8763 cp/constexpr.cc:10557 cp/constexpr.cc:10968
  #: rust/backend/rust-constexpr.cc:6100 rust/backend/rust-constexpr.cc:6415
  #, gcc-internal-format
  msgid "expression %qE is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8807 cp/constexpr.cc:11009
  #, gcc-internal-format
  msgid "%<goto%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8865
  #, gcc-internal-format
  msgid "contract predicate is false in constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8900
  #, gcc-internal-format
  msgid "address of a call to %qs is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:8965
  #, gcc-internal-format
  msgid "unexpected expression %qE of kind %s"
  msgstr ""
  
! #: cp/constexpr.cc:9264 rust/backend/rust-constexpr.cc:5158
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because it refers to mutable subobjects of "
  "%qT"
  msgstr ""
  
! #: cp/constexpr.cc:9272 rust/backend/rust-constexpr.cc:5167
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because it refers to an incompletely "
  "initialized variable"
  msgstr ""
  
! #: cp/constexpr.cc:9288 rust/backend/rust-constexpr.cc:5183
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because it refers to a result of %<operator "
  "new%>"
  msgstr ""
  
! #: cp/constexpr.cc:9299 rust/backend/rust-constexpr.cc:5195
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because allocated storage has not been "
  "deallocated"
  msgstr ""
  
! #: cp/constexpr.cc:9319 rust/backend/rust-constexpr.cc:5213
  #, gcc-internal-format
  msgid "immediate evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9323
  #, gcc-internal-format
  msgid "constant evaluation returns address of immediate function %qD"
  msgstr ""
  
! #: cp/constexpr.cc:9358
  #, gcc-internal-format
  msgid ""
  "%qE is not a constant expression because it initializes a %qT rather than %qT"
  msgstr ""
  
! #: cp/constexpr.cc:9986 rust/backend/rust-constexpr.cc:5667
  #, gcc-internal-format
  msgid "lvalue-to-rvalue conversion of a volatile lvalue %qE with type %qT"
  msgstr ""
  
! #: cp/constexpr.cc:10215
  #, gcc-internal-format
  msgid "lambda capture of %qE is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10218
  #, gcc-internal-format
  msgid "because it is used as a glvalue"
  msgstr ""
  
! #: cp/constexpr.cc:10274 rust/backend/rust-constexpr.cc:5893
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> from integer to pointer"
  msgstr ""
  
! #: cp/constexpr.cc:10308 rust/backend/rust-constexpr.cc:5921
  #, gcc-internal-format
  msgid ""
  "address-of an object %qE with thread local or automatic storage is not a "
  "constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10492
  #, gcc-internal-format
  msgid "lambda-expression is not a constant expression before C++17"
  msgstr ""
  
! #: cp/constexpr.cc:10504
  #, gcc-internal-format
  msgid "new-expression is not a constant expression before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:10571
  #, gcc-internal-format
  msgid "virtual functions cannot be %<constexpr%> before C++20"
  msgstr ""
  
! #: cp/constexpr.cc:10587
  #, gcc-internal-format
  msgid ""
  "%<typeid%> is not a constant expression because %qE is of polymorphic type"
  msgstr ""
  
! #: cp/constexpr.cc:10651
  #, gcc-internal-format
  msgid "cast to non-integral type %qT in a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10709
  #, gcc-internal-format
  msgid "%qD defined %<thread_local%> in %<constexpr%> context"
  msgstr ""
  
! #: cp/constexpr.cc:10717
  #, gcc-internal-format
  msgid "%qD defined %<static%> in %<constexpr%> context"
  msgstr ""
  
! #: cp/constexpr.cc:10795 rust/backend/rust-constexpr.cc:6251
  #, gcc-internal-format
  msgid "division by zero is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10896 rust/backend/rust-constexpr.cc:6349
  #, gcc-internal-format
  msgid "%<delete[]%> is not a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10965
  #, gcc-internal-format
  msgid "neither branch of %<if%> is a constant expression"
  msgstr ""
  
! #: cp/constexpr.cc:10978
  #, gcc-internal-format
  msgid "non-constant array initialization"
  msgstr ""
  
! #: cp/constexpr.cc:11026
  #, gcc-internal-format
  msgid ""
  "label definition in %<constexpr%> function only available with %<-std=c+"
  "+23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/constexpr.cc:11065 rust/backend/rust-constexpr.cc:6438
  #, gcc-internal-format, gfc-internal-format
  msgid "unexpected AST of kind %s"
  msgstr ""
*************** msgstr ""
*** 58871,58983 ****
  msgid "declaration adds contracts to %q#D"
  msgstr ""
  
! #: cp/coroutines.cc:427
  #, gcc-internal-format
  msgid "coroutines require a traits template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:429
  #, gcc-internal-format
  msgid "perhaps %<#include <coroutine>%> is missing"
  msgstr ""
  
! #: cp/coroutines.cc:484
  #, gcc-internal-format
  msgid "cannot instantiate %<coroutine traits%>"
  msgstr ""
  
! #: cp/coroutines.cc:506
  #, gcc-internal-format
  msgid "coroutines require a handle class template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:534
  #, gcc-internal-format
  msgid "%qE must be a non-overloaded method"
  msgstr ""
  
! #: cp/coroutines.cc:547
  #, gcc-internal-format
  msgid "%qE must take no arguments"
  msgstr ""
  
! #: cp/coroutines.cc:554 cp/coroutines.cc:599
  #, gcc-internal-format
  msgid "%qE must return %qT, not %qT"
  msgstr ""
  
! #: cp/coroutines.cc:581
  #, gcc-internal-format
  msgid "%qE must be a non-overloaded static function"
  msgstr ""
  
! #: cp/coroutines.cc:592
  #, gcc-internal-format
  msgid "%qE must take a single %qT"
  msgstr ""
  
! #: cp/coroutines.cc:621
  #, gcc-internal-format
  msgid "cannot instantiate a %<coroutine handle%> for promise type %qT"
  msgstr ""
  
! #: cp/coroutines.cc:736
  #, gcc-internal-format
  msgid "unable to find the promise type for this coroutine"
  msgstr ""
  
! #: cp/coroutines.cc:756
  #, gcc-internal-format
  msgid ""
  "the coroutine promise type %qT declares both %<return_value%> and "
  "%<return_void%>"
  msgstr ""
  
! #: cp/coroutines.cc:760
  #, gcc-internal-format
  msgid "%<return_void%> declared here"
  msgstr ""
  
! #: cp/coroutines.cc:919 cp/coroutines.cc:997 cp/coroutines.cc:4553
  #, gcc-internal-format
  msgid "no member named %qE in %qT"
  msgstr ""
  
! #: cp/coroutines.cc:1012
  #, gcc-internal-format
  msgid "%qs cannot be used outside a function"
  msgstr ""
  
  #. [basic.start.main] 3. The function main shall not be a coroutine.
! #: cp/coroutines.cc:1020
  #, gcc-internal-format
  msgid "%qs cannot be used in the %<main%> function"
  msgstr ""
  
  #. [dcl.constexpr] 3.3 it shall not be a coroutine.
! #: cp/coroutines.cc:1031
  #, gcc-internal-format
  msgid "%qs cannot be used in a %<constexpr%> function"
  msgstr ""
  
! #: cp/coroutines.cc:1042
  #, gcc-internal-format
  msgid "%qs cannot be used in a function with a deduced return type"
  msgstr ""
  
! #: cp/coroutines.cc:1053
  #, gcc-internal-format
  msgid "%qs cannot be used in a varargs function"
  msgstr ""
  
  #. [class.ctor] 7. a constructor shall not be a coroutine.
! #: cp/coroutines.cc:1060
  #, gcc-internal-format
  msgid "%qs cannot be used in a constructor"
  msgstr ""
  
  #. [class.dtor] 21. a destructor shall not be a coroutine.
! #: cp/coroutines.cc:1067
  #, gcc-internal-format
  msgid "%qs cannot be used in a destructor"
  msgstr ""
--- 58940,59052 ----
  msgid "declaration adds contracts to %q#D"
  msgstr ""
  
! #: cp/coroutines.cc:507
  #, gcc-internal-format
  msgid "coroutines require a traits template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:509
  #, gcc-internal-format
  msgid "perhaps %<#include <coroutine>%> is missing"
  msgstr ""
  
! #: cp/coroutines.cc:564
  #, gcc-internal-format
  msgid "cannot instantiate %<coroutine traits%>"
  msgstr ""
  
! #: cp/coroutines.cc:586
  #, gcc-internal-format
  msgid "coroutines require a handle class template; cannot find %<%E::%E%>"
  msgstr ""
  
! #: cp/coroutines.cc:614
  #, gcc-internal-format
  msgid "%qE must be a non-overloaded method"
  msgstr ""
  
! #: cp/coroutines.cc:627
  #, gcc-internal-format
  msgid "%qE must take no arguments"
  msgstr ""
  
! #: cp/coroutines.cc:634 cp/coroutines.cc:679
  #, gcc-internal-format
  msgid "%qE must return %qT, not %qT"
  msgstr ""
  
! #: cp/coroutines.cc:661
  #, gcc-internal-format
  msgid "%qE must be a non-overloaded static function"
  msgstr ""
  
! #: cp/coroutines.cc:672
  #, gcc-internal-format
  msgid "%qE must take a single %qT"
  msgstr ""
  
! #: cp/coroutines.cc:701
  #, gcc-internal-format
  msgid "cannot instantiate a %<coroutine handle%> for promise type %qT"
  msgstr ""
  
! #: cp/coroutines.cc:816
  #, gcc-internal-format
  msgid "unable to find the promise type for this coroutine"
  msgstr ""
  
! #: cp/coroutines.cc:836
  #, gcc-internal-format
  msgid ""
  "the coroutine promise type %qT declares both %<return_value%> and "
  "%<return_void%>"
  msgstr ""
  
! #: cp/coroutines.cc:840
  #, gcc-internal-format
  msgid "%<return_void%> declared here"
  msgstr ""
  
! #: cp/coroutines.cc:999 cp/coroutines.cc:1077 cp/coroutines.cc:4711
  #, gcc-internal-format
  msgid "no member named %qE in %qT"
  msgstr ""
  
! #: cp/coroutines.cc:1092
  #, gcc-internal-format
  msgid "%qs cannot be used outside a function"
  msgstr ""
  
  #. [basic.start.main] 3. The function main shall not be a coroutine.
! #: cp/coroutines.cc:1100
  #, gcc-internal-format
  msgid "%qs cannot be used in the %<main%> function"
  msgstr ""
  
  #. [dcl.constexpr] 3.3 it shall not be a coroutine.
! #: cp/coroutines.cc:1111
  #, gcc-internal-format
  msgid "%qs cannot be used in a %<constexpr%> function"
  msgstr ""
  
! #: cp/coroutines.cc:1122
  #, gcc-internal-format
  msgid "%qs cannot be used in a function with a deduced return type"
  msgstr ""
  
! #: cp/coroutines.cc:1133
  #, gcc-internal-format
  msgid "%qs cannot be used in a varargs function"
  msgstr ""
  
  #. [class.ctor] 7. a constructor shall not be a coroutine.
! #: cp/coroutines.cc:1140
  #, gcc-internal-format
  msgid "%qs cannot be used in a constructor"
  msgstr ""
  
  #. [class.dtor] 21. a destructor shall not be a coroutine.
! #: cp/coroutines.cc:1147
  #, gcc-internal-format
  msgid "%qs cannot be used in a destructor"
  msgstr ""
*************** msgstr ""
*** 58985,59065 ****
  #. TODO: record or extract positions of returns (and the first coro
  #. keyword) so that we can add notes to the diagnostic about where
  #. the bad keyword is and what made the function into a coro.
! #: cp/coroutines.cc:1098
  #, gcc-internal-format
  msgid ""
  "a %<return%> statement is not allowed in coroutine; did you mean "
  "%<co_return%>?"
  msgstr ""
  
! #: cp/coroutines.cc:1150
  #, gcc-internal-format
  msgid "the expression %qE is required to be non-throwing"
  msgstr ""
  
! #: cp/coroutines.cc:1152
  #, gcc-internal-format
  msgid "must be declared with %<noexcept(true)%>"
  msgstr ""
  
! #: cp/coroutines.cc:1280
  #, gcc-internal-format
  msgid "awaitable type %qT is not a structure"
  msgstr ""
  
! #: cp/coroutines.cc:1374
  #, gcc-internal-format
  msgid "%<await_suspend%> must return %<void%>, %<bool%> or a coroutine handle"
  msgstr ""
  
! #: cp/coroutines.cc:1723
  #, gcc-internal-format
  msgid "function declared %<noreturn%> has a %<co_return%> statement"
  msgstr ""
  
! #: cp/coroutines.cc:1760
  #, gcc-internal-format
  msgid "the align argument to %<__builtin_coro_promise%> must be a constant"
  msgstr ""
  
! #: cp/coroutines.cc:1770
  #, gcc-internal-format
  msgid "the direction argument to %<__builtin_coro_promise%> must be a constant"
  msgstr ""
  
! #: cp/coroutines.cc:2267
  #, gcc-internal-format
  msgid "no suspend point info for %qD"
  msgstr ""
  
! #: cp/coroutines.cc:2829
  #, gcc-internal-format
  msgid "duplicate info for %qE"
  msgstr ""
  
! #: cp/coroutines.cc:3958
  #, gcc-internal-format
  msgid "await expressions are not permitted in handlers"
  msgstr ""
  
! #: cp/coroutines.cc:4183
  #, gcc-internal-format
  msgid "variable length arrays are not yet supported in coroutines"
  msgstr ""
  
! #: cp/coroutines.cc:4701
  #, gcc-internal-format
  msgid ""
  "%qE is provided by %qT but is not usable with the function signature %qD"
  msgstr ""
  
! #: cp/coroutines.cc:4708
  #, gcc-internal-format
  msgid ""
  "%qE is provided by %qT but %qE is not marked %<throw()%> or %<noexcept%>"
  msgstr ""
  
! #: cp/coroutines.cc:4713
  #, gcc-internal-format
  msgid ""
  "%qE is marked %<throw()%> or %<noexcept%> but no usable "
--- 59054,59149 ----
  #. TODO: record or extract positions of returns (and the first coro
  #. keyword) so that we can add notes to the diagnostic about where
  #. the bad keyword is and what made the function into a coro.
! #: cp/coroutines.cc:1178
  #, gcc-internal-format
  msgid ""
  "a %<return%> statement is not allowed in coroutine; did you mean "
  "%<co_return%>?"
  msgstr ""
  
! #: cp/coroutines.cc:1230
  #, gcc-internal-format
  msgid "the expression %qE is required to be non-throwing"
  msgstr ""
  
! #: cp/coroutines.cc:1232
  #, gcc-internal-format
  msgid "must be declared with %<noexcept(true)%>"
  msgstr ""
  
! #: cp/coroutines.cc:1361 cp/coroutines.cc:1364
! #, gcc-internal-format
! msgid "%qs awaitable type %qT is not a structure"
! msgstr ""
! 
! #: cp/coroutines.cc:1367
  #, gcc-internal-format
  msgid "awaitable type %qT is not a structure"
  msgstr ""
  
! #: cp/coroutines.cc:1460
  #, gcc-internal-format
  msgid "%<await_suspend%> must return %<void%>, %<bool%> or a coroutine handle"
  msgstr ""
  
! #: cp/coroutines.cc:1552 cp/coroutines.cc:1638
! #, gcc-internal-format
! msgid "%qs cannot be used in an unevaluated context"
! msgstr ""
! 
! #: cp/coroutines.cc:1821
  #, gcc-internal-format
  msgid "function declared %<noreturn%> has a %<co_return%> statement"
  msgstr ""
  
! #: cp/coroutines.cc:1858
  #, gcc-internal-format
  msgid "the align argument to %<__builtin_coro_promise%> must be a constant"
  msgstr ""
  
! #: cp/coroutines.cc:1868
  #, gcc-internal-format
  msgid "the direction argument to %<__builtin_coro_promise%> must be a constant"
  msgstr ""
  
! #: cp/coroutines.cc:2387
  #, gcc-internal-format
  msgid "no suspend point info for %qD"
  msgstr ""
  
! #: cp/coroutines.cc:2960
  #, gcc-internal-format
  msgid "duplicate info for %qE"
  msgstr ""
  
! #: cp/coroutines.cc:3618
! #, gcc-internal-format
! msgid "assumption ignored because it contains an await-expression"
! msgstr ""
! 
! #: cp/coroutines.cc:4125
  #, gcc-internal-format
  msgid "await expressions are not permitted in handlers"
  msgstr ""
  
! #: cp/coroutines.cc:4342
  #, gcc-internal-format
  msgid "variable length arrays are not yet supported in coroutines"
  msgstr ""
  
! #: cp/coroutines.cc:4864
  #, gcc-internal-format
  msgid ""
  "%qE is provided by %qT but is not usable with the function signature %qD"
  msgstr ""
  
! #: cp/coroutines.cc:4871
  #, gcc-internal-format
  msgid ""
  "%qE is provided by %qT but %qE is not marked %<throw()%> or %<noexcept%>"
  msgstr ""
  
! #: cp/coroutines.cc:4876
  #, gcc-internal-format
  msgid ""
  "%qE is marked %<throw()%> or %<noexcept%> but no usable "
*************** msgid ""
*** 59067,59083 ****
  msgstr ""
  
  #. Something is seriously wrong, punt.
! #: cp/coroutines.cc:4744
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %<std::nothrow%> cannot be found"
  msgstr ""
  
! #: cp/coroutines.cc:4840
  #, gcc-internal-format
  msgid "%qE is provided by %qT but is not usable with the function %qD"
  msgstr ""
  
! #: cp/coroutines.cc:5146
  #, gcc-internal-format
  msgid ""
  "no viable conversion from %<void%> provided by %<get_return_object%> to "
--- 59151,59167 ----
  msgstr ""
  
  #. Something is seriously wrong, punt.
! #: cp/coroutines.cc:4907
  #, gcc-internal-format
  msgid "%qE is provided by %qT but %<std::nothrow%> cannot be found"
  msgstr ""
  
! #: cp/coroutines.cc:5003
  #, gcc-internal-format
  msgid "%qE is provided by %qT but is not usable with the function %qD"
  msgstr ""
  
! #: cp/coroutines.cc:5277
  #, gcc-internal-format
  msgid ""
  "no viable conversion from %<void%> provided by %<get_return_object%> to "
*************** msgstr ""
*** 59111,59170 ****
  msgid "call to consteval function %qE is not a constant expression"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2050
  #, gcc-internal-format
  msgid "%<throw%> will always call %<terminate%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2053
  #, gcc-internal-format
  msgid "in C++11 destructors default to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2065
  #, gcc-internal-format
  msgid ""
  "in C++11 this %<throw%> will call %<terminate%> because destructors default "
  "to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3650
  #, gcc-internal-format
  msgid "ignoring attribute %qE after earlier %qE"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3693
  #, gcc-internal-format
  msgid "pack expansion of %qE attribute"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3696
  #, gcc-internal-format
  msgid "use fold expression in the attribute argument instead"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3735 cp/cp-gimplify.cc:3747 cp/decl.cc:4511
  #: cp/method.cc:990
  #, gcc-internal-format
  msgid "%qD is not a type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3753
  #, gcc-internal-format
  msgid "%qD is not a class type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3770
  #, gcc-internal-format
  msgid "%qD does not have %<const char *%> type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3780
  #, gcc-internal-format
  msgid "%qD does not have integral type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3792
  #, gcc-internal-format
  msgid ""
  "%<std::source_location::__impl%> does not contain only non-static data "
--- 59195,59254 ----
  msgid "call to consteval function %qE is not a constant expression"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2055
  #, gcc-internal-format
  msgid "%<throw%> will always call %<terminate%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2058
  #, gcc-internal-format
  msgid "in C++11 destructors default to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:2070
  #, gcc-internal-format
  msgid ""
  "in C++11 this %<throw%> will call %<terminate%> because destructors default "
  "to %<noexcept%>"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3655
  #, gcc-internal-format
  msgid "ignoring attribute %qE after earlier %qE"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3698
  #, gcc-internal-format
  msgid "pack expansion of %qE attribute"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3701
  #, gcc-internal-format
  msgid "use fold expression in the attribute argument instead"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3740 cp/cp-gimplify.cc:3752 cp/decl.cc:4509
  #: cp/method.cc:990
  #, gcc-internal-format
  msgid "%qD is not a type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3758
  #, gcc-internal-format
  msgid "%qD is not a class type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3775
  #, gcc-internal-format
  msgid "%qD does not have %<const char *%> type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3785
  #, gcc-internal-format
  msgid "%qD does not have integral type"
  msgstr ""
  
! #: cp/cp-gimplify.cc:3797
  #, gcc-internal-format
  msgid ""
  "%<std::source_location::__impl%> does not contain only non-static data "
*************** msgstr ""
*** 59207,59213 ****
  msgid "conversion from %qH to %qI discards qualifiers"
  msgstr ""
  
! #: cp/cvt.cc:499 cp/typeck.cc:8914
  #, gcc-internal-format
  msgid "casting %qT to %qT does not dereference pointer"
  msgstr ""
--- 59291,59297 ----
  msgid "conversion from %qH to %qI discards qualifiers"
  msgstr ""
  
! #: cp/cvt.cc:499 cp/typeck.cc:9030
  #, gcc-internal-format
  msgid "casting %qT to %qT does not dereference pointer"
  msgstr ""
*************** msgstr ""
*** 59627,59907 ****
  msgid "structured binding declaration set but not used"
  msgstr ""
  
! #: cp/decl.cc:905
  #, gcc-internal-format
  msgid "%qF declared %<static%> but never defined"
  msgstr ""
  
! #: cp/decl.cc:912
  #, gcc-internal-format
  msgid "odr-used inline variable %qD is not defined"
  msgstr ""
  
! #: cp/decl.cc:1357
  #, gcc-internal-format
  msgid "%qD was declared %<extern%> and later %<static%>"
  msgstr ""
  
! #: cp/decl.cc:1397
  #, gcc-internal-format
  msgid "declaration of %qF has a different exception specifier"
  msgstr ""
  
! #: cp/decl.cc:1427
  #, gcc-internal-format
  msgid "from previous declaration %qF"
  msgstr ""
  
! #: cp/decl.cc:1488
  #, gcc-internal-format
  msgid "redeclaration %qD differs in %qs from previous declaration"
  msgstr ""
  
! #: cp/decl.cc:1492 cp/decl.cc:17249
  #, gcc-internal-format
  msgid "previous declaration %qD"
  msgstr ""
  
! #: cp/decl.cc:1513
  #, gcc-internal-format
  msgid "redeclaration of %q#D may not have default arguments"
  msgstr ""
  
! #: cp/decl.cc:1542
  #, gcc-internal-format
  msgid ""
  "friend declaration of %q#D specifies default arguments and isn%'t the only "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:1545
  #, gcc-internal-format
  msgid "previous declaration of %q#D"
  msgstr ""
  
! #: cp/decl.cc:1598
  #, gcc-internal-format
  msgid "ambiguating new declaration %q+#D"
  msgstr ""
  
! #: cp/decl.cc:1600 cp/decl.cc:2027
  #, gcc-internal-format
  msgid "old declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:1640
  #, gcc-internal-format
  msgid "redefinition of default argument for %q+#D"
  msgstr ""
  
! #: cp/decl.cc:1642
  #, gcc-internal-format
  msgid "original definition appeared here"
  msgstr ""
  
! #: cp/decl.cc:1708
  #, gcc-internal-format
  msgid "built-in function %qD declared as non-function"
  msgstr ""
  
! #: cp/decl.cc:1721 cp/decl.cc:1847
  #, gcc-internal-format
  msgid "shadowing built-in function %q#D"
  msgstr ""
  
! #: cp/decl.cc:1722 cp/decl.cc:1848
  #, gcc-internal-format
  msgid "shadowing library function %q#D"
  msgstr ""
  
! #: cp/decl.cc:1730
  #, gcc-internal-format
  msgid "library function %q#D redeclared as non-function %q#D"
  msgstr ""
  
! #: cp/decl.cc:1734 cp/decl.cc:1795
  #, gcc-internal-format
  msgid "declaration of %q#D conflicts with built-in declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:1822
  #, gcc-internal-format
  msgid "definition of %q#D ambiguates built-in declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:1828 cp/decl.cc:1842
  #, gcc-internal-format
  msgid "new declaration %q#D ambiguates built-in declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:1832
  #, gcc-internal-format
  msgid "ignoring the %q#D declaration"
  msgstr ""
  
! #: cp/decl.cc:1937
  #, gcc-internal-format
  msgid "literal operator %q#D conflicts with raw literal operator"
  msgstr ""
  
! #: cp/decl.cc:1941
  #, gcc-internal-format
  msgid "raw literal operator %q#D conflicts with literal operator template"
  msgstr ""
  
! #: cp/decl.cc:1957
  #, gcc-internal-format
  msgid "%q#D redeclared as different kind of entity"
  msgstr ""
  
! #: cp/decl.cc:1982
  #, gcc-internal-format
  msgid "conflicting declaration of template %q#D"
  msgstr ""
  
! #: cp/decl.cc:2003
  #, gcc-internal-format
  msgid "conflicting declaration of C function %q#D"
  msgstr ""
  
! #: cp/decl.cc:2025
  #, gcc-internal-format
  msgid "ambiguating new declaration of %q#D"
  msgstr ""
  
! #: cp/decl.cc:2036
  #, gcc-internal-format
  msgid "conflicting declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:2038
  #, gcc-internal-format
  msgid "previous declaration as %q#D"
  msgstr ""
  
! #: cp/decl.cc:2049
  #, gcc-internal-format
  msgid "redeclaration of %<pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/decl.cc:2051
  #, gcc-internal-format
  msgid "previous %<pragma omp declare reduction%> declaration"
  msgstr ""
  
! #: cp/decl.cc:2109
  #, gcc-internal-format
  msgid "%q#D previously defined here"
  msgstr ""
  
! #: cp/decl.cc:2110 cp/name-lookup.cc:3388 cp/name-lookup.cc:3426
  #: cp/name-lookup.cc:3452
  #, gcc-internal-format
  msgid "%q#D previously declared here"
  msgstr ""
  
! #: cp/decl.cc:2118
  #, gcc-internal-format
  msgid "parameter declaration is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2123
  #, gcc-internal-format
  msgid "structured binding at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2127
  #, gcc-internal-format
  msgid "static structured binding is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2131
  #, gcc-internal-format
  msgid "extern structured binding is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2138
  #, gcc-internal-format
  msgid "static data member is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2141
  #, gcc-internal-format
  msgid "variable at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2144
  #, gcc-internal-format
  msgid "static variable is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2147
  #, gcc-internal-format
  msgid "extern variable is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2159
  #, gcc-internal-format
  msgid "prototype specified for %q#D"
  msgstr ""
  
! #: cp/decl.cc:2161
  #, gcc-internal-format
  msgid "previous non-prototype definition here"
  msgstr ""
  
! #: cp/decl.cc:2201
  #, gcc-internal-format
  msgid "conflicting declaration of %q#D with %qL linkage"
  msgstr ""
  
! #: cp/decl.cc:2204
  #, gcc-internal-format
  msgid "previous declaration with %qL linkage"
  msgstr ""
  
! #: cp/decl.cc:2253 cp/decl.cc:2263
  #, gcc-internal-format
  msgid "default argument given for parameter %d of %q#D"
  msgstr ""
  
! #: cp/decl.cc:2256 cp/decl.cc:2266
  #, gcc-internal-format
  msgid "previous specification in %q#D here"
  msgstr ""
  
! #: cp/decl.cc:2321 cp/decl.cc:17267
  #, gcc-internal-format
  msgid "conflicting exporting for declaration %qD"
  msgstr ""
  
! #: cp/decl.cc:2323 cp/decl.cc:17269
  #, gcc-internal-format
  msgid "previously declared here without exporting"
  msgstr ""
  
! #: cp/decl.cc:2353
  #, gcc-internal-format
  msgid "previous definition of %qD here"
  msgstr ""
  
! #: cp/decl.cc:2354
  #, gcc-internal-format
  msgid "previous declaration of %qD here"
  msgstr ""
  
! #: cp/decl.cc:2369
  #, gcc-internal-format
  msgid ""
  "function %qD declared %<[[noreturn]]%> but its first declaration was not"
  msgstr ""
  
! #: cp/decl.cc:2416
  #, gcc-internal-format
  msgid "redundant redeclaration of %qD in same scope"
  msgstr ""
  
! #: cp/decl.cc:2432
  #, gcc-internal-format
  msgid "deleted definition of %qD is not first declaration"
  msgstr ""
--- 59711,59991 ----
  msgid "structured binding declaration set but not used"
  msgstr ""
  
! #: cp/decl.cc:903
  #, gcc-internal-format
  msgid "%qF declared %<static%> but never defined"
  msgstr ""
  
! #: cp/decl.cc:910
  #, gcc-internal-format
  msgid "odr-used inline variable %qD is not defined"
  msgstr ""
  
! #: cp/decl.cc:1355
  #, gcc-internal-format
  msgid "%qD was declared %<extern%> and later %<static%>"
  msgstr ""
  
! #: cp/decl.cc:1395
  #, gcc-internal-format
  msgid "declaration of %qF has a different exception specifier"
  msgstr ""
  
! #: cp/decl.cc:1425
  #, gcc-internal-format
  msgid "from previous declaration %qF"
  msgstr ""
  
! #: cp/decl.cc:1486
  #, gcc-internal-format
  msgid "redeclaration %qD differs in %qs from previous declaration"
  msgstr ""
  
! #: cp/decl.cc:1490 cp/decl.cc:17247
  #, gcc-internal-format
  msgid "previous declaration %qD"
  msgstr ""
  
! #: cp/decl.cc:1511
  #, gcc-internal-format
  msgid "redeclaration of %q#D may not have default arguments"
  msgstr ""
  
! #: cp/decl.cc:1540
  #, gcc-internal-format
  msgid ""
  "friend declaration of %q#D specifies default arguments and isn%'t the only "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:1543
  #, gcc-internal-format
  msgid "previous declaration of %q#D"
  msgstr ""
  
! #: cp/decl.cc:1596
  #, gcc-internal-format
  msgid "ambiguating new declaration %q+#D"
  msgstr ""
  
! #: cp/decl.cc:1598 cp/decl.cc:2025
  #, gcc-internal-format
  msgid "old declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:1638
  #, gcc-internal-format
  msgid "redefinition of default argument for %q+#D"
  msgstr ""
  
! #: cp/decl.cc:1640
  #, gcc-internal-format
  msgid "original definition appeared here"
  msgstr ""
  
! #: cp/decl.cc:1706
  #, gcc-internal-format
  msgid "built-in function %qD declared as non-function"
  msgstr ""
  
! #: cp/decl.cc:1719 cp/decl.cc:1845
  #, gcc-internal-format
  msgid "shadowing built-in function %q#D"
  msgstr ""
  
! #: cp/decl.cc:1720 cp/decl.cc:1846
  #, gcc-internal-format
  msgid "shadowing library function %q#D"
  msgstr ""
  
! #: cp/decl.cc:1728
  #, gcc-internal-format
  msgid "library function %q#D redeclared as non-function %q#D"
  msgstr ""
  
! #: cp/decl.cc:1732 cp/decl.cc:1793
  #, gcc-internal-format
  msgid "declaration of %q#D conflicts with built-in declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:1820
  #, gcc-internal-format
  msgid "definition of %q#D ambiguates built-in declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:1826 cp/decl.cc:1840
  #, gcc-internal-format
  msgid "new declaration %q#D ambiguates built-in declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:1830
  #, gcc-internal-format
  msgid "ignoring the %q#D declaration"
  msgstr ""
  
! #: cp/decl.cc:1935
  #, gcc-internal-format
  msgid "literal operator %q#D conflicts with raw literal operator"
  msgstr ""
  
! #: cp/decl.cc:1939
  #, gcc-internal-format
  msgid "raw literal operator %q#D conflicts with literal operator template"
  msgstr ""
  
! #: cp/decl.cc:1955
  #, gcc-internal-format
  msgid "%q#D redeclared as different kind of entity"
  msgstr ""
  
! #: cp/decl.cc:1980
  #, gcc-internal-format
  msgid "conflicting declaration of template %q#D"
  msgstr ""
  
! #: cp/decl.cc:2001
  #, gcc-internal-format
  msgid "conflicting declaration of C function %q#D"
  msgstr ""
  
! #: cp/decl.cc:2023
  #, gcc-internal-format
  msgid "ambiguating new declaration of %q#D"
  msgstr ""
  
! #: cp/decl.cc:2034
  #, gcc-internal-format
  msgid "conflicting declaration %q#D"
  msgstr ""
  
! #: cp/decl.cc:2036
  #, gcc-internal-format
  msgid "previous declaration as %q#D"
  msgstr ""
  
! #: cp/decl.cc:2047
  #, gcc-internal-format
  msgid "redeclaration of %<pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/decl.cc:2049
  #, gcc-internal-format
  msgid "previous %<pragma omp declare reduction%> declaration"
  msgstr ""
  
! #: cp/decl.cc:2107
  #, gcc-internal-format
  msgid "%q#D previously defined here"
  msgstr ""
  
! #: cp/decl.cc:2108 cp/name-lookup.cc:3388 cp/name-lookup.cc:3426
  #: cp/name-lookup.cc:3452
  #, gcc-internal-format
  msgid "%q#D previously declared here"
  msgstr ""
  
! #: cp/decl.cc:2116
  #, gcc-internal-format
  msgid "parameter declaration is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2121
  #, gcc-internal-format
  msgid "structured binding at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2125
  #, gcc-internal-format
  msgid "static structured binding is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2129
  #, gcc-internal-format
  msgid "extern structured binding is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2136
  #, gcc-internal-format
  msgid "static data member is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2139
  #, gcc-internal-format
  msgid "variable at namespace scope is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2142
  #, gcc-internal-format
  msgid "static variable is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2145
  #, gcc-internal-format
  msgid "extern variable is not name-independent"
  msgstr ""
  
! #: cp/decl.cc:2157
  #, gcc-internal-format
  msgid "prototype specified for %q#D"
  msgstr ""
  
! #: cp/decl.cc:2159
  #, gcc-internal-format
  msgid "previous non-prototype definition here"
  msgstr ""
  
! #: cp/decl.cc:2199
  #, gcc-internal-format
  msgid "conflicting declaration of %q#D with %qL linkage"
  msgstr ""
  
! #: cp/decl.cc:2202
  #, gcc-internal-format
  msgid "previous declaration with %qL linkage"
  msgstr ""
  
! #: cp/decl.cc:2251 cp/decl.cc:2261
  #, gcc-internal-format
  msgid "default argument given for parameter %d of %q#D"
  msgstr ""
  
! #: cp/decl.cc:2254 cp/decl.cc:2264
  #, gcc-internal-format
  msgid "previous specification in %q#D here"
  msgstr ""
  
! #: cp/decl.cc:2319 cp/decl.cc:17265
  #, gcc-internal-format
  msgid "conflicting exporting for declaration %qD"
  msgstr ""
  
! #: cp/decl.cc:2321 cp/decl.cc:17267
  #, gcc-internal-format
  msgid "previously declared here without exporting"
  msgstr ""
  
! #: cp/decl.cc:2351
  #, gcc-internal-format
  msgid "previous definition of %qD here"
  msgstr ""
  
! #: cp/decl.cc:2352
  #, gcc-internal-format
  msgid "previous declaration of %qD here"
  msgstr ""
  
! #: cp/decl.cc:2367
  #, gcc-internal-format
  msgid ""
  "function %qD declared %<[[noreturn]]%> but its first declaration was not"
  msgstr ""
  
! #: cp/decl.cc:2414
  #, gcc-internal-format
  msgid "redundant redeclaration of %qD in same scope"
  msgstr ""
  
! #: cp/decl.cc:2430
  #, gcc-internal-format
  msgid "deleted definition of %qD is not first declaration"
  msgstr ""
*************** msgstr ""
*** 59914,59925 ****
  #. that specialization that would cause an implicit
  #. instantiation to take place, in every translation unit in
  #. which such a use occurs.
! #: cp/decl.cc:2949
  #, gcc-internal-format
  msgid "explicit specialization of %qD after first use"
  msgstr ""
  
! #: cp/decl.cc:3131
  #, gcc-internal-format
  msgid ""
  "%qD: visibility attribute ignored because it conflicts with previous "
--- 59998,60009 ----
  #. that specialization that would cause an implicit
  #. instantiation to take place, in every translation unit in
  #. which such a use occurs.
! #: cp/decl.cc:2947
  #, gcc-internal-format
  msgid "explicit specialization of %qD after first use"
  msgstr ""
  
! #: cp/decl.cc:3129
  #, gcc-internal-format
  msgid ""
  "%qD: visibility attribute ignored because it conflicts with previous "
*************** msgid ""
*** 59927,59959 ****
  msgstr ""
  
  #. Reject two definitions.
! #: cp/decl.cc:3409 cp/decl.cc:3438 cp/decl.cc:3476 cp/decl.cc:3493
! #: cp/decl.cc:3592
  #, gcc-internal-format
  msgid "redefinition of %q#D"
  msgstr ""
  
! #: cp/decl.cc:3425
  #, gcc-internal-format
  msgid "%qD conflicts with used function"
  msgstr ""
  
! #: cp/decl.cc:3435
  #, gcc-internal-format
  msgid "%q#D not declared in class"
  msgstr ""
  
! #: cp/decl.cc:3449 cp/decl.cc:3503
  #, gcc-internal-format
  msgid "%q+D redeclared inline with %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3452 cp/decl.cc:3506
  #, gcc-internal-format
  msgid "%q+D redeclared inline without %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3462
  #, gcc-internal-format
  msgid "comparison operator %q+D defaulted after its first declaration"
  msgstr ""
--- 60011,60043 ----
  msgstr ""
  
  #. Reject two definitions.
! #: cp/decl.cc:3407 cp/decl.cc:3436 cp/decl.cc:3474 cp/decl.cc:3491
! #: cp/decl.cc:3590
  #, gcc-internal-format
  msgid "redefinition of %q#D"
  msgstr ""
  
! #: cp/decl.cc:3423
  #, gcc-internal-format
  msgid "%qD conflicts with used function"
  msgstr ""
  
! #: cp/decl.cc:3433
  #, gcc-internal-format
  msgid "%q#D not declared in class"
  msgstr ""
  
! #: cp/decl.cc:3447 cp/decl.cc:3501
  #, gcc-internal-format
  msgid "%q+D redeclared inline with %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3450 cp/decl.cc:3504
  #, gcc-internal-format
  msgid "%q+D redeclared inline without %<gnu_inline%> attribute"
  msgstr ""
  
! #: cp/decl.cc:3460
  #, gcc-internal-format
  msgid "comparison operator %q+D defaulted after its first declaration"
  msgstr ""
*************** msgstr ""
*** 59961,60999 ****
  #. is_primary=
  #. is_partial=
  #. is_friend_decl=
! #: cp/decl.cc:3523
  #, gcc-internal-format
  msgid "redeclaration of friend %q#D may not have default template arguments"
  msgstr ""
  
! #: cp/decl.cc:3538
  #, gcc-internal-format
  msgid "thread-local declaration of %q#D follows non-thread-local declaration"
  msgstr ""
  
! #: cp/decl.cc:3541
  #, gcc-internal-format
  msgid "non-thread-local declaration of %q#D follows thread-local declaration"
  msgstr ""
  
! #: cp/decl.cc:3556 cp/decl.cc:3600 cp/name-lookup.cc:2913
  #: cp/name-lookup.cc:3420 cp/name-lookup.cc:3423 cp/name-lookup.cc:3446
  #: cp/name-lookup.cc:3449
  #, gcc-internal-format
  msgid "redeclaration of %q#D"
  msgstr ""
  
! #: cp/decl.cc:3583
  #, gcc-internal-format
  msgid "redundant redeclaration of %<constexpr%> static data member %qD"
  msgstr ""
  
! #: cp/decl.cc:3652
  #, gcc-internal-format
  msgid "local label %qE conflicts with existing label"
  msgstr ""
  
! #: cp/decl.cc:3653
  #, gcc-internal-format
  msgid "previous label"
  msgstr ""
  
! #: cp/decl.cc:3743
  #, gcc-internal-format
  msgid "jump to label %qD"
  msgstr ""
  
! #: cp/decl.cc:3744
  #, gcc-internal-format
  msgid "jump to case label"
  msgstr ""
  
! #: cp/decl.cc:3748
  #, gcc-internal-format
  msgid "  as a possible target of computed goto"
  msgstr ""
  
! #: cp/decl.cc:3750
  #, gcc-internal-format
  msgid "  from here"
  msgstr ""
  
! #: cp/decl.cc:3779 cp/decl.cc:4018
  #, gcc-internal-format
  msgid "  exits OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3804
  #, gcc-internal-format
  msgid "  crosses initialization of %q#D"
  msgstr ""
  
! #: cp/decl.cc:3816 cp/decl.cc:3984
  #, gcc-internal-format
  msgid "  enters %<try%> block"
  msgstr ""
  
! #: cp/decl.cc:3822 cp/decl.cc:3973 cp/decl.cc:3986
  #, gcc-internal-format
  msgid "  enters %<catch%> block"
  msgstr ""
  
! #: cp/decl.cc:3828 cp/decl.cc:4000
  #, gcc-internal-format
  msgid "  enters OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3834 cp/decl.cc:3988
  #, gcc-internal-format
  msgid "  enters synchronized or atomic statement"
  msgstr ""
  
! #: cp/decl.cc:3840 cp/decl.cc:3994
  #, gcc-internal-format
  msgid "  enters statement expression"
  msgstr ""
  
! #: cp/decl.cc:3847 cp/decl.cc:3990
  #, gcc-internal-format
  msgid "  enters %<constexpr if%> statement"
  msgstr ""
  
! #: cp/decl.cc:3853 cp/decl.cc:3992
  #, gcc-internal-format
  msgid "  enters %<consteval if%> statement"
  msgstr ""
  
! #: cp/decl.cc:3884 cp/decl.cc:4058
  #, gcc-internal-format
  msgid "  does not destroy %qD"
  msgstr ""
  
! #: cp/decl.cc:3886 cp/decl.cc:4042
  #, gcc-internal-format
  msgid "  does not clean up handled exception"
  msgstr ""
  
! #: cp/decl.cc:3978
  #, gcc-internal-format
  msgid "  skips initialization of %q#D"
  msgstr ""
  
! #: cp/decl.cc:4518 cp/parser.cc:7467
  #, gcc-internal-format
  msgid "%qD used without template arguments"
  msgstr ""
  
! #: cp/decl.cc:4524
  #, gcc-internal-format
  msgid "%qD is a function, not a type"
  msgstr ""
  
! #: cp/decl.cc:4535
  #, gcc-internal-format
  msgid "%q#T is not a class"
  msgstr ""
  
! #: cp/decl.cc:4574 cp/decl.cc:4675
  #, gcc-internal-format
  msgid "no class template named %q#T in %q#T"
  msgstr ""
  
! #: cp/decl.cc:4575
  #, gcc-internal-format
  msgid "no type named %q#T in %q#T"
  msgstr ""
  
! #: cp/decl.cc:4589
  #, gcc-internal-format
  msgid "lookup of %qT in %qT is ambiguous"
  msgstr ""
  
! #: cp/decl.cc:4598
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#T, which is not a class template"
  msgstr ""
  
! #: cp/decl.cc:4611
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#D, which is not a type"
  msgstr ""
  
! #: cp/decl.cc:4685
  #, gcc-internal-format
  msgid "template parameters do not match template %qD"
  msgstr ""
  
! #: cp/decl.cc:5163
  #, gcc-internal-format
  msgid "%<-faligned-new=%d%> is not a power of two"
  msgstr ""
  
! #: cp/decl.cc:5218
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5222
  #, gcc-internal-format
  msgid ""
  "%<--param destructive-interference-size=%d%> is less than %<--param l1-cache-"
  "line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5235
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5240
  #, gcc-internal-format
  msgid ""
  "%<--param constructive-interference-size=%d%> is greater than %<--param l1-"
  "cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5567
  #, gcc-internal-format
  msgid ""
  "%q#D invalid; an anonymous union may only have public non-static data members"
  msgstr ""
  
! #: cp/decl.cc:5577 cp/parser.cc:24254
  #, gcc-internal-format
  msgid "this flexibility is deprecated and will be removed"
  msgstr ""
  
! #: cp/decl.cc:5606
  #, gcc-internal-format
  msgid "anonymous struct with base classes"
  msgstr ""
  
! #: cp/decl.cc:5618
  #, gcc-internal-format
  msgid "member %q+#D with constructor not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5621
  #, gcc-internal-format
  msgid "member %q+#D with destructor not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5624
  #, gcc-internal-format
  msgid ""
  "member %q+#D with copy assignment operator not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5643
  #, gcc-internal-format
  msgid "attribute ignored in declaration of %q#T"
  msgstr ""
  
! #: cp/decl.cc:5646
  #, gcc-internal-format
  msgid "attribute for %q#T must follow the %qs keyword"
  msgstr ""
  
! #: cp/decl.cc:5688
  #, gcc-internal-format
  msgid "multiple types in one declaration"
  msgstr ""
  
! #: cp/decl.cc:5693
  #, gcc-internal-format
  msgid "redeclaration of C++ built-in type %qT"
  msgstr ""
  
! #: cp/decl.cc:5710
  #, gcc-internal-format
  msgid "%<auto%> can only be specified for variables or function declarations"
  msgstr ""
  
! #: cp/decl.cc:5743
  #, gcc-internal-format
  msgid "missing type-name in typedef-declaration"
  msgstr ""
  
! #: cp/decl.cc:5751
  #, gcc-internal-format
  msgid "ISO C++ prohibits anonymous structs"
  msgstr ""
  
! #: cp/decl.cc:5758
  #, gcc-internal-format
  msgid "%<inline%> can only be specified for functions"
  msgstr ""
  
! #: cp/decl.cc:5761
  #, gcc-internal-format
  msgid "%<virtual%> can only be specified for functions"
  msgstr ""
  
! #: cp/decl.cc:5766
  #, gcc-internal-format
  msgid "%<friend%> can only be specified inside a class"
  msgstr ""
  
! #: cp/decl.cc:5769
  #, gcc-internal-format
  msgid "%<explicit%> can only be specified for constructors"
  msgstr ""
  
! #: cp/decl.cc:5772
  #, gcc-internal-format
  msgid "a storage class can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5776
  #, gcc-internal-format
  msgid "%<const%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5780
  #, gcc-internal-format
  msgid "%<volatile%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5784
  #, gcc-internal-format
  msgid "%<__restrict%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5788
  #, gcc-internal-format
  msgid "%<__thread%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5792
  #, gcc-internal-format
  msgid "%<typedef%> was ignored in this declaration"
  msgstr ""
  
! #: cp/decl.cc:5795 cp/decl.cc:5798 cp/decl.cc:5801
  #, gcc-internal-format
  msgid "%qs cannot be used for type declarations"
  msgstr ""
  
! #: cp/decl.cc:5824
  #, gcc-internal-format
  msgid "attribute ignored in explicit instantiation %q#T"
  msgstr ""
  
! #: cp/decl.cc:5827
  #, gcc-internal-format
  msgid "no attribute can be applied to an explicit instantiation"
  msgstr ""
  
! #: cp/decl.cc:5840 cp/decl.cc:13780 cp/decl.cc:15427 cp/parser.cc:16037
! #: cp/parser.cc:21975 cp/parser.cc:28867
  #, gcc-internal-format
  msgid "attribute ignored"
  msgstr ""
  
! #: cp/decl.cc:5842 cp/decl.cc:13781
  #, gcc-internal-format
  msgid "an attribute that appertains to a type-specifier is ignored"
  msgstr ""
  
! #: cp/decl.cc:5917
  #, gcc-internal-format
  msgid "ignoring attributes applied to class type %qT outside of definition"
  msgstr ""
  
  #. A template type parameter or other dependent type.
! #: cp/decl.cc:5921
  #, gcc-internal-format
  msgid ""
  "ignoring attributes applied to dependent type %qT without an associated "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:5987 cp/decl2.cc:1069 cp/decl2.cc:1271
  #, gcc-internal-format
  msgid "typedef %qD is initialized (use %qs instead)"
  msgstr ""
  
! #: cp/decl.cc:6000
  #, gcc-internal-format
  msgid "declaration of %q#D has %<extern%> and is initialized"
  msgstr ""
  
! #: cp/decl.cc:6038
  #, gcc-internal-format
  msgid "definition of %q#D is marked %<dllimport%>"
  msgstr ""
  
! #: cp/decl.cc:6065
  #, gcc-internal-format
  msgid "%q+#D is not a static data member of %q#T"
  msgstr ""
  
! #: cp/decl.cc:6074
  #, gcc-internal-format
  msgid "non-member-template declaration of %qD"
  msgstr ""
  
! #: cp/decl.cc:6075
  #, gcc-internal-format
  msgid "does not match member template declaration here"
  msgstr ""
  
! #: cp/decl.cc:6087
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:6099
  #, gcc-internal-format
  msgid "duplicate initialization of %qD"
  msgstr ""
  
! #: cp/decl.cc:6149 cp/decl.cc:6153
  #, gcc-internal-format
  msgid "declaration of %q#D outside of class is not definition"
  msgstr ""
  
! #: cp/decl.cc:6171
  #, gcc-internal-format
  msgid ""
  "block-scope extern declaration %q#D must not be attached to a named module"
  msgstr ""
  
! #: cp/decl.cc:6207
  #, gcc-internal-format
  msgid ""
  "%qD defined %<thread_local%> in %qs function only available with %<-std=c+"
  "+23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:6213
  #, gcc-internal-format
  msgid ""
  "%qD defined %<static%> in %qs function only available with %<-std=c++23%> or "
  "%<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:6279
  #, gcc-internal-format
  msgid "variable %q#D has initializer but incomplete type"
  msgstr ""
  
! #: cp/decl.cc:6288 cp/decl.cc:7763
  #, gcc-internal-format
  msgid "elements of array %q#D have incomplete type"
  msgstr ""
  
! #: cp/decl.cc:6299
  #, gcc-internal-format
  msgid "aggregate %q#D has incomplete type and cannot be defined"
  msgstr ""
  
! #: cp/decl.cc:6369
  #, gcc-internal-format
  msgid "%qD declared as reference but not initialized"
  msgstr ""
  
! #: cp/decl.cc:6452
  #, gcc-internal-format
  msgid "name used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6458
  #, gcc-internal-format
  msgid "name %qD used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6477
  #, gcc-internal-format
  msgid "non-trivial designated initializers not supported"
  msgstr ""
  
! #: cp/decl.cc:6481
  #, gcc-internal-format
  msgid "C99 designator %qE is not an integral constant-expression"
  msgstr ""
  
! #: cp/decl.cc:6546
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qD"
  msgstr ""
  
! #: cp/decl.cc:6553
  #, gcc-internal-format
  msgid "array size missing in %qD"
  msgstr ""
  
! #: cp/decl.cc:6565
  #, gcc-internal-format
  msgid "zero-size array %qD"
  msgstr ""
  
! #: cp/decl.cc:6605
  #, gcc-internal-format
  msgid "storage size of %qD isn%'t known"
  msgstr ""
  
! #: cp/decl.cc:6630
  #, gcc-internal-format
  msgid "storage size of %qD isn%'t constant"
  msgstr ""
  
! #: cp/decl.cc:6732
  #, gcc-internal-format
  msgid ""
  "sorry: semantics of inline variable %q#D are wrong (you%'ll wind up with "
  "multiple copies)"
  msgstr ""
  
! #: cp/decl.cc:6736
  #, gcc-internal-format
  msgid ""
  "sorry: semantics of inline function static data %q#D are wrong (you%'ll wind "
  "up with multiple copies)"
  msgstr ""
  
! #: cp/decl.cc:6743
  #, gcc-internal-format
  msgid "you can work around this by removing the initializer"
  msgstr ""
  
! #: cp/decl.cc:6786 rust/backend/rust-tree.cc:3265
  #, gcc-internal-format
  msgid "uninitialized %<const %D%>"
  msgstr ""
  
! #: cp/decl.cc:6793 rust/backend/rust-tree.cc:3272
  #, gcc-internal-format
  msgid "uninitialized variable %qD in %<constexpr%> function"
  msgstr ""
  
! #: cp/decl.cc:6802 rust/backend/rust-tree.cc:3281
  #, gcc-internal-format
  msgid "uninitialized variable %qD in %<constexpr%> context"
  msgstr ""
  
! #: cp/decl.cc:6810
  #, gcc-internal-format
  msgid "%q#T has no user-provided default constructor"
  msgstr ""
  
! #: cp/decl.cc:6814
  #, gcc-internal-format
  msgid ""
  "constructor is not user-provided because it is explicitly defaulted in the "
  "class body"
  msgstr ""
  
! #: cp/decl.cc:6817
  #, gcc-internal-format
  msgid "and the implicitly-defined constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/decl.cc:7117
  #, gcc-internal-format
  msgid "invalid type %qT as initializer for a vector of type %qT"
  msgstr ""
  
! #: cp/decl.cc:7189
  #, gcc-internal-format
  msgid "initializer for %qT must be brace-enclosed"
  msgstr ""
  
! #: cp/decl.cc:7234
  #, gcc-internal-format
  msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
  msgstr ""
  
! #: cp/decl.cc:7251 cp/init.cc:3424 cp/search.cc:1244
  #, gcc-internal-format
  msgid "request for member %qD is ambiguous"
  msgstr ""
  
! #: cp/decl.cc:7256
  #, gcc-internal-format
  msgid "%qT has no non-static data member named %qD"
  msgstr ""
  
! #: cp/decl.cc:7281
  #, gcc-internal-format
  msgid "%qD is not a direct member of %qT"
  msgstr ""
  
! #: cp/decl.cc:7337
  #, gcc-internal-format
  msgid "invalid initializer for %q#D"
  msgstr ""
  
! #: cp/decl.cc:7391
  #, gcc-internal-format
  msgid "C99 designator %qE outside aggregate initializer"
  msgstr ""
  
! #: cp/decl.cc:7430 cp/decl.cc:7721 cp/typeck2.cc:1634 cp/typeck2.cc:1969
  #: cp/typeck2.cc:2017 cp/typeck2.cc:2064
  #, gcc-internal-format
  msgid "too many initializers for %qT"
  msgstr ""
  
! #: cp/decl.cc:7473
  #, gcc-internal-format
  msgid "braces around scalar initializer for type %qT"
  msgstr ""
  
! #: cp/decl.cc:7483
  #, gcc-internal-format
  msgid "too many braces around scalar initializer for type %qT"
  msgstr ""
  
! #: cp/decl.cc:7617
  #, gcc-internal-format
  msgid "missing braces around initializer for %qT"
  msgstr ""
  
! #: cp/decl.cc:7751
  #, gcc-internal-format
  msgid "structured binding has incomplete type %qT"
  msgstr ""
  
! #: cp/decl.cc:7765
  #, gcc-internal-format
  msgid "elements of array %q#T have incomplete type"
  msgstr ""
  
! #: cp/decl.cc:7778
  #, gcc-internal-format
  msgid "variable-sized compound literal"
  msgstr ""
  
! #: cp/decl.cc:7834
  #, gcc-internal-format
  msgid "%q#D has incomplete type"
  msgstr ""
  
! #: cp/decl.cc:7855
  #, gcc-internal-format
  msgid "scalar object %qD requires one element in initializer"
  msgstr ""
  
! #: cp/decl.cc:7900
  #, gcc-internal-format
  msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
  msgstr ""
  
! #: cp/decl.cc:8043
  #, gcc-internal-format
  msgid "array %qD initialized by parenthesized string literal %qE"
  msgstr ""
  
! #: cp/decl.cc:8083
  #, gcc-internal-format
  msgid "initializer invalid for static member with constructor"
  msgstr ""
  
! #: cp/decl.cc:8085
  #, gcc-internal-format
  msgid "non-constant in-class initialization invalid for static member %qD"
  msgstr ""
  
! #: cp/decl.cc:8088
  #, gcc-internal-format
  msgid ""
  "non-constant in-class initialization invalid for non-inline static member %qD"
  msgstr ""
  
! #: cp/decl.cc:8093
  #, gcc-internal-format
  msgid "(an out of class initialization is required)"
  msgstr ""
  
! #: cp/decl.cc:8295
  #, gcc-internal-format
  msgid "reference %qD is initialized with itself"
  msgstr ""
  
! #: cp/decl.cc:8497
  #, gcc-internal-format
  msgid "argument %d of %qE must be of %<omp_interop_t%>"
  msgstr ""
  
! #: cp/decl.cc:8668
  #, gcc-internal-format
  msgid "could not find variant declaration"
  msgstr ""
  
! #: cp/decl.cc:8692
  #, gcc-internal-format
  msgid "%<declare variant%> on constructor %qD"
  msgstr ""
  
! #: cp/decl.cc:8697
  #, gcc-internal-format
  msgid "%<declare variant%> on destructor %qD"
  msgstr ""
  
! #: cp/decl.cc:8702
  #, gcc-internal-format
  msgid "%<declare variant%> on defaulted %qD"
  msgstr ""
  
! #: cp/decl.cc:8707
  #, gcc-internal-format
  msgid "%<declare variant%> on deleted %qD"
  msgstr ""
  
! #: cp/decl.cc:8712
  #, gcc-internal-format
  msgid "%<declare variant%> on virtual %qD"
  msgstr ""
  
! #: cp/decl.cc:8777
  #, gcc-internal-format
  msgid "assignment (not initialization) in declaration"
  msgstr ""
  
! #: cp/decl.cc:8798 cp/decl.cc:15827
  #, gcc-internal-format
  msgid "ISO C++17 does not allow %<register%> storage class specifier"
  msgstr ""
  
! #: cp/decl.cc:8802 cp/decl.cc:15831
  #, gcc-internal-format
  msgid "%<register%> storage class specifier used"
  msgstr ""
  
! #: cp/decl.cc:8847 cp/decl.cc:15794
  #, gcc-internal-format
  msgid "declaration of %q#D has no initializer"
  msgstr ""
  
! #: cp/decl.cc:8883
  #, gcc-internal-format
  msgid ""
  "initializer for %<decltype(auto) %D%> has function type; did you forget the "
  "%<()%>?"
  msgstr ""
  
! #: cp/decl.cc:8895
  #, gcc-internal-format
  msgid "deduced type %qT for %qD is incomplete"
  msgstr ""
  
  #. [basic.start.main]/3: A program that defines main as deleted
  #. is ill-formed.
! #: cp/decl.cc:8946
  #, gcc-internal-format
  msgid "%<::main%> cannot be deleted"
  msgstr ""
  
! #: cp/decl.cc:9100
  #, gcc-internal-format
  msgid "shadowing previous type declaration of %q#D"
  msgstr ""
  
! #: cp/decl.cc:9143
  #, gcc-internal-format
  msgid ""
  "%<constinit%> can only be applied to a variable with static or thread "
  "storage duration"
  msgstr ""
  
! #: cp/decl.cc:9351
  #, gcc-internal-format
  msgid "function %q#D is initialized like a variable"
  msgstr ""
  
! #: cp/decl.cc:9583
  #, gcc-internal-format
  msgid "cannot decompose lambda closure type %qT"
  msgstr ""
  
! #: cp/decl.cc:9584
  #, gcc-internal-format
  msgid "lambda declared here"
  msgstr ""
  
! #: cp/decl.cc:9600
  #, gcc-internal-format
  msgid ""
  "cannot decompose class type %qT because it has an anonymous struct member"
  msgstr ""
  
! #: cp/decl.cc:9603
  #, gcc-internal-format
  msgid ""
  "cannot decompose class type %qT because it has an anonymous union member"
  msgstr ""
  
! #: cp/decl.cc:9611
  #, gcc-internal-format
  msgid "cannot decompose inaccessible member %qD of %qT"
  msgstr ""
  
! #: cp/decl.cc:9634
  #, gcc-internal-format
  msgid "in base class of %qT"
  msgstr ""
  
! #: cp/decl.cc:9641
  #, gcc-internal-format
  msgid ""
  "cannot decompose class type %qT: both it and its base class %qT have non-"
  "static data members"
  msgstr ""
  
! #: cp/decl.cc:9650
  #, gcc-internal-format
  msgid ""
  "cannot decompose class type %qT: its base classes %qT and %qT have non-"
  "static data members"
  msgstr ""
  
! #: cp/decl.cc:9888
  #, gcc-internal-format
  msgid "structured binding refers to incomplete type %qT"
  msgstr ""
  
! #: cp/decl.cc:9904
  #, gcc-internal-format
  msgid "array initializer for structured binding declaration in condition"
  msgstr ""
  
! #: cp/decl.cc:9910
  #, gcc-internal-format
  msgid "cannot decompose variable length array %qT"
  msgstr ""
  
! #: cp/decl.cc:9920 cp/decl.cc:10000
  #, gcc-internal-format, gfc-internal-format
  msgid "%u name provided for structured binding"
  msgid_plural "%u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9924
  #, gcc-internal-format, gfc-internal-format
  msgid "only %u name provided for structured binding"
  msgid_plural "only %u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9927
  #, gcc-internal-format
  msgid "while %qT decomposes into %wu element"
  msgid_plural "while %qT decomposes into %wu elements"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9968
  #, gcc-internal-format
  msgid "cannot decompose variable length vector %qT"
  msgstr ""
  
! #: cp/decl.cc:9992
  #, gcc-internal-format
  msgid "%<std::tuple_size<%T>::value%> is not an integral constant expression"
  msgstr ""
  
! #: cp/decl.cc:10002
  #, gcc-internal-format
  msgid "while %qT decomposes into %E elements"
  msgstr ""
  
! #: cp/decl.cc:10049
  #, gcc-internal-format
  msgid "%<std::tuple_element<%u, %T>::type%> is %<void%>"
  msgstr ""
  
! #: cp/decl.cc:10055
  #, gcc-internal-format
  msgid "in initialization of structured binding variable %qD"
  msgstr ""
  
! #: cp/decl.cc:10084
  #, gcc-internal-format
  msgid "cannot decompose union type %qT"
  msgstr ""
  
! #: cp/decl.cc:10089
  #, gcc-internal-format
  msgid "cannot decompose non-array non-class type %qT"
  msgstr ""
  
! #: cp/decl.cc:10095
  #, gcc-internal-format
  msgid "structured binding refers to incomplete class type %qT"
  msgstr ""
  
! #: cp/decl.cc:10104
  #, gcc-internal-format
  msgid "cannot decompose class type %qT without non-static data members"
  msgstr ""
  
! #: cp/decl.cc:10600
  #, gcc-internal-format
  msgid ""
  "non-local variable %qD declared %<__thread%> needs dynamic initialization"
  msgstr ""
  
! #: cp/decl.cc:10603
  #, gcc-internal-format
  msgid ""
  "non-local variable %qD declared %<__thread%> has a non-trivial destructor"
  msgstr ""
  
! #: cp/decl.cc:10608
  #, gcc-internal-format
  msgid "C++11 %<thread_local%> allows dynamic initialization and destruction"
  msgstr ""
  
! #: cp/decl.cc:10827
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qT"
  msgstr ""
  
! #: cp/decl.cc:10831
  #, gcc-internal-format
  msgid "array size missing in %qT"
  msgstr ""
  
! #: cp/decl.cc:10834
  #, gcc-internal-format
  msgid "zero-size array %qT"
  msgstr ""
  
! #: cp/decl.cc:10850
  #, gcc-internal-format
  msgid "destructor for alien class %qT cannot be a member"
  msgstr ""
  
! #: cp/decl.cc:10852
  #, gcc-internal-format
  msgid "constructor for alien class %qT cannot be a member"
  msgstr ""
  
! #: cp/decl.cc:10878
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> variable"
  msgstr ""
  
! #: cp/decl.cc:10880
  #, gcc-internal-format
  msgid ""
  "%<const%> and %<volatile%> function specifiers on %qD invalid in variable "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:10886
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> parameter"
  msgstr ""
  
! #: cp/decl.cc:10889
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> parameter"
  msgstr ""
  
! #: cp/decl.cc:10891
  #, gcc-internal-format
  msgid ""
  "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:10897
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> type"
  msgstr ""
  
! #: cp/decl.cc:10900
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> type"
  msgstr ""
  
! #: cp/decl.cc:10902
  #, gcc-internal-format
  msgid ""
  "%<const%> and %<volatile%> function specifiers on %qD invalid in type "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:10908
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> field"
  msgstr ""
  
! #: cp/decl.cc:10911
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> field"
  msgstr ""
  
! #: cp/decl.cc:10913
  #, gcc-internal-format
  msgid ""
  "%<const%> and %<volatile%> function specifiers on %qD invalid in field "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:10920
  #, gcc-internal-format
  msgid "%q+D declared as a friend"
  msgstr ""
  
! #: cp/decl.cc:10927
  #, gcc-internal-format
  msgid "%q+D declared with an exception specification"
  msgstr ""
  
! #: cp/decl.cc:10959
  #, gcc-internal-format
  msgid "definition of %qD is not in namespace enclosing %qT"
  msgstr ""
  
! #: cp/decl.cc:10999
  #, gcc-internal-format
  msgid "static member function %q#D declared with type qualifiers"
  msgstr ""
  
! #: cp/decl.cc:11075
  #, gcc-internal-format
  msgid "function concepts are no longer supported"
  msgstr ""
  
! #: cp/decl.cc:11113
  #, gcc-internal-format
  msgid "constraints on a non-templated function"
  msgstr ""
  
! #: cp/decl.cc:11115
  #, gcc-internal-format
  msgid "constrained non-template friend declaration must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11122
  #, gcc-internal-format
  msgid ""
  "friend function template with constraints that depend on outer template "
  "parameters must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11174
  #, gcc-internal-format
  msgid "defining explicit specialization %qD in friend declaration"
  msgstr ""
  
! #: cp/decl.cc:11185
  #, gcc-internal-format
  msgid "invalid use of template-id %qD in declaration of primary template"
  msgstr ""
  
! #: cp/decl.cc:11203
  #, gcc-internal-format
  msgid ""
  "default arguments are not allowed in declaration of friend template "
  "specialization %qD"
  msgstr ""
  
! #: cp/decl.cc:11212
  #, gcc-internal-format
  msgid ""
  "%<inline%> is not allowed in declaration of friend template specialization "
--- 60045,61083 ----
  #. is_primary=
  #. is_partial=
  #. is_friend_decl=
! #: cp/decl.cc:3521
  #, gcc-internal-format
  msgid "redeclaration of friend %q#D may not have default template arguments"
  msgstr ""
  
! #: cp/decl.cc:3536
  #, gcc-internal-format
  msgid "thread-local declaration of %q#D follows non-thread-local declaration"
  msgstr ""
  
! #: cp/decl.cc:3539
  #, gcc-internal-format
  msgid "non-thread-local declaration of %q#D follows thread-local declaration"
  msgstr ""
  
! #: cp/decl.cc:3554 cp/decl.cc:3598 cp/name-lookup.cc:2913
  #: cp/name-lookup.cc:3420 cp/name-lookup.cc:3423 cp/name-lookup.cc:3446
  #: cp/name-lookup.cc:3449
  #, gcc-internal-format
  msgid "redeclaration of %q#D"
  msgstr ""
  
! #: cp/decl.cc:3581
  #, gcc-internal-format
  msgid "redundant redeclaration of %<constexpr%> static data member %qD"
  msgstr ""
  
! #: cp/decl.cc:3650
  #, gcc-internal-format
  msgid "local label %qE conflicts with existing label"
  msgstr ""
  
! #: cp/decl.cc:3651
  #, gcc-internal-format
  msgid "previous label"
  msgstr ""
  
! #: cp/decl.cc:3741
  #, gcc-internal-format
  msgid "jump to label %qD"
  msgstr ""
  
! #: cp/decl.cc:3742
  #, gcc-internal-format
  msgid "jump to case label"
  msgstr ""
  
! #: cp/decl.cc:3746
  #, gcc-internal-format
  msgid "  as a possible target of computed goto"
  msgstr ""
  
! #: cp/decl.cc:3748
  #, gcc-internal-format
  msgid "  from here"
  msgstr ""
  
! #: cp/decl.cc:3777 cp/decl.cc:4016
  #, gcc-internal-format
  msgid "  exits OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3802
  #, gcc-internal-format
  msgid "  crosses initialization of %q#D"
  msgstr ""
  
! #: cp/decl.cc:3814 cp/decl.cc:3982
  #, gcc-internal-format
  msgid "  enters %<try%> block"
  msgstr ""
  
! #: cp/decl.cc:3820 cp/decl.cc:3971 cp/decl.cc:3984
  #, gcc-internal-format
  msgid "  enters %<catch%> block"
  msgstr ""
  
! #: cp/decl.cc:3826 cp/decl.cc:3998
  #, gcc-internal-format
  msgid "  enters OpenMP structured block"
  msgstr ""
  
! #: cp/decl.cc:3832 cp/decl.cc:3986
  #, gcc-internal-format
  msgid "  enters synchronized or atomic statement"
  msgstr ""
  
! #: cp/decl.cc:3838 cp/decl.cc:3992
  #, gcc-internal-format
  msgid "  enters statement expression"
  msgstr ""
  
! #: cp/decl.cc:3845 cp/decl.cc:3988
  #, gcc-internal-format
  msgid "  enters %<constexpr if%> statement"
  msgstr ""
  
! #: cp/decl.cc:3851 cp/decl.cc:3990
  #, gcc-internal-format
  msgid "  enters %<consteval if%> statement"
  msgstr ""
  
! #: cp/decl.cc:3882 cp/decl.cc:4056
  #, gcc-internal-format
  msgid "  does not destroy %qD"
  msgstr ""
  
! #: cp/decl.cc:3884 cp/decl.cc:4040
  #, gcc-internal-format
  msgid "  does not clean up handled exception"
  msgstr ""
  
! #: cp/decl.cc:3976
  #, gcc-internal-format
  msgid "  skips initialization of %q#D"
  msgstr ""
  
! #: cp/decl.cc:4516 cp/parser.cc:7467
  #, gcc-internal-format
  msgid "%qD used without template arguments"
  msgstr ""
  
! #: cp/decl.cc:4522
  #, gcc-internal-format
  msgid "%qD is a function, not a type"
  msgstr ""
  
! #: cp/decl.cc:4533
  #, gcc-internal-format
  msgid "%q#T is not a class"
  msgstr ""
  
! #: cp/decl.cc:4572 cp/decl.cc:4673
  #, gcc-internal-format
  msgid "no class template named %q#T in %q#T"
  msgstr ""
  
! #: cp/decl.cc:4573
  #, gcc-internal-format
  msgid "no type named %q#T in %q#T"
  msgstr ""
  
! #: cp/decl.cc:4587
  #, gcc-internal-format
  msgid "lookup of %qT in %qT is ambiguous"
  msgstr ""
  
! #: cp/decl.cc:4596
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#T, which is not a class template"
  msgstr ""
  
! #: cp/decl.cc:4609
  #, gcc-internal-format
  msgid "%<typename %T::%D%> names %q#D, which is not a type"
  msgstr ""
  
! #: cp/decl.cc:4683
  #, gcc-internal-format
  msgid "template parameters do not match template %qD"
  msgstr ""
  
! #: cp/decl.cc:5161
  #, gcc-internal-format
  msgid "%<-faligned-new=%d%> is not a power of two"
  msgstr ""
  
! #: cp/decl.cc:5216
  #, gcc-internal-format
  msgid "%<--param destructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5220
  #, gcc-internal-format
  msgid ""
  "%<--param destructive-interference-size=%d%> is less than %<--param l1-cache-"
  "line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5233
  #, gcc-internal-format
  msgid "%<--param constructive-interference-size=%d%> is less than %d"
  msgstr ""
  
! #: cp/decl.cc:5238
  #, gcc-internal-format
  msgid ""
  "%<--param constructive-interference-size=%d%> is greater than %<--param l1-"
  "cache-line-size=%d%>"
  msgstr ""
  
! #: cp/decl.cc:5565
  #, gcc-internal-format
  msgid ""
  "%q#D invalid; an anonymous union may only have public non-static data members"
  msgstr ""
  
! #: cp/decl.cc:5575 cp/parser.cc:24258
  #, gcc-internal-format
  msgid "this flexibility is deprecated and will be removed"
  msgstr ""
  
! #: cp/decl.cc:5604
  #, gcc-internal-format
  msgid "anonymous struct with base classes"
  msgstr ""
  
! #: cp/decl.cc:5616
  #, gcc-internal-format
  msgid "member %q+#D with constructor not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5619
  #, gcc-internal-format
  msgid "member %q+#D with destructor not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5622
  #, gcc-internal-format
  msgid ""
  "member %q+#D with copy assignment operator not allowed in anonymous aggregate"
  msgstr ""
  
! #: cp/decl.cc:5641
  #, gcc-internal-format
  msgid "attribute ignored in declaration of %q#T"
  msgstr ""
  
! #: cp/decl.cc:5644
  #, gcc-internal-format
  msgid "attribute for %q#T must follow the %qs keyword"
  msgstr ""
  
! #: cp/decl.cc:5686
  #, gcc-internal-format
  msgid "multiple types in one declaration"
  msgstr ""
  
! #: cp/decl.cc:5691
  #, gcc-internal-format
  msgid "redeclaration of C++ built-in type %qT"
  msgstr ""
  
! #: cp/decl.cc:5708
  #, gcc-internal-format
  msgid "%<auto%> can only be specified for variables or function declarations"
  msgstr ""
  
! #: cp/decl.cc:5741
  #, gcc-internal-format
  msgid "missing type-name in typedef-declaration"
  msgstr ""
  
! #: cp/decl.cc:5749
  #, gcc-internal-format
  msgid "ISO C++ prohibits anonymous structs"
  msgstr ""
  
! #: cp/decl.cc:5756
  #, gcc-internal-format
  msgid "%<inline%> can only be specified for functions"
  msgstr ""
  
! #: cp/decl.cc:5759
  #, gcc-internal-format
  msgid "%<virtual%> can only be specified for functions"
  msgstr ""
  
! #: cp/decl.cc:5764
  #, gcc-internal-format
  msgid "%<friend%> can only be specified inside a class"
  msgstr ""
  
! #: cp/decl.cc:5767
  #, gcc-internal-format
  msgid "%<explicit%> can only be specified for constructors"
  msgstr ""
  
! #: cp/decl.cc:5770
  #, gcc-internal-format
  msgid "a storage class can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5774
  #, gcc-internal-format
  msgid "%<const%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5778
  #, gcc-internal-format
  msgid "%<volatile%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5782
  #, gcc-internal-format
  msgid "%<__restrict%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5786
  #, gcc-internal-format
  msgid "%<__thread%> can only be specified for objects and functions"
  msgstr ""
  
! #: cp/decl.cc:5790
  #, gcc-internal-format
  msgid "%<typedef%> was ignored in this declaration"
  msgstr ""
  
! #: cp/decl.cc:5793 cp/decl.cc:5796 cp/decl.cc:5799
  #, gcc-internal-format
  msgid "%qs cannot be used for type declarations"
  msgstr ""
  
! #: cp/decl.cc:5822
  #, gcc-internal-format
  msgid "attribute ignored in explicit instantiation %q#T"
  msgstr ""
  
! #: cp/decl.cc:5825
  #, gcc-internal-format
  msgid "no attribute can be applied to an explicit instantiation"
  msgstr ""
  
! #: cp/decl.cc:5838 cp/decl.cc:13778 cp/decl.cc:15425 cp/parser.cc:16040
! #: cp/parser.cc:21979 cp/parser.cc:28921
  #, gcc-internal-format
  msgid "attribute ignored"
  msgstr ""
  
! #: cp/decl.cc:5840 cp/decl.cc:13779
  #, gcc-internal-format
  msgid "an attribute that appertains to a type-specifier is ignored"
  msgstr ""
  
! #: cp/decl.cc:5915
  #, gcc-internal-format
  msgid "ignoring attributes applied to class type %qT outside of definition"
  msgstr ""
  
  #. A template type parameter or other dependent type.
! #: cp/decl.cc:5919
  #, gcc-internal-format
  msgid ""
  "ignoring attributes applied to dependent type %qT without an associated "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:5985 cp/decl2.cc:1069 cp/decl2.cc:1271
  #, gcc-internal-format
  msgid "typedef %qD is initialized (use %qs instead)"
  msgstr ""
  
! #: cp/decl.cc:5998
  #, gcc-internal-format
  msgid "declaration of %q#D has %<extern%> and is initialized"
  msgstr ""
  
! #: cp/decl.cc:6036
  #, gcc-internal-format
  msgid "definition of %q#D is marked %<dllimport%>"
  msgstr ""
  
! #: cp/decl.cc:6063
  #, gcc-internal-format
  msgid "%q+#D is not a static data member of %q#T"
  msgstr ""
  
! #: cp/decl.cc:6072
  #, gcc-internal-format
  msgid "non-member-template declaration of %qD"
  msgstr ""
  
! #: cp/decl.cc:6073
  #, gcc-internal-format
  msgid "does not match member template declaration here"
  msgstr ""
  
! #: cp/decl.cc:6085
  #, gcc-internal-format
  msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:6097
  #, gcc-internal-format
  msgid "duplicate initialization of %qD"
  msgstr ""
  
! #: cp/decl.cc:6147 cp/decl.cc:6151
  #, gcc-internal-format
  msgid "declaration of %q#D outside of class is not definition"
  msgstr ""
  
! #: cp/decl.cc:6169
  #, gcc-internal-format
  msgid ""
  "block-scope extern declaration %q#D must not be attached to a named module"
  msgstr ""
  
! #: cp/decl.cc:6205
  #, gcc-internal-format
  msgid ""
  "%qD defined %<thread_local%> in %qs function only available with %<-std=c+"
  "+23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:6211
  #, gcc-internal-format
  msgid ""
  "%qD defined %<static%> in %qs function only available with %<-std=c++23%> or "
  "%<-std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:6277
  #, gcc-internal-format
  msgid "variable %q#D has initializer but incomplete type"
  msgstr ""
  
! #: cp/decl.cc:6286 cp/decl.cc:7761
  #, gcc-internal-format
  msgid "elements of array %q#D have incomplete type"
  msgstr ""
  
! #: cp/decl.cc:6297
  #, gcc-internal-format
  msgid "aggregate %q#D has incomplete type and cannot be defined"
  msgstr ""
  
! #: cp/decl.cc:6367
  #, gcc-internal-format
  msgid "%qD declared as reference but not initialized"
  msgstr ""
  
! #: cp/decl.cc:6450
  #, gcc-internal-format
  msgid "name used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6456
  #, gcc-internal-format
  msgid "name %qD used in a GNU-style designated initializer for an array"
  msgstr ""
  
! #: cp/decl.cc:6475
  #, gcc-internal-format
  msgid "non-trivial designated initializers not supported"
  msgstr ""
  
! #: cp/decl.cc:6479
  #, gcc-internal-format
  msgid "C99 designator %qE is not an integral constant-expression"
  msgstr ""
  
! #: cp/decl.cc:6544
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qD"
  msgstr ""
  
! #: cp/decl.cc:6551
  #, gcc-internal-format
  msgid "array size missing in %qD"
  msgstr ""
  
! #: cp/decl.cc:6563
  #, gcc-internal-format
  msgid "zero-size array %qD"
  msgstr ""
  
! #: cp/decl.cc:6603
  #, gcc-internal-format
  msgid "storage size of %qD isn%'t known"
  msgstr ""
  
! #: cp/decl.cc:6628
  #, gcc-internal-format
  msgid "storage size of %qD isn%'t constant"
  msgstr ""
  
! #: cp/decl.cc:6730
  #, gcc-internal-format
  msgid ""
  "sorry: semantics of inline variable %q#D are wrong (you%'ll wind up with "
  "multiple copies)"
  msgstr ""
  
! #: cp/decl.cc:6734
  #, gcc-internal-format
  msgid ""
  "sorry: semantics of inline function static data %q#D are wrong (you%'ll wind "
  "up with multiple copies)"
  msgstr ""
  
! #: cp/decl.cc:6741
  #, gcc-internal-format
  msgid "you can work around this by removing the initializer"
  msgstr ""
  
! #: cp/decl.cc:6784 rust/backend/rust-tree.cc:3265
  #, gcc-internal-format
  msgid "uninitialized %<const %D%>"
  msgstr ""
  
! #: cp/decl.cc:6791 rust/backend/rust-tree.cc:3272
  #, gcc-internal-format
  msgid "uninitialized variable %qD in %<constexpr%> function"
  msgstr ""
  
! #: cp/decl.cc:6800 rust/backend/rust-tree.cc:3281
  #, gcc-internal-format
  msgid "uninitialized variable %qD in %<constexpr%> context"
  msgstr ""
  
! #: cp/decl.cc:6808
  #, gcc-internal-format
  msgid "%q#T has no user-provided default constructor"
  msgstr ""
  
! #: cp/decl.cc:6812
  #, gcc-internal-format
  msgid ""
  "constructor is not user-provided because it is explicitly defaulted in the "
  "class body"
  msgstr ""
  
! #: cp/decl.cc:6815
  #, gcc-internal-format
  msgid "and the implicitly-defined constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/decl.cc:7115
  #, gcc-internal-format
  msgid "invalid type %qT as initializer for a vector of type %qT"
  msgstr ""
  
! #: cp/decl.cc:7187
  #, gcc-internal-format
  msgid "initializer for %qT must be brace-enclosed"
  msgstr ""
  
! #: cp/decl.cc:7232
  #, gcc-internal-format
  msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
  msgstr ""
  
! #: cp/decl.cc:7249 cp/init.cc:3424 cp/search.cc:1244
  #, gcc-internal-format
  msgid "request for member %qD is ambiguous"
  msgstr ""
  
! #: cp/decl.cc:7254
  #, gcc-internal-format
  msgid "%qT has no non-static data member named %qD"
  msgstr ""
  
! #: cp/decl.cc:7279
  #, gcc-internal-format
  msgid "%qD is not a direct member of %qT"
  msgstr ""
  
! #: cp/decl.cc:7335
  #, gcc-internal-format
  msgid "invalid initializer for %q#D"
  msgstr ""
  
! #: cp/decl.cc:7389
  #, gcc-internal-format
  msgid "C99 designator %qE outside aggregate initializer"
  msgstr ""
  
! #: cp/decl.cc:7428 cp/decl.cc:7719 cp/typeck2.cc:1634 cp/typeck2.cc:1969
  #: cp/typeck2.cc:2017 cp/typeck2.cc:2064
  #, gcc-internal-format
  msgid "too many initializers for %qT"
  msgstr ""
  
! #: cp/decl.cc:7471
  #, gcc-internal-format
  msgid "braces around scalar initializer for type %qT"
  msgstr ""
  
! #: cp/decl.cc:7481
  #, gcc-internal-format
  msgid "too many braces around scalar initializer for type %qT"
  msgstr ""
  
! #: cp/decl.cc:7615
  #, gcc-internal-format
  msgid "missing braces around initializer for %qT"
  msgstr ""
  
! #: cp/decl.cc:7749
  #, gcc-internal-format
  msgid "structured binding has incomplete type %qT"
  msgstr ""
  
! #: cp/decl.cc:7763
  #, gcc-internal-format
  msgid "elements of array %q#T have incomplete type"
  msgstr ""
  
! #: cp/decl.cc:7776
  #, gcc-internal-format
  msgid "variable-sized compound literal"
  msgstr ""
  
! #: cp/decl.cc:7832
  #, gcc-internal-format
  msgid "%q#D has incomplete type"
  msgstr ""
  
! #: cp/decl.cc:7853
  #, gcc-internal-format
  msgid "scalar object %qD requires one element in initializer"
  msgstr ""
  
! #: cp/decl.cc:7898
  #, gcc-internal-format
  msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
  msgstr ""
  
! #: cp/decl.cc:8041
  #, gcc-internal-format
  msgid "array %qD initialized by parenthesized string literal %qE"
  msgstr ""
  
! #: cp/decl.cc:8081
  #, gcc-internal-format
  msgid "initializer invalid for static member with constructor"
  msgstr ""
  
! #: cp/decl.cc:8083
  #, gcc-internal-format
  msgid "non-constant in-class initialization invalid for static member %qD"
  msgstr ""
  
! #: cp/decl.cc:8086
  #, gcc-internal-format
  msgid ""
  "non-constant in-class initialization invalid for non-inline static member %qD"
  msgstr ""
  
! #: cp/decl.cc:8091
  #, gcc-internal-format
  msgid "(an out of class initialization is required)"
  msgstr ""
  
! #: cp/decl.cc:8293
  #, gcc-internal-format
  msgid "reference %qD is initialized with itself"
  msgstr ""
  
! #: cp/decl.cc:8495
  #, gcc-internal-format
  msgid "argument %d of %qE must be of %<omp_interop_t%>"
  msgstr ""
  
! #: cp/decl.cc:8666
  #, gcc-internal-format
  msgid "could not find variant declaration"
  msgstr ""
  
! #: cp/decl.cc:8690
  #, gcc-internal-format
  msgid "%<declare variant%> on constructor %qD"
  msgstr ""
  
! #: cp/decl.cc:8695
  #, gcc-internal-format
  msgid "%<declare variant%> on destructor %qD"
  msgstr ""
  
! #: cp/decl.cc:8700
  #, gcc-internal-format
  msgid "%<declare variant%> on defaulted %qD"
  msgstr ""
  
! #: cp/decl.cc:8705
  #, gcc-internal-format
  msgid "%<declare variant%> on deleted %qD"
  msgstr ""
  
! #: cp/decl.cc:8710
  #, gcc-internal-format
  msgid "%<declare variant%> on virtual %qD"
  msgstr ""
  
! #: cp/decl.cc:8775
  #, gcc-internal-format
  msgid "assignment (not initialization) in declaration"
  msgstr ""
  
! #: cp/decl.cc:8796 cp/decl.cc:15825
  #, gcc-internal-format
  msgid "ISO C++17 does not allow %<register%> storage class specifier"
  msgstr ""
  
! #: cp/decl.cc:8800 cp/decl.cc:15829
  #, gcc-internal-format
  msgid "%<register%> storage class specifier used"
  msgstr ""
  
! #: cp/decl.cc:8845 cp/decl.cc:15792
  #, gcc-internal-format
  msgid "declaration of %q#D has no initializer"
  msgstr ""
  
! #: cp/decl.cc:8881
  #, gcc-internal-format
  msgid ""
  "initializer for %<decltype(auto) %D%> has function type; did you forget the "
  "%<()%>?"
  msgstr ""
  
! #: cp/decl.cc:8893
  #, gcc-internal-format
  msgid "deduced type %qT for %qD is incomplete"
  msgstr ""
  
  #. [basic.start.main]/3: A program that defines main as deleted
  #. is ill-formed.
! #: cp/decl.cc:8944
  #, gcc-internal-format
  msgid "%<::main%> cannot be deleted"
  msgstr ""
  
! #: cp/decl.cc:9098
  #, gcc-internal-format
  msgid "shadowing previous type declaration of %q#D"
  msgstr ""
  
! #: cp/decl.cc:9141
  #, gcc-internal-format
  msgid ""
  "%<constinit%> can only be applied to a variable with static or thread "
  "storage duration"
  msgstr ""
  
! #: cp/decl.cc:9349
  #, gcc-internal-format
  msgid "function %q#D is initialized like a variable"
  msgstr ""
  
! #: cp/decl.cc:9581
  #, gcc-internal-format
  msgid "cannot decompose lambda closure type %qT"
  msgstr ""
  
! #: cp/decl.cc:9582
  #, gcc-internal-format
  msgid "lambda declared here"
  msgstr ""
  
! #: cp/decl.cc:9598
  #, gcc-internal-format
  msgid ""
  "cannot decompose class type %qT because it has an anonymous struct member"
  msgstr ""
  
! #: cp/decl.cc:9601
  #, gcc-internal-format
  msgid ""
  "cannot decompose class type %qT because it has an anonymous union member"
  msgstr ""
  
! #: cp/decl.cc:9609
  #, gcc-internal-format
  msgid "cannot decompose inaccessible member %qD of %qT"
  msgstr ""
  
! #: cp/decl.cc:9632
  #, gcc-internal-format
  msgid "in base class of %qT"
  msgstr ""
  
! #: cp/decl.cc:9639
  #, gcc-internal-format
  msgid ""
  "cannot decompose class type %qT: both it and its base class %qT have non-"
  "static data members"
  msgstr ""
  
! #: cp/decl.cc:9648
  #, gcc-internal-format
  msgid ""
  "cannot decompose class type %qT: its base classes %qT and %qT have non-"
  "static data members"
  msgstr ""
  
! #: cp/decl.cc:9886
  #, gcc-internal-format
  msgid "structured binding refers to incomplete type %qT"
  msgstr ""
  
! #: cp/decl.cc:9902
  #, gcc-internal-format
  msgid "array initializer for structured binding declaration in condition"
  msgstr ""
  
! #: cp/decl.cc:9908
  #, gcc-internal-format
  msgid "cannot decompose variable length array %qT"
  msgstr ""
  
! #: cp/decl.cc:9918 cp/decl.cc:9998
  #, gcc-internal-format, gfc-internal-format
  msgid "%u name provided for structured binding"
  msgid_plural "%u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9922
  #, gcc-internal-format, gfc-internal-format
  msgid "only %u name provided for structured binding"
  msgid_plural "only %u names provided for structured binding"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9925
  #, gcc-internal-format
  msgid "while %qT decomposes into %wu element"
  msgid_plural "while %qT decomposes into %wu elements"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/decl.cc:9966
  #, gcc-internal-format
  msgid "cannot decompose variable length vector %qT"
  msgstr ""
  
! #: cp/decl.cc:9990
  #, gcc-internal-format
  msgid "%<std::tuple_size<%T>::value%> is not an integral constant expression"
  msgstr ""
  
! #: cp/decl.cc:10000
  #, gcc-internal-format
  msgid "while %qT decomposes into %E elements"
  msgstr ""
  
! #: cp/decl.cc:10047
  #, gcc-internal-format
  msgid "%<std::tuple_element<%u, %T>::type%> is %<void%>"
  msgstr ""
  
! #: cp/decl.cc:10053
  #, gcc-internal-format
  msgid "in initialization of structured binding variable %qD"
  msgstr ""
  
! #: cp/decl.cc:10082
  #, gcc-internal-format
  msgid "cannot decompose union type %qT"
  msgstr ""
  
! #: cp/decl.cc:10087
  #, gcc-internal-format
  msgid "cannot decompose non-array non-class type %qT"
  msgstr ""
  
! #: cp/decl.cc:10093
  #, gcc-internal-format
  msgid "structured binding refers to incomplete class type %qT"
  msgstr ""
  
! #: cp/decl.cc:10102
  #, gcc-internal-format
  msgid "cannot decompose class type %qT without non-static data members"
  msgstr ""
  
! #: cp/decl.cc:10598
  #, gcc-internal-format
  msgid ""
  "non-local variable %qD declared %<__thread%> needs dynamic initialization"
  msgstr ""
  
! #: cp/decl.cc:10601
  #, gcc-internal-format
  msgid ""
  "non-local variable %qD declared %<__thread%> has a non-trivial destructor"
  msgstr ""
  
! #: cp/decl.cc:10606
  #, gcc-internal-format
  msgid "C++11 %<thread_local%> allows dynamic initialization and destruction"
  msgstr ""
  
! #: cp/decl.cc:10825
  #, gcc-internal-format
  msgid "initializer fails to determine size of %qT"
  msgstr ""
  
! #: cp/decl.cc:10829
  #, gcc-internal-format
  msgid "array size missing in %qT"
  msgstr ""
  
! #: cp/decl.cc:10832
  #, gcc-internal-format
  msgid "zero-size array %qT"
  msgstr ""
  
! #: cp/decl.cc:10848
  #, gcc-internal-format
  msgid "destructor for alien class %qT cannot be a member"
  msgstr ""
  
! #: cp/decl.cc:10850
  #, gcc-internal-format
  msgid "constructor for alien class %qT cannot be a member"
  msgstr ""
  
! #: cp/decl.cc:10876
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> variable"
  msgstr ""
  
! #: cp/decl.cc:10878
  #, gcc-internal-format
  msgid ""
  "%<const%> and %<volatile%> function specifiers on %qD invalid in variable "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:10884
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> parameter"
  msgstr ""
  
! #: cp/decl.cc:10887
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> parameter"
  msgstr ""
  
! #: cp/decl.cc:10889
  #, gcc-internal-format
  msgid ""
  "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:10895
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> type"
  msgstr ""
  
! #: cp/decl.cc:10898
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> type"
  msgstr ""
  
! #: cp/decl.cc:10900
  #, gcc-internal-format
  msgid ""
  "%<const%> and %<volatile%> function specifiers on %qD invalid in type "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:10906
  #, gcc-internal-format
  msgid "%qD declared as a %<virtual%> field"
  msgstr ""
  
! #: cp/decl.cc:10909
  #, gcc-internal-format
  msgid "%qD declared as an %<inline%> field"
  msgstr ""
  
! #: cp/decl.cc:10911
  #, gcc-internal-format
  msgid ""
  "%<const%> and %<volatile%> function specifiers on %qD invalid in field "
  "declaration"
  msgstr ""
  
! #: cp/decl.cc:10918
  #, gcc-internal-format
  msgid "%q+D declared as a friend"
  msgstr ""
  
! #: cp/decl.cc:10925
  #, gcc-internal-format
  msgid "%q+D declared with an exception specification"
  msgstr ""
  
! #: cp/decl.cc:10957
  #, gcc-internal-format
  msgid "definition of %qD is not in namespace enclosing %qT"
  msgstr ""
  
! #: cp/decl.cc:10997
  #, gcc-internal-format
  msgid "static member function %q#D declared with type qualifiers"
  msgstr ""
  
! #: cp/decl.cc:11073
  #, gcc-internal-format
  msgid "function concepts are no longer supported"
  msgstr ""
  
! #: cp/decl.cc:11111
  #, gcc-internal-format
  msgid "constraints on a non-templated function"
  msgstr ""
  
! #: cp/decl.cc:11113
  #, gcc-internal-format
  msgid "constrained non-template friend declaration must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11120
  #, gcc-internal-format
  msgid ""
  "friend function template with constraints that depend on outer template "
  "parameters must be a definition"
  msgstr ""
  
! #: cp/decl.cc:11172
  #, gcc-internal-format
  msgid "defining explicit specialization %qD in friend declaration"
  msgstr ""
  
! #: cp/decl.cc:11183
  #, gcc-internal-format
  msgid "invalid use of template-id %qD in declaration of primary template"
  msgstr ""
  
! #: cp/decl.cc:11201
  #, gcc-internal-format
  msgid ""
  "default arguments are not allowed in declaration of friend template "
  "specialization %qD"
  msgstr ""
  
! #: cp/decl.cc:11210
  #, gcc-internal-format
  msgid ""
  "%<inline%> is not allowed in declaration of friend template specialization "
*************** msgid ""
*** 61001,62593 ****
  msgstr ""
  
  #. diagnostic_option_id=
! #: cp/decl.cc:11243
  #, gcc-internal-format
  msgid ""
  "friend declaration of %qD specifies default arguments and isn%'t a definition"
  msgstr ""
  
! #: cp/decl.cc:11285
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a template"
  msgstr ""
  
! #: cp/decl.cc:11288
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be inline"
  msgstr ""
  
! #: cp/decl.cc:11291 cp/decl.cc:11294
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be %qs"
  msgstr ""
  
! #: cp/decl.cc:11296
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be static"
  msgstr ""
  
! #: cp/decl.cc:11298
  #, gcc-internal-format
  msgid "cannot declare %<::main%> with a linkage specification"
  msgstr ""
  
! #: cp/decl.cc:11301
  #, gcc-internal-format
  msgid "cannot attach %<::main%> to a named module"
  msgstr ""
  
! #: cp/decl.cc:11360
  #, gcc-internal-format
  msgid "non-member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11362
  #, gcc-internal-format
  msgid "static member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11363
  #, gcc-internal-format
  msgid "explicit object member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11368
  #, gcc-internal-format
  msgid "non-member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11370
  #, gcc-internal-format
  msgid "static member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11371
  #, gcc-internal-format
  msgid "explicit object member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11377 cp/decl.cc:14310 cp/decl.cc:14320 cp/parser.cc:12368
  #, gcc-internal-format
  msgid "explicit object parameter declared here"
  msgstr ""
  
! #: cp/decl.cc:11390
  #, gcc-internal-format
  msgid "deduction guide %qD must be declared in the same scope as %qT"
  msgstr ""
  
! #: cp/decl.cc:11392 cp/decl.cc:11401 cp/typeck.cc:4667
  #, gcc-internal-format
  msgid "  declared here"
  msgstr ""
  
! #: cp/decl.cc:11399
  #, gcc-internal-format
  msgid "deduction guide %qD must have the same access as %qT"
  msgstr ""
  
! #: cp/decl.cc:11405
  #, gcc-internal-format
  msgid "deduction guide %qD must not have a function body"
  msgstr ""
  
! #: cp/decl.cc:11419
  #, gcc-internal-format
  msgid "literal operator with C linkage"
  msgstr ""
  
! #: cp/decl.cc:11429
  #, gcc-internal-format
  msgid "%qD has invalid argument list"
  msgstr ""
  
! #: cp/decl.cc:11437
  #, gcc-internal-format
  msgid "integer suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11443
  #, gcc-internal-format
  msgid "floating-point suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11450
  #, gcc-internal-format
  msgid ""
  "literal operator suffixes not preceded by %<_%> are reserved for future "
  "standardization"
  msgstr ""
  
! #: cp/decl.cc:11455
  #, gcc-internal-format
  msgid "%qD must be a non-member function"
  msgstr ""
  
! #: cp/decl.cc:11540
  #, gcc-internal-format
  msgid "%<::main%> must return %<int%>"
  msgstr ""
  
! #: cp/decl.cc:11580
  #, gcc-internal-format
  msgid "definition of implicitly-declared %qD"
  msgstr ""
  
! #: cp/decl.cc:11586
  #, gcc-internal-format
  msgid "definition of explicitly-defaulted %q+D"
  msgstr ""
  
! #: cp/decl.cc:11588
  #, gcc-internal-format
  msgid "%q#D explicitly defaulted here"
  msgstr ""
  
! #: cp/decl.cc:11605
  #, gcc-internal-format
  msgid "no %q#D member function declared in class %qT"
  msgstr ""
  
! #: cp/decl.cc:11802
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a global variable"
  msgstr ""
  
! #: cp/decl.cc:11805
  #, gcc-internal-format
  msgid "an entity named %<main%> cannot be declared with C language linkage"
  msgstr ""
  
! #: cp/decl.cc:11814
  #, gcc-internal-format
  msgid "a non-template variable cannot be %<concept%>"
  msgstr ""
  
! #: cp/decl.cc:11817
  #, gcc-internal-format
  msgid "concept must be defined at namespace scope"
  msgstr ""
  
! #: cp/decl.cc:11820
  #, gcc-internal-format
  msgid "variable concepts are no longer supported"
  msgstr ""
  
! #: cp/decl.cc:11941
  #, gcc-internal-format
  msgid "in-class initialization of static data member %q#D of incomplete type"
  msgstr ""
  
! #: cp/decl.cc:11945
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> needed for in-class initialization of static data member %q#D "
  "of non-integral type"
  msgstr ""
  
! #: cp/decl.cc:11949
  #, gcc-internal-format
  msgid "in-class initialization of static data member %q#D of non-literal type"
  msgstr ""
  
! #: cp/decl.cc:11960
  #, gcc-internal-format
  msgid ""
  "invalid in-class initialization of static data member of non-integral type "
  "%qT"
  msgstr ""
  
! #: cp/decl.cc:11965
  #, gcc-internal-format
  msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
  msgstr ""
  
! #: cp/decl.cc:11970
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids initialization of member constant %qD of non-integral type "
  "%qT"
  msgstr ""
  
! #: cp/decl.cc:12082
  #, gcc-internal-format
  msgid "size of array %qD has non-integral type %qT"
  msgstr ""
  
! #: cp/decl.cc:12085
  #, gcc-internal-format
  msgid "size of array has non-integral type %qT"
  msgstr ""
  
! #: cp/decl.cc:12116 cp/decl.cc:12188
  #, gcc-internal-format
  msgid "size of array %qD is not an integral constant-expression"
  msgstr ""
  
! #: cp/decl.cc:12120 cp/decl.cc:12191
  #, gcc-internal-format
  msgid "size of array is not an integral constant-expression"
  msgstr ""
  
! #: cp/decl.cc:12171
  #, gcc-internal-format
  msgid "ISO C++ forbids zero-size array %qD"
  msgstr ""
  
! #: cp/decl.cc:12174
  #, gcc-internal-format
  msgid "ISO C++ forbids zero-size array"
  msgstr ""
  
! #: cp/decl.cc:12198
  #, gcc-internal-format
  msgid "ISO C++ forbids variable length array %qD"
  msgstr ""
  
! #: cp/decl.cc:12201
  #, gcc-internal-format
  msgid "ISO C++ forbids variable length array"
  msgstr ""
  
! #: cp/decl.cc:12207
  #, gcc-internal-format
  msgid "variable length array %qD is used"
  msgstr ""
  
! #: cp/decl.cc:12210
  #, gcc-internal-format
  msgid "variable length array is used"
  msgstr ""
  
! #: cp/decl.cc:12262
  #, gcc-internal-format
  msgid "overflow in array dimension"
  msgstr ""
  
! #: cp/decl.cc:12322
  #, gcc-internal-format
  msgid "%qD declared as array of template placeholder type %qT"
  msgstr ""
  
! #: cp/decl.cc:12325
  #, gcc-internal-format
  msgid "creating array of template placeholder type %qT"
  msgstr ""
  
! #: cp/decl.cc:12335
  #, gcc-internal-format
  msgid "declaration of %qD as array of void"
  msgstr ""
  
! #: cp/decl.cc:12337
  #, gcc-internal-format
  msgid "creating array of void"
  msgstr ""
  
! #: cp/decl.cc:12342
  #, gcc-internal-format
  msgid "declaration of %qD as array of functions"
  msgstr ""
  
! #: cp/decl.cc:12344
  #, gcc-internal-format
  msgid "creating array of functions"
  msgstr ""
  
! #: cp/decl.cc:12349
  #, gcc-internal-format
  msgid "declaration of %qD as array of references"
  msgstr ""
  
! #: cp/decl.cc:12351
  #, gcc-internal-format
  msgid "creating array of references"
  msgstr ""
  
! #: cp/decl.cc:12356
  #, gcc-internal-format
  msgid "declaration of %qD as array of function members"
  msgstr ""
  
! #: cp/decl.cc:12359
  #, gcc-internal-format
  msgid "creating array of function members"
  msgstr ""
  
! #: cp/decl.cc:12377
  #, gcc-internal-format
  msgid ""
  "declaration of %qD as multidimensional array must have bounds for all "
  "dimensions except the first"
  msgstr ""
  
! #: cp/decl.cc:12381
  #, gcc-internal-format
  msgid ""
  "multidimensional array must have bounds for all dimensions except the first"
  msgstr ""
  
! #: cp/decl.cc:12395
  #, gcc-internal-format
  msgid "variable-length array of %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:12493
  #, gcc-internal-format
  msgid "return type specification for constructor invalid"
  msgstr ""
  
! #: cp/decl.cc:12496
  #, gcc-internal-format
  msgid "qualifiers are not allowed on constructor declaration"
  msgstr ""
  
! #: cp/decl.cc:12507
  #, gcc-internal-format
  msgid "return type specification for destructor invalid"
  msgstr ""
  
! #: cp/decl.cc:12510
  #, gcc-internal-format
  msgid "qualifiers are not allowed on destructor declaration"
  msgstr ""
  
! #: cp/decl.cc:12523
  #, gcc-internal-format
  msgid "return type specified for %<operator %T%>"
  msgstr ""
  
! #: cp/decl.cc:12526
  #, gcc-internal-format
  msgid "qualifiers are not allowed on declaration of %<operator %T%>"
  msgstr ""
  
! #: cp/decl.cc:12535
  #, gcc-internal-format
  msgid "return type specified for deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12538
  #, gcc-internal-format
  msgid "qualifiers are not allowed on declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12542
  #, gcc-internal-format
  msgid "template template parameter %qT in declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12551
  #, gcc-internal-format
  msgid "%<decl-specifier%> in declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12572
  #, gcc-internal-format
  msgid "unnamed variable or field declared void"
  msgstr ""
  
! #: cp/decl.cc:12580
  #, gcc-internal-format
  msgid "variable or field declared void"
  msgstr ""
  
! #: cp/decl.cc:12595
  #, gcc-internal-format
  msgid "%<inline%> specifier invalid for variable %qD declared at block scope"
  msgstr ""
  
! #: cp/decl.cc:12600
  #, gcc-internal-format
  msgid ""
  "inline variables are only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/decl.cc:12656
  #, gcc-internal-format
  msgid "%qT as type rather than plain %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:12662
  #, gcc-internal-format
  msgid "%<decltype(auto)%> cannot be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:12683
  msgid "%e and %e specified together"
  msgstr ""
  
! #: cp/decl.cc:12895
  #, gcc-internal-format
  msgid "invalid use of qualified-name %<::%D%>"
  msgstr ""
  
! #: cp/decl.cc:12898 cp/decl.cc:12920
  #, gcc-internal-format
  msgid "invalid use of qualified-name %<%T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:12901
  #, gcc-internal-format
  msgid "invalid use of qualified-name %<%D::%D%>"
  msgstr ""
  
! #: cp/decl.cc:12911
  #, gcc-internal-format
  msgid "%q#T is not a class or namespace"
  msgstr ""
  
! #: cp/decl.cc:12935
  #, gcc-internal-format
  msgid "declaration of %qE as non-function"
  msgstr ""
  
! #: cp/decl.cc:12942
  #, gcc-internal-format
  msgid "declaration of %qE as non-member"
  msgstr ""
  
! #: cp/decl.cc:12970
  #, gcc-internal-format
  msgid "declarator-id missing; using reserved word %qD"
  msgstr ""
  
! #: cp/decl.cc:13021
  #, gcc-internal-format
  msgid "function definition does not declare parameters"
  msgstr ""
  
! #: cp/decl.cc:13029 cp/decl.cc:13038 cp/decl.cc:15034
  #, gcc-internal-format
  msgid "declaration of %qD as non-function"
  msgstr ""
  
! #: cp/decl.cc:13046
  #, gcc-internal-format
  msgid "declaration of %qD as %<typedef%>"
  msgstr ""
  
! #: cp/decl.cc:13051
  #, gcc-internal-format
  msgid "declaration of %qD as parameter"
  msgstr ""
  
! #: cp/decl.cc:13086
  #, gcc-internal-format
  msgid "both %qs and %qs specified"
  msgstr ""
  
! #: cp/decl.cc:13093 cp/decl.cc:13100 cp/decl.cc:13107 cp/decl.cc:13114
  #, gcc-internal-format
  msgid "%qs cannot appear in a typedef declaration"
  msgstr ""
  
! #: cp/decl.cc:13125
  #, gcc-internal-format
  msgid "can use at most one of the %<constinit%> and %<constexpr%> specifiers"
  msgstr ""
  
! #: cp/decl.cc:13135
  #, gcc-internal-format
  msgid "two or more data types in declaration of %qs"
  msgstr ""
  
! #: cp/decl.cc:13189
  #, gcc-internal-format
  msgid "ISO C++ does not support plain %<complex%> meaning %<double complex%>"
  msgstr ""
  
! #: cp/decl.cc:13239 cp/decl.cc:13243 cp/decl.cc:13246
  #, gcc-internal-format
  msgid "ISO C++ forbids declaration of %qs with no type"
  msgstr ""
  
! #: cp/decl.cc:13263
  #, gcc-internal-format
  msgid "%<__int%d%> is not supported by this target"
  msgstr ""
  
! #: cp/decl.cc:13271
  #, gcc-internal-format
  msgid "ISO C++ does not support %<__int%d%> for %qs"
  msgstr ""
  
! #: cp/decl.cc:13334
  #, gcc-internal-format
  msgid "%qs specified with %qT"
  msgstr ""
  
! #: cp/decl.cc:13341
  #, gcc-internal-format
  msgid "%qs specified with typedef-name %qD"
  msgstr ""
  
! #: cp/decl.cc:13350
  #, gcc-internal-format
  msgid "%qs specified with %<decltype%>"
  msgstr ""
  
! #: cp/decl.cc:13352
  #, gcc-internal-format
  msgid "%qs specified with %<typeof%>"
  msgstr ""
  
! #: cp/decl.cc:13421
  #, gcc-internal-format
  msgid "complex invalid for %qs"
  msgstr ""
  
! #: cp/decl.cc:13465
  #, gcc-internal-format
  msgid ""
  "missing template argument list after %qE; for deduction, template "
  "placeholder must be followed by a simple declarator-id"
  msgstr ""
  
! #: cp/decl.cc:13491
  #, gcc-internal-format
  msgid "member %qD cannot be declared both %<virtual%> and %<static%>"
  msgstr ""
  
! #: cp/decl.cc:13500
  #, gcc-internal-format
  msgid ""
  "member %qD can be declared both %<virtual%> and %<constexpr%> only in %<-"
  "std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/decl.cc:13513
  #, gcc-internal-format
  msgid "typedef declaration invalid in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:13520
  #, gcc-internal-format
  msgid "storage class specified for template parameter %qs"
  msgstr ""
  
! #: cp/decl.cc:13530 cp/decl.cc:13707
  #, gcc-internal-format
  msgid "storage class specified for parameter %qs"
  msgstr ""
  
! #: cp/decl.cc:13538 cp/decl.cc:13547 cp/decl.cc:13553 cp/decl.cc:13559
  #, gcc-internal-format
  msgid "a parameter cannot be declared %qs"
  msgstr ""
  
! #: cp/decl.cc:13569
  #, gcc-internal-format
  msgid "%<virtual%> outside class declaration"
  msgstr ""
  
! #: cp/decl.cc:13579 cp/decl.cc:13582 cp/decl.cc:13584 cp/decl.cc:13587
! #: cp/decl.cc:13597 cp/decl.cc:13607 cp/decl.cc:13617 cp/decl.cc:13621
  #, gcc-internal-format
  msgid "structured binding declaration cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:13591 cp/decl.cc:13613
  #, gcc-internal-format
  msgid ""
  "structured binding declaration can be %qs only in %<-std=c++20%> or %<-"
  "std=gnu++20%>"
  msgstr ""
  
! #: cp/decl.cc:13601
  #, gcc-internal-format
  msgid "%<volatile%>-qualified structured binding is deprecated"
  msgstr ""
  
! #: cp/decl.cc:13625
  #, gcc-internal-format
  msgid "structured binding declaration cannot be C++98 %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13637
  #, gcc-internal-format
  msgid "structured binding declaration cannot have type %qT"
  msgstr ""
  
! #: cp/decl.cc:13640
  #, gcc-internal-format
  msgid ""
  "type must be cv-qualified %<auto%> or reference to cv-qualified %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13648
  #, gcc-internal-format
  msgid ""
  "structured binding declaration cannot have constrained %<auto%> type %qT"
  msgstr ""
  
! #: cp/decl.cc:13679
  #, gcc-internal-format
  msgid "multiple storage classes in declaration of %qs"
  msgstr ""
  
! #: cp/decl.cc:13705
  #, gcc-internal-format
  msgid "storage class specified for %qs"
  msgstr ""
  
! #: cp/decl.cc:13719
  #, gcc-internal-format
  msgid "nested function %qs declared %<extern%>"
  msgstr ""
  
! #: cp/decl.cc:13724
  #, gcc-internal-format
  msgid "top-level declaration of %qs specifies %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13732
  #, gcc-internal-format
  msgid "function-scope %qs implicitly auto and declared %<__thread%>"
  msgstr ""
  
! #: cp/decl.cc:13746
  #, gcc-internal-format
  msgid "storage class specifiers invalid in friend function declarations"
  msgstr ""
  
! #: cp/decl.cc:13852
  #, gcc-internal-format
  msgid "unnecessary parentheses in declaration of %qs"
  msgstr ""
  
! #: cp/decl.cc:13858
  #, gcc-internal-format
  msgid "remove parentheses"
  msgstr ""
  
! #: cp/decl.cc:13925
  #, gcc-internal-format
  msgid ""
  "explicit object member function only available with %<-std=c++23%> or %<-"
  "std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:13939
  #, gcc-internal-format
  msgid "a function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13945
  #, gcc-internal-format
  msgid "a pointer to function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13949
  #, gcc-internal-format
  msgid ""
  "a pointer to member function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13957
  #, gcc-internal-format
  msgid ""
  "the type of a pointer to explicit object member function is a regular "
  "pointer to function type"
  msgstr ""
  
! #: cp/decl.cc:13961
  #, gcc-internal-format
  msgid ""
  "the type of an explicit object member function is a regular function type"
  msgstr ""
  
! #: cp/decl.cc:13982
  #, gcc-internal-format
  msgid ""
  "only the first parameter of a member function can be declared as an explicit "
  "object parameter"
  msgstr ""
  
! #: cp/decl.cc:13987
  #, gcc-internal-format
  msgid "valid explicit object parameter declared here"
  msgstr ""
  
! #: cp/decl.cc:13991
  #, gcc-internal-format
  msgid "requires-clause on return type"
  msgstr ""
  
! #: cp/decl.cc:14012
  #, gcc-internal-format
  msgid "%qs function uses %<auto%> type specifier without trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14016
  #, gcc-internal-format
  msgid ""
  "deduced return type only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/decl.cc:14021
  #, gcc-internal-format
  msgid "virtual function cannot have deduced return type"
  msgstr ""
  
! #: cp/decl.cc:14028
  #, gcc-internal-format
  msgid ""
  "%qs function with trailing return type has %qT as its type rather than plain "
  "%<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14037
  #, gcc-internal-format
  msgid ""
  "%qs function with trailing return type has %<decltype(auto)%> as its type "
  "rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14042
  #, gcc-internal-format
  msgid "invalid use of %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:14049
  #, gcc-internal-format
  msgid ""
  "%qs function with trailing return type has constrained %<auto%> type "
  "specifier rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14055
  #, gcc-internal-format
  msgid "invalid use of constrained %<auto%> type"
  msgstr ""
  
! #: cp/decl.cc:14067
  #, gcc-internal-format
  msgid "deduced class type %qD in function return type"
  msgstr ""
  
! #: cp/decl.cc:14077
  #, gcc-internal-format
  msgid "deduction guide for %qT must have trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14090
  #, gcc-internal-format
  msgid ""
  "trailing return type %qT of deduction guide is not a specialization of %qT"
  msgstr ""
  
! #: cp/decl.cc:14104
  #, gcc-internal-format
  msgid ""
  "trailing return type only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/decl.cc:14107
  #, gcc-internal-format
  msgid ""
  "%qs function with trailing return type not declared with %<auto%> type "
  "specifier"
  msgstr ""
  
! #: cp/decl.cc:14114
  #, gcc-internal-format
  msgid "a conversion function cannot have a trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14140
  #, gcc-internal-format
  msgid "%<volatile%>-qualified return type is deprecated"
  msgstr ""
  
! #: cp/decl.cc:14152
  #, gcc-internal-format
  msgid "%qs declared as function returning a function"
  msgstr ""
  
! #: cp/decl.cc:14158
  #, gcc-internal-format
  msgid "%qs declared as function returning an array"
  msgstr ""
  
! #: cp/decl.cc:14165
  #, gcc-internal-format
  msgid "%<constinit%> on function return type is not allowed"
  msgstr ""
  
! #: cp/decl.cc:14198
  #, gcc-internal-format
  msgid "destructor cannot be static member function"
  msgstr ""
  
! #: cp/decl.cc:14200
  #, gcc-internal-format
  msgid "constructor cannot be static member function"
  msgstr ""
  
! #: cp/decl.cc:14205
  #, gcc-internal-format
  msgid "destructors may not be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:14206
  #, gcc-internal-format
  msgid "constructors may not be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:14214
  #, gcc-internal-format
  msgid "destructors may not be ref-qualified"
  msgstr ""
  
! #: cp/decl.cc:14215
  #, gcc-internal-format
  msgid "constructors may not be ref-qualified"
  msgstr ""
  
! #: cp/decl.cc:14233
  #, gcc-internal-format
  msgid "constructors cannot be declared %<virtual%>"
  msgstr ""
  
! #: cp/decl.cc:14250
  #, gcc-internal-format
  msgid "virtual functions cannot be friends"
  msgstr ""
  
! #: cp/decl.cc:14255
  #, gcc-internal-format
  msgid "friend declaration not in class definition"
  msgstr ""
  
! #: cp/decl.cc:14259
  #, gcc-internal-format
  msgid "cannot define friend function %qs in a local class definition"
  msgstr ""
  
! #: cp/decl.cc:14269
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<::%>"
  msgstr ""
  
! #: cp/decl.cc:14273
  #, gcc-internal-format
  msgid ""
  "friend function definition %qs cannot have a name qualified with %<%D::%>"
  msgstr ""
  
! #: cp/decl.cc:14299
  #, gcc-internal-format
  msgid "a non-member function cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:14307
  #, gcc-internal-format
  msgid "an explicit object member function cannot be %<virtual%>"
  msgstr ""
  
! #: cp/decl.cc:14317
  #, gcc-internal-format
  msgid "an explicit object member function cannot be %<static%>"
  msgstr ""
  
! #: cp/decl.cc:14326
  #, gcc-internal-format
  msgid "%qD cannot be an explicit object member function"
  msgstr ""
  
! #: cp/decl.cc:14349
  #, gcc-internal-format
  msgid "destructors may not have parameters"
  msgstr ""
  
! #: cp/decl.cc:14407
  #, gcc-internal-format
  msgid "cannot declare pointer to %q#T"
  msgstr ""
  
! #: cp/decl.cc:14420 cp/decl.cc:14427
  #, gcc-internal-format
  msgid "cannot declare reference to %q#T"
  msgstr ""
  
! #: cp/decl.cc:14429
  #, gcc-internal-format
  msgid "cannot declare pointer to %q#T member"
  msgstr ""
  
! #: cp/decl.cc:14458
  #, gcc-internal-format
  msgid "cannot declare reference to qualified function type %qT"
  msgstr ""
  
! #: cp/decl.cc:14459
  #, gcc-internal-format
  msgid "cannot declare pointer to qualified function type %qT"
  msgstr ""
  
! #: cp/decl.cc:14532
  #, gcc-internal-format
  msgid ""
  "cannot declare reference to %q#T, which is not a typedef or a template type "
  "argument"
  msgstr ""
  
! #: cp/decl.cc:14611
  #, gcc-internal-format
  msgid "template-id %qD used as a declarator"
  msgstr ""
  
! #: cp/decl.cc:14637
  #, gcc-internal-format
  msgid "member functions are implicitly friends of their class"
  msgstr ""
  
! #: cp/decl.cc:14642
  #, gcc-internal-format
  msgid "extra qualification %<%T::%> on member %qs"
  msgstr ""
  
! #: cp/decl.cc:14672
  #, gcc-internal-format
  msgid "cannot define member function %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14674
  #, gcc-internal-format
  msgid "cannot declare member function %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14682
  #, gcc-internal-format
  msgid "cannot declare member %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14722
  #, gcc-internal-format
  msgid "non-parameter %qs cannot be a parameter pack"
  msgstr ""
  
! #: cp/decl.cc:14731
  #, gcc-internal-format
  msgid "data member may not have variably modified type %qT"
  msgstr ""
  
! #: cp/decl.cc:14734
  #, gcc-internal-format
  msgid "parameter may not have variably modified type %qT"
  msgstr ""
  
! #: cp/decl.cc:14745
  #, gcc-internal-format
  msgid "%<explicit%> outside class declaration"
  msgstr ""
  
! #: cp/decl.cc:14748
  #, gcc-internal-format
  msgid "%<explicit%> in friend declaration"
  msgstr ""
  
! #: cp/decl.cc:14751
  #, gcc-internal-format
  msgid ""
  "only declarations of constructors and conversion operators can be "
  "%<explicit%>"
  msgstr ""
  
! #: cp/decl.cc:14761
  #, gcc-internal-format
  msgid "non-member %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14768
  #, gcc-internal-format
  msgid "non-object member %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14774
  #, gcc-internal-format
  msgid "function %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14780
  #, gcc-internal-format
  msgid "%<static%> %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14786
  #, gcc-internal-format
  msgid "%<const%> %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14792
  #, gcc-internal-format
  msgid "reference %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14808
  #, gcc-internal-format
  msgid "typedef may not be a function definition"
  msgstr ""
  
! #: cp/decl.cc:14811
  #, gcc-internal-format
  msgid "typedef may not be a member function definition"
  msgstr ""
  
! #: cp/decl.cc:14837
  #, gcc-internal-format
  msgid "%<auto%> not allowed in alias declaration"
  msgstr ""
  
! #: cp/decl.cc:14840
  #, gcc-internal-format
  msgid "typedef declared %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14845
  #, gcc-internal-format
  msgid "requires-clause on typedef"
  msgstr ""
  
! #: cp/decl.cc:14849
  #, gcc-internal-format
  msgid "typedef name may not be a nested-name-specifier"
  msgstr ""
  
! #: cp/decl.cc:14875
  #, gcc-internal-format
  msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
  msgstr ""
  
! #: cp/decl.cc:14964
  #, gcc-internal-format
  msgid "%<inline%> specified for friend class declaration"
  msgstr ""
  
! #: cp/decl.cc:14972
  #, gcc-internal-format
  msgid "template parameters cannot be friends"
  msgstr ""
  
! #: cp/decl.cc:14974
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:14978
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
  msgstr ""
  
! #: cp/decl.cc:14991
  #, gcc-internal-format
  msgid "trying to make class %qT a friend of global scope"
  msgstr ""
  
! #: cp/decl.cc:15011
  #, gcc-internal-format
  msgid "invalid qualifiers on non-member function type"
  msgstr ""
  
! #: cp/decl.cc:15015
  #, gcc-internal-format
  msgid "requires-clause on type-id"
  msgstr ""
  
! #: cp/decl.cc:15025
  #, gcc-internal-format
  msgid "abstract declarator %qT used as declaration"
  msgstr ""
  
! #: cp/decl.cc:15040
  #, gcc-internal-format
  msgid "requires-clause on declaration of non-function type %qT"
  msgstr ""
  
! #: cp/decl.cc:15059
  #, gcc-internal-format
  msgid "cannot use %<::%> in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:15069 cp/parser.cc:21410
  #, gcc-internal-format
  msgid "cannot declare a parameter with %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:15076
  #, gcc-internal-format
  msgid ""
  "missing template argument list after %qE; template placeholder not permitted "
  "in parameter"
  msgstr ""
  
! #: cp/decl.cc:15079
  #, gcc-internal-format
  msgid "or use %<auto%> for an abbreviated function template"
  msgstr ""
  
! #: cp/decl.cc:15085 cp/parser.cc:26076
  #, gcc-internal-format
  msgid "%<auto%> parameter not permitted in this context"
  msgstr ""
  
! #: cp/decl.cc:15095
  #, gcc-internal-format
  msgid "parameter declared %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:15149 cp/parser.cc:3855
  #, gcc-internal-format
  msgid "invalid use of template-name %qE without an argument list"
  msgstr ""
  
! #: cp/decl.cc:15153
  #, gcc-internal-format
  msgid "non-static data member declared with placeholder %qT"
  msgstr ""
  
! #: cp/decl.cc:15173
  #, gcc-internal-format
  msgid "ISO C++ forbids flexible array member %qs"
  msgstr ""
  
! #: cp/decl.cc:15176
  #, gcc-internal-format
  msgid "ISO C++ forbids flexible array members"
  msgstr ""
  
  #. Something like struct S { int N::j; };
! #: cp/decl.cc:15192
  #, gcc-internal-format
  msgid "invalid use of %<::%>"
  msgstr ""
  
! #: cp/decl.cc:15213
  #, gcc-internal-format
  msgid "declaration of function %qD in invalid context"
  msgstr ""
  
! #: cp/decl.cc:15223
  #, gcc-internal-format
  msgid "function %qD declared %<virtual%> inside a union"
  msgstr ""
  
! #: cp/decl.cc:15233
  #, gcc-internal-format
  msgid "%qD cannot be declared %<virtual%>, since it is always static"
  msgstr ""
  
! #: cp/decl.cc:15247
  #, gcc-internal-format
  msgid "expected qualified name in friend declaration for destructor %qD"
  msgstr ""
  
! #: cp/decl.cc:15254
  #, gcc-internal-format
  msgid "declaration of %qD as member of %qT"
  msgstr ""
  
! #: cp/decl.cc:15261 cp/decl.cc:15274
  #, gcc-internal-format
  msgid "a destructor cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:15280
  #, gcc-internal-format
  msgid "expected qualified name in friend declaration for constructor %qD"
  msgstr ""
  
! #: cp/decl.cc:15289
  #, gcc-internal-format
  msgid "a constructor cannot be %<concept%>"
  msgstr ""
  
! #: cp/decl.cc:15295
  #, gcc-internal-format
  msgid "a concept cannot be a member function"
  msgstr ""
  
! #: cp/decl.cc:15303 cp/decl.cc:15662
  #, gcc-internal-format
  msgid "%qD cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:15313
  #, gcc-internal-format
  msgid "specialization of variable template %qD declared as function"
  msgstr ""
  
! #: cp/decl.cc:15316
  #, gcc-internal-format
  msgid "variable template declared here"
  msgstr ""
  
! #: cp/decl.cc:15381
  #, gcc-internal-format
  msgid "field %qD has incomplete type %qT"
  msgstr ""
  
! #: cp/decl.cc:15386
  #, gcc-internal-format
  msgid "name %qT has incomplete type"
  msgstr ""
  
! #: cp/decl.cc:15406
  #, gcc-internal-format
  msgid "%qE is neither function nor member function; cannot be declared friend"
  msgstr ""
  
! #: cp/decl.cc:15409
  #, gcc-internal-format
  msgid ""
  "unnamed field is neither function nor member function; cannot be declared "
  "friend"
  msgstr ""
  
! #: cp/decl.cc:15428 cp/parser.cc:21976 cp/parser.cc:28868
  #, gcc-internal-format
  msgid ""
  "an attribute that appertains to a friend declaration that is not a "
  "definition is ignored"
  msgstr ""
  
! #: cp/decl.cc:15478 cp/decl.cc:15489
  #, gcc-internal-format
  msgid "static data member %qE declared %qs"
  msgstr ""
  
! #: cp/decl.cc:15483
  #, gcc-internal-format
  msgid "%<constexpr%> static data member %qD must have an initializer"
  msgstr ""
  
! #: cp/decl.cc:15526 cp/decl.cc:15534 cp/decl.cc:15541 cp/decl.cc:15548
  #, gcc-internal-format
  msgid "non-static data member %qE declared %qs"
  msgstr ""
  
! #: cp/decl.cc:15600
  #, gcc-internal-format
  msgid "storage class %<auto%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15603
  #, gcc-internal-format
  msgid "storage class %<register%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15609
  #, gcc-internal-format
  msgid "storage class %<__thread%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15613
  #, gcc-internal-format
  msgid "storage class %<thread_local%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15618
  #, gcc-internal-format
  msgid "%<constinit%> specifier invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15621
  #, gcc-internal-format
  msgid "virt-specifiers in %qs not allowed outside a class definition"
  msgstr ""
  
! #: cp/decl.cc:15633
  #, gcc-internal-format
  msgid ""
  "%<static%> specifier invalid for function %qs declared out of global scope"
  msgstr ""
  
! #: cp/decl.cc:15637
  #, gcc-internal-format
  msgid ""
  "%<inline%> specifier invalid for function %qs declared out of global scope"
  msgstr ""
  
! #: cp/decl.cc:15645
  #, gcc-internal-format
  msgid "virtual non-class function %qs"
  msgstr ""
  
! #: cp/decl.cc:15652
  #, gcc-internal-format
  msgid "%qs defined in a non-class scope"
  msgstr ""
  
! #: cp/decl.cc:15653
  #, gcc-internal-format
  msgid "%qs declared in a non-class scope"
  msgstr ""
  
! #: cp/decl.cc:15696
  #, gcc-internal-format
  msgid "cannot declare member function %qD to have static linkage"
  msgstr ""
  
! #: cp/decl.cc:15705
  #, gcc-internal-format
  msgid "cannot declare static function inside another function"
  msgstr ""
  
! #: cp/decl.cc:15746
  #, gcc-internal-format
  msgid ""
  "%<static%> may not be used when defining (as opposed to declaring) a static "
  "data member"
  msgstr ""
  
! #: cp/decl.cc:15753
  #, gcc-internal-format
  msgid "static member %qD declared %<register%>"
  msgstr ""
  
! #: cp/decl.cc:15759
  #, gcc-internal-format
  msgid "cannot explicitly declare member %q#D to have extern linkage"
  msgstr ""
  
! #: cp/decl.cc:15767
  #, gcc-internal-format
  msgid "declaration of %<constexpr%> variable %qD is not a definition"
  msgstr ""
  
! #: cp/decl.cc:15774
  #, gcc-internal-format
  msgid "a variable cannot be declared %<consteval%>"
  msgstr ""
  
! #: cp/decl.cc:15806
  #, gcc-internal-format
  msgid "%qs initialized and declared %<extern%>"
  msgstr ""
  
! #: cp/decl.cc:15811
  #, gcc-internal-format
  msgid "%qs has both %<extern%> and initializer"
  msgstr ""
  
! #: cp/decl.cc:16013
  #, gcc-internal-format
  msgid "default argument %qE uses %qD"
  msgstr ""
  
! #: cp/decl.cc:16016
  #, gcc-internal-format
  msgid "default argument %qE uses local variable %qD"
  msgstr ""
  
! #: cp/decl.cc:16143
  #, gcc-internal-format
  msgid "invalid use of cv-qualified type %qT in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:16147
  #, gcc-internal-format
  msgid "invalid use of type %<void%> in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:16176
  #, gcc-internal-format
  msgid "%<volatile%>-qualified parameter is deprecated"
  msgstr ""
  
! #: cp/decl.cc:16184
  #, gcc-internal-format
  msgid "parameter %qD invalidly declared method type"
  msgstr ""
  
! #: cp/decl.cc:16209
  #, gcc-internal-format
  msgid "parameter %qD includes pointer to array of unknown bound %qT"
  msgstr ""
  
! #: cp/decl.cc:16211
  #, gcc-internal-format
  msgid "parameter %qD includes reference to array of unknown bound %qT"
  msgstr ""
  
! #: cp/decl.cc:16494
  #, gcc-internal-format
  msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
  msgstr ""
  
! #: cp/decl.cc:16573
  #, gcc-internal-format
  msgid "%qD may not be declared within a namespace"
  msgstr ""
  
! #: cp/decl.cc:16580
  #, gcc-internal-format
  msgid "%qD may not be declared as static"
  msgstr ""
  
! #: cp/decl.cc:16638
  #, gcc-internal-format
  msgid "%qD must be a non-static member function"
  msgstr ""
  
! #: cp/decl.cc:16646
  #, gcc-internal-format
  msgid "%qD must be a member function"
  msgstr ""
  
! #: cp/decl.cc:16654
  #, gcc-internal-format
  msgid ""
  "%qD may be a static member function only with %<-std=c++23%> or %<-std=gnu+"
  "+23%>"
  msgstr ""
  
! #: cp/decl.cc:16664
  #, gcc-internal-format
  msgid ""
  "%qD must be either a non-static member function or a non-member function"
  msgstr ""
  
! #: cp/decl.cc:16674
  #, gcc-internal-format
  msgid "%qD must have an argument of class or enumerated type"
  msgstr ""
  
  #. 13.4.0.3
! #: cp/decl.cc:16705
  #, gcc-internal-format
  msgid "ISO C++ prohibits overloading %<operator ?:%>"
  msgstr ""
  
! #: cp/decl.cc:16715
  #, gcc-internal-format
  msgid "%qD must not have variable number of arguments"
  msgstr ""
  
! #: cp/decl.cc:16741
  #, gcc-internal-format
  msgid "%qD must have either zero or one argument"
  msgstr ""
  
! #: cp/decl.cc:16742
  #, gcc-internal-format
  msgid "%qD must have either one or two arguments"
  msgstr ""
  
! #: cp/decl.cc:16754
  #, gcc-internal-format
  msgid "postfix %qD must have %<int%> as its argument"
  msgstr ""
  
! #: cp/decl.cc:16755
  #, gcc-internal-format
  msgid "postfix %qD must have %<int%> as its second argument"
  msgstr ""
  
! #: cp/decl.cc:16766
  #, gcc-internal-format
  msgid "%qD must have no arguments"
  msgstr ""
  
! #: cp/decl.cc:16767 cp/decl.cc:16777
  #, gcc-internal-format
  msgid "%qD must have exactly one argument"
  msgstr ""
  
! #: cp/decl.cc:16778
  #, gcc-internal-format
  msgid "%qD must have exactly two arguments"
  msgstr ""
  
! #: cp/decl.cc:16793
  #, gcc-internal-format
  msgid "%qD cannot have default arguments"
  msgstr ""
  
! #: cp/decl.cc:16817
  #, gcc-internal-format
  msgid "converting %qT to %<void%> will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16824
  #, gcc-internal-format
  msgid ""
  "converting %qT to a reference to the same type will never use a type "
  "conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16826
  #, gcc-internal-format
  msgid ""
  "converting %qT to the same type will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16835
  #, gcc-internal-format
  msgid ""
  "converting %qT to a reference to a base class %qT will never use a type "
  "conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16837
  #, gcc-internal-format
  msgid ""
  "converting %qT to a base class %qT will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16853
  #, gcc-internal-format
  msgid "user-defined %qD always evaluates both arguments"
  msgstr ""
  
! #: cp/decl.cc:16872
  #, gcc-internal-format
  msgid "prefix %qD should return %qT"
  msgstr ""
  
! #: cp/decl.cc:16879
  #, gcc-internal-format
  msgid "postfix %qD should return %qT"
  msgstr ""
  
! #: cp/decl.cc:16891
  #, gcc-internal-format
  msgid "%qD should return by value"
  msgstr ""
  
! #: cp/decl.cc:16946
  #, gcc-internal-format
  msgid "using template type parameter %qT after %qs"
  msgstr ""
  
! #: cp/decl.cc:16970
  #, gcc-internal-format
  msgid "using alias template specialization %qT after %qs"
  msgstr ""
  
! #: cp/decl.cc:16973
  #, gcc-internal-format
  msgid "using typedef-name %qD after %qs"
  msgstr ""
  
! #: cp/decl.cc:16975
  #, gcc-internal-format
  msgid "%qD has a previous declaration here"
  msgstr ""
  
! #: cp/decl.cc:16984
  #, gcc-internal-format
  msgid "%qT referred to as %qs"
  msgstr ""
  
! #: cp/decl.cc:16985 cp/decl.cc:16993
  #, gcc-internal-format
  msgid "%qT has a previous declaration here"
  msgstr ""
  
! #: cp/decl.cc:16992
  #, gcc-internal-format
  msgid "%qT referred to as enum"
  msgstr ""
--- 61085,62677 ----
  msgstr ""
  
  #. diagnostic_option_id=
! #: cp/decl.cc:11241
  #, gcc-internal-format
  msgid ""
  "friend declaration of %qD specifies default arguments and isn%'t a definition"
  msgstr ""
  
! #: cp/decl.cc:11283
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a template"
  msgstr ""
  
! #: cp/decl.cc:11286
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be inline"
  msgstr ""
  
! #: cp/decl.cc:11289 cp/decl.cc:11292
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be %qs"
  msgstr ""
  
! #: cp/decl.cc:11294
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be static"
  msgstr ""
  
! #: cp/decl.cc:11296
  #, gcc-internal-format
  msgid "cannot declare %<::main%> with a linkage specification"
  msgstr ""
  
! #: cp/decl.cc:11299
  #, gcc-internal-format
  msgid "cannot attach %<::main%> to a named module"
  msgstr ""
  
! #: cp/decl.cc:11358
  #, gcc-internal-format
  msgid "non-member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11360
  #, gcc-internal-format
  msgid "static member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11361
  #, gcc-internal-format
  msgid "explicit object member function %qD cannot have cv-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11366
  #, gcc-internal-format
  msgid "non-member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11368
  #, gcc-internal-format
  msgid "static member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11369
  #, gcc-internal-format
  msgid "explicit object member function %qD cannot have ref-qualifier"
  msgstr ""
  
! #: cp/decl.cc:11375 cp/decl.cc:14308 cp/decl.cc:14318 cp/parser.cc:12370
  #, gcc-internal-format
  msgid "explicit object parameter declared here"
  msgstr ""
  
! #: cp/decl.cc:11388
  #, gcc-internal-format
  msgid "deduction guide %qD must be declared in the same scope as %qT"
  msgstr ""
  
! #: cp/decl.cc:11390 cp/decl.cc:11399 cp/typeck.cc:4783
  #, gcc-internal-format
  msgid "  declared here"
  msgstr ""
  
! #: cp/decl.cc:11397
  #, gcc-internal-format
  msgid "deduction guide %qD must have the same access as %qT"
  msgstr ""
  
! #: cp/decl.cc:11403
  #, gcc-internal-format
  msgid "deduction guide %qD must not have a function body"
  msgstr ""
  
! #: cp/decl.cc:11417
  #, gcc-internal-format
  msgid "literal operator with C linkage"
  msgstr ""
  
! #: cp/decl.cc:11427
  #, gcc-internal-format
  msgid "%qD has invalid argument list"
  msgstr ""
  
! #: cp/decl.cc:11435
  #, gcc-internal-format
  msgid "integer suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11441
  #, gcc-internal-format
  msgid "floating-point suffix %qs shadowed by implementation"
  msgstr ""
  
! #: cp/decl.cc:11448
  #, gcc-internal-format
  msgid ""
  "literal operator suffixes not preceded by %<_%> are reserved for future "
  "standardization"
  msgstr ""
  
! #: cp/decl.cc:11453
  #, gcc-internal-format
  msgid "%qD must be a non-member function"
  msgstr ""
  
! #: cp/decl.cc:11538
  #, gcc-internal-format
  msgid "%<::main%> must return %<int%>"
  msgstr ""
  
! #: cp/decl.cc:11578
  #, gcc-internal-format
  msgid "definition of implicitly-declared %qD"
  msgstr ""
  
! #: cp/decl.cc:11584
  #, gcc-internal-format
  msgid "definition of explicitly-defaulted %q+D"
  msgstr ""
  
! #: cp/decl.cc:11586
  #, gcc-internal-format
  msgid "%q#D explicitly defaulted here"
  msgstr ""
  
! #: cp/decl.cc:11603
  #, gcc-internal-format
  msgid "no %q#D member function declared in class %qT"
  msgstr ""
  
! #: cp/decl.cc:11800
  #, gcc-internal-format
  msgid "cannot declare %<::main%> to be a global variable"
  msgstr ""
  
! #: cp/decl.cc:11803
  #, gcc-internal-format
  msgid "an entity named %<main%> cannot be declared with C language linkage"
  msgstr ""
  
! #: cp/decl.cc:11812
  #, gcc-internal-format
  msgid "a non-template variable cannot be %<concept%>"
  msgstr ""
  
! #: cp/decl.cc:11815
  #, gcc-internal-format
  msgid "concept must be defined at namespace scope"
  msgstr ""
  
! #: cp/decl.cc:11818
  #, gcc-internal-format
  msgid "variable concepts are no longer supported"
  msgstr ""
  
! #: cp/decl.cc:11939
  #, gcc-internal-format
  msgid "in-class initialization of static data member %q#D of incomplete type"
  msgstr ""
  
! #: cp/decl.cc:11943
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> needed for in-class initialization of static data member %q#D "
  "of non-integral type"
  msgstr ""
  
! #: cp/decl.cc:11947
  #, gcc-internal-format
  msgid "in-class initialization of static data member %q#D of non-literal type"
  msgstr ""
  
! #: cp/decl.cc:11958
  #, gcc-internal-format
  msgid ""
  "invalid in-class initialization of static data member of non-integral type "
  "%qT"
  msgstr ""
  
! #: cp/decl.cc:11963
  #, gcc-internal-format
  msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
  msgstr ""
  
! #: cp/decl.cc:11968
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids initialization of member constant %qD of non-integral type "
  "%qT"
  msgstr ""
  
! #: cp/decl.cc:12080
  #, gcc-internal-format
  msgid "size of array %qD has non-integral type %qT"
  msgstr ""
  
! #: cp/decl.cc:12083
  #, gcc-internal-format
  msgid "size of array has non-integral type %qT"
  msgstr ""
  
! #: cp/decl.cc:12114 cp/decl.cc:12186
  #, gcc-internal-format
  msgid "size of array %qD is not an integral constant-expression"
  msgstr ""
  
! #: cp/decl.cc:12118 cp/decl.cc:12189
  #, gcc-internal-format
  msgid "size of array is not an integral constant-expression"
  msgstr ""
  
! #: cp/decl.cc:12169
  #, gcc-internal-format
  msgid "ISO C++ forbids zero-size array %qD"
  msgstr ""
  
! #: cp/decl.cc:12172
  #, gcc-internal-format
  msgid "ISO C++ forbids zero-size array"
  msgstr ""
  
! #: cp/decl.cc:12196
  #, gcc-internal-format
  msgid "ISO C++ forbids variable length array %qD"
  msgstr ""
  
! #: cp/decl.cc:12199
  #, gcc-internal-format
  msgid "ISO C++ forbids variable length array"
  msgstr ""
  
! #: cp/decl.cc:12205
  #, gcc-internal-format
  msgid "variable length array %qD is used"
  msgstr ""
  
! #: cp/decl.cc:12208
  #, gcc-internal-format
  msgid "variable length array is used"
  msgstr ""
  
! #: cp/decl.cc:12260
  #, gcc-internal-format
  msgid "overflow in array dimension"
  msgstr ""
  
! #: cp/decl.cc:12320
  #, gcc-internal-format
  msgid "%qD declared as array of template placeholder type %qT"
  msgstr ""
  
! #: cp/decl.cc:12323
  #, gcc-internal-format
  msgid "creating array of template placeholder type %qT"
  msgstr ""
  
! #: cp/decl.cc:12333
  #, gcc-internal-format
  msgid "declaration of %qD as array of void"
  msgstr ""
  
! #: cp/decl.cc:12335
  #, gcc-internal-format
  msgid "creating array of void"
  msgstr ""
  
! #: cp/decl.cc:12340
  #, gcc-internal-format
  msgid "declaration of %qD as array of functions"
  msgstr ""
  
! #: cp/decl.cc:12342
  #, gcc-internal-format
  msgid "creating array of functions"
  msgstr ""
  
! #: cp/decl.cc:12347
  #, gcc-internal-format
  msgid "declaration of %qD as array of references"
  msgstr ""
  
! #: cp/decl.cc:12349
  #, gcc-internal-format
  msgid "creating array of references"
  msgstr ""
  
! #: cp/decl.cc:12354
  #, gcc-internal-format
  msgid "declaration of %qD as array of function members"
  msgstr ""
  
! #: cp/decl.cc:12357
  #, gcc-internal-format
  msgid "creating array of function members"
  msgstr ""
  
! #: cp/decl.cc:12375
  #, gcc-internal-format
  msgid ""
  "declaration of %qD as multidimensional array must have bounds for all "
  "dimensions except the first"
  msgstr ""
  
! #: cp/decl.cc:12379
  #, gcc-internal-format
  msgid ""
  "multidimensional array must have bounds for all dimensions except the first"
  msgstr ""
  
! #: cp/decl.cc:12393
  #, gcc-internal-format
  msgid "variable-length array of %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:12491
  #, gcc-internal-format
  msgid "return type specification for constructor invalid"
  msgstr ""
  
! #: cp/decl.cc:12494
  #, gcc-internal-format
  msgid "qualifiers are not allowed on constructor declaration"
  msgstr ""
  
! #: cp/decl.cc:12505
  #, gcc-internal-format
  msgid "return type specification for destructor invalid"
  msgstr ""
  
! #: cp/decl.cc:12508
  #, gcc-internal-format
  msgid "qualifiers are not allowed on destructor declaration"
  msgstr ""
  
! #: cp/decl.cc:12521
  #, gcc-internal-format
  msgid "return type specified for %<operator %T%>"
  msgstr ""
  
! #: cp/decl.cc:12524
  #, gcc-internal-format
  msgid "qualifiers are not allowed on declaration of %<operator %T%>"
  msgstr ""
  
! #: cp/decl.cc:12533
  #, gcc-internal-format
  msgid "return type specified for deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12536
  #, gcc-internal-format
  msgid "qualifiers are not allowed on declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12540
  #, gcc-internal-format
  msgid "template template parameter %qT in declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12549
  #, gcc-internal-format
  msgid "%<decl-specifier%> in declaration of deduction guide"
  msgstr ""
  
! #: cp/decl.cc:12570
  #, gcc-internal-format
  msgid "unnamed variable or field declared void"
  msgstr ""
  
! #: cp/decl.cc:12578
  #, gcc-internal-format
  msgid "variable or field declared void"
  msgstr ""
  
! #: cp/decl.cc:12593
  #, gcc-internal-format
  msgid "%<inline%> specifier invalid for variable %qD declared at block scope"
  msgstr ""
  
! #: cp/decl.cc:12598
  #, gcc-internal-format
  msgid ""
  "inline variables are only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/decl.cc:12654
  #, gcc-internal-format
  msgid "%qT as type rather than plain %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:12660
  #, gcc-internal-format
  msgid "%<decltype(auto)%> cannot be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:12681
  msgid "%e and %e specified together"
  msgstr ""
  
! #: cp/decl.cc:12893
  #, gcc-internal-format
  msgid "invalid use of qualified-name %<::%D%>"
  msgstr ""
  
! #: cp/decl.cc:12896 cp/decl.cc:12918
  #, gcc-internal-format
  msgid "invalid use of qualified-name %<%T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:12899
  #, gcc-internal-format
  msgid "invalid use of qualified-name %<%D::%D%>"
  msgstr ""
  
! #: cp/decl.cc:12909
  #, gcc-internal-format
  msgid "%q#T is not a class or namespace"
  msgstr ""
  
! #: cp/decl.cc:12933
  #, gcc-internal-format
  msgid "declaration of %qE as non-function"
  msgstr ""
  
! #: cp/decl.cc:12940
  #, gcc-internal-format
  msgid "declaration of %qE as non-member"
  msgstr ""
  
! #: cp/decl.cc:12968
  #, gcc-internal-format
  msgid "declarator-id missing; using reserved word %qD"
  msgstr ""
  
! #: cp/decl.cc:13019
  #, gcc-internal-format
  msgid "function definition does not declare parameters"
  msgstr ""
  
! #: cp/decl.cc:13027 cp/decl.cc:13036 cp/decl.cc:15032
  #, gcc-internal-format
  msgid "declaration of %qD as non-function"
  msgstr ""
  
! #: cp/decl.cc:13044
  #, gcc-internal-format
  msgid "declaration of %qD as %<typedef%>"
  msgstr ""
  
! #: cp/decl.cc:13049
  #, gcc-internal-format
  msgid "declaration of %qD as parameter"
  msgstr ""
  
! #: cp/decl.cc:13084
  #, gcc-internal-format
  msgid "both %qs and %qs specified"
  msgstr ""
  
! #: cp/decl.cc:13091 cp/decl.cc:13098 cp/decl.cc:13105 cp/decl.cc:13112
  #, gcc-internal-format
  msgid "%qs cannot appear in a typedef declaration"
  msgstr ""
  
! #: cp/decl.cc:13123
  #, gcc-internal-format
  msgid "can use at most one of the %<constinit%> and %<constexpr%> specifiers"
  msgstr ""
  
! #: cp/decl.cc:13133
  #, gcc-internal-format
  msgid "two or more data types in declaration of %qs"
  msgstr ""
  
! #: cp/decl.cc:13187
  #, gcc-internal-format
  msgid "ISO C++ does not support plain %<complex%> meaning %<double complex%>"
  msgstr ""
  
! #: cp/decl.cc:13237 cp/decl.cc:13241 cp/decl.cc:13244
  #, gcc-internal-format
  msgid "ISO C++ forbids declaration of %qs with no type"
  msgstr ""
  
! #: cp/decl.cc:13261
  #, gcc-internal-format
  msgid "%<__int%d%> is not supported by this target"
  msgstr ""
  
! #: cp/decl.cc:13269
  #, gcc-internal-format
  msgid "ISO C++ does not support %<__int%d%> for %qs"
  msgstr ""
  
! #: cp/decl.cc:13332
  #, gcc-internal-format
  msgid "%qs specified with %qT"
  msgstr ""
  
! #: cp/decl.cc:13339
  #, gcc-internal-format
  msgid "%qs specified with typedef-name %qD"
  msgstr ""
  
! #: cp/decl.cc:13348
  #, gcc-internal-format
  msgid "%qs specified with %<decltype%>"
  msgstr ""
  
! #: cp/decl.cc:13350
  #, gcc-internal-format
  msgid "%qs specified with %<typeof%>"
  msgstr ""
  
! #: cp/decl.cc:13419
  #, gcc-internal-format
  msgid "complex invalid for %qs"
  msgstr ""
  
! #: cp/decl.cc:13463
  #, gcc-internal-format
  msgid ""
  "missing template argument list after %qE; for deduction, template "
  "placeholder must be followed by a simple declarator-id"
  msgstr ""
  
! #: cp/decl.cc:13489
  #, gcc-internal-format
  msgid "member %qD cannot be declared both %<virtual%> and %<static%>"
  msgstr ""
  
! #: cp/decl.cc:13498
  #, gcc-internal-format
  msgid ""
  "member %qD can be declared both %<virtual%> and %<constexpr%> only in %<-"
  "std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/decl.cc:13511
  #, gcc-internal-format
  msgid "typedef declaration invalid in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:13518
  #, gcc-internal-format
  msgid "storage class specified for template parameter %qs"
  msgstr ""
  
! #: cp/decl.cc:13528 cp/decl.cc:13705
  #, gcc-internal-format
  msgid "storage class specified for parameter %qs"
  msgstr ""
  
! #: cp/decl.cc:13536 cp/decl.cc:13545 cp/decl.cc:13551 cp/decl.cc:13557
  #, gcc-internal-format
  msgid "a parameter cannot be declared %qs"
  msgstr ""
  
! #: cp/decl.cc:13567
  #, gcc-internal-format
  msgid "%<virtual%> outside class declaration"
  msgstr ""
  
! #: cp/decl.cc:13577 cp/decl.cc:13580 cp/decl.cc:13582 cp/decl.cc:13585
! #: cp/decl.cc:13595 cp/decl.cc:13605 cp/decl.cc:13615 cp/decl.cc:13619
  #, gcc-internal-format
  msgid "structured binding declaration cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:13589 cp/decl.cc:13611
  #, gcc-internal-format
  msgid ""
  "structured binding declaration can be %qs only in %<-std=c++20%> or %<-"
  "std=gnu++20%>"
  msgstr ""
  
! #: cp/decl.cc:13599
  #, gcc-internal-format
  msgid "%<volatile%>-qualified structured binding is deprecated"
  msgstr ""
  
! #: cp/decl.cc:13623
  #, gcc-internal-format
  msgid "structured binding declaration cannot be C++98 %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13635
  #, gcc-internal-format
  msgid "structured binding declaration cannot have type %qT"
  msgstr ""
  
! #: cp/decl.cc:13638
  #, gcc-internal-format
  msgid ""
  "type must be cv-qualified %<auto%> or reference to cv-qualified %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13646
  #, gcc-internal-format
  msgid ""
  "structured binding declaration cannot have constrained %<auto%> type %qT"
  msgstr ""
  
! #: cp/decl.cc:13677
  #, gcc-internal-format
  msgid "multiple storage classes in declaration of %qs"
  msgstr ""
  
! #: cp/decl.cc:13703
  #, gcc-internal-format
  msgid "storage class specified for %qs"
  msgstr ""
  
! #: cp/decl.cc:13717
  #, gcc-internal-format
  msgid "nested function %qs declared %<extern%>"
  msgstr ""
  
! #: cp/decl.cc:13722
  #, gcc-internal-format
  msgid "top-level declaration of %qs specifies %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:13730
  #, gcc-internal-format
  msgid "function-scope %qs implicitly auto and declared %<__thread%>"
  msgstr ""
  
! #: cp/decl.cc:13744
  #, gcc-internal-format
  msgid "storage class specifiers invalid in friend function declarations"
  msgstr ""
  
! #: cp/decl.cc:13850
  #, gcc-internal-format
  msgid "unnecessary parentheses in declaration of %qs"
  msgstr ""
  
! #: cp/decl.cc:13856
  #, gcc-internal-format
  msgid "remove parentheses"
  msgstr ""
  
! #: cp/decl.cc:13923
  #, gcc-internal-format
  msgid ""
  "explicit object member function only available with %<-std=c++23%> or %<-"
  "std=gnu++23%>"
  msgstr ""
  
! #: cp/decl.cc:13937
  #, gcc-internal-format
  msgid "a function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13943
  #, gcc-internal-format
  msgid "a pointer to function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13947
  #, gcc-internal-format
  msgid ""
  "a pointer to member function type cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:13955
  #, gcc-internal-format
  msgid ""
  "the type of a pointer to explicit object member function is a regular "
  "pointer to function type"
  msgstr ""
  
! #: cp/decl.cc:13959
  #, gcc-internal-format
  msgid ""
  "the type of an explicit object member function is a regular function type"
  msgstr ""
  
! #: cp/decl.cc:13980
  #, gcc-internal-format
  msgid ""
  "only the first parameter of a member function can be declared as an explicit "
  "object parameter"
  msgstr ""
  
! #: cp/decl.cc:13985
  #, gcc-internal-format
  msgid "valid explicit object parameter declared here"
  msgstr ""
  
! #: cp/decl.cc:13989
  #, gcc-internal-format
  msgid "requires-clause on return type"
  msgstr ""
  
! #: cp/decl.cc:14010
  #, gcc-internal-format
  msgid "%qs function uses %<auto%> type specifier without trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14014
  #, gcc-internal-format
  msgid ""
  "deduced return type only available with %<-std=c++14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/decl.cc:14019
  #, gcc-internal-format
  msgid "virtual function cannot have deduced return type"
  msgstr ""
  
! #: cp/decl.cc:14026
  #, gcc-internal-format
  msgid ""
  "%qs function with trailing return type has %qT as its type rather than plain "
  "%<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14035
  #, gcc-internal-format
  msgid ""
  "%qs function with trailing return type has %<decltype(auto)%> as its type "
  "rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14040
  #, gcc-internal-format
  msgid "invalid use of %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:14047
  #, gcc-internal-format
  msgid ""
  "%qs function with trailing return type has constrained %<auto%> type "
  "specifier rather than plain %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14053
  #, gcc-internal-format
  msgid "invalid use of constrained %<auto%> type"
  msgstr ""
  
! #: cp/decl.cc:14065
  #, gcc-internal-format
  msgid "deduced class type %qD in function return type"
  msgstr ""
  
! #: cp/decl.cc:14075
  #, gcc-internal-format
  msgid "deduction guide for %qT must have trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14088
  #, gcc-internal-format
  msgid ""
  "trailing return type %qT of deduction guide is not a specialization of %qT"
  msgstr ""
  
! #: cp/decl.cc:14102
  #, gcc-internal-format
  msgid ""
  "trailing return type only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/decl.cc:14105
  #, gcc-internal-format
  msgid ""
  "%qs function with trailing return type not declared with %<auto%> type "
  "specifier"
  msgstr ""
  
! #: cp/decl.cc:14112
  #, gcc-internal-format
  msgid "a conversion function cannot have a trailing return type"
  msgstr ""
  
! #: cp/decl.cc:14138
  #, gcc-internal-format
  msgid "%<volatile%>-qualified return type is deprecated"
  msgstr ""
  
! #: cp/decl.cc:14150
  #, gcc-internal-format
  msgid "%qs declared as function returning a function"
  msgstr ""
  
! #: cp/decl.cc:14156
  #, gcc-internal-format
  msgid "%qs declared as function returning an array"
  msgstr ""
  
! #: cp/decl.cc:14163
  #, gcc-internal-format
  msgid "%<constinit%> on function return type is not allowed"
  msgstr ""
  
! #: cp/decl.cc:14196
  #, gcc-internal-format
  msgid "destructor cannot be static member function"
  msgstr ""
  
! #: cp/decl.cc:14198
  #, gcc-internal-format
  msgid "constructor cannot be static member function"
  msgstr ""
  
! #: cp/decl.cc:14203
  #, gcc-internal-format
  msgid "destructors may not be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:14204
  #, gcc-internal-format
  msgid "constructors may not be cv-qualified"
  msgstr ""
  
! #: cp/decl.cc:14212
  #, gcc-internal-format
  msgid "destructors may not be ref-qualified"
  msgstr ""
  
! #: cp/decl.cc:14213
  #, gcc-internal-format
  msgid "constructors may not be ref-qualified"
  msgstr ""
  
! #: cp/decl.cc:14231
  #, gcc-internal-format
  msgid "constructors cannot be declared %<virtual%>"
  msgstr ""
  
! #: cp/decl.cc:14248
  #, gcc-internal-format
  msgid "virtual functions cannot be friends"
  msgstr ""
  
! #: cp/decl.cc:14253
  #, gcc-internal-format
  msgid "friend declaration not in class definition"
  msgstr ""
  
! #: cp/decl.cc:14257
  #, gcc-internal-format
  msgid "cannot define friend function %qs in a local class definition"
  msgstr ""
  
! #: cp/decl.cc:14267
  #, gcc-internal-format
  msgid "friend function definition %qs cannot have a name qualified with %<::%>"
  msgstr ""
  
! #: cp/decl.cc:14271
  #, gcc-internal-format
  msgid ""
  "friend function definition %qs cannot have a name qualified with %<%D::%>"
  msgstr ""
  
! #: cp/decl.cc:14297
  #, gcc-internal-format
  msgid "a non-member function cannot have an explicit object parameter"
  msgstr ""
  
! #: cp/decl.cc:14305
  #, gcc-internal-format
  msgid "an explicit object member function cannot be %<virtual%>"
  msgstr ""
  
! #: cp/decl.cc:14315
  #, gcc-internal-format
  msgid "an explicit object member function cannot be %<static%>"
  msgstr ""
  
! #: cp/decl.cc:14324
  #, gcc-internal-format
  msgid "%qD cannot be an explicit object member function"
  msgstr ""
  
! #: cp/decl.cc:14347
  #, gcc-internal-format
  msgid "destructors may not have parameters"
  msgstr ""
  
! #: cp/decl.cc:14405
  #, gcc-internal-format
  msgid "cannot declare pointer to %q#T"
  msgstr ""
  
! #: cp/decl.cc:14418 cp/decl.cc:14425
  #, gcc-internal-format
  msgid "cannot declare reference to %q#T"
  msgstr ""
  
! #: cp/decl.cc:14427
  #, gcc-internal-format
  msgid "cannot declare pointer to %q#T member"
  msgstr ""
  
! #: cp/decl.cc:14456
  #, gcc-internal-format
  msgid "cannot declare reference to qualified function type %qT"
  msgstr ""
  
! #: cp/decl.cc:14457
  #, gcc-internal-format
  msgid "cannot declare pointer to qualified function type %qT"
  msgstr ""
  
! #: cp/decl.cc:14530
  #, gcc-internal-format
  msgid ""
  "cannot declare reference to %q#T, which is not a typedef or a template type "
  "argument"
  msgstr ""
  
! #: cp/decl.cc:14609
  #, gcc-internal-format
  msgid "template-id %qD used as a declarator"
  msgstr ""
  
! #: cp/decl.cc:14635
  #, gcc-internal-format
  msgid "member functions are implicitly friends of their class"
  msgstr ""
  
! #: cp/decl.cc:14640
  #, gcc-internal-format
  msgid "extra qualification %<%T::%> on member %qs"
  msgstr ""
  
! #: cp/decl.cc:14670
  #, gcc-internal-format
  msgid "cannot define member function %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14672
  #, gcc-internal-format
  msgid "cannot declare member function %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14680
  #, gcc-internal-format
  msgid "cannot declare member %<%T::%s%> within %qT"
  msgstr ""
  
! #: cp/decl.cc:14720
  #, gcc-internal-format
  msgid "non-parameter %qs cannot be a parameter pack"
  msgstr ""
  
! #: cp/decl.cc:14729
  #, gcc-internal-format
  msgid "data member may not have variably modified type %qT"
  msgstr ""
  
! #: cp/decl.cc:14732
  #, gcc-internal-format
  msgid "parameter may not have variably modified type %qT"
  msgstr ""
  
! #: cp/decl.cc:14743
  #, gcc-internal-format
  msgid "%<explicit%> outside class declaration"
  msgstr ""
  
! #: cp/decl.cc:14746
  #, gcc-internal-format
  msgid "%<explicit%> in friend declaration"
  msgstr ""
  
! #: cp/decl.cc:14749
  #, gcc-internal-format
  msgid ""
  "only declarations of constructors and conversion operators can be "
  "%<explicit%>"
  msgstr ""
  
! #: cp/decl.cc:14759
  #, gcc-internal-format
  msgid "non-member %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14766
  #, gcc-internal-format
  msgid "non-object member %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14772
  #, gcc-internal-format
  msgid "function %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14778
  #, gcc-internal-format
  msgid "%<static%> %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14784
  #, gcc-internal-format
  msgid "%<const%> %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14790
  #, gcc-internal-format
  msgid "reference %qs cannot be declared %<mutable%>"
  msgstr ""
  
! #: cp/decl.cc:14806
  #, gcc-internal-format
  msgid "typedef may not be a function definition"
  msgstr ""
  
! #: cp/decl.cc:14809
  #, gcc-internal-format
  msgid "typedef may not be a member function definition"
  msgstr ""
  
! #: cp/decl.cc:14835
  #, gcc-internal-format
  msgid "%<auto%> not allowed in alias declaration"
  msgstr ""
  
! #: cp/decl.cc:14838
  #, gcc-internal-format
  msgid "typedef declared %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:14843
  #, gcc-internal-format
  msgid "requires-clause on typedef"
  msgstr ""
  
! #: cp/decl.cc:14847
  #, gcc-internal-format
  msgid "typedef name may not be a nested-name-specifier"
  msgstr ""
  
! #: cp/decl.cc:14873
  #, gcc-internal-format
  msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
  msgstr ""
  
! #: cp/decl.cc:14962
  #, gcc-internal-format
  msgid "%<inline%> specified for friend class declaration"
  msgstr ""
  
! #: cp/decl.cc:14970
  #, gcc-internal-format
  msgid "template parameters cannot be friends"
  msgstr ""
  
! #: cp/decl.cc:14972
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
  msgstr ""
  
! #: cp/decl.cc:14976
  #, gcc-internal-format
  msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
  msgstr ""
  
! #: cp/decl.cc:14989
  #, gcc-internal-format
  msgid "trying to make class %qT a friend of global scope"
  msgstr ""
  
! #: cp/decl.cc:15009
  #, gcc-internal-format
  msgid "invalid qualifiers on non-member function type"
  msgstr ""
  
! #: cp/decl.cc:15013
  #, gcc-internal-format
  msgid "requires-clause on type-id"
  msgstr ""
  
! #: cp/decl.cc:15023
  #, gcc-internal-format
  msgid "abstract declarator %qT used as declaration"
  msgstr ""
  
! #: cp/decl.cc:15038
  #, gcc-internal-format
  msgid "requires-clause on declaration of non-function type %qT"
  msgstr ""
  
! #: cp/decl.cc:15057
  #, gcc-internal-format
  msgid "cannot use %<::%> in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:15067 cp/parser.cc:21414
  #, gcc-internal-format
  msgid "cannot declare a parameter with %<decltype(auto)%>"
  msgstr ""
  
! #: cp/decl.cc:15074
  #, gcc-internal-format
  msgid ""
  "missing template argument list after %qE; template placeholder not permitted "
  "in parameter"
  msgstr ""
  
! #: cp/decl.cc:15077
  #, gcc-internal-format
  msgid "or use %<auto%> for an abbreviated function template"
  msgstr ""
  
! #: cp/decl.cc:15083 cp/parser.cc:26080
  #, gcc-internal-format
  msgid "%<auto%> parameter not permitted in this context"
  msgstr ""
  
! #: cp/decl.cc:15093
  #, gcc-internal-format
  msgid "parameter declared %<auto%>"
  msgstr ""
  
! #: cp/decl.cc:15147 cp/parser.cc:3855
  #, gcc-internal-format
  msgid "invalid use of template-name %qE without an argument list"
  msgstr ""
  
! #: cp/decl.cc:15151
  #, gcc-internal-format
  msgid "non-static data member declared with placeholder %qT"
  msgstr ""
  
! #: cp/decl.cc:15171
  #, gcc-internal-format
  msgid "ISO C++ forbids flexible array member %qs"
  msgstr ""
  
! #: cp/decl.cc:15174
  #, gcc-internal-format
  msgid "ISO C++ forbids flexible array members"
  msgstr ""
  
  #. Something like struct S { int N::j; };
! #: cp/decl.cc:15190
  #, gcc-internal-format
  msgid "invalid use of %<::%>"
  msgstr ""
  
! #: cp/decl.cc:15211
  #, gcc-internal-format
  msgid "declaration of function %qD in invalid context"
  msgstr ""
  
! #: cp/decl.cc:15221
  #, gcc-internal-format
  msgid "function %qD declared %<virtual%> inside a union"
  msgstr ""
  
! #: cp/decl.cc:15231
  #, gcc-internal-format
  msgid "%qD cannot be declared %<virtual%>, since it is always static"
  msgstr ""
  
! #: cp/decl.cc:15245
  #, gcc-internal-format
  msgid "expected qualified name in friend declaration for destructor %qD"
  msgstr ""
  
! #: cp/decl.cc:15252
  #, gcc-internal-format
  msgid "declaration of %qD as member of %qT"
  msgstr ""
  
! #: cp/decl.cc:15259 cp/decl.cc:15272
  #, gcc-internal-format
  msgid "a destructor cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:15278
  #, gcc-internal-format
  msgid "expected qualified name in friend declaration for constructor %qD"
  msgstr ""
  
! #: cp/decl.cc:15287
  #, gcc-internal-format
  msgid "a constructor cannot be %<concept%>"
  msgstr ""
  
! #: cp/decl.cc:15293
  #, gcc-internal-format
  msgid "a concept cannot be a member function"
  msgstr ""
  
! #: cp/decl.cc:15301 cp/decl.cc:15660
  #, gcc-internal-format
  msgid "%qD cannot be %qs"
  msgstr ""
  
! #: cp/decl.cc:15311
  #, gcc-internal-format
  msgid "specialization of variable template %qD declared as function"
  msgstr ""
  
! #: cp/decl.cc:15314
  #, gcc-internal-format
  msgid "variable template declared here"
  msgstr ""
  
! #: cp/decl.cc:15379
  #, gcc-internal-format
  msgid "field %qD has incomplete type %qT"
  msgstr ""
  
! #: cp/decl.cc:15384
  #, gcc-internal-format
  msgid "name %qT has incomplete type"
  msgstr ""
  
! #: cp/decl.cc:15404
  #, gcc-internal-format
  msgid "%qE is neither function nor member function; cannot be declared friend"
  msgstr ""
  
! #: cp/decl.cc:15407
  #, gcc-internal-format
  msgid ""
  "unnamed field is neither function nor member function; cannot be declared "
  "friend"
  msgstr ""
  
! #: cp/decl.cc:15426 cp/parser.cc:21980 cp/parser.cc:28922
  #, gcc-internal-format
  msgid ""
  "an attribute that appertains to a friend declaration that is not a "
  "definition is ignored"
  msgstr ""
  
! #: cp/decl.cc:15476 cp/decl.cc:15487
  #, gcc-internal-format
  msgid "static data member %qE declared %qs"
  msgstr ""
  
! #: cp/decl.cc:15481
  #, gcc-internal-format
  msgid "%<constexpr%> static data member %qD must have an initializer"
  msgstr ""
  
! #: cp/decl.cc:15524 cp/decl.cc:15532 cp/decl.cc:15539 cp/decl.cc:15546
  #, gcc-internal-format
  msgid "non-static data member %qE declared %qs"
  msgstr ""
  
! #: cp/decl.cc:15598
  #, gcc-internal-format
  msgid "storage class %<auto%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15601
  #, gcc-internal-format
  msgid "storage class %<register%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15607
  #, gcc-internal-format
  msgid "storage class %<__thread%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15611
  #, gcc-internal-format
  msgid "storage class %<thread_local%> invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15616
  #, gcc-internal-format
  msgid "%<constinit%> specifier invalid for function %qs"
  msgstr ""
  
! #: cp/decl.cc:15619
  #, gcc-internal-format
  msgid "virt-specifiers in %qs not allowed outside a class definition"
  msgstr ""
  
! #: cp/decl.cc:15631
  #, gcc-internal-format
  msgid ""
  "%<static%> specifier invalid for function %qs declared out of global scope"
  msgstr ""
  
! #: cp/decl.cc:15635
  #, gcc-internal-format
  msgid ""
  "%<inline%> specifier invalid for function %qs declared out of global scope"
  msgstr ""
  
! #: cp/decl.cc:15643
  #, gcc-internal-format
  msgid "virtual non-class function %qs"
  msgstr ""
  
! #: cp/decl.cc:15650
  #, gcc-internal-format
  msgid "%qs defined in a non-class scope"
  msgstr ""
  
! #: cp/decl.cc:15651
  #, gcc-internal-format
  msgid "%qs declared in a non-class scope"
  msgstr ""
  
! #: cp/decl.cc:15694
  #, gcc-internal-format
  msgid "cannot declare member function %qD to have static linkage"
  msgstr ""
  
! #: cp/decl.cc:15703
  #, gcc-internal-format
  msgid "cannot declare static function inside another function"
  msgstr ""
  
! #: cp/decl.cc:15744
  #, gcc-internal-format
  msgid ""
  "%<static%> may not be used when defining (as opposed to declaring) a static "
  "data member"
  msgstr ""
  
! #: cp/decl.cc:15751
  #, gcc-internal-format
  msgid "static member %qD declared %<register%>"
  msgstr ""
  
! #: cp/decl.cc:15757
  #, gcc-internal-format
  msgid "cannot explicitly declare member %q#D to have extern linkage"
  msgstr ""
  
! #: cp/decl.cc:15765
  #, gcc-internal-format
  msgid "declaration of %<constexpr%> variable %qD is not a definition"
  msgstr ""
  
! #: cp/decl.cc:15772
  #, gcc-internal-format
  msgid "a variable cannot be declared %<consteval%>"
  msgstr ""
  
! #: cp/decl.cc:15804
  #, gcc-internal-format
  msgid "%qs initialized and declared %<extern%>"
  msgstr ""
  
! #: cp/decl.cc:15809
  #, gcc-internal-format
  msgid "%qs has both %<extern%> and initializer"
  msgstr ""
  
! #: cp/decl.cc:16011
  #, gcc-internal-format
  msgid "default argument %qE uses %qD"
  msgstr ""
  
! #: cp/decl.cc:16014
  #, gcc-internal-format
  msgid "default argument %qE uses local variable %qD"
  msgstr ""
  
! #: cp/decl.cc:16141
  #, gcc-internal-format
  msgid "invalid use of cv-qualified type %qT in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:16145
  #, gcc-internal-format
  msgid "invalid use of type %<void%> in parameter declaration"
  msgstr ""
  
! #: cp/decl.cc:16174
  #, gcc-internal-format
  msgid "%<volatile%>-qualified parameter is deprecated"
  msgstr ""
  
! #: cp/decl.cc:16182
  #, gcc-internal-format
  msgid "parameter %qD invalidly declared method type"
  msgstr ""
  
! #: cp/decl.cc:16207
  #, gcc-internal-format
  msgid "parameter %qD includes pointer to array of unknown bound %qT"
  msgstr ""
  
! #: cp/decl.cc:16209
  #, gcc-internal-format
  msgid "parameter %qD includes reference to array of unknown bound %qT"
  msgstr ""
  
! #: cp/decl.cc:16492
  #, gcc-internal-format
  msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
  msgstr ""
  
! #: cp/decl.cc:16571
  #, gcc-internal-format
  msgid "%qD may not be declared within a namespace"
  msgstr ""
  
! #: cp/decl.cc:16578
  #, gcc-internal-format
  msgid "%qD may not be declared as static"
  msgstr ""
  
! #: cp/decl.cc:16636
  #, gcc-internal-format
  msgid "%qD must be a non-static member function"
  msgstr ""
  
! #: cp/decl.cc:16644
  #, gcc-internal-format
  msgid "%qD must be a member function"
  msgstr ""
  
! #: cp/decl.cc:16652
  #, gcc-internal-format
  msgid ""
  "%qD may be a static member function only with %<-std=c++23%> or %<-std=gnu+"
  "+23%>"
  msgstr ""
  
! #: cp/decl.cc:16662
  #, gcc-internal-format
  msgid ""
  "%qD must be either a non-static member function or a non-member function"
  msgstr ""
  
! #: cp/decl.cc:16672
  #, gcc-internal-format
  msgid "%qD must have an argument of class or enumerated type"
  msgstr ""
  
  #. 13.4.0.3
! #: cp/decl.cc:16703
  #, gcc-internal-format
  msgid "ISO C++ prohibits overloading %<operator ?:%>"
  msgstr ""
  
! #: cp/decl.cc:16713
  #, gcc-internal-format
  msgid "%qD must not have variable number of arguments"
  msgstr ""
  
! #: cp/decl.cc:16739
  #, gcc-internal-format
  msgid "%qD must have either zero or one argument"
  msgstr ""
  
! #: cp/decl.cc:16740
  #, gcc-internal-format
  msgid "%qD must have either one or two arguments"
  msgstr ""
  
! #: cp/decl.cc:16752
  #, gcc-internal-format
  msgid "postfix %qD must have %<int%> as its argument"
  msgstr ""
  
! #: cp/decl.cc:16753
  #, gcc-internal-format
  msgid "postfix %qD must have %<int%> as its second argument"
  msgstr ""
  
! #: cp/decl.cc:16764
  #, gcc-internal-format
  msgid "%qD must have no arguments"
  msgstr ""
  
! #: cp/decl.cc:16765 cp/decl.cc:16775
  #, gcc-internal-format
  msgid "%qD must have exactly one argument"
  msgstr ""
  
! #: cp/decl.cc:16776
  #, gcc-internal-format
  msgid "%qD must have exactly two arguments"
  msgstr ""
  
! #: cp/decl.cc:16791
  #, gcc-internal-format
  msgid "%qD cannot have default arguments"
  msgstr ""
  
! #: cp/decl.cc:16815
  #, gcc-internal-format
  msgid "converting %qT to %<void%> will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16822
  #, gcc-internal-format
  msgid ""
  "converting %qT to a reference to the same type will never use a type "
  "conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16824
  #, gcc-internal-format
  msgid ""
  "converting %qT to the same type will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16833
  #, gcc-internal-format
  msgid ""
  "converting %qT to a reference to a base class %qT will never use a type "
  "conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16835
  #, gcc-internal-format
  msgid ""
  "converting %qT to a base class %qT will never use a type conversion operator"
  msgstr ""
  
! #: cp/decl.cc:16851
  #, gcc-internal-format
  msgid "user-defined %qD always evaluates both arguments"
  msgstr ""
  
! #: cp/decl.cc:16870
  #, gcc-internal-format
  msgid "prefix %qD should return %qT"
  msgstr ""
  
! #: cp/decl.cc:16877
  #, gcc-internal-format
  msgid "postfix %qD should return %qT"
  msgstr ""
  
! #: cp/decl.cc:16889
  #, gcc-internal-format
  msgid "%qD should return by value"
  msgstr ""
  
! #: cp/decl.cc:16944
  #, gcc-internal-format
  msgid "using template type parameter %qT after %qs"
  msgstr ""
  
! #: cp/decl.cc:16968
  #, gcc-internal-format
  msgid "using alias template specialization %qT after %qs"
  msgstr ""
  
! #: cp/decl.cc:16971
  #, gcc-internal-format
  msgid "using typedef-name %qD after %qs"
  msgstr ""
  
! #: cp/decl.cc:16973
  #, gcc-internal-format
  msgid "%qD has a previous declaration here"
  msgstr ""
  
! #: cp/decl.cc:16982
  #, gcc-internal-format
  msgid "%qT referred to as %qs"
  msgstr ""
  
! #: cp/decl.cc:16983 cp/decl.cc:16991
  #, gcc-internal-format
  msgid "%qT has a previous declaration here"
  msgstr ""
  
! #: cp/decl.cc:16990
  #, gcc-internal-format
  msgid "%qT referred to as enum"
  msgstr ""
*************** msgstr ""
*** 62599,62698 ****
  #. void f(class C);		// No template header here
  #.
  #. then the required template argument is missing.
! #: cp/decl.cc:17007
  #, gcc-internal-format
  msgid "template argument required for %<%s %T%>"
  msgstr ""
  
! #: cp/decl.cc:17050 cp/name-lookup.cc:6234 cp/name-lookup.cc:6367
! #: cp/parser.cc:7477 cp/parser.cc:33034
  #, gcc-internal-format
  msgid "reference to %qD is ambiguous"
  msgstr ""
  
! #: cp/decl.cc:17060
  #, gcc-internal-format
  msgid "class template %qD redeclared as non-template"
  msgstr ""
  
! #: cp/decl.cc:17082 cp/name-lookup.cc:5923
  #, gcc-internal-format
  msgid "%qD has the same name as the class in which it is declared"
  msgstr ""
  
! #: cp/decl.cc:17111 cp/friend.cc:318 cp/parser.cc:3680 cp/parser.cc:7181
! #: cp/pt.cc:10128
  #, gcc-internal-format
  msgid "%qT is not a template"
  msgstr ""
  
! #: cp/decl.cc:17116
  #, gcc-internal-format
  msgid "perhaps you want to explicitly add %<%T::%>"
  msgstr ""
  
! #: cp/decl.cc:17221
  #, gcc-internal-format
  msgid "use of enum %q#D without previous declaration"
  msgstr ""
  
! #: cp/decl.cc:17248
  #, gcc-internal-format
  msgid "redeclaration of %qT as a non-template"
  msgstr ""
  
! #: cp/decl.cc:17385
  #, gcc-internal-format
  msgid "derived union %qT invalid"
  msgstr ""
  
! #: cp/decl.cc:17392
  #, gcc-internal-format
  msgid "%qT defined with multiple direct bases"
  msgstr ""
  
! #: cp/decl.cc:17403
  #, gcc-internal-format
  msgid "%qT defined with direct virtual base"
  msgstr ""
  
! #: cp/decl.cc:17428
  #, gcc-internal-format
  msgid "base type %qT fails to be a struct or class type"
  msgstr ""
  
! #: cp/decl.cc:17458
  #, gcc-internal-format
  msgid "recursive type %qT undefined"
  msgstr ""
  
! #: cp/decl.cc:17460
  #, gcc-internal-format
  msgid "duplicate base type %qT invalid"
  msgstr ""
  
! #: cp/decl.cc:17618
  #, gcc-internal-format
  msgid "scoped/unscoped mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17621 cp/decl.cc:17630 cp/decl.cc:17641 cp/decl.cc:18242
! #: cp/parser.cc:22331
  #, gcc-internal-format
  msgid "previous definition here"
  msgstr ""
  
! #: cp/decl.cc:17627
  #, gcc-internal-format
  msgid "underlying type mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17638
  #, gcc-internal-format
  msgid "different underlying type in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17713
  #, gcc-internal-format
  msgid "underlying type %qT of %qT must be an integral type"
  msgstr ""
--- 62683,62782 ----
  #. void f(class C);		// No template header here
  #.
  #. then the required template argument is missing.
! #: cp/decl.cc:17005
  #, gcc-internal-format
  msgid "template argument required for %<%s %T%>"
  msgstr ""
  
! #: cp/decl.cc:17048 cp/name-lookup.cc:6237 cp/name-lookup.cc:6370
! #: cp/parser.cc:7477 cp/parser.cc:33093
  #, gcc-internal-format
  msgid "reference to %qD is ambiguous"
  msgstr ""
  
! #: cp/decl.cc:17058
  #, gcc-internal-format
  msgid "class template %qD redeclared as non-template"
  msgstr ""
  
! #: cp/decl.cc:17080 cp/name-lookup.cc:5926
  #, gcc-internal-format
  msgid "%qD has the same name as the class in which it is declared"
  msgstr ""
  
! #: cp/decl.cc:17109 cp/friend.cc:318 cp/parser.cc:3680 cp/parser.cc:7181
! #: cp/pt.cc:10141
  #, gcc-internal-format
  msgid "%qT is not a template"
  msgstr ""
  
! #: cp/decl.cc:17114
  #, gcc-internal-format
  msgid "perhaps you want to explicitly add %<%T::%>"
  msgstr ""
  
! #: cp/decl.cc:17219
  #, gcc-internal-format
  msgid "use of enum %q#D without previous declaration"
  msgstr ""
  
! #: cp/decl.cc:17246
  #, gcc-internal-format
  msgid "redeclaration of %qT as a non-template"
  msgstr ""
  
! #: cp/decl.cc:17383
  #, gcc-internal-format
  msgid "derived union %qT invalid"
  msgstr ""
  
! #: cp/decl.cc:17390
  #, gcc-internal-format
  msgid "%qT defined with multiple direct bases"
  msgstr ""
  
! #: cp/decl.cc:17401
  #, gcc-internal-format
  msgid "%qT defined with direct virtual base"
  msgstr ""
  
! #: cp/decl.cc:17426
  #, gcc-internal-format
  msgid "base type %qT fails to be a struct or class type"
  msgstr ""
  
! #: cp/decl.cc:17456
  #, gcc-internal-format
  msgid "recursive type %qT undefined"
  msgstr ""
  
! #: cp/decl.cc:17458
  #, gcc-internal-format
  msgid "duplicate base type %qT invalid"
  msgstr ""
  
! #: cp/decl.cc:17616
  #, gcc-internal-format
  msgid "scoped/unscoped mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17619 cp/decl.cc:17628 cp/decl.cc:17639 cp/decl.cc:18240
! #: cp/parser.cc:22335
  #, gcc-internal-format
  msgid "previous definition here"
  msgstr ""
  
! #: cp/decl.cc:17625
  #, gcc-internal-format
  msgid "underlying type mismatch in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17636
  #, gcc-internal-format
  msgid "different underlying type in enum %q#T"
  msgstr ""
  
! #: cp/decl.cc:17711
  #, gcc-internal-format
  msgid "underlying type %qT of %qT must be an integral type"
  msgstr ""
*************** msgstr ""
*** 62701,62783 ****
  #.
  #. IF no integral type can represent all the enumerator values, the
  #. enumeration is ill-formed.
! #: cp/decl.cc:17862
  #, gcc-internal-format
  msgid "no integral type can represent all of the enumerator values for %qT"
  msgstr ""
  
! #: cp/decl.cc:18049
  #, gcc-internal-format
  msgid ""
  "enumerator value for %qD must have integral or unscoped enumeration type"
  msgstr ""
  
! #: cp/decl.cc:18059
  #, gcc-internal-format
  msgid "enumerator value for %qD is not an integer constant"
  msgstr ""
  
! #: cp/decl.cc:18108
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<unsigned long%>"
  msgstr ""
  
! #: cp/decl.cc:18109
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<long%>"
  msgstr ""
  
! #: cp/decl.cc:18120
  #, gcc-internal-format
  msgid "overflow in enumeration values at %qD"
  msgstr ""
  
! #: cp/decl.cc:18140
  #, gcc-internal-format
  msgid "enumerator value %qE is outside the range of underlying type %qT"
  msgstr ""
  
! #: cp/decl.cc:18240 cp/parser.cc:22329
  #, gcc-internal-format
  msgid "multiple definition of %q#T"
  msgstr ""
  
! #: cp/decl.cc:18314
  #, gcc-internal-format
  msgid "return type %q#T is incomplete"
  msgstr ""
  
! #: cp/decl.cc:18481 cp/typeck.cc:11344
  #, gcc-internal-format
  msgid "%<operator=%> should return a reference to %<*this%>"
  msgstr ""
  
! #: cp/decl.cc:19300
  #, gcc-internal-format
  msgid "no return statements in function returning %qT"
  msgstr ""
  
! #: cp/decl.cc:19302 cp/typeck.cc:11222
  #, gcc-internal-format
  msgid "only plain %<auto%> return type can be deduced to %<void%>"
  msgstr ""
  
! #: cp/decl.cc:19358
  #, gcc-internal-format
  msgid "no return statement in %<constexpr%> function returning non-void"
  msgstr ""
  
! #: cp/decl.cc:19549
  #, gcc-internal-format
  msgid "%qD is already defined in class %qT"
  msgstr ""
  
! #: cp/decl.cc:19947
  #, gcc-internal-format
  msgid "using %qs"
  msgstr ""
  
! #: cp/decl.cc:19959
  #, gcc-internal-format
  msgid "use of %qD before deduction of %<auto%>"
  msgstr ""
--- 62785,62867 ----
  #.
  #. IF no integral type can represent all the enumerator values, the
  #. enumeration is ill-formed.
! #: cp/decl.cc:17860
  #, gcc-internal-format
  msgid "no integral type can represent all of the enumerator values for %qT"
  msgstr ""
  
! #: cp/decl.cc:18047
  #, gcc-internal-format
  msgid ""
  "enumerator value for %qD must have integral or unscoped enumeration type"
  msgstr ""
  
! #: cp/decl.cc:18057
  #, gcc-internal-format
  msgid "enumerator value for %qD is not an integer constant"
  msgstr ""
  
! #: cp/decl.cc:18106
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<unsigned long%>"
  msgstr ""
  
! #: cp/decl.cc:18107
  #, gcc-internal-format
  msgid "incremented enumerator value is too large for %<long%>"
  msgstr ""
  
! #: cp/decl.cc:18118
  #, gcc-internal-format
  msgid "overflow in enumeration values at %qD"
  msgstr ""
  
! #: cp/decl.cc:18138
  #, gcc-internal-format
  msgid "enumerator value %qE is outside the range of underlying type %qT"
  msgstr ""
  
! #: cp/decl.cc:18238 cp/parser.cc:22333
  #, gcc-internal-format
  msgid "multiple definition of %q#T"
  msgstr ""
  
! #: cp/decl.cc:18312
  #, gcc-internal-format
  msgid "return type %q#T is incomplete"
  msgstr ""
  
! #: cp/decl.cc:18479 cp/typeck.cc:11460
  #, gcc-internal-format
  msgid "%<operator=%> should return a reference to %<*this%>"
  msgstr ""
  
! #: cp/decl.cc:19298
  #, gcc-internal-format
  msgid "no return statements in function returning %qT"
  msgstr ""
  
! #: cp/decl.cc:19300 cp/typeck.cc:11338
  #, gcc-internal-format
  msgid "only plain %<auto%> return type can be deduced to %<void%>"
  msgstr ""
  
! #: cp/decl.cc:19356
  #, gcc-internal-format
  msgid "no return statement in %<constexpr%> function returning non-void"
  msgstr ""
  
! #: cp/decl.cc:19547
  #, gcc-internal-format
  msgid "%qD is already defined in class %qT"
  msgstr ""
  
! #: cp/decl.cc:19945
  #, gcc-internal-format
  msgid "using %qs"
  msgstr ""
  
! #: cp/decl.cc:19957
  #, gcc-internal-format
  msgid "use of %qD before deduction of %<auto%>"
  msgstr ""
*************** msgstr ""
*** 63083,63094 ****
  msgid "%qT declared with greater visibility than its base %qT"
  msgstr ""
  
! #: cp/decl2.cc:5117
  #, gcc-internal-format
  msgid "%q#D, declared using an unnamed type, is used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:5121
  #, gcc-internal-format
  msgid "%q#D, declared using an unnamed type, is used but not defined"
  msgstr ""
--- 63167,63178 ----
  msgid "%qT declared with greater visibility than its base %qT"
  msgstr ""
  
! #: cp/decl2.cc:5122
  #, gcc-internal-format
  msgid "%q#D, declared using an unnamed type, is used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:5126
  #, gcc-internal-format
  msgid "%q#D, declared using an unnamed type, is used but not defined"
  msgstr ""
*************** msgstr ""
*** 63097,63486 ****
  #. no linkage can only be used to declare extern "C"
  #. entities.  Since it's not always an error in the
  #. ISO C++ 90 Standard, we only issue a warning.
! #: cp/decl2.cc:5131
  #, gcc-internal-format
  msgid "unnamed type with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5135
  #, gcc-internal-format
  msgid "unnamed type with no linkage used to declare function %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5139
  #, gcc-internal-format
  msgid ""
  "%q#D does not refer to the unqualified type, so it is not used for linkage"
  msgstr ""
  
! #: cp/decl2.cc:5157
  #, gcc-internal-format
  msgid "%q#D, declared using local type %qT, is used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:5161
  #, gcc-internal-format
  msgid "%q#D, declared using local type %qT, is used but not defined here"
  msgstr ""
  
! #: cp/decl2.cc:5169
  #, gcc-internal-format
  msgid "type %qT with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5172
  #, gcc-internal-format
  msgid "type %qT with no linkage used to declare function %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5377
  #, gcc-internal-format
  msgid "mangling of %q#D as %qE conflicts with a previous mangle"
  msgstr ""
  
! #: cp/decl2.cc:5380
  #, gcc-internal-format
  msgid "previous mangling %q#D"
  msgstr ""
  
! #: cp/decl2.cc:5382
  #, gcc-internal-format
  msgid ""
  "a later %<-fabi-version=%> (or =0) avoids this error with a change in "
  "mangling"
  msgstr ""
  
! #: cp/decl2.cc:5454 cp/decl2.cc:5457
  #, gcc-internal-format
  msgid "the program should also define %qD"
  msgstr ""
  
! #: cp/decl2.cc:5820
  #, gcc-internal-format
  msgid "inline function %qD used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:6058
  #, gcc-internal-format
  msgid "default argument missing for parameter %P of %q#D"
  msgstr ""
  
! #: cp/decl2.cc:6063
  #, gcc-internal-format
  msgid "...following parameter %P which has a default argument"
  msgstr ""
  
! #: cp/decl2.cc:6186
  #, gcc-internal-format
  msgid "implicitly-declared %qD is deprecated"
  msgstr ""
  
! #: cp/decl2.cc:6190
  #, gcc-internal-format
  msgid "because %qT has user-provided %qD"
  msgstr ""
  
  #. We mark a lambda conversion op as deleted if we can't
  #. generate it properly; see maybe_add_lambda_conv_op.
! #: cp/decl2.cc:6336
  #, gcc-internal-format
  msgid "converting lambda that uses %<...%> to function pointer"
  msgstr ""
  
! #: cp/decl2.cc:6345
  #, gcc-internal-format
  msgid "use of deleted function %qD: %s"
  msgstr ""
  
! #: cp/decl2.cc:6349
  #, gcc-internal-format
  msgid "use of deleted function %qD"
  msgstr ""
  
! #: cp/decl2.cc:6397
  #, gcc-internal-format
  msgid "use of function %qD with unsatisfied constraints"
  msgstr ""
  
! #: cp/decl2.cc:6436
  #, gcc-internal-format
  msgid "use of built-in parameter pack %qD outside of a template"
  msgstr ""
  
! #: cp/error.cc:3791
  msgid "    inlined from %qD at %r%s:%d:%d%R"
  msgstr ""
  
! #: cp/error.cc:3796
  msgid "    inlined from %qD at %r%s:%d%R"
  msgstr ""
  
! #: cp/error.cc:3802
  #, gcc-internal-format
  msgid "    inlined from %qD"
  msgstr ""
  
! #: cp/error.cc:3828
  #, gcc-internal-format
  msgid "In static member function %qD"
  msgstr ""
  
! #: cp/error.cc:3830
  #, gcc-internal-format
  msgid "In copy constructor %qD"
  msgstr ""
  
! #: cp/error.cc:3832
  #, gcc-internal-format
  msgid "In constructor %qD"
  msgstr ""
  
! #: cp/error.cc:3834
  #, gcc-internal-format
  msgid "In destructor %qD"
  msgstr ""
  
! #: cp/error.cc:3836
  #, gcc-internal-format
  msgid "In lambda function"
  msgstr ""
  
! #: cp/error.cc:3838
  #, gcc-internal-format
  msgid "In explicit object member function %qD"
  msgstr ""
  
! #: cp/error.cc:3840
  #, gcc-internal-format
  msgid "In member function %qD"
  msgstr ""
  
! #: cp/error.cc:3843
  #, gcc-internal-format
  msgid "In function %qD"
  msgstr ""
  
! #: cp/error.cc:3870
  msgid "%s%s%sIn substitution of %qS:\n"
  msgstr ""
  
! #: cp/error.cc:3871
  #, gcc-internal-format
  msgid "%s%s%sIn instantiation of %q#D:\n"
  msgstr ""
  
! #: cp/error.cc:3891
  msgid "%r%s:%d:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:3894
  msgid "%r%s:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:3987
  msgid "recursively required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:3988
  msgid "required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:3993
  #, gcc-internal-format
  msgid "recursively required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:3994
  #, gcc-internal-format
  msgid "required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4001
  #, gcc-internal-format
  msgid "recursively required from here\n"
  msgstr ""
  
! #: cp/error.cc:4002
  #, gcc-internal-format
  msgid "required from here\n"
  msgstr ""
  
! #: cp/error.cc:4052
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "[ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to "
  "disable ]\n"
  msgstr ""
  
! #: cp/error.cc:4104
  #, gcc-internal-format
  msgid "in %<constexpr%> expansion of %qs"
  msgstr ""
  
! #: cp/error.cc:4117
  #, gcc-internal-format
  msgid "required by the constraints of %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4132
  #, gcc-internal-format
  msgid "required for the satisfaction of %qE"
  msgstr ""
  
! #: cp/error.cc:4154
  #, gcc-internal-format
  msgid "required for constraint satisfaction\n"
  msgstr ""
  
! #: cp/error.cc:4185
  #, gcc-internal-format
  msgid "in requirements with "
  msgstr ""
  
! #: cp/error.cc:4186
  #, gcc-internal-format
  msgid "in requirements "
  msgstr ""
  
! #: cp/error.cc:4304
  #, gcc-internal-format
  msgid "(no argument)"
  msgstr ""
  
! #: cp/error.cc:4398
  #, gcc-internal-format
  msgid "[...]"
  msgstr ""
  
! #: cp/error.cc:4750
  #, gcc-internal-format
  msgid ""
  "extended initializer lists only available with %<-std=c++11%> or %<-std=gnu+"
  "+11%>"
  msgstr ""
  
! #: cp/error.cc:4755
  #, gcc-internal-format
  msgid ""
  "explicit conversion operators only available with %<-std=c++11%> or %<-"
  "std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4760
  #, gcc-internal-format
  msgid ""
  "variadic templates only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4765
  #, gcc-internal-format
  msgid ""
  "lambda expressions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4770
  #, gcc-internal-format
  msgid "C++11 auto only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4775
  #, gcc-internal-format
  msgid "scoped enums only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4780
  #, gcc-internal-format
  msgid ""
  "defaulted and deleted functions only available with %<-std=c++11%> or %<-"
  "std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4786
  #, gcc-internal-format
  msgid ""
  "inline namespaces only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4791
  #, gcc-internal-format
  msgid ""
  "override controls (override/final) only available with %<-std=c++11%> or %<-"
  "std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4796
  #, gcc-internal-format
  msgid ""
  "non-static data member initializers only available with %<-std=c++11%> or %<-"
  "std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4801
  #, gcc-internal-format
  msgid ""
  "user-defined literals only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4806
  #, gcc-internal-format
  msgid ""
  "delegating constructors only available with %<-std=c++11%> or %<-std=gnu+"
  "+11%>"
  msgstr ""
  
! #: cp/error.cc:4811
  #, gcc-internal-format
  msgid ""
  "inheriting constructors only available with %<-std=c++11%> or %<-std=gnu+"
  "+11%>"
  msgstr ""
  
! #: cp/error.cc:4817
  #, gcc-internal-format
  msgid "C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4822
  #, gcc-internal-format
  msgid "ref-qualifiers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4875
  #, gcc-internal-format
  msgid "incomplete type %qT used in nested name specifier"
  msgstr ""
  
! #: cp/error.cc:4880
  #, gcc-internal-format
  msgid "reference to %<%T::%D%> is ambiguous"
  msgstr ""
  
! #: cp/error.cc:4895
  #, gcc-internal-format
  msgid "%qD is not a member of %qT; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4899 cp/typeck.cc:2897
  #, gcc-internal-format
  msgid "%qD is not a member of %qT"
  msgstr ""
  
! #: cp/error.cc:4921
  #, gcc-internal-format
  msgid "%qD is not a member of %qD; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4925 cp/typeck.cc:3492
  #, gcc-internal-format
  msgid "%qD is not a member of %qD"
  msgstr ""
  
! #: cp/error.cc:4936
  #, gcc-internal-format
  msgid "%<::%D%> has not been declared; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4940
  #, gcc-internal-format
  msgid "%<::%D%> has not been declared"
  msgstr ""
--- 63181,63570 ----
  #. no linkage can only be used to declare extern "C"
  #. entities.  Since it's not always an error in the
  #. ISO C++ 90 Standard, we only issue a warning.
! #: cp/decl2.cc:5136
  #, gcc-internal-format
  msgid "unnamed type with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5140
  #, gcc-internal-format
  msgid "unnamed type with no linkage used to declare function %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5144
  #, gcc-internal-format
  msgid ""
  "%q#D does not refer to the unqualified type, so it is not used for linkage"
  msgstr ""
  
! #: cp/decl2.cc:5162
  #, gcc-internal-format
  msgid "%q#D, declared using local type %qT, is used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:5166
  #, gcc-internal-format
  msgid "%q#D, declared using local type %qT, is used but not defined here"
  msgstr ""
  
! #: cp/decl2.cc:5174
  #, gcc-internal-format
  msgid "type %qT with no linkage used to declare variable %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5177
  #, gcc-internal-format
  msgid "type %qT with no linkage used to declare function %q#D with linkage"
  msgstr ""
  
! #: cp/decl2.cc:5382
  #, gcc-internal-format
  msgid "mangling of %q#D as %qE conflicts with a previous mangle"
  msgstr ""
  
! #: cp/decl2.cc:5385
  #, gcc-internal-format
  msgid "previous mangling %q#D"
  msgstr ""
  
! #: cp/decl2.cc:5387
  #, gcc-internal-format
  msgid ""
  "a later %<-fabi-version=%> (or =0) avoids this error with a change in "
  "mangling"
  msgstr ""
  
! #: cp/decl2.cc:5459 cp/decl2.cc:5462
  #, gcc-internal-format
  msgid "the program should also define %qD"
  msgstr ""
  
! #: cp/decl2.cc:5825
  #, gcc-internal-format
  msgid "inline function %qD used but never defined"
  msgstr ""
  
! #: cp/decl2.cc:6059
  #, gcc-internal-format
  msgid "default argument missing for parameter %P of %q#D"
  msgstr ""
  
! #: cp/decl2.cc:6064
  #, gcc-internal-format
  msgid "...following parameter %P which has a default argument"
  msgstr ""
  
! #: cp/decl2.cc:6187
  #, gcc-internal-format
  msgid "implicitly-declared %qD is deprecated"
  msgstr ""
  
! #: cp/decl2.cc:6191
  #, gcc-internal-format
  msgid "because %qT has user-provided %qD"
  msgstr ""
  
  #. We mark a lambda conversion op as deleted if we can't
  #. generate it properly; see maybe_add_lambda_conv_op.
! #: cp/decl2.cc:6364
  #, gcc-internal-format
  msgid "converting lambda that uses %<...%> to function pointer"
  msgstr ""
  
! #: cp/decl2.cc:6373
  #, gcc-internal-format
  msgid "use of deleted function %qD: %s"
  msgstr ""
  
! #: cp/decl2.cc:6377
  #, gcc-internal-format
  msgid "use of deleted function %qD"
  msgstr ""
  
! #: cp/decl2.cc:6425
  #, gcc-internal-format
  msgid "use of function %qD with unsatisfied constraints"
  msgstr ""
  
! #: cp/decl2.cc:6464
  #, gcc-internal-format
  msgid "use of built-in parameter pack %qD outside of a template"
  msgstr ""
  
! #: cp/error.cc:3812
  msgid "    inlined from %qD at %r%s:%d:%d%R"
  msgstr ""
  
! #: cp/error.cc:3817
  msgid "    inlined from %qD at %r%s:%d%R"
  msgstr ""
  
! #: cp/error.cc:3823
  #, gcc-internal-format
  msgid "    inlined from %qD"
  msgstr ""
  
! #: cp/error.cc:3849
  #, gcc-internal-format
  msgid "In static member function %qD"
  msgstr ""
  
! #: cp/error.cc:3851
  #, gcc-internal-format
  msgid "In copy constructor %qD"
  msgstr ""
  
! #: cp/error.cc:3853
  #, gcc-internal-format
  msgid "In constructor %qD"
  msgstr ""
  
! #: cp/error.cc:3855
  #, gcc-internal-format
  msgid "In destructor %qD"
  msgstr ""
  
! #: cp/error.cc:3857
  #, gcc-internal-format
  msgid "In lambda function"
  msgstr ""
  
! #: cp/error.cc:3859
  #, gcc-internal-format
  msgid "In explicit object member function %qD"
  msgstr ""
  
! #: cp/error.cc:3861
  #, gcc-internal-format
  msgid "In member function %qD"
  msgstr ""
  
! #: cp/error.cc:3864
  #, gcc-internal-format
  msgid "In function %qD"
  msgstr ""
  
! #: cp/error.cc:3891
  msgid "%s%s%sIn substitution of %qS:\n"
  msgstr ""
  
! #: cp/error.cc:3892
  #, gcc-internal-format
  msgid "%s%s%sIn instantiation of %q#D:\n"
  msgstr ""
  
! #: cp/error.cc:3912
  msgid "%r%s:%d:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:3915
  msgid "%r%s:%d:%R   "
  msgstr ""
  
! #: cp/error.cc:4008
  msgid "recursively required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:4009
  msgid "required by substitution of %qS\n"
  msgstr ""
  
! #: cp/error.cc:4014
  #, gcc-internal-format
  msgid "recursively required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4015
  #, gcc-internal-format
  msgid "required from %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4022
  #, gcc-internal-format
  msgid "recursively required from here\n"
  msgstr ""
  
! #: cp/error.cc:4023
  #, gcc-internal-format
  msgid "required from here\n"
  msgstr ""
  
! #: cp/error.cc:4073
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "[ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to "
  "disable ]\n"
  msgstr ""
  
! #: cp/error.cc:4125
  #, gcc-internal-format
  msgid "in %<constexpr%> expansion of %qs"
  msgstr ""
  
! #: cp/error.cc:4138
  #, gcc-internal-format
  msgid "required by the constraints of %q#D\n"
  msgstr ""
  
! #: cp/error.cc:4153
  #, gcc-internal-format
  msgid "required for the satisfaction of %qE"
  msgstr ""
  
! #: cp/error.cc:4175
  #, gcc-internal-format
  msgid "required for constraint satisfaction\n"
  msgstr ""
  
! #: cp/error.cc:4206
  #, gcc-internal-format
  msgid "in requirements with "
  msgstr ""
  
! #: cp/error.cc:4207
  #, gcc-internal-format
  msgid "in requirements "
  msgstr ""
  
! #: cp/error.cc:4325
  #, gcc-internal-format
  msgid "(no argument)"
  msgstr ""
  
! #: cp/error.cc:4419
  #, gcc-internal-format
  msgid "[...]"
  msgstr ""
  
! #: cp/error.cc:4771
  #, gcc-internal-format
  msgid ""
  "extended initializer lists only available with %<-std=c++11%> or %<-std=gnu+"
  "+11%>"
  msgstr ""
  
! #: cp/error.cc:4776
  #, gcc-internal-format
  msgid ""
  "explicit conversion operators only available with %<-std=c++11%> or %<-"
  "std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4781
  #, gcc-internal-format
  msgid ""
  "variadic templates only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4786
  #, gcc-internal-format
  msgid ""
  "lambda expressions only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4791
  #, gcc-internal-format
  msgid "C++11 auto only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4796
  #, gcc-internal-format
  msgid "scoped enums only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4801
  #, gcc-internal-format
  msgid ""
  "defaulted and deleted functions only available with %<-std=c++11%> or %<-"
  "std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4807
  #, gcc-internal-format
  msgid ""
  "inline namespaces only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4812
  #, gcc-internal-format
  msgid ""
  "override controls (override/final) only available with %<-std=c++11%> or %<-"
  "std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4817
  #, gcc-internal-format
  msgid ""
  "non-static data member initializers only available with %<-std=c++11%> or %<-"
  "std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4822
  #, gcc-internal-format
  msgid ""
  "user-defined literals only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4827
  #, gcc-internal-format
  msgid ""
  "delegating constructors only available with %<-std=c++11%> or %<-std=gnu+"
  "+11%>"
  msgstr ""
  
! #: cp/error.cc:4832
  #, gcc-internal-format
  msgid ""
  "inheriting constructors only available with %<-std=c++11%> or %<-std=gnu+"
  "+11%>"
  msgstr ""
  
! #: cp/error.cc:4838
  #, gcc-internal-format
  msgid "C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4843
  #, gcc-internal-format
  msgid "ref-qualifiers only available with %<-std=c++11%> or %<-std=gnu++11%>"
  msgstr ""
  
! #: cp/error.cc:4896
  #, gcc-internal-format
  msgid "incomplete type %qT used in nested name specifier"
  msgstr ""
  
! #: cp/error.cc:4901
  #, gcc-internal-format
  msgid "reference to %<%T::%D%> is ambiguous"
  msgstr ""
  
! #: cp/error.cc:4916
  #, gcc-internal-format
  msgid "%qD is not a member of %qT; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4920 cp/typeck.cc:2897
  #, gcc-internal-format
  msgid "%qD is not a member of %qT"
  msgstr ""
  
! #: cp/error.cc:4942
  #, gcc-internal-format
  msgid "%qD is not a member of %qD; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4946 cp/typeck.cc:3492
  #, gcc-internal-format
  msgid "%qD is not a member of %qD"
  msgstr ""
  
! #: cp/error.cc:4957
  #, gcc-internal-format
  msgid "%<::%D%> has not been declared; did you mean %qs?"
  msgstr ""
  
! #: cp/error.cc:4961
  #, gcc-internal-format
  msgid "%<::%D%> has not been declared"
  msgstr ""
*************** msgstr ""
*** 63717,63734 ****
  msgid "invalid initializer for array member %q#D"
  msgstr ""
  
! #: cp/init.cc:1158 cp/init.cc:1184 cp/init.cc:2781 cp/method.cc:2648
  #, gcc-internal-format
  msgid "uninitialized const member in %q#T"
  msgstr ""
  
  #: cp/init.cc:1160 cp/init.cc:1178 cp/init.cc:1186 cp/init.cc:2765
! #: cp/init.cc:2794 cp/method.cc:2651 cp/method.cc:2662
  #, gcc-internal-format
  msgid "%q#D should be initialized"
  msgstr ""
  
! #: cp/init.cc:1176 cp/init.cc:2752 cp/method.cc:2659
  #, gcc-internal-format
  msgid "uninitialized reference member in %q#T"
  msgstr ""
--- 63801,63818 ----
  msgid "invalid initializer for array member %q#D"
  msgstr ""
  
! #: cp/init.cc:1158 cp/init.cc:1184 cp/init.cc:2781 cp/method.cc:2649
  #, gcc-internal-format
  msgid "uninitialized const member in %q#T"
  msgstr ""
  
  #: cp/init.cc:1160 cp/init.cc:1178 cp/init.cc:1186 cp/init.cc:2765
! #: cp/init.cc:2794 cp/method.cc:2652 cp/method.cc:2663
  #, gcc-internal-format
  msgid "%q#D should be initialized"
  msgstr ""
  
! #: cp/init.cc:1176 cp/init.cc:2752 cp/method.cc:2660
  #, gcc-internal-format
  msgid "uninitialized reference member in %q#T"
  msgstr ""
*************** msgstr ""
*** 64133,64144 ****
  msgid "%<this%> was not captured for this lambda function"
  msgstr ""
  
! #: cp/lambda.cc:1581
  #, gcc-internal-format
  msgid "the mangled name of %qT changed in %<-fabi-version=20%> (GCC 15.1)"
  msgstr ""
  
! #: cp/lambda.cc:1585
  #, gcc-internal-format
  msgid "the mangled name of %qT changes in %<-fabi-version=20%> (GCC 15.1)"
  msgstr ""
--- 64217,64228 ----
  msgid "%<this%> was not captured for this lambda function"
  msgstr ""
  
! #: cp/lambda.cc:1578
  #, gcc-internal-format
  msgid "the mangled name of %qT changed in %<-fabi-version=20%> (GCC 15.1)"
  msgstr ""
  
! #: cp/lambda.cc:1582
  #, gcc-internal-format
  msgid "the mangled name of %qT changes in %<-fabi-version=20%> (GCC 15.1)"
  msgstr ""
*************** msgstr ""
*** 64291,64302 ****
  msgid "mapper exit status %d"
  msgstr ""
  
! #: cp/method.cc:867 cp/method.cc:2601
  #, gcc-internal-format
  msgid "non-static const member %q#D, cannot use default assignment operator"
  msgstr ""
  
! #: cp/method.cc:873 cp/method.cc:2607
  #, gcc-internal-format
  msgid ""
  "non-static reference member %q#D, cannot use default assignment operator"
--- 64375,64386 ----
  msgid "mapper exit status %d"
  msgstr ""
  
! #: cp/method.cc:867 cp/method.cc:2602
  #, gcc-internal-format
  msgid "non-static const member %q#D, cannot use default assignment operator"
  msgstr ""
  
! #: cp/method.cc:873 cp/method.cc:2608
  #, gcc-internal-format
  msgid ""
  "non-static reference member %q#D, cannot use default assignment operator"
*************** msgid ""
*** 64422,64521 ****
  "pointer to a class type"
  msgstr ""
  
! #: cp/method.cc:2524
  #, gcc-internal-format
  msgid "union member %q+D with non-trivial %qD"
  msgstr ""
  
! #: cp/method.cc:2535
  #, gcc-internal-format
  msgid "defaulted destructor calls non-%<constexpr%> %qD"
  msgstr ""
  
! #: cp/method.cc:2536
  #, gcc-internal-format
  msgid "defaulted constructor calls non-%<constexpr%> %qD"
  msgstr ""
  
! #: cp/method.cc:2624
  #, gcc-internal-format
  msgid "initializer for %q#D is invalid"
  msgstr ""
  
! #: cp/method.cc:2681
  #, gcc-internal-format
  msgid "defaulted default constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/method.cc:2692
  #, gcc-internal-format
  msgid "copying non-static data member %q#D of rvalue reference type"
  msgstr ""
  
  #. A trivial constructor doesn't have any NSDMI.
! #: cp/method.cc:2910
  #, gcc-internal-format
  msgid ""
  "defaulted default constructor does not initialize any non-static data member"
  msgstr ""
  
! #: cp/method.cc:2954
  #, gcc-internal-format
  msgid ""
  "defaulted move assignment for %qT calls a non-trivial move assignment "
  "operator for virtual base %qT"
  msgstr ""
  
! #: cp/method.cc:3086
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted default constructor"
  msgstr ""
  
! #: cp/method.cc:3089
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3098
  #, gcc-internal-format
  msgid ""
  "%q#D is implicitly declared as deleted because %qT declares a move "
  "constructor or move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3109
  #, gcc-internal-format
  msgid "%q#D inherits from multiple base subobjects"
  msgstr ""
  
! #: cp/method.cc:3117 cp/method.cc:3141
  #, gcc-internal-format
  msgid ""
  "%q#D is implicitly deleted because the default definition would be ill-"
  "formed:"
  msgstr ""
  
! #: cp/method.cc:3150
  msgid ""
  "%q#F is implicitly deleted because its exception-specification does not "
  "match the implicit exception-specification %qX"
  msgstr ""
  
! #: cp/method.cc:3573
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted copy constructor is implicitly deleted because its "
  "declared type does not match the type of an implicit copy constructor"
  msgstr ""
  
! #: cp/method.cc:3578
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted move constructor is implicitly deleted because its "
  "declared type does not match the type of an implicit move constructor"
  msgstr ""
  
! #: cp/method.cc:3583
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted copy assignment operator is implicitly deleted because "
--- 64506,64605 ----
  "pointer to a class type"
  msgstr ""
  
! #: cp/method.cc:2525
  #, gcc-internal-format
  msgid "union member %q+D with non-trivial %qD"
  msgstr ""
  
! #: cp/method.cc:2536
  #, gcc-internal-format
  msgid "defaulted destructor calls non-%<constexpr%> %qD"
  msgstr ""
  
! #: cp/method.cc:2537
  #, gcc-internal-format
  msgid "defaulted constructor calls non-%<constexpr%> %qD"
  msgstr ""
  
! #: cp/method.cc:2625
  #, gcc-internal-format
  msgid "initializer for %q#D is invalid"
  msgstr ""
  
! #: cp/method.cc:2682
  #, gcc-internal-format
  msgid "defaulted default constructor does not initialize %q#D"
  msgstr ""
  
! #: cp/method.cc:2693
  #, gcc-internal-format
  msgid "copying non-static data member %q#D of rvalue reference type"
  msgstr ""
  
  #. A trivial constructor doesn't have any NSDMI.
! #: cp/method.cc:2911
  #, gcc-internal-format
  msgid ""
  "defaulted default constructor does not initialize any non-static data member"
  msgstr ""
  
! #: cp/method.cc:2955
  #, gcc-internal-format
  msgid ""
  "defaulted move assignment for %qT calls a non-trivial move assignment "
  "operator for virtual base %qT"
  msgstr ""
  
! #: cp/method.cc:3087
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted default constructor"
  msgstr ""
  
! #: cp/method.cc:3090
  #, gcc-internal-format
  msgid "a lambda closure type has a deleted copy assignment operator"
  msgstr ""
  
! #: cp/method.cc:3099
  #, gcc-internal-format
  msgid ""
  "%q#D is implicitly declared as deleted because %qT declares a move "
  "constructor or move assignment operator"
  msgstr ""
  
! #: cp/method.cc:3110
  #, gcc-internal-format
  msgid "%q#D inherits from multiple base subobjects"
  msgstr ""
  
! #: cp/method.cc:3118 cp/method.cc:3142
  #, gcc-internal-format
  msgid ""
  "%q#D is implicitly deleted because the default definition would be ill-"
  "formed:"
  msgstr ""
  
! #: cp/method.cc:3151
  msgid ""
  "%q#F is implicitly deleted because its exception-specification does not "
  "match the implicit exception-specification %qX"
  msgstr ""
  
! #: cp/method.cc:3574
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted copy constructor is implicitly deleted because its "
  "declared type does not match the type of an implicit copy constructor"
  msgstr ""
  
! #: cp/method.cc:3579
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted move constructor is implicitly deleted because its "
  "declared type does not match the type of an implicit move constructor"
  msgstr ""
  
! #: cp/method.cc:3584
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted copy assignment operator is implicitly deleted because "
*************** msgid ""
*** 64523,64529 ****
  "operator"
  msgstr ""
  
! #: cp/method.cc:3588
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted move assignment operator is implicitly deleted because "
--- 64607,64613 ----
  "operator"
  msgstr ""
  
! #: cp/method.cc:3589
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted move assignment operator is implicitly deleted because "
*************** msgid ""
*** 64531,64559 ****
  "operator"
  msgstr ""
  
! #: cp/method.cc:3597
  #, gcc-internal-format
  msgid "expected signature: %qD"
  msgstr ""
  
! #: cp/method.cc:3695
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted function %q+D cannot be declared %qs because the "
  "implicit declaration is not %qs:"
  msgstr ""
  
! #: cp/method.cc:3715
  #, gcc-internal-format
  msgid "a template cannot be defaulted"
  msgstr ""
  
! #: cp/method.cc:3754
  #, gcc-internal-format
  msgid "%qD cannot be defaulted"
  msgstr ""
  
! #: cp/method.cc:3763
  #, gcc-internal-format
  msgid "defaulted function %q+D with default argument"
  msgstr ""
--- 64615,64643 ----
  "operator"
  msgstr ""
  
! #: cp/method.cc:3598
  #, gcc-internal-format
  msgid "expected signature: %qD"
  msgstr ""
  
! #: cp/method.cc:3696
  #, gcc-internal-format
  msgid ""
  "explicitly defaulted function %q+D cannot be declared %qs because the "
  "implicit declaration is not %qs:"
  msgstr ""
  
! #: cp/method.cc:3716
  #, gcc-internal-format
  msgid "a template cannot be defaulted"
  msgstr ""
  
! #: cp/method.cc:3755
  #, gcc-internal-format
  msgid "%qD cannot be defaulted"
  msgstr ""
  
! #: cp/method.cc:3764
  #, gcc-internal-format
  msgid "defaulted function %q+D with default argument"
  msgstr ""
*************** msgstr ""
*** 64588,65027 ****
  msgid "unable to represent further imported source locations"
  msgstr ""
  
! #: cp/module.cc:12044
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12048
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with no tags"
  msgstr ""
  
! #: cp/module.cc:12051
  #, gcc-internal-format
  msgid "existing declaration here with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12054
  #, gcc-internal-format
  msgid "existing declaration here with no tags"
  msgstr ""
  
! #: cp/module.cc:12105 cp/module.cc:12229
  #, gcc-internal-format
  msgid "conflicting type for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12114
  #, gcc-internal-format
  msgid "conflicting language linkage for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12126
  #, gcc-internal-format
  msgid "conflicting argument list for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12133
  #, gcc-internal-format
  msgid "conflicting argument types for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12171
  #, gcc-internal-format
  msgid "conflicting %<noexcept%> specifier for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12189
  #, gcc-internal-format
  msgid "conflicting deduced return type for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12204
  #, gcc-internal-format
  msgid "conflicting %<constexpr%> for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12220
  #, gcc-internal-format
  msgid "conflicting imported declaration %q#D"
  msgstr ""
  
! #: cp/module.cc:12246
  #, gcc-internal-format
  msgid "existing declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12349
  #, gcc-internal-format
  msgid "conflicting default argument for %#qD"
  msgstr ""
  
! #: cp/module.cc:12351 cp/module.cc:12378
  #, gcc-internal-format
  msgid "existing default declared here"
  msgstr ""
  
! #: cp/module.cc:12375
  #, gcc-internal-format
  msgid "conflicting default argument for parameter %P of %#qD"
  msgstr ""
  
! #: cp/module.cc:13434
  #, gcc-internal-format
  msgid "definition of %qD does not match"
  msgstr ""
  
! #: cp/module.cc:13436
  #, gcc-internal-format
  msgid "existing definition %qD"
  msgstr ""
  
! #: cp/module.cc:13448
  #, gcc-internal-format
  msgid "enumerator %qD does not match ..."
  msgstr ""
  
! #: cp/module.cc:13450
  #, gcc-internal-format
  msgid "... this enumerator %qD"
  msgstr ""
  
! #: cp/module.cc:13456
  #, gcc-internal-format
  msgid "additional enumerators beginning with %qD"
  msgstr ""
  
! #: cp/module.cc:13460
  #, gcc-internal-format
  msgid "enumeration range differs"
  msgstr ""
  
! #: cp/module.cc:13673
  #, gcc-internal-format
  msgid "%qD is an alias of TU-local type %qT"
  msgstr ""
  
! #: cp/module.cc:13691
  #, gcc-internal-format
  msgid "%qD is a specialization of TU-local template %qD"
  msgstr ""
  
! #: cp/module.cc:13715
  #, gcc-internal-format
  msgid "%qD declared with internal linkage"
  msgstr ""
  
! #: cp/module.cc:13733
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared in an anonymous namespace"
  msgstr ""
  
! #: cp/module.cc:13745
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qT"
  msgstr ""
  
! #: cp/module.cc:13756
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:13788
  #, gcc-internal-format
  msgid ""
  "%qT has no name and cannot be differentiated from similar lambdas in other "
  "TUs"
  msgstr ""
  
! #: cp/module.cc:13797
  #, gcc-internal-format
  msgid ""
  "%qT has no name and is not defined within a class, function, or initializer"
  msgstr ""
  
! #: cp/module.cc:13833
  #, gcc-internal-format
  msgid "%qD has TU-local template argument %qD"
  msgstr ""
  
! #: cp/module.cc:13845
  #, gcc-internal-format
  msgid "%qD has TU-local template argument %qT"
  msgstr ""
  
! #: cp/module.cc:13897
  #, gcc-internal-format
  msgid "%qD refers to TU-local object %qD"
  msgstr ""
  
! #: cp/module.cc:13899
  #, gcc-internal-format
  msgid "%qD refers to TU-local function %qD"
  msgstr ""
  
! #: cp/module.cc:15021
  #, gcc-internal-format
  msgid "%qD exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:15032
  #, gcc-internal-format
  msgid "%qD is declared %<constexpr%> and is initialized to a TU-local value"
  msgstr ""
  
! #: cp/module.cc:15070
  #, gcc-internal-format
  msgid ""
  "%qD refers to TU-local entity %qD and cannot be instantiated in other TUs"
  msgstr ""
  
! #: cp/module.cc:15667
  #, gcc-internal-format
  msgid "recursive lazy load"
  msgstr ""
  
! #: cp/module.cc:15687
  #, gcc-internal-format
  msgid "cannot import module in its own purview"
  msgstr ""
  
! #: cp/module.cc:15688 cp/module.cc:21270
  #, gcc-internal-format
  msgid "module %qs declared here"
  msgstr ""
  
! #: cp/module.cc:16037
  #, gcc-internal-format
  msgid "indirect import %qs is not already loaded"
  msgstr ""
  
! #: cp/module.cc:16043
  #, gcc-internal-format
  msgid "import %qs has CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:18810
  #, gcc-internal-format
  msgid "not exporting %<#define %E%> as it is a keyword"
  msgstr ""
  
! #: cp/module.cc:19050
  #, gcc-internal-format
  msgid "macro definitions of %qE corrupted"
  msgstr ""
  
! #: cp/module.cc:19075 cp/module.cc:19078
  #, gcc-internal-format
  msgid "inconsistent imported macro definition %qE"
  msgstr ""
  
! #: cp/module.cc:19084
  #, gcc-internal-format
  msgid "%<#undef %E%>"
  msgstr ""
  
! #: cp/module.cc:19086
  #, gcc-internal-format
  msgid "%<#define %s%>"
  msgstr ""
  
! #: cp/module.cc:19418
  #, gcc-internal-format
  msgid "compiled module file is %qs"
  msgstr ""
  
! #: cp/module.cc:19456 cp/module.cc:19461
  #, gcc-internal-format, gfc-internal-format
  msgid "compiled module is %sversion %s"
  msgstr ""
  
! #: cp/module.cc:19467
  #, gcc-internal-format, gfc-internal-format
  msgid "compiler is %sversion %s%s%s"
  msgstr ""
  
! #: cp/module.cc:19497
  #, gcc-internal-format
  msgid "module %qs found"
  msgstr ""
  
! #: cp/module.cc:19499
  #, gcc-internal-format
  msgid "header module expected, module %qs found"
  msgstr ""
  
! #: cp/module.cc:19500
  #, gcc-internal-format
  msgid "module %qs expected, header module found"
  msgstr ""
  
! #: cp/module.cc:19515
  #, gcc-internal-format
  msgid "module %qs CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:19529
  #, gcc-internal-format
  msgid "target & host is %qs:%qs, expected %qs:%qs"
  msgstr ""
  
! #: cp/module.cc:19541
  #, gcc-internal-format
  msgid "language dialect differs %qs, expected %qs"
  msgstr ""
  
! #: cp/module.cc:19561
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> to enable"
  msgstr ""
  
! #: cp/module.cc:19563
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> or %<-fopenmp-simd%> to enable"
  msgstr ""
  
! #: cp/module.cc:19566
  #, gcc-internal-format
  msgid "module contains OpenACC, use %<-fopenacc%> to enable"
  msgstr ""
  
! #: cp/module.cc:19584
  #, gcc-internal-format
  msgid "fixed tree mismatch"
  msgstr ""
  
! #: cp/module.cc:19675
  #, gcc-internal-format
  msgid "interface partition is not exported"
  msgstr ""
  
! #: cp/module.cc:20232
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module cluster %u: %s"
  msgstr ""
  
! #: cp/module.cc:20271
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module: %s"
  msgstr ""
  
! #: cp/module.cc:20281
  #, gcc-internal-format
  msgid ""
  "consider using %<-fno-module-lazy%>, increasing %<-param-lazy-modules=%u%> "
  "value, or increasing the per-process file descriptor limit"
  msgstr ""
  
! #: cp/module.cc:20286
  #, gcc-internal-format
  msgid "imports must be built before being imported"
  msgstr ""
  
! #: cp/module.cc:20289
  #, gcc-internal-format
  msgid "returning to the gate for a mechanical issue"
  msgstr ""
  
! #: cp/module.cc:20610
  #, gcc-internal-format
  msgid "declaring %qD in module %qs conflicts with builtin in global module"
  msgstr ""
  
! #: cp/module.cc:20613
  #, gcc-internal-format
  msgid "declaration %qD conflicts with builtin"
  msgstr ""
  
! #: cp/module.cc:20619
  #, gcc-internal-format
  msgid "redeclaring %qD in module %qs conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20622
  #, gcc-internal-format
  msgid "redeclaring %qD in global module conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20627
  #, gcc-internal-format
  msgid "import declared attached to module %qs"
  msgstr ""
  
! #: cp/module.cc:20631
  #, gcc-internal-format
  msgid "import declared in global module"
  msgstr ""
  
! #: cp/module.cc:20637
  #, gcc-internal-format
  msgid "conflicting declaration of %qD in module %qs"
  msgstr ""
  
! #: cp/module.cc:20640
  #, gcc-internal-format
  msgid "conflicting declaration of %qD in global module"
  msgstr ""
  
! #: cp/module.cc:20645
  #, gcc-internal-format
  msgid "previously declared in module %qs"
  msgstr ""
  
! #: cp/module.cc:20649
  #, gcc-internal-format
  msgid "previously declared in global module"
  msgstr ""
  
! #: cp/module.cc:20788
  #, gcc-internal-format
  msgid ""
  "external linkage definition of %qD in header module must be declared "
  "%<inline%>"
  msgstr ""
  
! #: cp/module.cc:20803
  #, gcc-internal-format
  msgid "exporting declaration %qD declared in unnamed namespace"
  msgstr ""
  
! #: cp/module.cc:20810
  #, gcc-internal-format
  msgid "exporting declaration %qD with internal linkage"
  msgstr ""
  
! #: cp/module.cc:20963
  #, gcc-internal-format
  msgid "reading CMI %qs"
  msgstr ""
  
! #: cp/module.cc:21114
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21115
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21122
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21123
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21185
  #, gcc-internal-format
  msgid "failed to load pendings for %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21189
  #, gcc-internal-format
  msgid "during load of pendings for %<%E%s%E%>"
  msgstr ""
--- 64672,65128 ----
  msgid "unable to represent further imported source locations"
  msgstr ""
  
! #: cp/module.cc:6549
! #, gcc-internal-format
! msgid "%<target%> attribute currently unsupported in modules"
! msgstr ""
! 
! #: cp/module.cc:6552
! #, gcc-internal-format
! msgid "%<optimize%> attribute currently unsupported in modules"
! msgstr ""
! 
! #: cp/module.cc:12100
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12104
  #, gcc-internal-format
  msgid "mismatching abi tags for %qD with no tags"
  msgstr ""
  
! #: cp/module.cc:12107
  #, gcc-internal-format
  msgid "existing declaration here with tags %qE"
  msgstr ""
  
! #: cp/module.cc:12110
  #, gcc-internal-format
  msgid "existing declaration here with no tags"
  msgstr ""
  
! #: cp/module.cc:12161 cp/module.cc:12285
  #, gcc-internal-format
  msgid "conflicting type for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12170
  #, gcc-internal-format
  msgid "conflicting language linkage for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12182
  #, gcc-internal-format
  msgid "conflicting argument list for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12189
  #, gcc-internal-format
  msgid "conflicting argument types for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12227
  #, gcc-internal-format
  msgid "conflicting %<noexcept%> specifier for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12245
  #, gcc-internal-format
  msgid "conflicting deduced return type for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12260
  #, gcc-internal-format
  msgid "conflicting %<constexpr%> for imported declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12276
  #, gcc-internal-format
  msgid "conflicting imported declaration %q#D"
  msgstr ""
  
! #: cp/module.cc:12302
  #, gcc-internal-format
  msgid "existing declaration %#qD"
  msgstr ""
  
! #: cp/module.cc:12405
  #, gcc-internal-format
  msgid "conflicting default argument for %#qD"
  msgstr ""
  
! #: cp/module.cc:12407 cp/module.cc:12434
  #, gcc-internal-format
  msgid "existing default declared here"
  msgstr ""
  
! #: cp/module.cc:12431
  #, gcc-internal-format
  msgid "conflicting default argument for parameter %P of %#qD"
  msgstr ""
  
! #: cp/module.cc:13494
  #, gcc-internal-format
  msgid "definition of %qD does not match"
  msgstr ""
  
! #: cp/module.cc:13496
  #, gcc-internal-format
  msgid "existing definition %qD"
  msgstr ""
  
! #: cp/module.cc:13508
  #, gcc-internal-format
  msgid "enumerator %qD does not match ..."
  msgstr ""
  
! #: cp/module.cc:13510
  #, gcc-internal-format
  msgid "... this enumerator %qD"
  msgstr ""
  
! #: cp/module.cc:13516
  #, gcc-internal-format
  msgid "additional enumerators beginning with %qD"
  msgstr ""
  
! #: cp/module.cc:13520
  #, gcc-internal-format
  msgid "enumeration range differs"
  msgstr ""
  
! #: cp/module.cc:13733
  #, gcc-internal-format
  msgid "%qD is an alias of TU-local type %qT"
  msgstr ""
  
! #: cp/module.cc:13751
  #, gcc-internal-format
  msgid "%qD is a specialization of TU-local template %qD"
  msgstr ""
  
! #: cp/module.cc:13775
  #, gcc-internal-format
  msgid "%qD declared with internal linkage"
  msgstr ""
  
! #: cp/module.cc:13793
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared in an anonymous namespace"
  msgstr ""
  
! #: cp/module.cc:13805
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qT"
  msgstr ""
  
! #: cp/module.cc:13816
  #, gcc-internal-format
  msgid "%qD has no linkage and is declared within TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:13848
  #, gcc-internal-format
  msgid ""
  "%qT has no name and cannot be differentiated from similar lambdas in other "
  "TUs"
  msgstr ""
  
! #: cp/module.cc:13857
  #, gcc-internal-format
  msgid ""
  "%qT has no name and is not defined within a class, function, or initializer"
  msgstr ""
  
! #: cp/module.cc:13893
  #, gcc-internal-format
  msgid "%qD has TU-local template argument %qD"
  msgstr ""
  
! #: cp/module.cc:13905
  #, gcc-internal-format
  msgid "%qD has TU-local template argument %qT"
  msgstr ""
  
! #: cp/module.cc:13957
  #, gcc-internal-format
  msgid "%qD refers to TU-local object %qD"
  msgstr ""
  
! #: cp/module.cc:13959
  #, gcc-internal-format
  msgid "%qD refers to TU-local function %qD"
  msgstr ""
  
! #: cp/module.cc:15089
  #, gcc-internal-format
  msgid "%qD exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/module.cc:15104
  #, gcc-internal-format
  msgid "%qD is declared %<constexpr%> and is initialized to a TU-local value"
  msgstr ""
  
! #: cp/module.cc:15111
! #, gcc-internal-format
! msgid ""
! "%qD is a reference declared %<inline%> and is constant-initialized to a TU-"
! "local value"
! msgstr ""
! 
! #: cp/module.cc:15150
  #, gcc-internal-format
  msgid ""
  "%qD refers to TU-local entity %qD and cannot be instantiated in other TUs"
  msgstr ""
  
! #: cp/module.cc:15747
  #, gcc-internal-format
  msgid "recursive lazy load"
  msgstr ""
  
! #: cp/module.cc:15767
  #, gcc-internal-format
  msgid "cannot import module in its own purview"
  msgstr ""
  
! #: cp/module.cc:15768 cp/module.cc:21350
  #, gcc-internal-format
  msgid "module %qs declared here"
  msgstr ""
  
! #: cp/module.cc:16117
  #, gcc-internal-format
  msgid "indirect import %qs is not already loaded"
  msgstr ""
  
! #: cp/module.cc:16123
  #, gcc-internal-format
  msgid "import %qs has CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:18890
  #, gcc-internal-format
  msgid "not exporting %<#define %E%> as it is a keyword"
  msgstr ""
  
! #: cp/module.cc:19130
  #, gcc-internal-format
  msgid "macro definitions of %qE corrupted"
  msgstr ""
  
! #: cp/module.cc:19155 cp/module.cc:19158
  #, gcc-internal-format
  msgid "inconsistent imported macro definition %qE"
  msgstr ""
  
! #: cp/module.cc:19164
  #, gcc-internal-format
  msgid "%<#undef %E%>"
  msgstr ""
  
! #: cp/module.cc:19166
  #, gcc-internal-format
  msgid "%<#define %s%>"
  msgstr ""
  
! #: cp/module.cc:19498
  #, gcc-internal-format
  msgid "compiled module file is %qs"
  msgstr ""
  
! #: cp/module.cc:19536 cp/module.cc:19541
  #, gcc-internal-format, gfc-internal-format
  msgid "compiled module is %sversion %s"
  msgstr ""
  
! #: cp/module.cc:19547
  #, gcc-internal-format, gfc-internal-format
  msgid "compiler is %sversion %s%s%s"
  msgstr ""
  
! #: cp/module.cc:19577
  #, gcc-internal-format
  msgid "module %qs found"
  msgstr ""
  
! #: cp/module.cc:19579
  #, gcc-internal-format
  msgid "header module expected, module %qs found"
  msgstr ""
  
! #: cp/module.cc:19580
  #, gcc-internal-format
  msgid "module %qs expected, header module found"
  msgstr ""
  
! #: cp/module.cc:19595
  #, gcc-internal-format
  msgid "module %qs CRC mismatch"
  msgstr ""
  
! #: cp/module.cc:19609
  #, gcc-internal-format
  msgid "target & host is %qs:%qs, expected %qs:%qs"
  msgstr ""
  
! #: cp/module.cc:19621
  #, gcc-internal-format
  msgid "language dialect differs %qs, expected %qs"
  msgstr ""
  
! #: cp/module.cc:19641
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> to enable"
  msgstr ""
  
! #: cp/module.cc:19643
  #, gcc-internal-format
  msgid "module contains OpenMP, use %<-fopenmp%> or %<-fopenmp-simd%> to enable"
  msgstr ""
  
! #: cp/module.cc:19646
  #, gcc-internal-format
  msgid "module contains OpenACC, use %<-fopenacc%> to enable"
  msgstr ""
  
! #: cp/module.cc:19664
  #, gcc-internal-format
  msgid "fixed tree mismatch"
  msgstr ""
  
! #: cp/module.cc:19755
  #, gcc-internal-format
  msgid "interface partition is not exported"
  msgstr ""
  
! #: cp/module.cc:20312
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module cluster %u: %s"
  msgstr ""
  
! #: cp/module.cc:20351
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to read compiled module: %s"
  msgstr ""
  
! #: cp/module.cc:20361
  #, gcc-internal-format
  msgid ""
  "consider using %<-fno-module-lazy%>, increasing %<-param-lazy-modules=%u%> "
  "value, or increasing the per-process file descriptor limit"
  msgstr ""
  
! #: cp/module.cc:20366
  #, gcc-internal-format
  msgid "imports must be built before being imported"
  msgstr ""
  
! #: cp/module.cc:20369
  #, gcc-internal-format
  msgid "returning to the gate for a mechanical issue"
  msgstr ""
  
! #: cp/module.cc:20690
  #, gcc-internal-format
  msgid "declaring %qD in module %qs conflicts with builtin in global module"
  msgstr ""
  
! #: cp/module.cc:20693
  #, gcc-internal-format
  msgid "declaration %qD conflicts with builtin"
  msgstr ""
  
! #: cp/module.cc:20699
  #, gcc-internal-format
  msgid "redeclaring %qD in module %qs conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20702
  #, gcc-internal-format
  msgid "redeclaring %qD in global module conflicts with import"
  msgstr ""
  
! #: cp/module.cc:20707
  #, gcc-internal-format
  msgid "import declared attached to module %qs"
  msgstr ""
  
! #: cp/module.cc:20711
  #, gcc-internal-format
  msgid "import declared in global module"
  msgstr ""
  
! #: cp/module.cc:20717
  #, gcc-internal-format
  msgid "conflicting declaration of %qD in module %qs"
  msgstr ""
  
! #: cp/module.cc:20720
  #, gcc-internal-format
  msgid "conflicting declaration of %qD in global module"
  msgstr ""
  
! #: cp/module.cc:20725
  #, gcc-internal-format
  msgid "previously declared in module %qs"
  msgstr ""
  
! #: cp/module.cc:20729
  #, gcc-internal-format
  msgid "previously declared in global module"
  msgstr ""
  
! #: cp/module.cc:20868
  #, gcc-internal-format
  msgid ""
  "external linkage definition of %qD in header module must be declared "
  "%<inline%>"
  msgstr ""
  
! #: cp/module.cc:20883
  #, gcc-internal-format
  msgid "exporting declaration %qD declared in unnamed namespace"
  msgstr ""
  
! #: cp/module.cc:20890
  #, gcc-internal-format
  msgid "exporting declaration %qD with internal linkage"
  msgstr ""
  
! #: cp/module.cc:21043
  #, gcc-internal-format
  msgid "reading CMI %qs"
  msgstr ""
  
! #: cp/module.cc:21194
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21195
  #, gcc-internal-format
  msgid "failed to load binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21202
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21203
  #, gcc-internal-format
  msgid "during load of binding %<%E%s%E@%s%>"
  msgstr ""
  
! #: cp/module.cc:21265
  #, gcc-internal-format
  msgid "failed to load pendings for %<%E%s%E%>"
  msgstr ""
  
! #: cp/module.cc:21269
  #, gcc-internal-format
  msgid "during load of pendings for %<%E%s%E%>"
  msgstr ""
*************** msgstr ""
*** 65033,65134 ****
  #. module, so we don't want to confuse things by having to think
  #. about whether 'extern "C++" { import foo; }' puts foo's
  #. contents into the global module all of a sudden.
! #: cp/module.cc:21234
  #, gcc-internal-format
  msgid "import of named module %qs inside language-linkage block"
  msgstr ""
  
! #: cp/module.cc:21265
  #, gcc-internal-format
  msgid "module already declared"
  msgstr ""
  
! #: cp/module.cc:21266
  #, gcc-internal-format
  msgid "module already imported"
  msgstr ""
  
! #: cp/module.cc:21271
  #, gcc-internal-format
  msgid "module %qs imported here"
  msgstr ""
  
! #: cp/module.cc:21479
  #, gcc-internal-format
  msgid "mismatching compiled module interface: had %qs, got %qs"
  msgstr ""
  
! #: cp/module.cc:21485
  #, gcc-internal-format, gfc-internal-format
  msgid "unknown compiled module interface: %s"
  msgstr ""
  
! #: cp/module.cc:21529
  #, gcc-internal-format
  msgid "cannot determine %<#include%> translation of %s: %s"
  msgstr ""
  
! #: cp/module.cc:21547
  #, gcc-internal-format
  msgid "include %qs translated to import"
  msgstr ""
  
! #: cp/module.cc:21548
  #, gcc-internal-format
  msgid "include %qs processed textually"
  msgstr ""
  
! #: cp/module.cc:21908
  #, gcc-internal-format
  msgid "C++ modules are incompatible with precompiled headers"
  msgstr ""
  
! #: cp/module.cc:21912
  #, gcc-internal-format
  msgid "C++ modules are incompatible with traditional preprocessing"
  msgstr ""
  
! #: cp/module.cc:21944 cp/module.cc:21973
  #, gcc-internal-format
  msgid "invalid header name %qs"
  msgstr ""
  
! #: cp/module.cc:21983
  #, gcc-internal-format
  msgid "invalid module name %qs"
  msgstr ""
  
! #: cp/module.cc:22183
  #, gcc-internal-format
  msgid "%<-fmodule-only%> used for non-interface"
  msgstr ""
  
! #: cp/module.cc:22223
  #, gcc-internal-format
  msgid "writing CMI %qs"
  msgstr ""
  
! #: cp/module.cc:22238
  #, gcc-internal-format
  msgid "not writing module %qs due to errors in template bodies"
  msgstr ""
  
! #: cp/module.cc:22241
  #, gcc-internal-format
  msgid "enable %<-Wtemplate-body%> for more details"
  msgstr ""
  
! #: cp/module.cc:22243
  #, gcc-internal-format
  msgid "first error in %qD appeared here"
  msgstr ""
  
! #: cp/module.cc:22307
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to write compiled module: %s"
  msgstr ""
  
! #: cp/module.cc:22404
  #, gcc-internal-format
  msgid "unknown header kind %qs"
  msgstr ""
--- 65134,65235 ----
  #. module, so we don't want to confuse things by having to think
  #. about whether 'extern "C++" { import foo; }' puts foo's
  #. contents into the global module all of a sudden.
! #: cp/module.cc:21314
  #, gcc-internal-format
  msgid "import of named module %qs inside language-linkage block"
  msgstr ""
  
! #: cp/module.cc:21345
  #, gcc-internal-format
  msgid "module already declared"
  msgstr ""
  
! #: cp/module.cc:21346
  #, gcc-internal-format
  msgid "module already imported"
  msgstr ""
  
! #: cp/module.cc:21351
  #, gcc-internal-format
  msgid "module %qs imported here"
  msgstr ""
  
! #: cp/module.cc:21559
  #, gcc-internal-format
  msgid "mismatching compiled module interface: had %qs, got %qs"
  msgstr ""
  
! #: cp/module.cc:21565
  #, gcc-internal-format, gfc-internal-format
  msgid "unknown compiled module interface: %s"
  msgstr ""
  
! #: cp/module.cc:21609
  #, gcc-internal-format
  msgid "cannot determine %<#include%> translation of %s: %s"
  msgstr ""
  
! #: cp/module.cc:21627
  #, gcc-internal-format
  msgid "include %qs translated to import"
  msgstr ""
  
! #: cp/module.cc:21628
  #, gcc-internal-format
  msgid "include %qs processed textually"
  msgstr ""
  
! #: cp/module.cc:21988
  #, gcc-internal-format
  msgid "C++ modules are incompatible with precompiled headers"
  msgstr ""
  
! #: cp/module.cc:21992
  #, gcc-internal-format
  msgid "C++ modules are incompatible with traditional preprocessing"
  msgstr ""
  
! #: cp/module.cc:22024 cp/module.cc:22053
  #, gcc-internal-format
  msgid "invalid header name %qs"
  msgstr ""
  
! #: cp/module.cc:22063
  #, gcc-internal-format
  msgid "invalid module name %qs"
  msgstr ""
  
! #: cp/module.cc:22263
  #, gcc-internal-format
  msgid "%<-fmodule-only%> used for non-interface"
  msgstr ""
  
! #: cp/module.cc:22303
  #, gcc-internal-format
  msgid "writing CMI %qs"
  msgstr ""
  
! #: cp/module.cc:22318
  #, gcc-internal-format
  msgid "not writing module %qs due to errors in template bodies"
  msgstr ""
  
! #: cp/module.cc:22321
  #, gcc-internal-format
  msgid "enable %<-Wtemplate-body%> for more details"
  msgstr ""
  
! #: cp/module.cc:22323
  #, gcc-internal-format
  msgid "first error in %qD appeared here"
  msgstr ""
  
! #: cp/module.cc:22387
  #, gcc-internal-format, gfc-internal-format
  msgid "failed to write compiled module: %s"
  msgstr ""
  
! #: cp/module.cc:22484
  #, gcc-internal-format
  msgid "unknown header kind %qs"
  msgstr ""
*************** msgstr ""
*** 65185,65443 ****
  msgid "friend declaration %qD in local class without prior local declaration"
  msgstr ""
  
! #: cp/name-lookup.cc:4653
  #, gcc-internal-format
  msgid "%s %<%s(%E)%> %p %d"
  msgstr ""
  
! #: cp/name-lookup.cc:4656
  #, gcc-internal-format
  msgid "%s %s %p %d"
  msgstr ""
  
! #: cp/name-lookup.cc:5252
  #, gcc-internal-format
  msgid "exporting %q#D that does not have external linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5256
  #, gcc-internal-format
  msgid "%q#D declared here with no linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5259
  #, gcc-internal-format
  msgid "%q#D declared here with internal linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5262
  #, gcc-internal-format
  msgid "%q#D declared here with module linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:6070
  #, gcc-internal-format
  msgid "%<%T%s%D%> names destructor"
  msgstr ""
  
! #: cp/name-lookup.cc:6086
  #, gcc-internal-format
  msgid "using-declaration for non-member at class scope"
  msgstr ""
  
! #: cp/name-lookup.cc:6094
  #, gcc-internal-format
  msgid ""
  "%<using%> with enumeration scope %q#T only available with %<-std=c++20%> or "
  "%<-std=gnu++20%>"
  msgstr ""
  
! #: cp/name-lookup.cc:6110 cp/pt.cc:18933
  #, gcc-internal-format
  msgid "%qT is not a class, namespace, or enumeration"
  msgstr ""
  
! #: cp/name-lookup.cc:6120
  #, gcc-internal-format
  msgid "non-member using-declaration names constructor of %qT"
  msgstr ""
  
! #: cp/name-lookup.cc:6131 cp/name-lookup.cc:6204
  #, gcc-internal-format
  msgid "using-declaration for member at non-class scope"
  msgstr ""
  
! #: cp/name-lookup.cc:6154
  #, gcc-internal-format
  msgid "%qT is not a direct base of %qT"
  msgstr ""
  
! #: cp/name-lookup.cc:6214
  #, gcc-internal-format
  msgid "did you mean %<using enum %T::%D%>?"
  msgstr ""
  
! #: cp/name-lookup.cc:6226
  #, gcc-internal-format
  msgid "%qD has not been declared in %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6241
  #, gcc-internal-format
  msgid "using-declaration may not name namespace %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6252
  #, gcc-internal-format
  msgid "%<%T::%D%> names constructor in %qT"
  msgstr ""
  
! #: cp/name-lookup.cc:6345
  #, gcc-internal-format
  msgid "declaration of %qD not in a namespace surrounding %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6387
  #, gcc-internal-format
  msgid "explicit qualification in declaration of %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6397
  #, gcc-internal-format
  msgid "%qD should have been declared inside %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6467
  #, gcc-internal-format
  msgid "%qD has not been declared within %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6469
  #, gcc-internal-format
  msgid "only here as a %<friend%>"
  msgstr ""
  
! #: cp/name-lookup.cc:6523
  #, gcc-internal-format
  msgid "%qD attribute requires a single NTBS argument"
  msgstr ""
  
! #: cp/name-lookup.cc:6530
  #, gcc-internal-format
  msgid ""
  "%qD attribute is meaningless since members of the anonymous namespace get "
  "local symbols"
  msgstr ""
  
! #: cp/name-lookup.cc:6540 cp/name-lookup.cc:6567
  #, gcc-internal-format
  msgid "ignoring %qD attribute on anonymous namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6546
  #, gcc-internal-format
  msgid "ignoring %qD attribute on non-inline namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6583 cp/name-lookup.cc:9004
  #, gcc-internal-format
  msgid "%qD attribute directive ignored"
  msgstr ""
  
! #: cp/name-lookup.cc:6912
  #, gcc-internal-format
  msgid "maximum limit of %d namespaces searched for %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:6964
  #, gcc-internal-format
  msgid "suggested alternative:"
  msgid_plural "suggested alternatives:"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/name-lookup.cc:6970
  #, gcc-internal-format
  msgid "  %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:7295
  #, gcc-internal-format
  msgid ""
  "%<std::%s%> is defined in header %qs; this is probably fixable by adding "
  "%<#include %s%>"
  msgstr ""
  
! #: cp/name-lookup.cc:7301
  #, gcc-internal-format
  msgid "%<std::%s%> is only available from %s onwards"
  msgstr ""
  
! #: cp/name-lookup.cc:7739
  #, gcc-internal-format
  msgid "the macro %qs had not yet been defined"
  msgstr ""
  
! #: cp/name-lookup.cc:7742
  #, gcc-internal-format
  msgid "it was later defined here"
  msgstr ""
  
! #: cp/name-lookup.cc:8538
  #, gcc-internal-format
  msgid ""
  "declaration of %<std::initializer_list%> does not match %<#include "
  "<initializer_list>%>, isn%'t a template"
  msgstr ""
  
! #: cp/name-lookup.cc:8976
  #, gcc-internal-format
  msgid "%<strong%> using directive no longer supported"
  msgstr ""
  
! #: cp/name-lookup.cc:8979
  #, gcc-internal-format
  msgid "you can use an inline namespace instead"
  msgstr ""
  
! #: cp/name-lookup.cc:8998
  #, gcc-internal-format
  msgid "%<omp::%E%> not allowed to be specified in this context"
  msgstr ""
  
  #. We only allow depth 255.
! #: cp/name-lookup.cc:9090
  #, gcc-internal-format, gfc-internal-format
  msgid "cannot nest more than %d namespaces"
  msgstr ""
  
! #: cp/name-lookup.cc:9192
  #, gcc-internal-format
  msgid "%<namespace %E%> is ambiguous"
  msgstr ""
  
! #: cp/name-lookup.cc:9208
  #, gcc-internal-format
  msgid "namespace alias %qD not allowed here, assuming %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:9291
  #, gcc-internal-format
  msgid "exporting namespace %qD with internal linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:9293
  #, gcc-internal-format
  msgid ""
  "%qD has internal linkage because it was declared in an unnamed namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:9297
  #, gcc-internal-format
  msgid "exporting unnamed namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:9307
  #, gcc-internal-format
  msgid "inline namespace must be specified at initial definition"
  msgstr ""
  
! #: cp/name-lookup.cc:9357
  #, gcc-internal-format
  msgid "%s namespace %qD conflicts with reachable definition"
  msgstr ""
  
! #: cp/name-lookup.cc:9359
  #, gcc-internal-format, gfc-internal-format
  msgid "reachable %s definition here"
  msgstr ""
  
! #: cp/name-lookup.cc:9402
  #, gcc-internal-format
  msgid "XXX entering %<pop_everything ()%>"
  msgstr ""
  
! #: cp/name-lookup.cc:9411
  #, gcc-internal-format
  msgid "XXX leaving %<pop_everything ()%>"
  msgstr ""
--- 65286,65544 ----
  msgid "friend declaration %qD in local class without prior local declaration"
  msgstr ""
  
! #: cp/name-lookup.cc:4656
  #, gcc-internal-format
  msgid "%s %<%s(%E)%> %p %d"
  msgstr ""
  
! #: cp/name-lookup.cc:4659
  #, gcc-internal-format
  msgid "%s %s %p %d"
  msgstr ""
  
! #: cp/name-lookup.cc:5255
  #, gcc-internal-format
  msgid "exporting %q#D that does not have external linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5259
  #, gcc-internal-format
  msgid "%q#D declared here with no linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5262
  #, gcc-internal-format
  msgid "%q#D declared here with internal linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:5265
  #, gcc-internal-format
  msgid "%q#D declared here with module linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:6073
  #, gcc-internal-format
  msgid "%<%T%s%D%> names destructor"
  msgstr ""
  
! #: cp/name-lookup.cc:6089
  #, gcc-internal-format
  msgid "using-declaration for non-member at class scope"
  msgstr ""
  
! #: cp/name-lookup.cc:6097
  #, gcc-internal-format
  msgid ""
  "%<using%> with enumeration scope %q#T only available with %<-std=c++20%> or "
  "%<-std=gnu++20%>"
  msgstr ""
  
! #: cp/name-lookup.cc:6113 cp/pt.cc:18962
  #, gcc-internal-format
  msgid "%qT is not a class, namespace, or enumeration"
  msgstr ""
  
! #: cp/name-lookup.cc:6123
  #, gcc-internal-format
  msgid "non-member using-declaration names constructor of %qT"
  msgstr ""
  
! #: cp/name-lookup.cc:6134 cp/name-lookup.cc:6207
  #, gcc-internal-format
  msgid "using-declaration for member at non-class scope"
  msgstr ""
  
! #: cp/name-lookup.cc:6157
  #, gcc-internal-format
  msgid "%qT is not a direct base of %qT"
  msgstr ""
  
! #: cp/name-lookup.cc:6217
  #, gcc-internal-format
  msgid "did you mean %<using enum %T::%D%>?"
  msgstr ""
  
! #: cp/name-lookup.cc:6229
  #, gcc-internal-format
  msgid "%qD has not been declared in %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6244
  #, gcc-internal-format
  msgid "using-declaration may not name namespace %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6255
  #, gcc-internal-format
  msgid "%<%T::%D%> names constructor in %qT"
  msgstr ""
  
! #: cp/name-lookup.cc:6348
  #, gcc-internal-format
  msgid "declaration of %qD not in a namespace surrounding %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6390
  #, gcc-internal-format
  msgid "explicit qualification in declaration of %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6400
  #, gcc-internal-format
  msgid "%qD should have been declared inside %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6470
  #, gcc-internal-format
  msgid "%qD has not been declared within %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:6472
  #, gcc-internal-format
  msgid "only here as a %<friend%>"
  msgstr ""
  
! #: cp/name-lookup.cc:6526
  #, gcc-internal-format
  msgid "%qD attribute requires a single NTBS argument"
  msgstr ""
  
! #: cp/name-lookup.cc:6533
  #, gcc-internal-format
  msgid ""
  "%qD attribute is meaningless since members of the anonymous namespace get "
  "local symbols"
  msgstr ""
  
! #: cp/name-lookup.cc:6543 cp/name-lookup.cc:6570
  #, gcc-internal-format
  msgid "ignoring %qD attribute on anonymous namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6549
  #, gcc-internal-format
  msgid "ignoring %qD attribute on non-inline namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:6586 cp/name-lookup.cc:9007
  #, gcc-internal-format
  msgid "%qD attribute directive ignored"
  msgstr ""
  
! #: cp/name-lookup.cc:6915
  #, gcc-internal-format
  msgid "maximum limit of %d namespaces searched for %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:6967
  #, gcc-internal-format
  msgid "suggested alternative:"
  msgid_plural "suggested alternatives:"
  msgstr[0] ""
  msgstr[1] ""
  
! #: cp/name-lookup.cc:6973
  #, gcc-internal-format
  msgid "  %qE"
  msgstr ""
  
! #: cp/name-lookup.cc:7298
  #, gcc-internal-format
  msgid ""
  "%<std::%s%> is defined in header %qs; this is probably fixable by adding "
  "%<#include %s%>"
  msgstr ""
  
! #: cp/name-lookup.cc:7304
  #, gcc-internal-format
  msgid "%<std::%s%> is only available from %s onwards"
  msgstr ""
  
! #: cp/name-lookup.cc:7742
  #, gcc-internal-format
  msgid "the macro %qs had not yet been defined"
  msgstr ""
  
! #: cp/name-lookup.cc:7745
  #, gcc-internal-format
  msgid "it was later defined here"
  msgstr ""
  
! #: cp/name-lookup.cc:8541
  #, gcc-internal-format
  msgid ""
  "declaration of %<std::initializer_list%> does not match %<#include "
  "<initializer_list>%>, isn%'t a template"
  msgstr ""
  
! #: cp/name-lookup.cc:8979
  #, gcc-internal-format
  msgid "%<strong%> using directive no longer supported"
  msgstr ""
  
! #: cp/name-lookup.cc:8982
  #, gcc-internal-format
  msgid "you can use an inline namespace instead"
  msgstr ""
  
! #: cp/name-lookup.cc:9001
  #, gcc-internal-format
  msgid "%<omp::%E%> not allowed to be specified in this context"
  msgstr ""
  
  #. We only allow depth 255.
! #: cp/name-lookup.cc:9093
  #, gcc-internal-format, gfc-internal-format
  msgid "cannot nest more than %d namespaces"
  msgstr ""
  
! #: cp/name-lookup.cc:9195
  #, gcc-internal-format
  msgid "%<namespace %E%> is ambiguous"
  msgstr ""
  
! #: cp/name-lookup.cc:9211
  #, gcc-internal-format
  msgid "namespace alias %qD not allowed here, assuming %qD"
  msgstr ""
  
! #: cp/name-lookup.cc:9294
  #, gcc-internal-format
  msgid "exporting namespace %qD with internal linkage"
  msgstr ""
  
! #: cp/name-lookup.cc:9296
  #, gcc-internal-format
  msgid ""
  "%qD has internal linkage because it was declared in an unnamed namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:9300
  #, gcc-internal-format
  msgid "exporting unnamed namespace"
  msgstr ""
  
! #: cp/name-lookup.cc:9310
  #, gcc-internal-format
  msgid "inline namespace must be specified at initial definition"
  msgstr ""
  
! #: cp/name-lookup.cc:9360
  #, gcc-internal-format
  msgid "%s namespace %qD conflicts with reachable definition"
  msgstr ""
  
! #: cp/name-lookup.cc:9362
  #, gcc-internal-format, gfc-internal-format
  msgid "reachable %s definition here"
  msgstr ""
  
! #: cp/name-lookup.cc:9405
  #, gcc-internal-format
  msgid "XXX entering %<pop_everything ()%>"
  msgstr ""
  
! #: cp/name-lookup.cc:9414
  #, gcc-internal-format
  msgid "XXX leaving %<pop_everything ()%>"
  msgstr ""
*************** msgstr ""
*** 65462,65468 ****
  msgid "%<LEXER_DEBUGGING_ENABLED_P%> is not set to true"
  msgstr ""
  
! #: cp/parser.cc:1724 cp/parser.cc:49645
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> not immediately followed by function declaration "
--- 65563,65569 ----
  msgid "%<LEXER_DEBUGGING_ENABLED_P%> is not set to true"
  msgstr ""
  
! #: cp/parser.cc:1724 cp/parser.cc:49704
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp declare %s%> not immediately followed by function declaration "
*************** msgstr ""
*** 65513,65519 ****
  msgid "request for member %qE in non-class type %qT"
  msgstr ""
  
! #: cp/parser.cc:3517 cp/parser.cc:22267
  #, gcc-internal-format
  msgid "%<%T::%E%> has not been declared"
  msgstr ""
--- 65614,65620 ----
  msgid "request for member %qE in non-class type %qT"
  msgstr ""
  
! #: cp/parser.cc:3517 cp/parser.cc:22271
  #, gcc-internal-format
  msgid "%<%T::%E%> has not been declared"
  msgstr ""
*************** msgstr ""
*** 65744,65750 ****
  msgid "%<concept%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
  
! #: cp/parser.cc:3922 cp/parser.cc:32272
  #, gcc-internal-format
  msgid "%<requires%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
--- 65845,65851 ----
  msgid "%<concept%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
  
! #: cp/parser.cc:3922 cp/parser.cc:32331
  #, gcc-internal-format
  msgid "%<requires%> only available with %<-std=c++20%> or %<-fconcepts%>"
  msgstr ""
*************** msgstr ""
*** 65991,65997 ****
  msgid "template-id not allowed for destructor in C++20"
  msgstr ""
  
! #: cp/parser.cc:6989 cp/parser.cc:33504
  #, gcc-internal-format
  msgid "remove the %qs"
  msgstr ""
--- 66092,66098 ----
  msgid "template-id not allowed for destructor in C++20"
  msgstr ""
  
! #: cp/parser.cc:6989 cp/parser.cc:33563
  #, gcc-internal-format
  msgid "remove the %qs"
  msgstr ""
*************** msgstr ""
*** 66006,66012 ****
  msgid "typedef-name %qD used as destructor declarator"
  msgstr ""
  
! #: cp/parser.cc:7155 cp/parser.cc:24869
  #, gcc-internal-format
  msgid "expected unqualified-id"
  msgstr ""
--- 66107,66113 ----
  msgid "typedef-name %qD used as destructor declarator"
  msgstr ""
  
! #: cp/parser.cc:7155 cp/parser.cc:24873
  #, gcc-internal-format
  msgid "expected unqualified-id"
  msgstr ""
*************** msgstr ""
*** 66046,66052 ****
  msgid "expected nested-name-specifier"
  msgstr ""
  
! #: cp/parser.cc:7808 cp/parser.cc:10516
  #, gcc-internal-format
  msgid "types may not be defined in casts"
  msgstr ""
--- 66147,66153 ----
  msgid "expected nested-name-specifier"
  msgstr ""
  
! #: cp/parser.cc:7808 cp/parser.cc:10518
  #, gcc-internal-format
  msgid "types may not be defined in casts"
  msgstr ""
*************** msgstr ""
*** 66061,66067 ****
  msgid "wrong number of arguments to %<__builtin_addressof%>"
  msgstr ""
  
! #: cp/parser.cc:8002 cp/pt.cc:21522
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_launder%>"
  msgstr ""
--- 66162,66168 ----
  msgid "wrong number of arguments to %<__builtin_addressof%>"
  msgstr ""
  
! #: cp/parser.cc:8002 cp/pt.cc:21551
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_launder%>"
  msgstr ""
*************** msgstr ""
*** 66076,66096 ****
  msgid "wrong number of arguments to %<__builtin_shufflevector%>"
  msgstr ""
  
! #: cp/parser.cc:8069 cp/pt.cc:21637
  #, gcc-internal-format
  msgid ""
  "call to %<__builtin_operator_new%> does not select replaceable global "
  "allocation function"
  msgstr ""
  
! #: cp/parser.cc:8073 cp/pt.cc:21641
  #, gcc-internal-format
  msgid ""
  "call to %<__builtin_operator_delete%> does not select replaceable global "
  "deallocation function"
  msgstr ""
  
! #: cp/parser.cc:8078 cp/pt.cc:21646
  #, gcc-internal-format
  msgid "selected function declared here"
  msgstr ""
--- 66177,66197 ----
  msgid "wrong number of arguments to %<__builtin_shufflevector%>"
  msgstr ""
  
! #: cp/parser.cc:8069 cp/pt.cc:21666
  #, gcc-internal-format
  msgid ""
  "call to %<__builtin_operator_new%> does not select replaceable global "
  "allocation function"
  msgstr ""
  
! #: cp/parser.cc:8073 cp/pt.cc:21670
  #, gcc-internal-format
  msgid ""
  "call to %<__builtin_operator_delete%> does not select replaceable global "
  "deallocation function"
  msgstr ""
  
! #: cp/parser.cc:8078 cp/pt.cc:21675
  #, gcc-internal-format
  msgid "selected function declared here"
  msgstr ""
*************** msgstr ""
*** 66135,66596 ****
  msgid "ISO C++ does not allow %<alignof%> with a non-type"
  msgstr ""
  
! #: cp/parser.cc:9507
  #, gcc-internal-format
  msgid "types may not be defined in %<noexcept%> expressions"
  msgstr ""
  
! #: cp/parser.cc:9566
  #, gcc-internal-format
  msgid "%<co_await%> cannot be used in default arguments"
  msgstr ""
  
! #: cp/parser.cc:9791 cp/parser.cc:34822
  #, gcc-internal-format
  msgid "types may not be defined in %qs expressions"
  msgstr ""
  
! #: cp/parser.cc:9856
  #, gcc-internal-format
  msgid "%<__builtin_has_attribute%> with dependent argument not supported yet"
  msgstr ""
  
! #: cp/parser.cc:9942
  #, gcc-internal-format
  msgid "types may not be defined in a new-expression"
  msgstr ""
  
! #: cp/parser.cc:9960
  #, gcc-internal-format
  msgid "array bound forbidden after parenthesized type-id"
  msgstr ""
  
! #: cp/parser.cc:9962
  #, gcc-internal-format
  msgid "try removing the parentheses around the type-id"
  msgstr ""
  
! #: cp/parser.cc:9995
  #, gcc-internal-format
  msgid ""
  "initialization of new-expression for type %<auto%> requires exactly one "
  "element"
  msgstr ""
  
! #: cp/parser.cc:10040
  #, gcc-internal-format
  msgid "expected expression-list or type-id"
  msgstr ""
  
! #: cp/parser.cc:10069
  #, gcc-internal-format
  msgid "types may not be defined in a new-type-id"
  msgstr ""
  
! #: cp/parser.cc:10117
  #, gcc-internal-format
  msgid "attributes ignored on outermost array type in new expression"
  msgstr ""
  
! #: cp/parser.cc:10213
  #, gcc-internal-format
  msgid "expression in new-declarator must have integral or enumeration type"
  msgstr ""
  
! #: cp/parser.cc:10619
  #, gcc-internal-format
  msgid "use of old-style cast to %q#T"
  msgstr ""
  
! #: cp/parser.cc:10769
  #, gcc-internal-format
  msgid "%<>>%> operator is treated as two right angle brackets in C++11"
  msgstr ""
  
! #: cp/parser.cc:10772
  #, gcc-internal-format
  msgid "suggest parentheses around %<>>%> expression"
  msgstr ""
  
! #: cp/parser.cc:10998
  #, gcc-internal-format
  msgid "ISO C++ does not allow %<?:%> with omitted middle operand"
  msgstr ""
  
! #: cp/parser.cc:11322
  #, gcc-internal-format
  msgid "top-level comma expression in array subscript is deprecated"
  msgstr ""
  
! #: cp/parser.cc:11470
  #, gcc-internal-format
  msgid "types may not be defined within %<__builtin_offsetof%>"
  msgstr ""
  
! #: cp/parser.cc:11604
  #, gcc-internal-format
  msgid "trailing argument to %<__type_pack_element%> is not a type"
  msgstr ""
  
! #: cp/parser.cc:11704
  #, gcc-internal-format
  msgid "lambda-expression in template parameter type"
  msgstr ""
  
! #: cp/parser.cc:11714
  #, gcc-internal-format
  msgid ""
  "lambda-expression in unevaluated context only available with %<-std=c++20%> "
  "or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11724
  #, gcc-internal-format
  msgid ""
  "lambda-expression in template-argument only available with %<-std=c++20%> or "
  "%<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11898
  #, gcc-internal-format
  msgid "non-local lambda expression cannot have a capture-default"
  msgstr ""
  
! #: cp/parser.cc:11921
  #, gcc-internal-format
  msgid "expected end of capture-list"
  msgstr ""
  
! #: cp/parser.cc:11937
  #, gcc-internal-format
  msgid ""
  "explicit by-copy capture of %<this%> with by-copy capture default only "
  "available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11943 cp/parser.cc:11965 cp/parser.cc:12163
  #, gcc-internal-format
  msgid "already captured %qD in lambda expression"
  msgstr ""
  
! #: cp/parser.cc:11959
  #, gcc-internal-format
  msgid ""
  "%<*this%> capture only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:11979
  #, gcc-internal-format
  msgid "%<this%> cannot be captured by reference"
  msgstr ""
  
! #: cp/parser.cc:11999
  #, gcc-internal-format
  msgid ""
  "pack init-capture only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:12010
  #, gcc-internal-format
  msgid "%<&%> should come before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:12040
  #, gcc-internal-format
  msgid ""
  "lambda capture initializers only available with %<-std=c++14%> or %<-std=gnu+"
  "+14%>"
  msgstr ""
  
! #: cp/parser.cc:12049
  #, gcc-internal-format
  msgid "empty initializer for lambda init-capture"
  msgstr ""
  
! #: cp/parser.cc:12074
  #, gcc-internal-format
  msgid "capture of non-variable %qE"
  msgstr ""
  
! #: cp/parser.cc:12078 cp/parser.cc:12089 cp/semantics.cc:4618
  #: cp/semantics.cc:4634
  #, gcc-internal-format
  msgid "%q#D declared here"
  msgstr ""
  
! #: cp/parser.cc:12085
  #, gcc-internal-format
  msgid "capture of variable %qD with non-automatic storage duration"
  msgstr ""
  
! #: cp/parser.cc:12123
  #, gcc-internal-format
  msgid "too many %<...%> in lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12134
  #, gcc-internal-format
  msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
  msgstr ""
  
! #: cp/parser.cc:12139
  #, gcc-internal-format
  msgid ""
  "explicit by-reference capture of %qD redundant with by-reference capture "
  "default"
  msgstr ""
  
! #: cp/parser.cc:12221
  #, gcc-internal-format
  msgid ""
  "lambda templates are only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:12275
  #, gcc-internal-format
  msgid "default argument specified for lambda parameter"
  msgstr ""
  
! #: cp/parser.cc:12298
  #, gcc-internal-format
  msgid ""
  "parameter declaration before lambda declaration specifiers only optional "
  "with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12328 cp/pt.cc:14987
  #, gcc-internal-format
  msgid ""
  "a lambda with captures may not have an explicit object parameter of an "
  "unrelated type"
  msgstr ""
  
! #: cp/parser.cc:12341
  #, gcc-internal-format
  msgid "%<mutable%> lambda specifier with explicit object parameter"
  msgstr ""
  
! #: cp/parser.cc:12350
  #, gcc-internal-format
  msgid ""
  "the passed in closure object will not be mutated because it is taken by value"
  msgstr ""
  
! #: cp/parser.cc:12354
  #, gcc-internal-format
  msgid "declare the explicit object parameter as non-const reference instead"
  msgstr ""
  
! #: cp/parser.cc:12358
  #, gcc-internal-format
  msgid "explicit object parameter is already a mutable reference"
  msgstr ""
  
! #: cp/parser.cc:12365
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with explicit object parameter"
  msgstr ""
  
! #: cp/parser.cc:12383
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12395
  #, gcc-internal-format
  msgid ""
  "parameter declaration before lambda transaction qualifier only optional with "
  "%<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12408
  #, gcc-internal-format
  msgid ""
  "parameter declaration before lambda exception specification only optional "
  "with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12426
  #, gcc-internal-format
  msgid ""
  "parameter declaration before lambda trailing return type only optional with "
  "%<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12468
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> lambda only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:13029
  #, gcc-internal-format
  msgid "preconditions cannot be statements"
  msgstr ""
  
! #: cp/parser.cc:13032
  #, gcc-internal-format
  msgid "postconditions cannot be statements"
  msgstr ""
  
! #: cp/parser.cc:13037
  #, gcc-internal-format
  msgid "assertions must be followed by %<;%>"
  msgstr ""
  
! #: cp/parser.cc:13202
  #, gcc-internal-format
  msgid ""
  "label at end of compound statement only available with %<-std=c++23%> or %<-"
  "std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:13382 cp/parser.cc:13627
  #, gcc-internal-format
  msgid "attributes at the beginning of statement are ignored"
  msgstr ""
  
! #: cp/parser.cc:13453
  #, gcc-internal-format
  msgid "expected labeled-statement"
  msgstr ""
  
! #: cp/parser.cc:13502
  #, gcc-internal-format
  msgid "case label %qE not within a switch statement"
  msgstr ""
  
! #: cp/parser.cc:13635
  #, gcc-internal-format
  msgid "need %<typename%> before %qE because %qT is a dependent scope"
  msgstr ""
  
  #. A::A a;
! #: cp/parser.cc:13641
  #, gcc-internal-format
  msgid "%qE names the constructor, not the type"
  msgstr ""
  
! #: cp/parser.cc:13699
  #, gcc-internal-format
  msgid "compound-statement in %<constexpr%> function"
  msgstr ""
  
! #: cp/parser.cc:13763
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<tile%> directive"
  msgstr ""
  
! #: cp/parser.cc:13968
  #, gcc-internal-format
  msgid "%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:13990
  #, gcc-internal-format
  msgid "%<if consteval%> only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:14015 cp/parser.cc:14050
  #, gcc-internal-format
  msgid "%<if consteval%> requires compound statement"
  msgstr ""
  
! #: cp/parser.cc:14092
  #, gcc-internal-format
  msgid ""
  "init-statement in selection statements only available with %<-std=c++17%> or "
  "%<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:14260 cp/parser.cc:35334
  #, gcc-internal-format
  msgid "expected selection-statement"
  msgstr ""
  
! #: cp/parser.cc:14301
  #, gcc-internal-format
  msgid "condition declares an array"
  msgstr ""
  
! #: cp/parser.cc:14303
  #, gcc-internal-format
  msgid "condition declares a function"
  msgstr ""
  
! #: cp/parser.cc:14344
  #, gcc-internal-format
  msgid "types may not be defined in conditions"
  msgstr ""
  
  #. Anything else is an error.
! #: cp/parser.cc:14446 cp/parser.cc:24109 cp/parser.cc:26828
  #, gcc-internal-format
  msgid "expected initializer"
  msgstr ""
  
! #: cp/parser.cc:14496
  #, gcc-internal-format
  msgid ""
  "range-based %<for%> loops with initializer only available with %<-std=c+"
  "+20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:14758
  #, gcc-internal-format
  msgid ""
  "loop variable %qD of type %qT binds to a temporary constructed from type %qT"
  msgstr ""
  
  #. rval
! #: cp/parser.cc:14765
  #, gcc-internal-format
  msgid ""
  "use non-reference type %qT to make the copy explicit or %qT to prevent "
  "copying"
  msgstr ""
  
! #: cp/parser.cc:14791
  #, gcc-internal-format
  msgid "loop variable %qD creates a copy from type %qT"
  msgstr ""
  
! #: cp/parser.cc:14796
  #, gcc-internal-format
  msgid "use reference type to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14935
  #, gcc-internal-format
  msgid "range-based %<for%> expression of type %qT has incomplete type"
  msgstr ""
  
! #: cp/parser.cc:15019
  #, gcc-internal-format
  msgid ""
  "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
  msgstr ""
  
! #: cp/parser.cc:15171 cp/parser.cc:35337
  #, gcc-internal-format
  msgid "expected iteration-statement"
  msgstr ""
  
! #: cp/parser.cc:15216
  #, gcc-internal-format
  msgid ""
  "alias-declaration in init-statement only available with %<-std=c++23%> or %<-"
  "std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:15233
  #, gcc-internal-format
  msgid ""
  "range-based %<for%> loops only available with %<-std=c++11%> or %<-std=gnu+"
  "+11%>"
  msgstr ""
  
! #: cp/parser.cc:15395
  #, gcc-internal-format
  msgid ""
  "%<goto%> in %<constexpr%> function only available with %<-std=c++23%> or %<-"
--- 66236,66697 ----
  msgid "ISO C++ does not allow %<alignof%> with a non-type"
  msgstr ""
  
! #: cp/parser.cc:9509
  #, gcc-internal-format
  msgid "types may not be defined in %<noexcept%> expressions"
  msgstr ""
  
! #: cp/parser.cc:9568
  #, gcc-internal-format
  msgid "%<co_await%> cannot be used in default arguments"
  msgstr ""
  
! #: cp/parser.cc:9793 cp/parser.cc:34881
  #, gcc-internal-format
  msgid "types may not be defined in %qs expressions"
  msgstr ""
  
! #: cp/parser.cc:9858
  #, gcc-internal-format
  msgid "%<__builtin_has_attribute%> with dependent argument not supported yet"
  msgstr ""
  
! #: cp/parser.cc:9944
  #, gcc-internal-format
  msgid "types may not be defined in a new-expression"
  msgstr ""
  
! #: cp/parser.cc:9962
  #, gcc-internal-format
  msgid "array bound forbidden after parenthesized type-id"
  msgstr ""
  
! #: cp/parser.cc:9964
  #, gcc-internal-format
  msgid "try removing the parentheses around the type-id"
  msgstr ""
  
! #: cp/parser.cc:9997
  #, gcc-internal-format
  msgid ""
  "initialization of new-expression for type %<auto%> requires exactly one "
  "element"
  msgstr ""
  
! #: cp/parser.cc:10042
  #, gcc-internal-format
  msgid "expected expression-list or type-id"
  msgstr ""
  
! #: cp/parser.cc:10071
  #, gcc-internal-format
  msgid "types may not be defined in a new-type-id"
  msgstr ""
  
! #: cp/parser.cc:10119
  #, gcc-internal-format
  msgid "attributes ignored on outermost array type in new expression"
  msgstr ""
  
! #: cp/parser.cc:10215
  #, gcc-internal-format
  msgid "expression in new-declarator must have integral or enumeration type"
  msgstr ""
  
! #: cp/parser.cc:10621
  #, gcc-internal-format
  msgid "use of old-style cast to %q#T"
  msgstr ""
  
! #: cp/parser.cc:10771
  #, gcc-internal-format
  msgid "%<>>%> operator is treated as two right angle brackets in C++11"
  msgstr ""
  
! #: cp/parser.cc:10774
  #, gcc-internal-format
  msgid "suggest parentheses around %<>>%> expression"
  msgstr ""
  
! #: cp/parser.cc:11000
  #, gcc-internal-format
  msgid "ISO C++ does not allow %<?:%> with omitted middle operand"
  msgstr ""
  
! #: cp/parser.cc:11324
  #, gcc-internal-format
  msgid "top-level comma expression in array subscript is deprecated"
  msgstr ""
  
! #: cp/parser.cc:11472
  #, gcc-internal-format
  msgid "types may not be defined within %<__builtin_offsetof%>"
  msgstr ""
  
! #: cp/parser.cc:11606
  #, gcc-internal-format
  msgid "trailing argument to %<__type_pack_element%> is not a type"
  msgstr ""
  
! #: cp/parser.cc:11706
  #, gcc-internal-format
  msgid "lambda-expression in template parameter type"
  msgstr ""
  
! #: cp/parser.cc:11716
  #, gcc-internal-format
  msgid ""
  "lambda-expression in unevaluated context only available with %<-std=c++20%> "
  "or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11726
  #, gcc-internal-format
  msgid ""
  "lambda-expression in template-argument only available with %<-std=c++20%> or "
  "%<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11900
  #, gcc-internal-format
  msgid "non-local lambda expression cannot have a capture-default"
  msgstr ""
  
! #: cp/parser.cc:11923
  #, gcc-internal-format
  msgid "expected end of capture-list"
  msgstr ""
  
! #: cp/parser.cc:11939
  #, gcc-internal-format
  msgid ""
  "explicit by-copy capture of %<this%> with by-copy capture default only "
  "available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:11945 cp/parser.cc:11967 cp/parser.cc:12165
  #, gcc-internal-format
  msgid "already captured %qD in lambda expression"
  msgstr ""
  
! #: cp/parser.cc:11961
  #, gcc-internal-format
  msgid ""
  "%<*this%> capture only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:11981
  #, gcc-internal-format
  msgid "%<this%> cannot be captured by reference"
  msgstr ""
  
! #: cp/parser.cc:12001
  #, gcc-internal-format
  msgid ""
  "pack init-capture only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:12012
  #, gcc-internal-format
  msgid "%<&%> should come before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:12042
  #, gcc-internal-format
  msgid ""
  "lambda capture initializers only available with %<-std=c++14%> or %<-std=gnu+"
  "+14%>"
  msgstr ""
  
! #: cp/parser.cc:12051
  #, gcc-internal-format
  msgid "empty initializer for lambda init-capture"
  msgstr ""
  
! #: cp/parser.cc:12076
  #, gcc-internal-format
  msgid "capture of non-variable %qE"
  msgstr ""
  
! #: cp/parser.cc:12080 cp/parser.cc:12091 cp/semantics.cc:4618
  #: cp/semantics.cc:4634
  #, gcc-internal-format
  msgid "%q#D declared here"
  msgstr ""
  
! #: cp/parser.cc:12087
  #, gcc-internal-format
  msgid "capture of variable %qD with non-automatic storage duration"
  msgstr ""
  
! #: cp/parser.cc:12125
  #, gcc-internal-format
  msgid "too many %<...%> in lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12136
  #, gcc-internal-format
  msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
  msgstr ""
  
! #: cp/parser.cc:12141
  #, gcc-internal-format
  msgid ""
  "explicit by-reference capture of %qD redundant with by-reference capture "
  "default"
  msgstr ""
  
! #: cp/parser.cc:12223
  #, gcc-internal-format
  msgid ""
  "lambda templates are only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:12277
  #, gcc-internal-format
  msgid "default argument specified for lambda parameter"
  msgstr ""
  
! #: cp/parser.cc:12300
  #, gcc-internal-format
  msgid ""
  "parameter declaration before lambda declaration specifiers only optional "
  "with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12330 cp/pt.cc:15002
  #, gcc-internal-format
  msgid ""
  "a lambda with captures may not have an explicit object parameter of an "
  "unrelated type"
  msgstr ""
  
! #: cp/parser.cc:12343
  #, gcc-internal-format
  msgid "%<mutable%> lambda specifier with explicit object parameter"
  msgstr ""
  
! #: cp/parser.cc:12352
  #, gcc-internal-format
  msgid ""
  "the passed in closure object will not be mutated because it is taken by value"
  msgstr ""
  
! #: cp/parser.cc:12356
  #, gcc-internal-format
  msgid "declare the explicit object parameter as non-const reference instead"
  msgstr ""
  
! #: cp/parser.cc:12360
  #, gcc-internal-format
  msgid "explicit object parameter is already a mutable reference"
  msgstr ""
  
! #: cp/parser.cc:12367
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with explicit object parameter"
  msgstr ""
  
! #: cp/parser.cc:12385
  #, gcc-internal-format
  msgid "%<static%> lambda specifier with lambda capture"
  msgstr ""
  
! #: cp/parser.cc:12397
  #, gcc-internal-format
  msgid ""
  "parameter declaration before lambda transaction qualifier only optional with "
  "%<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12410
  #, gcc-internal-format
  msgid ""
  "parameter declaration before lambda exception specification only optional "
  "with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12428
  #, gcc-internal-format
  msgid ""
  "parameter declaration before lambda trailing return type only optional with "
  "%<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:12470
  #, gcc-internal-format
  msgid ""
  "%<constexpr%> lambda only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:13031
  #, gcc-internal-format
  msgid "preconditions cannot be statements"
  msgstr ""
  
! #: cp/parser.cc:13034
  #, gcc-internal-format
  msgid "postconditions cannot be statements"
  msgstr ""
  
! #: cp/parser.cc:13039
  #, gcc-internal-format
  msgid "assertions must be followed by %<;%>"
  msgstr ""
  
! #: cp/parser.cc:13204
  #, gcc-internal-format
  msgid ""
  "label at end of compound statement only available with %<-std=c++23%> or %<-"
  "std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:13384 cp/parser.cc:13629
  #, gcc-internal-format
  msgid "attributes at the beginning of statement are ignored"
  msgstr ""
  
! #: cp/parser.cc:13455
  #, gcc-internal-format
  msgid "expected labeled-statement"
  msgstr ""
  
! #: cp/parser.cc:13504
  #, gcc-internal-format
  msgid "case label %qE not within a switch statement"
  msgstr ""
  
! #: cp/parser.cc:13637
  #, gcc-internal-format
  msgid "need %<typename%> before %qE because %qT is a dependent scope"
  msgstr ""
  
  #. A::A a;
! #: cp/parser.cc:13643
  #, gcc-internal-format
  msgid "%qE names the constructor, not the type"
  msgstr ""
  
! #: cp/parser.cc:13701
  #, gcc-internal-format
  msgid "compound-statement in %<constexpr%> function"
  msgstr ""
  
! #: cp/parser.cc:13765
  #, gcc-internal-format
  msgid "inner loops must be perfectly nested with %<tile%> directive"
  msgstr ""
  
! #: cp/parser.cc:13970
  #, gcc-internal-format
  msgid "%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:13992
  #, gcc-internal-format
  msgid "%<if consteval%> only available with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:14017 cp/parser.cc:14052
  #, gcc-internal-format
  msgid "%<if consteval%> requires compound statement"
  msgstr ""
  
! #: cp/parser.cc:14094
  #, gcc-internal-format
  msgid ""
  "init-statement in selection statements only available with %<-std=c++17%> or "
  "%<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:14262 cp/parser.cc:35393
  #, gcc-internal-format
  msgid "expected selection-statement"
  msgstr ""
  
! #: cp/parser.cc:14303
  #, gcc-internal-format
  msgid "condition declares an array"
  msgstr ""
  
! #: cp/parser.cc:14305
  #, gcc-internal-format
  msgid "condition declares a function"
  msgstr ""
  
! #: cp/parser.cc:14346
  #, gcc-internal-format
  msgid "types may not be defined in conditions"
  msgstr ""
  
  #. Anything else is an error.
! #: cp/parser.cc:14448 cp/parser.cc:24113 cp/parser.cc:26832
  #, gcc-internal-format
  msgid "expected initializer"
  msgstr ""
  
! #: cp/parser.cc:14498
  #, gcc-internal-format
  msgid ""
  "range-based %<for%> loops with initializer only available with %<-std=c+"
  "+20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:14760
  #, gcc-internal-format
  msgid ""
  "loop variable %qD of type %qT binds to a temporary constructed from type %qT"
  msgstr ""
  
  #. rval
! #: cp/parser.cc:14767
  #, gcc-internal-format
  msgid ""
  "use non-reference type %qT to make the copy explicit or %qT to prevent "
  "copying"
  msgstr ""
  
! #: cp/parser.cc:14793
  #, gcc-internal-format
  msgid "loop variable %qD creates a copy from type %qT"
  msgstr ""
  
! #: cp/parser.cc:14798
  #, gcc-internal-format
  msgid "use reference type to prevent copying"
  msgstr ""
  
! #: cp/parser.cc:14937
  #, gcc-internal-format
  msgid "range-based %<for%> expression of type %qT has incomplete type"
  msgstr ""
  
! #: cp/parser.cc:15021
  #, gcc-internal-format
  msgid ""
  "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
  msgstr ""
  
! #: cp/parser.cc:15173 cp/parser.cc:35396
  #, gcc-internal-format
  msgid "expected iteration-statement"
  msgstr ""
  
! #: cp/parser.cc:15218
  #, gcc-internal-format
  msgid ""
  "alias-declaration in init-statement only available with %<-std=c++23%> or %<-"
  "std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:15235
  #, gcc-internal-format
  msgid ""
  "range-based %<for%> loops only available with %<-std=c++11%> or %<-std=gnu+"
  "+11%>"
  msgstr ""
  
! #: cp/parser.cc:15397
  #, gcc-internal-format
  msgid ""
  "%<goto%> in %<constexpr%> function only available with %<-std=c++23%> or %<-"
*************** msgid ""
*** 66598,66644 ****
  msgstr ""
  
  #. Issue a warning about this use of a GNU extension.
! #: cp/parser.cc:15404
  #, gcc-internal-format
  msgid "ISO C++ forbids computed gotos"
  msgstr ""
  
! #: cp/parser.cc:15423 cp/parser.cc:35340
  #, gcc-internal-format
  msgid "expected jump-statement"
  msgstr ""
  
! #: cp/parser.cc:15598
  #, gcc-internal-format
  msgid "expected module-partition"
  msgstr ""
  
! #: cp/parser.cc:15600
  #, gcc-internal-format
  msgid "expected module-name"
  msgstr ""
  
! #: cp/parser.cc:15642
  #, gcc-internal-format
  msgid "module-declaration not permitted in header-unit"
  msgstr ""
  
! #: cp/parser.cc:15648
  #, gcc-internal-format
  msgid "module-declaration must be at global scope"
  msgstr ""
  
! #: cp/parser.cc:15649
  #, gcc-internal-format
  msgid "scope opened here"
  msgstr ""
  
! #: cp/parser.cc:15675
  #, gcc-internal-format
  msgid "private module fragment"
  msgstr ""
  
! #: cp/parser.cc:15679
  #, gcc-internal-format
  msgid ""
  "private module fragment only permitted in purview of module interface or "
--- 66699,66745 ----
  msgstr ""
  
  #. Issue a warning about this use of a GNU extension.
! #: cp/parser.cc:15406
  #, gcc-internal-format
  msgid "ISO C++ forbids computed gotos"
  msgstr ""
  
! #: cp/parser.cc:15425 cp/parser.cc:35399
  #, gcc-internal-format
  msgid "expected jump-statement"
  msgstr ""
  
! #: cp/parser.cc:15600
  #, gcc-internal-format
  msgid "expected module-partition"
  msgstr ""
  
! #: cp/parser.cc:15602
  #, gcc-internal-format
  msgid "expected module-name"
  msgstr ""
  
! #: cp/parser.cc:15644
  #, gcc-internal-format
  msgid "module-declaration not permitted in header-unit"
  msgstr ""
  
! #: cp/parser.cc:15650
  #, gcc-internal-format
  msgid "module-declaration must be at global scope"
  msgstr ""
  
! #: cp/parser.cc:15651
  #, gcc-internal-format
  msgid "scope opened here"
  msgstr ""
  
! #: cp/parser.cc:15677
  #, gcc-internal-format
  msgid "private module fragment"
  msgstr ""
  
! #: cp/parser.cc:15681
  #, gcc-internal-format
  msgid ""
  "private module fragment only permitted in purview of module interface or "
*************** msgid ""
*** 66646,67579 ****
  msgstr ""
  
  #. Neither the first declaration, nor in a GMF.
! #: cp/parser.cc:15685
  #, gcc-internal-format
  msgid ""
  "module-declaration only permitted as first declaration, or ending a global "
  "module fragment"
  msgstr ""
  
! #: cp/parser.cc:15726
  #, gcc-internal-format
  msgid "post-module-declaration imports must be contiguous"
  msgstr ""
  
! #: cp/parser.cc:15728 cp/parser.cc:15737
  #, gcc-internal-format
  msgid ""
  "perhaps insert a line break after %<import%>, or other disambiguation, to "
  "prevent this being considered a module control-line"
  msgstr ""
  
! #: cp/parser.cc:15736
  #, gcc-internal-format
  msgid "import-declaration must be at global scope"
  msgstr ""
  
! #: cp/parser.cc:15760
  #, gcc-internal-format
  msgid ""
  "import specifying a module-partition must appear after a named module-"
  "declaration"
  msgstr ""
  
! #: cp/parser.cc:15781
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be include-translated"
  msgstr ""
  
! #: cp/parser.cc:15784
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be from header inclusion"
  msgstr ""
  
! #: cp/parser.cc:15805
  #, gcc-internal-format
  msgid "%qE may only occur after a module interface declaration"
  msgstr ""
  
! #: cp/parser.cc:15813
  #, gcc-internal-format
  msgid "%qE may only occur once in an export declaration"
  msgstr ""
  
! #: cp/parser.cc:15834
  #, gcc-internal-format
  msgid "%<export%> not part of following module-directive"
  msgstr ""
  
! #: cp/parser.cc:15873
  #, gcc-internal-format
  msgid "extra %<;%> outside of a function only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15876
  #, gcc-internal-format
  msgid "extra %<;%> outside of a function"
  msgstr ""
  
! #: cp/parser.cc:15885
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15887
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct"
  msgstr ""
  
! #: cp/parser.cc:15895
  #, gcc-internal-format
  msgid "extra %<;%> after in-class function definition"
  msgstr ""
  
! #: cp/parser.cc:16065
  #, gcc-internal-format
  msgid "attributes are not permitted in this position"
  msgstr ""
  
! #: cp/parser.cc:16069
  #, gcc-internal-format
  msgid "attributes may be inserted here"
  msgstr ""
  
! #: cp/parser.cc:16109
  #, gcc-internal-format
  msgid "explicit specializations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16111 cp/parser.cc:28251
  #, gcc-internal-format
  msgid "a specialization is always exported alongside its primary template"
  msgstr ""
  
! #: cp/parser.cc:16124
  #, gcc-internal-format
  msgid "explicit instantiations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16140
  #, gcc-internal-format
  msgid "export-declarations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16311
  #, gcc-internal-format
  msgid "%<__label__%> not at the beginning of a block"
  msgstr ""
  
! #: cp/parser.cc:16557
  #, gcc-internal-format
  msgid ""
  "non-variable %qD in declaration with more than one declarator with "
  "placeholder type"
  msgstr ""
  
! #: cp/parser.cc:16576
  #, gcc-internal-format
  msgid "inconsistent deduction for %qT: %qT and then %qT"
  msgstr ""
  
! #: cp/parser.cc:16597
  #, gcc-internal-format
  msgid "mixing declarations and function-definitions is forbidden"
  msgstr ""
  
! #: cp/parser.cc:16622
  #, gcc-internal-format
  msgid "types may not be defined in a for-range-declaration"
  msgstr ""
  
! #: cp/parser.cc:16679
  #, gcc-internal-format
  msgid "initializer in range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:16682
  #, gcc-internal-format
  msgid "multiple declarations in range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:16722
  #, gcc-internal-format
  msgid ""
  "structured bindings with attributed identifiers only available with %<-std=c+"
  "+2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:16759
  #, gcc-internal-format
  msgid ""
  "structured bindings in conditions only available with %<-std=c++2c%> or %<-"
  "std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:16763
  #, gcc-internal-format
  msgid ""
  "structured bindings only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:16820
  #, gcc-internal-format
  msgid "empty structured binding declaration"
  msgstr ""
  
! #: cp/parser.cc:16838
  #, gcc-internal-format
  msgid "invalid initializer for structured binding declaration"
  msgstr ""
  
! #: cp/parser.cc:17033
  #, gcc-internal-format
  msgid "%<this%> must be the first specifier in a parameter declaration"
  msgstr ""
  
! #: cp/parser.cc:17056
  #, gcc-internal-format
  msgid "%<friend%> used outside of class"
  msgstr ""
  
! #: cp/parser.cc:17094
  #, gcc-internal-format
  msgid "the %<bool%> keyword is not allowed in a C++20 concept definition"
  msgstr ""
  
! #: cp/parser.cc:17097
  #, gcc-internal-format
  msgid "C++20 concept definition syntax is %<concept <name> = <expr>%>"
  msgstr ""
  
! #: cp/parser.cc:17148
  #, gcc-internal-format
  msgid "%<typedef%> specifier conflicts with %qs"
  msgstr ""
  
! #: cp/parser.cc:17174
  #, gcc-internal-format
  msgid "%<auto%> changes meaning in C++11; please remove it"
  msgstr ""
  
! #: cp/parser.cc:17210
  #, gcc-internal-format
  msgid "%qD invalid in condition"
  msgstr ""
  
! #: cp/parser.cc:17219
  #, gcc-internal-format
  msgid "%qD invalid in lambda"
  msgstr ""
  
! #: cp/parser.cc:17223
  #, gcc-internal-format
  msgid "%qD only valid in lambda with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:17305
  #, gcc-internal-format
  msgid "type-specifier invalid in lambda"
  msgstr ""
  
! #: cp/parser.cc:17318
  #, gcc-internal-format
  msgid "standard attributes in middle of decl-specifiers"
  msgstr ""
  
! #: cp/parser.cc:17320
  #, gcc-internal-format
  msgid ""
  "standard attributes must precede the decl-specifiers to apply to the "
  "declaration, or follow them to apply to the type"
  msgstr ""
  
! #: cp/parser.cc:17335
  #, gcc-internal-format
  msgid "class definition may not be declared a friend"
  msgstr ""
  
! #: cp/parser.cc:17408 cp/parser.cc:29436
  #, gcc-internal-format
  msgid "templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:17427
  #, gcc-internal-format
  msgid "types may not be defined in explicit-specifier"
  msgstr ""
  
! #: cp/parser.cc:17431
  #, gcc-internal-format
  msgid ""
  "%<explicit(bool)%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:17499
  #, gcc-internal-format
  msgid "invalid linkage-specification"
  msgstr ""
  
! #: cp/parser.cc:17606
  #, gcc-internal-format
  msgid ""
  "%<static_assert%> without a message only available with %<-std=c++17%> or %<-"
  "std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:17636
  #, gcc-internal-format
  msgid ""
  "%<static_assert%> with non-string message only available with %<-std=c++2c%> "
  "or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:17840
  #, gcc-internal-format
  msgid ""
  "%<decltype(auto)%> type specifier only available with %<-std=c++14%> or %<-"
  "std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:17853
  #, gcc-internal-format
  msgid "types may not be defined in %<decltype%> expressions"
  msgstr ""
  
! #: cp/parser.cc:18029
  #, gcc-internal-format
  msgid "types may not be defined in a conversion-type-id"
  msgstr ""
  
! #: cp/parser.cc:18058
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in conversion operator"
  msgstr ""
  
! #: cp/parser.cc:18062
  #, gcc-internal-format
  msgid ""
  "use of %<auto%> in member template conversion operator can never be deduced"
  msgstr ""
  
! #: cp/parser.cc:18146
  #, gcc-internal-format
  msgid "only constructors take member initializers"
  msgstr ""
  
! #: cp/parser.cc:18173
  #, gcc-internal-format
  msgid "cannot expand initializer for member %qD"
  msgstr ""
  
! #: cp/parser.cc:18185 cp/pt.cc:28283
  #, gcc-internal-format
  msgid "mem-initializer for %qD follows constructor delegation"
  msgstr ""
  
! #: cp/parser.cc:18197 cp/pt.cc:28295
  #, gcc-internal-format
  msgid "constructor delegation follows mem-initializer for %qD"
  msgstr ""
  
! #: cp/parser.cc:18249
  #, gcc-internal-format
  msgid "anachronistic old-style base class initializer"
  msgstr ""
  
! #: cp/parser.cc:18337
  #, gcc-internal-format
  msgid ""
  "keyword %<typename%> not allowed in this context (a qualified member "
  "initializer is implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:18749
  #, gcc-internal-format
  msgid "space between quotes and suffix is deprecated in C++23"
  msgstr ""
  
! #: cp/parser.cc:18755
  #, gcc-internal-format
  msgid "unexpected keyword; remove space between quotes and suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18761
  #, gcc-internal-format
  msgid "expected suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18770
  #, gcc-internal-format
  msgid "expected empty string after %<operator%> keyword"
  msgstr ""
  
! #: cp/parser.cc:18776
  #, gcc-internal-format
  msgid "invalid encoding prefix in literal operator"
  msgstr ""
  
! #: cp/parser.cc:18810
  #, gcc-internal-format
  msgid "expected operator"
  msgstr ""
  
! #: cp/parser.cc:18857
  #, gcc-internal-format
  msgid "keyword %<export%> not implemented, and will be ignored"
  msgstr ""
  
! #: cp/parser.cc:18859
  #, gcc-internal-format
  msgid "keyword %<export%> is deprecated, and is ignored"
  msgstr ""
  
! #: cp/parser.cc:18861
  #, gcc-internal-format
  msgid "keyword %<export%> is enabled with %<-fmodules%>"
  msgstr ""
  
! #: cp/parser.cc:18966
  #, gcc-internal-format
  msgid "invalid constrained type parameter"
  msgstr ""
  
! #: cp/parser.cc:18974
  #, gcc-internal-format
  msgid "cv-qualified type parameter"
  msgstr ""
  
! #: cp/parser.cc:19090
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in default template argument"
  msgstr ""
  
! #: cp/parser.cc:19326 cp/parser.cc:19412 cp/parser.cc:26576
  #, gcc-internal-format
  msgid "template parameter pack %qD cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:19330 cp/parser.cc:19416
  #, gcc-internal-format
  msgid "template parameter packs cannot have default arguments"
  msgstr ""
  
! #: cp/parser.cc:19483
  #, gcc-internal-format
  msgid "expected template-id"
  msgstr ""
  
! #: cp/parser.cc:19546
  #, gcc-internal-format
  msgid "%<<::%> cannot begin a template-argument list"
  msgstr ""
  
! #: cp/parser.cc:19550
  #, gcc-internal-format
  msgid ""
  "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> "
  "and %<::%>"
  msgstr ""
  
! #: cp/parser.cc:19554
  #, gcc-internal-format
  msgid ""
  "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will "
  "accept your code)"
  msgstr ""
  
! #: cp/parser.cc:19585
  #, gcc-internal-format
  msgid "invalid template-argument-list"
  msgstr ""
  
! #: cp/parser.cc:19586
  #, gcc-internal-format
  msgid ""
  "function name as the left hand operand of %<<%> is ill-formed in C++20; wrap "
  "the function name in %<()%>"
  msgstr ""
  
! #: cp/parser.cc:19593
  #, gcc-internal-format
  msgid "expected %<(%> after template-argument-list"
  msgstr ""
  
! #: cp/parser.cc:19699
  #, gcc-internal-format
  msgid "parse error in template argument list"
  msgstr ""
  
  #. The name does not name a template.
! #: cp/parser.cc:19784 cp/parser.cc:19976 cp/parser.cc:20185
  #, gcc-internal-format
  msgid "expected template-name"
  msgstr ""
  
! #: cp/parser.cc:19832
  #, gcc-internal-format
  msgid "non-template %qD used as template"
  msgstr ""
  
! #: cp/parser.cc:19834
  #, gcc-internal-format
  msgid "use %<%T::template %D%> to indicate that it is a template"
  msgstr ""
  
! #: cp/parser.cc:20049
  #, gcc-internal-format
  msgid "expected parameter pack before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:20150 cp/parser.cc:20168 cp/parser.cc:20344
  #, gcc-internal-format
  msgid "expected template-argument"
  msgstr ""
  
! #: cp/parser.cc:20315
  #, gcc-internal-format
  msgid "invalid non-type template argument"
  msgstr ""
  
! #: cp/parser.cc:20453
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<inline%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20457
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<constexpr%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20461
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<consteval%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20522
  #, gcc-internal-format
  msgid "template specialization with C linkage"
  msgstr ""
  
! #: cp/parser.cc:20751
  #, gcc-internal-format
  msgid "expected type specifier"
  msgstr ""
  
! #: cp/parser.cc:20951
  #, gcc-internal-format
  msgid ""
  "use of %<auto%> in lambda parameter declaration only available with %<-std=c+"
  "+14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:20957
  #, gcc-internal-format
  msgid "use of %<auto%> in template argument"
  msgstr ""
  
! #: cp/parser.cc:20960
  #, gcc-internal-format
  msgid ""
  "use of %<auto%> in parameter declaration only available with %<-std=c++20%> "
  "or %<-fconcepts%>"
  msgstr ""
  
! #: cp/parser.cc:20964
  #, gcc-internal-format
  msgid ""
  "use of %<auto%> in parameter declaration only available with %<-std=c++14%> "
  "or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:21118
  #, gcc-internal-format
  msgid "expected template-id for type"
  msgstr ""
  
! #: cp/parser.cc:21259
  #, gcc-internal-format
  msgid "expected type-name"
  msgstr ""
  
! #: cp/parser.cc:21343
  #, gcc-internal-format
  msgid "%qE does not constrain a type"
  msgstr ""
  
! #: cp/parser.cc:21344
  #, gcc-internal-format
  msgid "concept defined here"
  msgstr ""
  
! #: cp/parser.cc:21375
  #, gcc-internal-format
  msgid "invalid use of concept-name %qD"
  msgstr ""
  
! #: cp/parser.cc:21391
  #, gcc-internal-format
  msgid "expected %<auto%> or %<decltype(auto)%> after %qE"
  msgstr ""
  
! #: cp/parser.cc:21398
  #, gcc-internal-format
  msgid "unexpected placeholder in constrained result type"
  msgstr ""
  
! #: cp/parser.cc:21639
  #, gcc-internal-format
  msgid ""
  "elaborated-type-specifier for a scoped enum must not use the %qD keyword"
  msgstr ""
  
! #: cp/parser.cc:21715
  #, gcc-internal-format
  msgid "%<template%> must follow a nested-name-specifier"
  msgstr ""
  
! #: cp/parser.cc:21877
  #, gcc-internal-format
  msgid "declaration %qD does not declare anything"
  msgstr ""
  
! #: cp/parser.cc:21965
  #, gcc-internal-format
  msgid "attributes ignored on uninstantiated type"
  msgstr ""
  
! #: cp/parser.cc:21971
  #, gcc-internal-format
  msgid "attributes ignored on template instantiation"
  msgstr ""
  
! #: cp/parser.cc:21983
  #, gcc-internal-format
  msgid ""
  "attributes ignored on elaborated-type-specifier that is not a forward "
  "declaration"
  msgstr ""
  
! #: cp/parser.cc:22124
  #, gcc-internal-format
  msgid "%qD is an enumeration template"
  msgstr ""
  
! #: cp/parser.cc:22135
  #, gcc-internal-format
  msgid "%qD does not name an enumeration in %qT"
  msgstr ""
  
! #: cp/parser.cc:22150
  #, gcc-internal-format
  msgid "unnamed scoped enum is not allowed"
  msgstr ""
  
! #: cp/parser.cc:22168
  #, gcc-internal-format
  msgid "types may not be defined in enum-base"
  msgstr ""
  
! #: cp/parser.cc:22214
  #, gcc-internal-format
  msgid ""
  "declaration of enumeration with fixed underlying type and no enumerator list "
  "is only permitted as a standalone declaration"
  msgstr ""
  
! #: cp/parser.cc:22218
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%>"
  msgstr ""
  
! #: cp/parser.cc:22261
  #, gcc-internal-format
  msgid "cannot add an enumerator list to a template instantiation"
  msgstr ""
  
! #: cp/parser.cc:22275
  #, gcc-internal-format
  msgid ""
  "nested name specifier %qT for enum declaration does not name a class or "
  "namespace"
  msgstr ""
  
! #: cp/parser.cc:22287 cp/parser.cc:28220
  #, gcc-internal-format
  msgid "declaration of %qD in namespace %qD which does not enclose %qD"
  msgstr ""
  
! #: cp/parser.cc:22292 cp/parser.cc:28225
  #, gcc-internal-format
  msgid "declaration of %qD in %qD which does not enclose %qD"
  msgstr ""
  
! #: cp/parser.cc:22304 cp/parser.cc:28238
  #, gcc-internal-format
  msgid "extra qualification not allowed"
  msgstr ""
  
! #: cp/parser.cc:22344
  #, gcc-internal-format
  msgid "ISO C++ forbids empty unnamed enum"
  msgstr ""
  
! #: cp/parser.cc:22368
  #, gcc-internal-format
  msgid "opaque-enum-specifier without name"
  msgstr ""
  
! #: cp/parser.cc:22371
  #, gcc-internal-format
  msgid "opaque-enum-specifier must use a simple identifier"
  msgstr ""
  
! #: cp/parser.cc:22492
  #, gcc-internal-format
  msgid "unexpanded parameter pack in enumerator in lambda"
  msgstr ""
  
! #: cp/parser.cc:22567
  #, gcc-internal-format
  msgid "%qD is not a namespace-name; did you mean %qs?"
  msgstr ""
  
! #: cp/parser.cc:22571
  #, gcc-internal-format
  msgid "%qD is not a namespace-name"
  msgstr ""
  
! #: cp/parser.cc:22575
  #, gcc-internal-format
  msgid "expected namespace-name"
  msgstr ""
  
! #: cp/parser.cc:22636
  #, gcc-internal-format
  msgid ""
  "nested inline namespace definitions only available with %<-std=c++20%> or %<-"
  "std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:22648
  #, gcc-internal-format
  msgid "standard attributes on namespaces must precede the namespace name"
  msgstr ""
  
! #: cp/parser.cc:22667
  #, gcc-internal-format
  msgid ""
  "nested namespace definitions only available with %<-std=c++17%> or %<-"
  "std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:22677
  #, gcc-internal-format
  msgid "nested namespace name required"
  msgstr ""
  
! #: cp/parser.cc:22682
  #, gcc-internal-format
  msgid "namespace name required"
  msgstr ""
  
! #: cp/parser.cc:22686
  #, gcc-internal-format
  msgid "a nested namespace definition cannot have attributes"
  msgstr ""
  
! #: cp/parser.cc:22689
  #, gcc-internal-format
  msgid "a nested namespace definition cannot be inline"
  msgstr ""
  
! #: cp/parser.cc:22696
  #, gcc-internal-format
  msgid "namespace %qD entered"
  msgstr ""
  
! #: cp/parser.cc:22752
  #, gcc-internal-format
  msgid "%<namespace%> definition is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:22934
  #, gcc-internal-format
  msgid ""
  "pack expansion in using-declaration only available with %<-std=c++17%> or %<-"
  "std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:22978
  #, gcc-internal-format
  msgid "a template-id may not appear in a using-declaration"
  msgstr ""
  
! #: cp/parser.cc:22996
  #, gcc-internal-format
  msgid ""
  "comma-separated list in using-declaration only available with %<-std=c++17%> "
  "or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:23006
  #, gcc-internal-format
  msgid ""
  "access declarations are deprecated in favor of using-declarations; "
  "suggestion: add the %<using%> keyword"
  msgstr ""
  
! #: cp/parser.cc:23052
  #, gcc-internal-format
  msgid "%<using enum%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:23055
  #, gcc-internal-format
  msgid "%<using enum%> of dependent type %qT"
  msgstr ""
  
! #: cp/parser.cc:23057
  #, gcc-internal-format
  msgid "%<using enum%> of non-enumeration type %q#T"
  msgstr ""
  
! #: cp/parser.cc:23059
  #, gcc-internal-format
  msgid "%<using enum%> of incomplete type %qT"
  msgstr ""
  
! #: cp/parser.cc:23061
  #, gcc-internal-format
  msgid "%<using enum%> of %qT before its enum-specifier"
  msgstr ""
  
! #: cp/parser.cc:23071
  #, gcc-internal-format
  msgid "opaque-enum-declaration here"
  msgstr ""
  
! #: cp/parser.cc:23141
  #, gcc-internal-format
  msgid "types may not be defined in alias template declarations"
  msgstr ""
  
! #: cp/parser.cc:23293
  #, gcc-internal-format
  msgid "expected string-literal or constexpr in parentheses"
  msgstr ""
  
! #: cp/parser.cc:23354
  #, gcc-internal-format
  msgid ""
  "%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-"
  "std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:23375 cp/parser.cc:23393 cp/parser.cc:23408
  #, gcc-internal-format
  msgid "duplicate %<asm%> qualifier %qT"
  msgstr ""
  
! #: cp/parser.cc:23382
  #, gcc-internal-format
  msgid "%<asm%> qualifier %qT ignored outside of function body"
  msgstr ""
  
! #: cp/parser.cc:23421
  #, gcc-internal-format
  msgid "%qT is not an %<asm%> qualifier"
  msgstr ""
  
! #: cp/parser.cc:23437
  #, gcc-internal-format
  msgid "%<asm%> qualifier outside of function body"
  msgstr ""
  
! #: cp/parser.cc:23587
  #, gcc-internal-format
  msgid "attributes ignored on %<asm%> declaration"
  msgstr ""
  
! #: cp/parser.cc:23678
  #, gcc-internal-format
  msgid "empty parentheses were disambiguated as a function declaration"
  msgstr ""
  
! #: cp/parser.cc:23689
  #, gcc-internal-format
  msgid "remove parentheses to default-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23694
  #, gcc-internal-format
  msgid "or replace parentheses with braces to aggregate-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23697
  #, gcc-internal-format
  msgid "or replace parentheses with braces to value-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23714 cp/parser.cc:23739
  #, gcc-internal-format
  msgid "parentheses were disambiguated as a function declaration"
  msgstr ""
  
! #: cp/parser.cc:23726 cp/parser.cc:23747
  #, gcc-internal-format
  msgid "replace parentheses with braces to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23733
  #, gcc-internal-format
  msgid "add parentheses to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23980
  #, gcc-internal-format
  msgid "a function-definition is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:23991
  #, gcc-internal-format
  msgid "an %<asm%> specification is not allowed on a function-definition"
  msgstr ""
  
! #: cp/parser.cc:23995
  #, gcc-internal-format
  msgid "attributes are not allowed on a function-definition"
  msgstr ""
  
! #: cp/parser.cc:24046
  #, gcc-internal-format
  msgid "expected constructor, destructor, or type conversion"
  msgstr ""
  
! #: cp/parser.cc:24204
  #, gcc-internal-format
  msgid "initializer provided for function"
  msgstr ""
  
! #: cp/parser.cc:24249
  #, gcc-internal-format
  msgid "attributes after parenthesized initializer ignored"
  msgstr ""
  
! #: cp/parser.cc:24261
  #, gcc-internal-format
  msgid "non-function %qD declared as implicit template"
  msgstr ""
  
! #: cp/parser.cc:24790
  #, gcc-internal-format
  msgid "array bound is not an integer constant"
  msgstr ""
  
! #: cp/parser.cc:24915
  #, gcc-internal-format
  msgid "cannot define member of dependent typedef %qT"
  msgstr ""
  
! #: cp/parser.cc:24919
  #, gcc-internal-format
  msgid "%<%T::%E%> is not a type"
  msgstr ""
--- 66747,67680 ----
  msgstr ""
  
  #. Neither the first declaration, nor in a GMF.
! #: cp/parser.cc:15687
  #, gcc-internal-format
  msgid ""
  "module-declaration only permitted as first declaration, or ending a global "
  "module fragment"
  msgstr ""
  
! #: cp/parser.cc:15728
  #, gcc-internal-format
  msgid "post-module-declaration imports must be contiguous"
  msgstr ""
  
! #: cp/parser.cc:15730 cp/parser.cc:15739
  #, gcc-internal-format
  msgid ""
  "perhaps insert a line break after %<import%>, or other disambiguation, to "
  "prevent this being considered a module control-line"
  msgstr ""
  
! #: cp/parser.cc:15738
  #, gcc-internal-format
  msgid "import-declaration must be at global scope"
  msgstr ""
  
! #: cp/parser.cc:15762
  #, gcc-internal-format
  msgid ""
  "import specifying a module-partition must appear after a named module-"
  "declaration"
  msgstr ""
  
! #: cp/parser.cc:15783
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be include-translated"
  msgstr ""
  
! #: cp/parser.cc:15786
  #, gcc-internal-format
  msgid "post-module-declaration imports must not be from header inclusion"
  msgstr ""
  
! #: cp/parser.cc:15807
  #, gcc-internal-format
  msgid "%qE may only occur after a module interface declaration"
  msgstr ""
  
! #: cp/parser.cc:15815
  #, gcc-internal-format
  msgid "%qE may only occur once in an export declaration"
  msgstr ""
  
! #: cp/parser.cc:15836
  #, gcc-internal-format
  msgid "%<export%> not part of following module-directive"
  msgstr ""
  
! #: cp/parser.cc:15875
  #, gcc-internal-format
  msgid "extra %<;%> outside of a function only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15878
  #, gcc-internal-format
  msgid "extra %<;%> outside of a function"
  msgstr ""
  
! #: cp/parser.cc:15887
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct only allowed in C++11"
  msgstr ""
  
! #: cp/parser.cc:15889
  #, gcc-internal-format
  msgid "extra %<;%> inside a struct"
  msgstr ""
  
! #: cp/parser.cc:15897
  #, gcc-internal-format
  msgid "extra %<;%> after in-class function definition"
  msgstr ""
  
! #: cp/parser.cc:16068
  #, gcc-internal-format
  msgid "attributes are not permitted in this position"
  msgstr ""
  
! #: cp/parser.cc:16072
  #, gcc-internal-format
  msgid "attributes may be inserted here"
  msgstr ""
  
! #: cp/parser.cc:16112
  #, gcc-internal-format
  msgid "explicit specializations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16114 cp/parser.cc:28304
  #, gcc-internal-format
  msgid "a specialization is always exported alongside its primary template"
  msgstr ""
  
! #: cp/parser.cc:16127
  #, gcc-internal-format
  msgid "explicit instantiations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16143
  #, gcc-internal-format
  msgid "export-declarations are not permitted here"
  msgstr ""
  
! #: cp/parser.cc:16315
  #, gcc-internal-format
  msgid "%<__label__%> not at the beginning of a block"
  msgstr ""
  
! #: cp/parser.cc:16561
  #, gcc-internal-format
  msgid ""
  "non-variable %qD in declaration with more than one declarator with "
  "placeholder type"
  msgstr ""
  
! #: cp/parser.cc:16580
  #, gcc-internal-format
  msgid "inconsistent deduction for %qT: %qT and then %qT"
  msgstr ""
  
! #: cp/parser.cc:16601
  #, gcc-internal-format
  msgid "mixing declarations and function-definitions is forbidden"
  msgstr ""
  
! #: cp/parser.cc:16626
  #, gcc-internal-format
  msgid "types may not be defined in a for-range-declaration"
  msgstr ""
  
! #: cp/parser.cc:16683
  #, gcc-internal-format
  msgid "initializer in range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:16686
  #, gcc-internal-format
  msgid "multiple declarations in range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:16726
  #, gcc-internal-format
  msgid ""
  "structured bindings with attributed identifiers only available with %<-std=c+"
  "+2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:16763
  #, gcc-internal-format
  msgid ""
  "structured bindings in conditions only available with %<-std=c++2c%> or %<-"
  "std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:16767
  #, gcc-internal-format
  msgid ""
  "structured bindings only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:16824
  #, gcc-internal-format
  msgid "empty structured binding declaration"
  msgstr ""
  
! #: cp/parser.cc:16842
  #, gcc-internal-format
  msgid "invalid initializer for structured binding declaration"
  msgstr ""
  
! #: cp/parser.cc:17037
  #, gcc-internal-format
  msgid "%<this%> must be the first specifier in a parameter declaration"
  msgstr ""
  
! #: cp/parser.cc:17060
  #, gcc-internal-format
  msgid "%<friend%> used outside of class"
  msgstr ""
  
! #: cp/parser.cc:17098
  #, gcc-internal-format
  msgid "the %<bool%> keyword is not allowed in a C++20 concept definition"
  msgstr ""
  
! #: cp/parser.cc:17101
  #, gcc-internal-format
  msgid "C++20 concept definition syntax is %<concept <name> = <expr>%>"
  msgstr ""
  
! #: cp/parser.cc:17152
  #, gcc-internal-format
  msgid "%<typedef%> specifier conflicts with %qs"
  msgstr ""
  
! #: cp/parser.cc:17178
  #, gcc-internal-format
  msgid "%<auto%> changes meaning in C++11; please remove it"
  msgstr ""
  
! #: cp/parser.cc:17214
  #, gcc-internal-format
  msgid "%qD invalid in condition"
  msgstr ""
  
! #: cp/parser.cc:17223
  #, gcc-internal-format
  msgid "%qD invalid in lambda"
  msgstr ""
  
! #: cp/parser.cc:17227
  #, gcc-internal-format
  msgid "%qD only valid in lambda with %<-std=c++23%> or %<-std=gnu++23%>"
  msgstr ""
  
! #: cp/parser.cc:17309
  #, gcc-internal-format
  msgid "type-specifier invalid in lambda"
  msgstr ""
  
! #: cp/parser.cc:17322
  #, gcc-internal-format
  msgid "standard attributes in middle of decl-specifiers"
  msgstr ""
  
! #: cp/parser.cc:17324
  #, gcc-internal-format
  msgid ""
  "standard attributes must precede the decl-specifiers to apply to the "
  "declaration, or follow them to apply to the type"
  msgstr ""
  
! #: cp/parser.cc:17339
  #, gcc-internal-format
  msgid "class definition may not be declared a friend"
  msgstr ""
  
! #: cp/parser.cc:17412 cp/parser.cc:29490
  #, gcc-internal-format
  msgid "templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:17431
  #, gcc-internal-format
  msgid "types may not be defined in explicit-specifier"
  msgstr ""
  
! #: cp/parser.cc:17435
  #, gcc-internal-format
  msgid ""
  "%<explicit(bool)%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:17503
  #, gcc-internal-format
  msgid "invalid linkage-specification"
  msgstr ""
  
! #: cp/parser.cc:17610
  #, gcc-internal-format
  msgid ""
  "%<static_assert%> without a message only available with %<-std=c++17%> or %<-"
  "std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:17640
  #, gcc-internal-format
  msgid ""
  "%<static_assert%> with non-string message only available with %<-std=c++2c%> "
  "or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:17844
  #, gcc-internal-format
  msgid ""
  "%<decltype(auto)%> type specifier only available with %<-std=c++14%> or %<-"
  "std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:17857
  #, gcc-internal-format
  msgid "types may not be defined in %<decltype%> expressions"
  msgstr ""
  
! #: cp/parser.cc:18033
  #, gcc-internal-format
  msgid "types may not be defined in a conversion-type-id"
  msgstr ""
  
! #: cp/parser.cc:18062
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in conversion operator"
  msgstr ""
  
! #: cp/parser.cc:18066
  #, gcc-internal-format
  msgid ""
  "use of %<auto%> in member template conversion operator can never be deduced"
  msgstr ""
  
! #: cp/parser.cc:18150
  #, gcc-internal-format
  msgid "only constructors take member initializers"
  msgstr ""
  
! #: cp/parser.cc:18177
  #, gcc-internal-format
  msgid "cannot expand initializer for member %qD"
  msgstr ""
  
! #: cp/parser.cc:18189 cp/pt.cc:28313
  #, gcc-internal-format
  msgid "mem-initializer for %qD follows constructor delegation"
  msgstr ""
  
! #: cp/parser.cc:18201 cp/pt.cc:28325
  #, gcc-internal-format
  msgid "constructor delegation follows mem-initializer for %qD"
  msgstr ""
  
! #: cp/parser.cc:18253
  #, gcc-internal-format
  msgid "anachronistic old-style base class initializer"
  msgstr ""
  
! #: cp/parser.cc:18341
  #, gcc-internal-format
  msgid ""
  "keyword %<typename%> not allowed in this context (a qualified member "
  "initializer is implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:18753
  #, gcc-internal-format
  msgid "space between quotes and suffix is deprecated in C++23"
  msgstr ""
  
! #: cp/parser.cc:18759
  #, gcc-internal-format
  msgid "unexpected keyword; remove space between quotes and suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18765
  #, gcc-internal-format
  msgid "expected suffix identifier"
  msgstr ""
  
! #: cp/parser.cc:18774
  #, gcc-internal-format
  msgid "expected empty string after %<operator%> keyword"
  msgstr ""
  
! #: cp/parser.cc:18780
  #, gcc-internal-format
  msgid "invalid encoding prefix in literal operator"
  msgstr ""
  
! #: cp/parser.cc:18814
  #, gcc-internal-format
  msgid "expected operator"
  msgstr ""
  
! #: cp/parser.cc:18861
  #, gcc-internal-format
  msgid "keyword %<export%> not implemented, and will be ignored"
  msgstr ""
  
! #: cp/parser.cc:18863
  #, gcc-internal-format
  msgid "keyword %<export%> is deprecated, and is ignored"
  msgstr ""
  
! #: cp/parser.cc:18865
  #, gcc-internal-format
  msgid "keyword %<export%> is enabled with %<-fmodules%>"
  msgstr ""
  
! #: cp/parser.cc:18970
  #, gcc-internal-format
  msgid "invalid constrained type parameter"
  msgstr ""
  
! #: cp/parser.cc:18978
  #, gcc-internal-format
  msgid "cv-qualified type parameter"
  msgstr ""
  
! #: cp/parser.cc:19094
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in default template argument"
  msgstr ""
  
! #: cp/parser.cc:19330 cp/parser.cc:19416 cp/parser.cc:26580
  #, gcc-internal-format
  msgid "template parameter pack %qD cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:19334 cp/parser.cc:19420
  #, gcc-internal-format
  msgid "template parameter packs cannot have default arguments"
  msgstr ""
  
! #: cp/parser.cc:19487
  #, gcc-internal-format
  msgid "expected template-id"
  msgstr ""
  
! #: cp/parser.cc:19550
  #, gcc-internal-format
  msgid "%<<::%> cannot begin a template-argument list"
  msgstr ""
  
! #: cp/parser.cc:19554
  #, gcc-internal-format
  msgid ""
  "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> "
  "and %<::%>"
  msgstr ""
  
! #: cp/parser.cc:19558
  #, gcc-internal-format
  msgid ""
  "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will "
  "accept your code)"
  msgstr ""
  
! #: cp/parser.cc:19589
  #, gcc-internal-format
  msgid "invalid template-argument-list"
  msgstr ""
  
! #: cp/parser.cc:19590
  #, gcc-internal-format
  msgid ""
  "function name as the left hand operand of %<<%> is ill-formed in C++20; wrap "
  "the function name in %<()%>"
  msgstr ""
  
! #: cp/parser.cc:19597
  #, gcc-internal-format
  msgid "expected %<(%> after template-argument-list"
  msgstr ""
  
! #: cp/parser.cc:19703
  #, gcc-internal-format
  msgid "parse error in template argument list"
  msgstr ""
  
  #. The name does not name a template.
! #: cp/parser.cc:19788 cp/parser.cc:19980 cp/parser.cc:20189
  #, gcc-internal-format
  msgid "expected template-name"
  msgstr ""
  
! #: cp/parser.cc:19836
  #, gcc-internal-format
  msgid "non-template %qD used as template"
  msgstr ""
  
! #: cp/parser.cc:19838
  #, gcc-internal-format
  msgid "use %<%T::template %D%> to indicate that it is a template"
  msgstr ""
  
! #: cp/parser.cc:20053
  #, gcc-internal-format
  msgid "expected parameter pack before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:20154 cp/parser.cc:20172 cp/parser.cc:20348
  #, gcc-internal-format
  msgid "expected template-argument"
  msgstr ""
  
! #: cp/parser.cc:20319
  #, gcc-internal-format
  msgid "invalid non-type template argument"
  msgstr ""
  
! #: cp/parser.cc:20457
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<inline%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20461
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<constexpr%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20465
  #, gcc-internal-format
  msgid "explicit instantiation shall not use %<consteval%> specifier"
  msgstr ""
  
! #: cp/parser.cc:20526
  #, gcc-internal-format
  msgid "template specialization with C linkage"
  msgstr ""
  
! #: cp/parser.cc:20755
  #, gcc-internal-format
  msgid "expected type specifier"
  msgstr ""
  
! #: cp/parser.cc:20955
  #, gcc-internal-format
  msgid ""
  "use of %<auto%> in lambda parameter declaration only available with %<-std=c+"
  "+14%> or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:20961
  #, gcc-internal-format
  msgid "use of %<auto%> in template argument"
  msgstr ""
  
! #: cp/parser.cc:20964
  #, gcc-internal-format
  msgid ""
  "use of %<auto%> in parameter declaration only available with %<-std=c++20%> "
  "or %<-fconcepts%>"
  msgstr ""
  
! #: cp/parser.cc:20968
  #, gcc-internal-format
  msgid ""
  "use of %<auto%> in parameter declaration only available with %<-std=c++14%> "
  "or %<-std=gnu++14%>"
  msgstr ""
  
! #: cp/parser.cc:21122
  #, gcc-internal-format
  msgid "expected template-id for type"
  msgstr ""
  
! #: cp/parser.cc:21263
  #, gcc-internal-format
  msgid "expected type-name"
  msgstr ""
  
! #: cp/parser.cc:21347
  #, gcc-internal-format
  msgid "%qE does not constrain a type"
  msgstr ""
  
! #: cp/parser.cc:21348
  #, gcc-internal-format
  msgid "concept defined here"
  msgstr ""
  
! #: cp/parser.cc:21379
  #, gcc-internal-format
  msgid "invalid use of concept-name %qD"
  msgstr ""
  
! #: cp/parser.cc:21395
  #, gcc-internal-format
  msgid "expected %<auto%> or %<decltype(auto)%> after %qE"
  msgstr ""
  
! #: cp/parser.cc:21402
  #, gcc-internal-format
  msgid "unexpected placeholder in constrained result type"
  msgstr ""
  
! #: cp/parser.cc:21643
  #, gcc-internal-format
  msgid ""
  "elaborated-type-specifier for a scoped enum must not use the %qD keyword"
  msgstr ""
  
! #: cp/parser.cc:21719
  #, gcc-internal-format
  msgid "%<template%> must follow a nested-name-specifier"
  msgstr ""
  
! #: cp/parser.cc:21881
  #, gcc-internal-format
  msgid "declaration %qD does not declare anything"
  msgstr ""
  
! #: cp/parser.cc:21969
  #, gcc-internal-format
  msgid "attributes ignored on uninstantiated type"
  msgstr ""
  
! #: cp/parser.cc:21975
  #, gcc-internal-format
  msgid "attributes ignored on template instantiation"
  msgstr ""
  
! #: cp/parser.cc:21987
  #, gcc-internal-format
  msgid ""
  "attributes ignored on elaborated-type-specifier that is not a forward "
  "declaration"
  msgstr ""
  
! #: cp/parser.cc:22128
  #, gcc-internal-format
  msgid "%qD is an enumeration template"
  msgstr ""
  
! #: cp/parser.cc:22139
  #, gcc-internal-format
  msgid "%qD does not name an enumeration in %qT"
  msgstr ""
  
! #: cp/parser.cc:22154
  #, gcc-internal-format
  msgid "unnamed scoped enum is not allowed"
  msgstr ""
  
! #: cp/parser.cc:22172
  #, gcc-internal-format
  msgid "types may not be defined in enum-base"
  msgstr ""
  
! #: cp/parser.cc:22218
  #, gcc-internal-format
  msgid ""
  "declaration of enumeration with fixed underlying type and no enumerator list "
  "is only permitted as a standalone declaration"
  msgstr ""
  
! #: cp/parser.cc:22222
  #, gcc-internal-format
  msgid "expected %<;%> or %<{%>"
  msgstr ""
  
! #: cp/parser.cc:22265
  #, gcc-internal-format
  msgid "cannot add an enumerator list to a template instantiation"
  msgstr ""
  
! #: cp/parser.cc:22279
  #, gcc-internal-format
  msgid ""
  "nested name specifier %qT for enum declaration does not name a class or "
  "namespace"
  msgstr ""
  
! #: cp/parser.cc:22291 cp/parser.cc:28273
  #, gcc-internal-format
  msgid "declaration of %qD in namespace %qD which does not enclose %qD"
  msgstr ""
  
! #: cp/parser.cc:22296 cp/parser.cc:28278
  #, gcc-internal-format
  msgid "declaration of %qD in %qD which does not enclose %qD"
  msgstr ""
  
! #: cp/parser.cc:22308 cp/parser.cc:28291
  #, gcc-internal-format
  msgid "extra qualification not allowed"
  msgstr ""
  
! #: cp/parser.cc:22348
  #, gcc-internal-format
  msgid "ISO C++ forbids empty unnamed enum"
  msgstr ""
  
! #: cp/parser.cc:22372
  #, gcc-internal-format
  msgid "opaque-enum-specifier without name"
  msgstr ""
  
! #: cp/parser.cc:22375
  #, gcc-internal-format
  msgid "opaque-enum-specifier must use a simple identifier"
  msgstr ""
  
! #: cp/parser.cc:22496
  #, gcc-internal-format
  msgid "unexpanded parameter pack in enumerator in lambda"
  msgstr ""
  
! #: cp/parser.cc:22571
  #, gcc-internal-format
  msgid "%qD is not a namespace-name; did you mean %qs?"
  msgstr ""
  
! #: cp/parser.cc:22575
  #, gcc-internal-format
  msgid "%qD is not a namespace-name"
  msgstr ""
  
! #: cp/parser.cc:22579
  #, gcc-internal-format
  msgid "expected namespace-name"
  msgstr ""
  
! #: cp/parser.cc:22640
  #, gcc-internal-format
  msgid ""
  "nested inline namespace definitions only available with %<-std=c++20%> or %<-"
  "std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:22652
  #, gcc-internal-format
  msgid "standard attributes on namespaces must precede the namespace name"
  msgstr ""
  
! #: cp/parser.cc:22671
  #, gcc-internal-format
  msgid ""
  "nested namespace definitions only available with %<-std=c++17%> or %<-"
  "std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:22681
  #, gcc-internal-format
  msgid "nested namespace name required"
  msgstr ""
  
! #: cp/parser.cc:22686
  #, gcc-internal-format
  msgid "namespace name required"
  msgstr ""
  
! #: cp/parser.cc:22690
  #, gcc-internal-format
  msgid "a nested namespace definition cannot have attributes"
  msgstr ""
  
! #: cp/parser.cc:22693
  #, gcc-internal-format
  msgid "a nested namespace definition cannot be inline"
  msgstr ""
  
! #: cp/parser.cc:22700
  #, gcc-internal-format
  msgid "namespace %qD entered"
  msgstr ""
  
! #: cp/parser.cc:22756
  #, gcc-internal-format
  msgid "%<namespace%> definition is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:22938
  #, gcc-internal-format
  msgid ""
  "pack expansion in using-declaration only available with %<-std=c++17%> or %<-"
  "std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:22982
  #, gcc-internal-format
  msgid "a template-id may not appear in a using-declaration"
  msgstr ""
  
! #: cp/parser.cc:23000
  #, gcc-internal-format
  msgid ""
  "comma-separated list in using-declaration only available with %<-std=c++17%> "
  "or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:23010
  #, gcc-internal-format
  msgid ""
  "access declarations are deprecated in favor of using-declarations; "
  "suggestion: add the %<using%> keyword"
  msgstr ""
  
! #: cp/parser.cc:23056
  #, gcc-internal-format
  msgid "%<using enum%> only available with %<-std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:23059
  #, gcc-internal-format
  msgid "%<using enum%> of dependent type %qT"
  msgstr ""
  
! #: cp/parser.cc:23061
  #, gcc-internal-format
  msgid "%<using enum%> of non-enumeration type %q#T"
  msgstr ""
  
! #: cp/parser.cc:23063
  #, gcc-internal-format
  msgid "%<using enum%> of incomplete type %qT"
  msgstr ""
  
! #: cp/parser.cc:23065
  #, gcc-internal-format
  msgid "%<using enum%> of %qT before its enum-specifier"
  msgstr ""
  
! #: cp/parser.cc:23075
  #, gcc-internal-format
  msgid "opaque-enum-declaration here"
  msgstr ""
  
! #: cp/parser.cc:23145
  #, gcc-internal-format
  msgid "types may not be defined in alias template declarations"
  msgstr ""
  
! #: cp/parser.cc:23297
  #, gcc-internal-format
  msgid "expected string-literal or constexpr in parentheses"
  msgstr ""
  
! #: cp/parser.cc:23358
  #, gcc-internal-format
  msgid ""
  "%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-"
  "std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:23379 cp/parser.cc:23397 cp/parser.cc:23412
  #, gcc-internal-format
  msgid "duplicate %<asm%> qualifier %qT"
  msgstr ""
  
! #: cp/parser.cc:23386
  #, gcc-internal-format
  msgid "%<asm%> qualifier %qT ignored outside of function body"
  msgstr ""
  
! #: cp/parser.cc:23425
  #, gcc-internal-format
  msgid "%qT is not an %<asm%> qualifier"
  msgstr ""
  
! #: cp/parser.cc:23441
  #, gcc-internal-format
  msgid "%<asm%> qualifier outside of function body"
  msgstr ""
  
! #: cp/parser.cc:23591
  #, gcc-internal-format
  msgid "attributes ignored on %<asm%> declaration"
  msgstr ""
  
! #: cp/parser.cc:23682
  #, gcc-internal-format
  msgid "empty parentheses were disambiguated as a function declaration"
  msgstr ""
  
! #: cp/parser.cc:23693
  #, gcc-internal-format
  msgid "remove parentheses to default-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23698
  #, gcc-internal-format
  msgid "or replace parentheses with braces to aggregate-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23701
  #, gcc-internal-format
  msgid "or replace parentheses with braces to value-initialize a variable"
  msgstr ""
  
! #: cp/parser.cc:23718 cp/parser.cc:23743
  #, gcc-internal-format
  msgid "parentheses were disambiguated as a function declaration"
  msgstr ""
  
! #: cp/parser.cc:23730 cp/parser.cc:23751
  #, gcc-internal-format
  msgid "replace parentheses with braces to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23737
  #, gcc-internal-format
  msgid "add parentheses to declare a variable"
  msgstr ""
  
! #: cp/parser.cc:23984
  #, gcc-internal-format
  msgid "a function-definition is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:23995
  #, gcc-internal-format
  msgid "an %<asm%> specification is not allowed on a function-definition"
  msgstr ""
  
! #: cp/parser.cc:23999
  #, gcc-internal-format
  msgid "attributes are not allowed on a function-definition"
  msgstr ""
  
! #: cp/parser.cc:24050
  #, gcc-internal-format
  msgid "expected constructor, destructor, or type conversion"
  msgstr ""
  
! #: cp/parser.cc:24208
  #, gcc-internal-format
  msgid "initializer provided for function"
  msgstr ""
  
! #: cp/parser.cc:24253
  #, gcc-internal-format
  msgid "attributes after parenthesized initializer ignored"
  msgstr ""
  
! #: cp/parser.cc:24265
  #, gcc-internal-format
  msgid "non-function %qD declared as implicit template"
  msgstr ""
  
! #: cp/parser.cc:24794
  #, gcc-internal-format
  msgid "array bound is not an integer constant"
  msgstr ""
  
! #: cp/parser.cc:24919
  #, gcc-internal-format
  msgid "cannot define member of dependent typedef %qT"
  msgstr ""
  
! #: cp/parser.cc:24923
  #, gcc-internal-format
  msgid "%<%T::%E%> is not a type"
  msgstr ""
*************** msgstr ""
*** 67582,67598 ****
  #. here because we do not have enough
  #. information about its original syntactic
  #. form.
! #: cp/parser.cc:24948
  #, gcc-internal-format
  msgid "invalid declarator"
  msgstr ""
  
! #: cp/parser.cc:24957
  #, gcc-internal-format
  msgid "invalid use of constructor as a template"
  msgstr ""
  
! #: cp/parser.cc:24959
  #, gcc-internal-format
  msgid ""
  "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified "
--- 67683,67699 ----
  #. here because we do not have enough
  #. information about its original syntactic
  #. form.
! #: cp/parser.cc:24952
  #, gcc-internal-format
  msgid "invalid declarator"
  msgstr ""
  
! #: cp/parser.cc:24961
  #, gcc-internal-format
  msgid "invalid use of constructor as a template"
  msgstr ""
  
! #: cp/parser.cc:24963
  #, gcc-internal-format
  msgid ""
  "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified "
*************** msgstr ""
*** 67601,67867 ****
  
  #. But declarations with qualified-ids can't appear in a
  #. function.
! #: cp/parser.cc:25074
  #, gcc-internal-format
  msgid "qualified-id in declaration"
  msgstr ""
  
! #: cp/parser.cc:25099
  #, gcc-internal-format
  msgid "expected declarator"
  msgstr ""
  
! #: cp/parser.cc:25220
  #, gcc-internal-format
  msgid "%qD is a namespace"
  msgstr ""
  
! #: cp/parser.cc:25222
  #, gcc-internal-format
  msgid "cannot form pointer to member of non-class %q#T"
  msgstr ""
  
! #: cp/parser.cc:25243
  #, gcc-internal-format
  msgid "expected ptr-operator"
  msgstr ""
  
! #: cp/parser.cc:25304
  #, gcc-internal-format
  msgid "duplicate cv-qualifier"
  msgstr ""
  
! #: cp/parser.cc:25358
  #, gcc-internal-format
  msgid "multiple ref-qualifiers"
  msgstr ""
  
! #: cp/parser.cc:25395
  #, gcc-internal-format
  msgid "%qE requires %<-fgnu-tm%>"
  msgstr ""
  
! #: cp/parser.cc:25453
  #, gcc-internal-format
  msgid "duplicate virt-specifier"
  msgstr ""
  
! #: cp/parser.cc:25735
  #, gcc-internal-format
  msgid "missing template arguments after %qE"
  msgstr ""
  
! #: cp/parser.cc:25741
  #, gcc-internal-format
  msgid "%qT not permitted in template argument"
  msgstr ""
  
! #: cp/parser.cc:25744 cp/typeck2.cc:337 cp/typeck2.cc:383 cp/typeck2.cc:2519
  #: rust/backend/rust-tree.cc:3896
  #, gcc-internal-format
  msgid "invalid use of %qT"
  msgstr ""
  
! #: cp/parser.cc:25770
  #, gcc-internal-format
  msgid "types may not be defined in template arguments"
  msgstr ""
  
! #: cp/parser.cc:25779
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in template argument"
  msgstr ""
  
! #: cp/parser.cc:25900
  #, gcc-internal-format
  msgid "expected type-specifier"
  msgstr ""
  
! #: cp/parser.cc:26047
  #, gcc-internal-format
  msgid "omission of %<,%> before varargs %<...%> is deprecated in C++26"
  msgstr ""
  
! #: cp/parser.cc:26254
  #, gcc-internal-format
  msgid "expected %<,%> or %<...%>"
  msgstr ""
  
! #: cp/parser.cc:26332
  #, gcc-internal-format
  msgid "types may not be defined in parameter types"
  msgstr ""
  
! #: cp/parser.cc:26456
  #, gcc-internal-format
  msgid "%<this%> specifier in template parameter declaration"
  msgstr ""
  
! #: cp/parser.cc:26459
  #, gcc-internal-format
  msgid "%<this%> specifier in a requires-expression parameter"
  msgstr ""
  
! #: cp/parser.cc:26519
  #, gcc-internal-format
  msgid "an explicit object parameter cannot be a function parameter pack"
  msgstr ""
  
! #: cp/parser.cc:26560
  #, gcc-internal-format
  msgid "default arguments are only permitted for function parameters"
  msgstr ""
  
! #: cp/parser.cc:26578
  #, gcc-internal-format
  msgid "parameter pack %qD cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26584
  #, gcc-internal-format
  msgid "template parameter pack cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26586
  #, gcc-internal-format
  msgid "parameter pack cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26609
  #, gcc-internal-format
  msgid "an explicit object parameter may not have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26733
  #, gcc-internal-format
  msgid ""
  "function-try-block body of %<constexpr%> constructor only available with %<-"
  "std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:26737
  #, gcc-internal-format
  msgid ""
  "function-try-block body of %<constexpr%> function only available with %<-"
  "std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:26924
  #, gcc-internal-format
  msgid "probably missing a comma or an operator before"
  msgstr ""
  
! #: cp/parser.cc:27086
  #, gcc-internal-format
  msgid ""
  "C++ designated initializers only available with %<-std=c++20%> or %<-std=gnu+"
  "+20%>"
  msgstr ""
  
! #: cp/parser.cc:27108
  #, gcc-internal-format
  msgid "ISO C++ does not allow GNU designated initializers"
  msgstr ""
  
! #: cp/parser.cc:27146
  #, gcc-internal-format
  msgid "ISO C++ does not allow C99 designated initializers"
  msgstr ""
  
! #: cp/parser.cc:27160
  #, gcc-internal-format
  msgid ""
  "either all initializer clauses should be designated or none of them should be"
  msgstr ""
  
! #: cp/parser.cc:27200
  #, gcc-internal-format
  msgid "%<...%> not allowed in designated initializer list"
  msgstr ""
  
! #: cp/parser.cc:27251
  #, gcc-internal-format
  msgid "%<.%s%> designator used multiple times in the same initializer list"
  msgstr ""
  
! #: cp/parser.cc:27307 cp/parser.cc:27442
  #, gcc-internal-format
  msgid "expected class-name"
  msgstr ""
  
! #: cp/parser.cc:27699
  #, gcc-internal-format
  msgid "expected %<;%> after class definition"
  msgstr ""
  
! #: cp/parser.cc:27702
  #, gcc-internal-format
  msgid "expected %<;%> after struct definition"
  msgstr ""
  
! #: cp/parser.cc:27705
  #, gcc-internal-format
  msgid "expected %<;%> after union definition"
  msgstr ""
  
! #: cp/parser.cc:28162
  #, gcc-internal-format
  msgid "expected %<{%> or %<:%>"
  msgstr ""
  
! #: cp/parser.cc:28173
! #, gcc-internal-format
! msgid "cannot specify %<override%> for a class"
! msgstr ""
! 
! #: cp/parser.cc:28181
  #, gcc-internal-format
  msgid "global qualification of class name is invalid"
  msgstr ""
  
! #: cp/parser.cc:28188
  #, gcc-internal-format
  msgid "qualified name does not name a class"
  msgstr ""
  
! #: cp/parser.cc:28200
  #, gcc-internal-format
  msgid "keyword %<template%> not allowed in class-head-name"
  msgstr ""
  
! #: cp/parser.cc:28206
  #, gcc-internal-format
  msgid "invalid class name in declaration of %qD"
  msgstr ""
  
! #: cp/parser.cc:28249
  #, gcc-internal-format
  msgid "declaration of partial specialization in unbraced export-declaration"
  msgstr ""
  
! #: cp/parser.cc:28275
  #, gcc-internal-format
  msgid ""
  "an explicit instantiation cannot have a definition; use %<template <>%> to "
  "declare a specialization"
  msgstr ""
  
! #: cp/parser.cc:28282
  #, gcc-internal-format
  msgid "an explicit specialization must be preceded by %<template <>%>"
  msgstr ""
  
! #: cp/parser.cc:28315
  #, gcc-internal-format
  msgid "function template %qD redeclared as a class template"
  msgstr ""
  
! #: cp/parser.cc:28348
  #, gcc-internal-format
  msgid "could not resolve typename type"
  msgstr ""
  
! #: cp/parser.cc:28413
  #, gcc-internal-format
  msgid "previous definition of %q#T"
  msgstr ""
--- 67702,67963 ----
  
  #. But declarations with qualified-ids can't appear in a
  #. function.
! #: cp/parser.cc:25078
  #, gcc-internal-format
  msgid "qualified-id in declaration"
  msgstr ""
  
! #: cp/parser.cc:25103
  #, gcc-internal-format
  msgid "expected declarator"
  msgstr ""
  
! #: cp/parser.cc:25224
  #, gcc-internal-format
  msgid "%qD is a namespace"
  msgstr ""
  
! #: cp/parser.cc:25226
  #, gcc-internal-format
  msgid "cannot form pointer to member of non-class %q#T"
  msgstr ""
  
! #: cp/parser.cc:25247
  #, gcc-internal-format
  msgid "expected ptr-operator"
  msgstr ""
  
! #: cp/parser.cc:25308
  #, gcc-internal-format
  msgid "duplicate cv-qualifier"
  msgstr ""
  
! #: cp/parser.cc:25362
  #, gcc-internal-format
  msgid "multiple ref-qualifiers"
  msgstr ""
  
! #: cp/parser.cc:25399
  #, gcc-internal-format
  msgid "%qE requires %<-fgnu-tm%>"
  msgstr ""
  
! #: cp/parser.cc:25457 cp/parser.cc:28009
  #, gcc-internal-format
  msgid "duplicate virt-specifier"
  msgstr ""
  
! #: cp/parser.cc:25739
  #, gcc-internal-format
  msgid "missing template arguments after %qE"
  msgstr ""
  
! #: cp/parser.cc:25745
  #, gcc-internal-format
  msgid "%qT not permitted in template argument"
  msgstr ""
  
! #: cp/parser.cc:25748 cp/typeck2.cc:337 cp/typeck2.cc:383 cp/typeck2.cc:2519
  #: rust/backend/rust-tree.cc:3896
  #, gcc-internal-format
  msgid "invalid use of %qT"
  msgstr ""
  
! #: cp/parser.cc:25774
  #, gcc-internal-format
  msgid "types may not be defined in template arguments"
  msgstr ""
  
! #: cp/parser.cc:25783
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in template argument"
  msgstr ""
  
! #: cp/parser.cc:25904
  #, gcc-internal-format
  msgid "expected type-specifier"
  msgstr ""
  
! #: cp/parser.cc:26051
  #, gcc-internal-format
  msgid "omission of %<,%> before varargs %<...%> is deprecated in C++26"
  msgstr ""
  
! #: cp/parser.cc:26258
  #, gcc-internal-format
  msgid "expected %<,%> or %<...%>"
  msgstr ""
  
! #: cp/parser.cc:26336
  #, gcc-internal-format
  msgid "types may not be defined in parameter types"
  msgstr ""
  
! #: cp/parser.cc:26460
  #, gcc-internal-format
  msgid "%<this%> specifier in template parameter declaration"
  msgstr ""
  
! #: cp/parser.cc:26463
  #, gcc-internal-format
  msgid "%<this%> specifier in a requires-expression parameter"
  msgstr ""
  
! #: cp/parser.cc:26523
  #, gcc-internal-format
  msgid "an explicit object parameter cannot be a function parameter pack"
  msgstr ""
  
! #: cp/parser.cc:26564
  #, gcc-internal-format
  msgid "default arguments are only permitted for function parameters"
  msgstr ""
  
! #: cp/parser.cc:26582
  #, gcc-internal-format
  msgid "parameter pack %qD cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26588
  #, gcc-internal-format
  msgid "template parameter pack cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26590
  #, gcc-internal-format
  msgid "parameter pack cannot have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26613
  #, gcc-internal-format
  msgid "an explicit object parameter may not have a default argument"
  msgstr ""
  
! #: cp/parser.cc:26737
  #, gcc-internal-format
  msgid ""
  "function-try-block body of %<constexpr%> constructor only available with %<-"
  "std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:26741
  #, gcc-internal-format
  msgid ""
  "function-try-block body of %<constexpr%> function only available with %<-"
  "std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:26928
  #, gcc-internal-format
  msgid "probably missing a comma or an operator before"
  msgstr ""
  
! #: cp/parser.cc:27090
  #, gcc-internal-format
  msgid ""
  "C++ designated initializers only available with %<-std=c++20%> or %<-std=gnu+"
  "+20%>"
  msgstr ""
  
! #: cp/parser.cc:27112
  #, gcc-internal-format
  msgid "ISO C++ does not allow GNU designated initializers"
  msgstr ""
  
! #: cp/parser.cc:27150
  #, gcc-internal-format
  msgid "ISO C++ does not allow C99 designated initializers"
  msgstr ""
  
! #: cp/parser.cc:27164
  #, gcc-internal-format
  msgid ""
  "either all initializer clauses should be designated or none of them should be"
  msgstr ""
  
! #: cp/parser.cc:27204
  #, gcc-internal-format
  msgid "%<...%> not allowed in designated initializer list"
  msgstr ""
  
! #: cp/parser.cc:27255
  #, gcc-internal-format
  msgid "%<.%s%> designator used multiple times in the same initializer list"
  msgstr ""
  
! #: cp/parser.cc:27311 cp/parser.cc:27446
  #, gcc-internal-format
  msgid "expected class-name"
  msgstr ""
  
! #: cp/parser.cc:27703
  #, gcc-internal-format
  msgid "expected %<;%> after class definition"
  msgstr ""
  
! #: cp/parser.cc:27706
  #, gcc-internal-format
  msgid "expected %<;%> after struct definition"
  msgstr ""
  
! #: cp/parser.cc:27709
  #, gcc-internal-format
  msgid "expected %<;%> after union definition"
  msgstr ""
  
! #: cp/parser.cc:28222
  #, gcc-internal-format
  msgid "expected %<{%> or %<:%>"
  msgstr ""
  
! #: cp/parser.cc:28234
  #, gcc-internal-format
  msgid "global qualification of class name is invalid"
  msgstr ""
  
! #: cp/parser.cc:28241
  #, gcc-internal-format
  msgid "qualified name does not name a class"
  msgstr ""
  
! #: cp/parser.cc:28253
  #, gcc-internal-format
  msgid "keyword %<template%> not allowed in class-head-name"
  msgstr ""
  
! #: cp/parser.cc:28259
  #, gcc-internal-format
  msgid "invalid class name in declaration of %qD"
  msgstr ""
  
! #: cp/parser.cc:28302
  #, gcc-internal-format
  msgid "declaration of partial specialization in unbraced export-declaration"
  msgstr ""
  
! #: cp/parser.cc:28328
  #, gcc-internal-format
  msgid ""
  "an explicit instantiation cannot have a definition; use %<template <>%> to "
  "declare a specialization"
  msgstr ""
  
! #: cp/parser.cc:28335
  #, gcc-internal-format
  msgid "an explicit specialization must be preceded by %<template <>%>"
  msgstr ""
  
! #: cp/parser.cc:28368
  #, gcc-internal-format
  msgid "function template %qD redeclared as a class template"
  msgstr ""
  
! #: cp/parser.cc:28401
  #, gcc-internal-format
  msgid "could not resolve typename type"
  msgstr ""
  
! #: cp/parser.cc:28466
  #, gcc-internal-format
  msgid "previous definition of %q#T"
  msgstr ""
*************** msgstr ""
*** 67869,68146 ****
  #. In a lambda this should work, but doesn't currently.
  #. We're in a lambda, but it isn't the innermost class.
  #. This should work, but currently doesn't.
! #: cp/parser.cc:28427 cp/pt.cc:4367
  #, gcc-internal-format
  msgid "unexpanded parameter pack in local class in lambda"
  msgstr ""
  
! #: cp/parser.cc:28533 cp/parser.cc:35343
  #, gcc-internal-format
  msgid "expected class-key"
  msgstr ""
  
! #: cp/parser.cc:28558
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids typename key in template template parameter; use %<-std=c+"
  "+17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:28562
  #, gcc-internal-format
  msgid "expected %<class%> or %<typename%>"
  msgstr ""
  
! #: cp/parser.cc:28831
  #, gcc-internal-format
  msgid "in C++03 a class-key must be used when declaring a friend"
  msgstr ""
  
! #: cp/parser.cc:28837
  #, gcc-internal-format
  msgid ""
  "variadic friends or friend type declarations with multiple types only "
  "available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:28878
  #, gcc-internal-format
  msgid "friend declaration does not name a class or function"
  msgstr ""
  
! #: cp/parser.cc:28918
  #, gcc-internal-format
  msgid "a storage class on an anonymous aggregate in class scope is not allowed"
  msgstr ""
  
! #: cp/parser.cc:29021
  #, gcc-internal-format
  msgid ""
  "default member initializers for bit-fields only available with %<-std=c+"
  "+20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:29028
  #, gcc-internal-format
  msgid "default member initializer for unnamed bit-field"
  msgstr ""
  
! #: cp/parser.cc:29041
  #, gcc-internal-format
  msgid "ISO C++ allows bit-field attributes only before the %<:%> token"
  msgstr ""
  
! #: cp/parser.cc:29222
  #, gcc-internal-format
  msgid "bit-field %qD has non-integral type %qT"
  msgstr ""
  
! #: cp/parser.cc:29250
  #, gcc-internal-format
  msgid "pure-specifier on function-definition"
  msgstr ""
  
! #: cp/parser.cc:29320
  #, gcc-internal-format
  msgid "stray %<,%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29334
  #, gcc-internal-format
  msgid "expected %<;%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29407
  #, gcc-internal-format
  msgid ""
  "%<delete%> reason only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:29430
  #, gcc-internal-format
  msgid "invalid pure specifier (only %<= 0%> is allowed)"
  msgstr ""
  
! #: cp/parser.cc:29465
  #, gcc-internal-format
  msgid "a brace-enclosed initializer is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:29596
  #, gcc-internal-format
  msgid "attributes on base specifiers are ignored"
  msgstr ""
  
! #: cp/parser.cc:29611
  #, gcc-internal-format
  msgid "%<virtual%> specified more than once in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29631
  #, gcc-internal-format
  msgid "more than one access specifier in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29655
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed outside of templates"
  msgstr ""
  
! #: cp/parser.cc:29658
  #, gcc-internal-format
  msgid ""
  "keyword %<typename%> not allowed in this context (the base class is "
  "implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:29860 cp/parser.cc:29954
  #, gcc-internal-format
  msgid "types may not be defined in an exception-specification"
  msgstr ""
  
! #: cp/parser.cc:29962
  #, gcc-internal-format
  msgid "ISO C++17 does not allow dynamic exception specifications"
  msgstr ""
  
! #: cp/parser.cc:29968
  #, gcc-internal-format
  msgid "dynamic exception specifications are deprecated in C++11"
  msgstr ""
  
! #: cp/parser.cc:30012
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in exception-specification"
  msgstr ""
  
! #: cp/parser.cc:30053
  #, gcc-internal-format
  msgid ""
  "%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-"
  "std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:30165
  #, gcc-internal-format
  msgid "types may not be defined in exception-declarations"
  msgstr ""
  
! #: cp/parser.cc:30200
  #, gcc-internal-format
  msgid "%<alignas%> on exception declaration"
  msgstr ""
  
! #: cp/parser.cc:30279
  #, gcc-internal-format
  msgid "%<co_yield%> cannot be used in default arguments"
  msgstr ""
  
! #: cp/parser.cc:30747
  #, gcc-internal-format
  msgid "expected attribute argument as balanced token sequence"
  msgstr ""
  
! #: cp/parser.cc:30893
  #, gcc-internal-format
  msgid "attribute using prefix used together with scoped attribute token"
  msgstr ""
  
! #: cp/parser.cc:30907
  #, gcc-internal-format
  msgid "expected an identifier for the attribute name"
  msgstr ""
  
  #. e.g. [[attr()]].
! #: cp/parser.cc:31049
  #, gcc-internal-format
  msgid "parentheses must be omitted if %qE attribute argument list is empty"
  msgstr ""
  
! #: cp/parser.cc:31084
  #, gcc-internal-format
  msgid "attribute %qs specified multiple times"
  msgstr ""
  
! #: cp/parser.cc:31126
  #, gcc-internal-format
  msgid "expected attribute before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:31129
  #, gcc-internal-format
  msgid "attribute with no arguments contains no parameter packs"
  msgstr ""
  
! #: cp/parser.cc:31175
  #, gcc-internal-format
  msgid "expected contract-role"
  msgstr ""
  
  #. We got some other token other than a ':'.
! #: cp/parser.cc:31256
  #, gcc-internal-format
  msgid "expected contract semantic or level"
  msgstr ""
  
! #: cp/parser.cc:31266
  #, gcc-internal-format
  msgid "expected contract level: %<default%>, %<audit%>, or %<axiom%>"
  msgstr ""
  
! #: cp/parser.cc:31276
  #, gcc-internal-format
  msgid "invalid use of contract role for explicit semantic"
  msgstr ""
  
! #: cp/parser.cc:31413
  #, gcc-internal-format
  msgid "contracts are only available with %<-fcontracts%>"
  msgstr ""
  
! #: cp/parser.cc:31572
  #, gcc-internal-format
  msgid ""
  "attribute using prefix only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:31933 cp/parser.cc:31942
  #, gcc-internal-format
  msgid "expression must be enclosed in parentheses"
  msgstr ""
  
! #: cp/parser.cc:32289
  #, gcc-internal-format
  msgid "missing additional %<requires%> to start a requires-expression"
  msgstr ""
  
! #: cp/parser.cc:32530
  #, gcc-internal-format
  msgid ""
  "testing if a concept-id is a valid expression; add %<requires%> to check "
  "satisfaction"
  msgstr ""
  
! #: cp/parser.cc:32668
  #, gcc-internal-format
  msgid "result type is not a plain type-constraint"
  msgstr ""
  
! #: cp/parser.cc:32676
  #, gcc-internal-format
  msgid "return-type-requirement is not a type-constraint"
  msgstr ""
  
! #: cp/parser.cc:33195
  #, gcc-internal-format
  msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
  msgstr ""
  
! #: cp/parser.cc:33200
  #, gcc-internal-format
  msgid "invalid declaration of %<%T::%E%>"
  msgstr ""
  
! #: cp/parser.cc:33204
  #, gcc-internal-format
  msgid "too few template-parameter-lists"
  msgstr ""
--- 67965,68242 ----
  #. In a lambda this should work, but doesn't currently.
  #. We're in a lambda, but it isn't the innermost class.
  #. This should work, but currently doesn't.
! #: cp/parser.cc:28480 cp/pt.cc:4367
  #, gcc-internal-format
  msgid "unexpanded parameter pack in local class in lambda"
  msgstr ""
  
! #: cp/parser.cc:28586 cp/parser.cc:35402
  #, gcc-internal-format
  msgid "expected class-key"
  msgstr ""
  
! #: cp/parser.cc:28611
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids typename key in template template parameter; use %<-std=c+"
  "+17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:28615
  #, gcc-internal-format
  msgid "expected %<class%> or %<typename%>"
  msgstr ""
  
! #: cp/parser.cc:28885
  #, gcc-internal-format
  msgid "in C++03 a class-key must be used when declaring a friend"
  msgstr ""
  
! #: cp/parser.cc:28891
  #, gcc-internal-format
  msgid ""
  "variadic friends or friend type declarations with multiple types only "
  "available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:28932
  #, gcc-internal-format
  msgid "friend declaration does not name a class or function"
  msgstr ""
  
! #: cp/parser.cc:28972
  #, gcc-internal-format
  msgid "a storage class on an anonymous aggregate in class scope is not allowed"
  msgstr ""
  
! #: cp/parser.cc:29075
  #, gcc-internal-format
  msgid ""
  "default member initializers for bit-fields only available with %<-std=c+"
  "+20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:29082
  #, gcc-internal-format
  msgid "default member initializer for unnamed bit-field"
  msgstr ""
  
! #: cp/parser.cc:29095
  #, gcc-internal-format
  msgid "ISO C++ allows bit-field attributes only before the %<:%> token"
  msgstr ""
  
! #: cp/parser.cc:29276
  #, gcc-internal-format
  msgid "bit-field %qD has non-integral type %qT"
  msgstr ""
  
! #: cp/parser.cc:29304
  #, gcc-internal-format
  msgid "pure-specifier on function-definition"
  msgstr ""
  
! #: cp/parser.cc:29374
  #, gcc-internal-format
  msgid "stray %<,%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29388
  #, gcc-internal-format
  msgid "expected %<;%> at end of member declaration"
  msgstr ""
  
! #: cp/parser.cc:29461
  #, gcc-internal-format
  msgid ""
  "%<delete%> reason only available with %<-std=c++2c%> or %<-std=gnu++2c%>"
  msgstr ""
  
! #: cp/parser.cc:29484
  #, gcc-internal-format
  msgid "invalid pure specifier (only %<= 0%> is allowed)"
  msgstr ""
  
! #: cp/parser.cc:29519
  #, gcc-internal-format
  msgid "a brace-enclosed initializer is not allowed here"
  msgstr ""
  
! #: cp/parser.cc:29650
  #, gcc-internal-format
  msgid "attributes on base specifiers are ignored"
  msgstr ""
  
! #: cp/parser.cc:29665
  #, gcc-internal-format
  msgid "%<virtual%> specified more than once in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29685
  #, gcc-internal-format
  msgid "more than one access specifier in base-specifier"
  msgstr ""
  
! #: cp/parser.cc:29709
  #, gcc-internal-format
  msgid "keyword %<typename%> not allowed outside of templates"
  msgstr ""
  
! #: cp/parser.cc:29712
  #, gcc-internal-format
  msgid ""
  "keyword %<typename%> not allowed in this context (the base class is "
  "implicitly a type)"
  msgstr ""
  
! #: cp/parser.cc:29914 cp/parser.cc:30008
  #, gcc-internal-format
  msgid "types may not be defined in an exception-specification"
  msgstr ""
  
! #: cp/parser.cc:30016
  #, gcc-internal-format
  msgid "ISO C++17 does not allow dynamic exception specifications"
  msgstr ""
  
! #: cp/parser.cc:30022
  #, gcc-internal-format
  msgid "dynamic exception specifications are deprecated in C++11"
  msgstr ""
  
! #: cp/parser.cc:30066
  #, gcc-internal-format
  msgid "invalid use of %<auto%> in exception-specification"
  msgstr ""
  
! #: cp/parser.cc:30107
  #, gcc-internal-format
  msgid ""
  "%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-"
  "std=gnu++20%>"
  msgstr ""
  
! #: cp/parser.cc:30219
  #, gcc-internal-format
  msgid "types may not be defined in exception-declarations"
  msgstr ""
  
! #: cp/parser.cc:30254
  #, gcc-internal-format
  msgid "%<alignas%> on exception declaration"
  msgstr ""
  
! #: cp/parser.cc:30333
  #, gcc-internal-format
  msgid "%<co_yield%> cannot be used in default arguments"
  msgstr ""
  
! #: cp/parser.cc:30801
  #, gcc-internal-format
  msgid "expected attribute argument as balanced token sequence"
  msgstr ""
  
! #: cp/parser.cc:30947
  #, gcc-internal-format
  msgid "attribute using prefix used together with scoped attribute token"
  msgstr ""
  
! #: cp/parser.cc:30961
  #, gcc-internal-format
  msgid "expected an identifier for the attribute name"
  msgstr ""
  
  #. e.g. [[attr()]].
! #: cp/parser.cc:31103
  #, gcc-internal-format
  msgid "parentheses must be omitted if %qE attribute argument list is empty"
  msgstr ""
  
! #: cp/parser.cc:31138
  #, gcc-internal-format
  msgid "attribute %qs specified multiple times"
  msgstr ""
  
! #: cp/parser.cc:31180
  #, gcc-internal-format
  msgid "expected attribute before %<...%>"
  msgstr ""
  
! #: cp/parser.cc:31183
  #, gcc-internal-format
  msgid "attribute with no arguments contains no parameter packs"
  msgstr ""
  
! #: cp/parser.cc:31229
  #, gcc-internal-format
  msgid "expected contract-role"
  msgstr ""
  
  #. We got some other token other than a ':'.
! #: cp/parser.cc:31310
  #, gcc-internal-format
  msgid "expected contract semantic or level"
  msgstr ""
  
! #: cp/parser.cc:31320
  #, gcc-internal-format
  msgid "expected contract level: %<default%>, %<audit%>, or %<axiom%>"
  msgstr ""
  
! #: cp/parser.cc:31330
  #, gcc-internal-format
  msgid "invalid use of contract role for explicit semantic"
  msgstr ""
  
! #: cp/parser.cc:31467
  #, gcc-internal-format
  msgid "contracts are only available with %<-fcontracts%>"
  msgstr ""
  
! #: cp/parser.cc:31626
  #, gcc-internal-format
  msgid ""
  "attribute using prefix only available with %<-std=c++17%> or %<-std=gnu++17%>"
  msgstr ""
  
! #: cp/parser.cc:31992 cp/parser.cc:32001
  #, gcc-internal-format
  msgid "expression must be enclosed in parentheses"
  msgstr ""
  
! #: cp/parser.cc:32348
  #, gcc-internal-format
  msgid "missing additional %<requires%> to start a requires-expression"
  msgstr ""
  
! #: cp/parser.cc:32589
  #, gcc-internal-format
  msgid ""
  "testing if a concept-id is a valid expression; add %<requires%> to check "
  "satisfaction"
  msgstr ""
  
! #: cp/parser.cc:32727
  #, gcc-internal-format
  msgid "result type is not a plain type-constraint"
  msgstr ""
  
! #: cp/parser.cc:32735
  #, gcc-internal-format
  msgid "return-type-requirement is not a type-constraint"
  msgstr ""
  
! #: cp/parser.cc:33254
  #, gcc-internal-format
  msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
  msgstr ""
  
! #: cp/parser.cc:33259
  #, gcc-internal-format
  msgid "invalid declaration of %<%T::%E%>"
  msgstr ""
  
! #: cp/parser.cc:33263
  #, gcc-internal-format
  msgid "too few template-parameter-lists"
  msgstr ""
*************** msgstr ""
*** 68149,68177 ****
  #. something like:
  #.
  #. template <class T> template <class U> void S::f();
! #: cp/parser.cc:33211
  #, gcc-internal-format
  msgid "too many template-parameter-lists"
  msgstr ""
  
! #: cp/parser.cc:33503
  #, gcc-internal-format
  msgid "template-id not allowed for constructor in C++20"
  msgstr ""
  
! #: cp/parser.cc:33614
  #, gcc-internal-format
  msgid "named return values are no longer supported"
  msgstr ""
  
! #: cp/parser.cc:33791
  #, gcc-internal-format
  msgid ""
  "ISO C++ did not adopt string literal operator templates taking an argument "
  "pack of characters"
  msgstr ""
  
! #: cp/parser.cc:33800
  #, gcc-internal-format
  msgid ""
  "literal operator template %qD has invalid parameter list; expected non-type "
--- 68245,68273 ----
  #. something like:
  #.
  #. template <class T> template <class U> void S::f();
! #: cp/parser.cc:33270
  #, gcc-internal-format
  msgid "too many template-parameter-lists"
  msgstr ""
  
! #: cp/parser.cc:33562
  #, gcc-internal-format
  msgid "template-id not allowed for constructor in C++20"
  msgstr ""
  
! #: cp/parser.cc:33673
  #, gcc-internal-format
  msgid "named return values are no longer supported"
  msgstr ""
  
! #: cp/parser.cc:33850
  #, gcc-internal-format
  msgid ""
  "ISO C++ did not adopt string literal operator templates taking an argument "
  "pack of characters"
  msgstr ""
  
! #: cp/parser.cc:33859
  #, gcc-internal-format
  msgid ""
  "literal operator template %qD has invalid parameter list; expected non-type "
*************** msgid ""
*** 68179,68584 ****
  "type"
  msgstr ""
  
! #: cp/parser.cc:33806
  #, gcc-internal-format
  msgid ""
  "literal operator template %qD has invalid parameter list; expected non-type "
  "template parameter pack %<<char...>%>"
  msgstr ""
  
! #: cp/parser.cc:33846
  #, gcc-internal-format
  msgid "invalid declaration of member template in local class"
  msgstr ""
  
! #: cp/parser.cc:33856
  #, gcc-internal-format
  msgid "template with C linkage"
  msgstr ""
  
! #: cp/parser.cc:33876
  #, gcc-internal-format
  msgid "invalid explicit specialization"
  msgstr ""
  
! #: cp/parser.cc:33986
  #, gcc-internal-format
  msgid "template declaration of %<typedef%>"
  msgstr ""
  
! #: cp/parser.cc:34037
  #, gcc-internal-format
  msgid "a class template declaration must not declare anything else"
  msgstr ""
  
! #: cp/parser.cc:34089
  #, gcc-internal-format
  msgid "explicit template specialization cannot have a storage class"
  msgstr ""
  
! #: cp/parser.cc:34408
  #, gcc-internal-format
  msgid "%<>>%> should be %<> >%> within a nested template argument list"
  msgstr ""
  
! #: cp/parser.cc:34421
  #, gcc-internal-format
  msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
  msgstr ""
  
! #: cp/parser.cc:34452
  #, gcc-internal-format
  msgid "%qs should be %qs to terminate a template argument list"
  msgstr ""
  
! #: cp/parser.cc:34769
  #, gcc-internal-format
  msgid "%<sizeof...%> argument must be surrounded by parentheses"
  msgstr ""
  
! #: cp/parser.cc:34944
  #, gcc-internal-format
  msgid "invalid use of %qD in linkage specification"
  msgstr ""
  
! #: cp/parser.cc:34956
  #, gcc-internal-format
  msgid "duplicate %qD specifier"
  msgstr ""
  
! #: cp/parser.cc:34959
  #, gcc-internal-format
  msgid "%qD specifier conflicts with %qs"
  msgstr ""
  
! #: cp/parser.cc:34971
  #, gcc-internal-format
  msgid "%<__thread%> before %qD"
  msgstr ""
  
! #: cp/parser.cc:34988
  #, gcc-internal-format
  msgid "%qD specifier conflicts with %<typedef%>"
  msgstr ""
  
! #: cp/parser.cc:35097
  #, gcc-internal-format
  msgid "ISO C++ 1998 does not support %<long long%>"
  msgstr ""
  
! #: cp/parser.cc:35108
  #, gcc-internal-format
  msgid "both %<__thread%> and %<thread_local%> specified"
  msgstr ""
  
! #: cp/parser.cc:35113
  #, gcc-internal-format
  msgid "duplicate %qD"
  msgstr ""
  
! #: cp/parser.cc:35142
  #, gcc-internal-format
  msgid "duplicate %qs"
  msgstr ""
  
! #: cp/parser.cc:35194
  #, gcc-internal-format
  msgid "expected %<new%>"
  msgstr ""
  
! #: cp/parser.cc:35197
  #, gcc-internal-format
  msgid "expected %<delete%>"
  msgstr ""
  
! #: cp/parser.cc:35200
  #, gcc-internal-format
  msgid "expected %<return%>"
  msgstr ""
  
! #: cp/parser.cc:35206
  #, gcc-internal-format
  msgid "expected %<extern%>"
  msgstr ""
  
! #: cp/parser.cc:35209
  #, gcc-internal-format
  msgid "expected %<static_assert%>"
  msgstr ""
  
! #: cp/parser.cc:35212
  #, gcc-internal-format
  msgid "expected %<decltype%>"
  msgstr ""
  
! #: cp/parser.cc:35215
  #, gcc-internal-format
  msgid "expected %<operator%>"
  msgstr ""
  
! #: cp/parser.cc:35218
  #, gcc-internal-format
  msgid "expected %<class%>"
  msgstr ""
  
! #: cp/parser.cc:35221
  #, gcc-internal-format
  msgid "expected %<template%>"
  msgstr ""
  
! #: cp/parser.cc:35224
  #, gcc-internal-format
  msgid "expected %<namespace%>"
  msgstr ""
  
! #: cp/parser.cc:35227
  #, gcc-internal-format
  msgid "expected %<using%>"
  msgstr ""
  
! #: cp/parser.cc:35230
  #, gcc-internal-format
  msgid "expected %<asm%>"
  msgstr ""
  
! #: cp/parser.cc:35233
  #, gcc-internal-format
  msgid "expected %<try%>"
  msgstr ""
  
! #: cp/parser.cc:35236
  #, gcc-internal-format
  msgid "expected %<catch%>"
  msgstr ""
  
! #: cp/parser.cc:35239
  #, gcc-internal-format
  msgid "expected %<throw%>"
  msgstr ""
  
! #: cp/parser.cc:35242
  #, gcc-internal-format
  msgid "expected %<auto%>"
  msgstr ""
  
! #: cp/parser.cc:35245
  #, gcc-internal-format
  msgid "expected %<__label__%>"
  msgstr ""
  
! #: cp/parser.cc:35248
  #, gcc-internal-format
  msgid "expected %<@try%>"
  msgstr ""
  
! #: cp/parser.cc:35251
  #, gcc-internal-format
  msgid "expected %<@synchronized%>"
  msgstr ""
  
! #: cp/parser.cc:35254
  #, gcc-internal-format
  msgid "expected %<@throw%>"
  msgstr ""
  
! #: cp/parser.cc:35257
  #, gcc-internal-format
  msgid "expected %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:35260
  #, gcc-internal-format
  msgid "expected %<__transaction_relaxed%>"
  msgstr ""
  
! #: cp/parser.cc:35263
  #, gcc-internal-format
  msgid "expected %<co_yield%>"
  msgstr ""
  
! #: cp/parser.cc:35295
  #, gcc-internal-format
  msgid "expected %<::%>"
  msgstr ""
  
! #: cp/parser.cc:35307
  #, gcc-internal-format
  msgid "expected %<...%>"
  msgstr ""
  
! #: cp/parser.cc:35310
  #, gcc-internal-format
  msgid "expected %<*%>"
  msgstr ""
  
! #: cp/parser.cc:35313
  #, gcc-internal-format
  msgid "expected %<~%>"
  msgstr ""
  
! #: cp/parser.cc:35319
  #, gcc-internal-format
  msgid "expected %<:%> or %<::%>"
  msgstr ""
  
! #: cp/parser.cc:35346
  #, gcc-internal-format
  msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgstr ""
  
! #: cp/parser.cc:35681
  #, gcc-internal-format
  msgid "redundant enum-key %<enum%s%> in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:35833
  #, gcc-internal-format
  msgid "%qs tag used in naming %q#T"
  msgstr ""
  
! #: cp/parser.cc:35838
  #, gcc-internal-format
  msgid "%q#T was previously declared here"
  msgstr ""
  
! #: cp/parser.cc:35959
  #, gcc-internal-format
  msgid "redundant class-key %qs in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:36117 cp/parser.cc:36151
  #, gcc-internal-format
  msgid "%qT declared with a mismatched class-key %qs"
  msgstr ""
  
! #: cp/parser.cc:36124 cp/parser.cc:36157
  #, gcc-internal-format
  msgid "remove the class-key or replace it with %qs"
  msgstr ""
  
! #: cp/parser.cc:36125 cp/parser.cc:36158
  #, gcc-internal-format
  msgid "replace the class-key with %qs"
  msgstr ""
  
! #: cp/parser.cc:36132
  #, gcc-internal-format
  msgid "%qT defined as %qs here"
  msgstr ""
  
! #: cp/parser.cc:36133
  #, gcc-internal-format
  msgid "%qT first declared as %qs here"
  msgstr ""
  
! #: cp/parser.cc:36216
  #, gcc-internal-format
  msgid "%qD redeclared with different access"
  msgstr ""
  
! #: cp/parser.cc:36237
  #, gcc-internal-format
  msgid ""
  "in C++98 %<template%> (as a disambiguator) is only allowed within templates"
  msgstr ""
  
! #: cp/parser.cc:36486
  #, gcc-internal-format
  msgid "file ends in default argument"
  msgstr ""
  
! #: cp/parser.cc:36727 cp/parser.cc:38039 cp/parser.cc:38228
  #, gcc-internal-format
  msgid "misplaced %<@%D%> Objective-C++ construct"
  msgstr ""
  
! #: cp/parser.cc:36798
  #, gcc-internal-format
  msgid "objective-c++ message receiver expected"
  msgstr ""
  
! #: cp/parser.cc:36872
  #, gcc-internal-format
  msgid "objective-c++ message argument(s) are expected"
  msgstr ""
  
! #: cp/parser.cc:36903
  #, gcc-internal-format
  msgid "%<@encode%> must specify a type as an argument"
  msgstr ""
  
! #: cp/parser.cc:37307
  #, gcc-internal-format
  msgid "invalid Objective-C++ selector name"
  msgstr ""
  
! #: cp/parser.cc:37382 cp/parser.cc:37400
  #, gcc-internal-format
  msgid "objective-c++ method declaration is expected"
  msgstr ""
  
! #: cp/parser.cc:37394 cp/parser.cc:37460
  #, gcc-internal-format
  msgid "method attributes must be specified at the end"
  msgstr ""
  
! #: cp/parser.cc:37503
  #, gcc-internal-format
  msgid "stray %qs between Objective-C++ methods"
  msgstr ""
  
! #: cp/parser.cc:37700 cp/parser.cc:37707 cp/parser.cc:37714
  #, gcc-internal-format
  msgid "invalid type for instance variable"
  msgstr ""
  
! #: cp/parser.cc:37831
  #, gcc-internal-format
  msgid "identifier expected after %<@protocol%>"
  msgstr ""
  
! #: cp/parser.cc:38004
  #, gcc-internal-format
  msgid ""
  "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
  msgstr ""
  
! #: cp/parser.cc:38011
  #, gcc-internal-format
  msgid "prefix attributes are ignored before %<@%D%>"
  msgstr ""
  
! #: cp/parser.cc:38291 cp/parser.cc:38298 cp/parser.cc:38305
  #, gcc-internal-format
  msgid "invalid type for property"
  msgstr ""
  
! #: cp/parser.cc:38467
  #, gcc-internal-format
  msgid "unknown property attribute %qE"
  msgstr ""
  
! #: cp/parser.cc:39765
  #, gcc-internal-format
  msgid "expected integer expression list"
  msgstr ""
  
! #: cp/parser.cc:39782
  #, gcc-internal-format
  msgid "%<wait%> expression must be integral"
  msgstr ""
  
! #: cp/parser.cc:40538
  #, gcc-internal-format
  msgid "expected %<scalar%>, %<aggregate%>, %<all%>"
  msgstr ""
  
! #: cp/parser.cc:40929
  #, gcc-internal-format
  msgid "invalid reduction-identifier"
  msgstr ""
  
! #: cp/parser.cc:41990
  #, gcc-internal-format
  msgid "types may not be defined in iterator type"
  msgstr ""
--- 68275,68680 ----
  "type"
  msgstr ""
  
! #: cp/parser.cc:33865
  #, gcc-internal-format
  msgid ""
  "literal operator template %qD has invalid parameter list; expected non-type "
  "template parameter pack %<<char...>%>"
  msgstr ""
  
! #: cp/parser.cc:33905
  #, gcc-internal-format
  msgid "invalid declaration of member template in local class"
  msgstr ""
  
! #: cp/parser.cc:33915
  #, gcc-internal-format
  msgid "template with C linkage"
  msgstr ""
  
! #: cp/parser.cc:33935
  #, gcc-internal-format
  msgid "invalid explicit specialization"
  msgstr ""
  
! #: cp/parser.cc:34045
  #, gcc-internal-format
  msgid "template declaration of %<typedef%>"
  msgstr ""
  
! #: cp/parser.cc:34096
  #, gcc-internal-format
  msgid "a class template declaration must not declare anything else"
  msgstr ""
  
! #: cp/parser.cc:34148
  #, gcc-internal-format
  msgid "explicit template specialization cannot have a storage class"
  msgstr ""
  
! #: cp/parser.cc:34467
  #, gcc-internal-format
  msgid "%<>>%> should be %<> >%> within a nested template argument list"
  msgstr ""
  
! #: cp/parser.cc:34480
  #, gcc-internal-format
  msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
  msgstr ""
  
! #: cp/parser.cc:34511
  #, gcc-internal-format
  msgid "%qs should be %qs to terminate a template argument list"
  msgstr ""
  
! #: cp/parser.cc:34828
  #, gcc-internal-format
  msgid "%<sizeof...%> argument must be surrounded by parentheses"
  msgstr ""
  
! #: cp/parser.cc:35003
  #, gcc-internal-format
  msgid "invalid use of %qD in linkage specification"
  msgstr ""
  
! #: cp/parser.cc:35015
  #, gcc-internal-format
  msgid "duplicate %qD specifier"
  msgstr ""
  
! #: cp/parser.cc:35018
  #, gcc-internal-format
  msgid "%qD specifier conflicts with %qs"
  msgstr ""
  
! #: cp/parser.cc:35030
  #, gcc-internal-format
  msgid "%<__thread%> before %qD"
  msgstr ""
  
! #: cp/parser.cc:35047
  #, gcc-internal-format
  msgid "%qD specifier conflicts with %<typedef%>"
  msgstr ""
  
! #: cp/parser.cc:35156
  #, gcc-internal-format
  msgid "ISO C++ 1998 does not support %<long long%>"
  msgstr ""
  
! #: cp/parser.cc:35167
  #, gcc-internal-format
  msgid "both %<__thread%> and %<thread_local%> specified"
  msgstr ""
  
! #: cp/parser.cc:35172
  #, gcc-internal-format
  msgid "duplicate %qD"
  msgstr ""
  
! #: cp/parser.cc:35201
  #, gcc-internal-format
  msgid "duplicate %qs"
  msgstr ""
  
! #: cp/parser.cc:35253
  #, gcc-internal-format
  msgid "expected %<new%>"
  msgstr ""
  
! #: cp/parser.cc:35256
  #, gcc-internal-format
  msgid "expected %<delete%>"
  msgstr ""
  
! #: cp/parser.cc:35259
  #, gcc-internal-format
  msgid "expected %<return%>"
  msgstr ""
  
! #: cp/parser.cc:35265
  #, gcc-internal-format
  msgid "expected %<extern%>"
  msgstr ""
  
! #: cp/parser.cc:35268
  #, gcc-internal-format
  msgid "expected %<static_assert%>"
  msgstr ""
  
! #: cp/parser.cc:35271
  #, gcc-internal-format
  msgid "expected %<decltype%>"
  msgstr ""
  
! #: cp/parser.cc:35274
  #, gcc-internal-format
  msgid "expected %<operator%>"
  msgstr ""
  
! #: cp/parser.cc:35277
  #, gcc-internal-format
  msgid "expected %<class%>"
  msgstr ""
  
! #: cp/parser.cc:35280
  #, gcc-internal-format
  msgid "expected %<template%>"
  msgstr ""
  
! #: cp/parser.cc:35283
  #, gcc-internal-format
  msgid "expected %<namespace%>"
  msgstr ""
  
! #: cp/parser.cc:35286
  #, gcc-internal-format
  msgid "expected %<using%>"
  msgstr ""
  
! #: cp/parser.cc:35289
  #, gcc-internal-format
  msgid "expected %<asm%>"
  msgstr ""
  
! #: cp/parser.cc:35292
  #, gcc-internal-format
  msgid "expected %<try%>"
  msgstr ""
  
! #: cp/parser.cc:35295
  #, gcc-internal-format
  msgid "expected %<catch%>"
  msgstr ""
  
! #: cp/parser.cc:35298
  #, gcc-internal-format
  msgid "expected %<throw%>"
  msgstr ""
  
! #: cp/parser.cc:35301
  #, gcc-internal-format
  msgid "expected %<auto%>"
  msgstr ""
  
! #: cp/parser.cc:35304
  #, gcc-internal-format
  msgid "expected %<__label__%>"
  msgstr ""
  
! #: cp/parser.cc:35307
  #, gcc-internal-format
  msgid "expected %<@try%>"
  msgstr ""
  
! #: cp/parser.cc:35310
  #, gcc-internal-format
  msgid "expected %<@synchronized%>"
  msgstr ""
  
! #: cp/parser.cc:35313
  #, gcc-internal-format
  msgid "expected %<@throw%>"
  msgstr ""
  
! #: cp/parser.cc:35316
  #, gcc-internal-format
  msgid "expected %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:35319
  #, gcc-internal-format
  msgid "expected %<__transaction_relaxed%>"
  msgstr ""
  
! #: cp/parser.cc:35322
  #, gcc-internal-format
  msgid "expected %<co_yield%>"
  msgstr ""
  
! #: cp/parser.cc:35354
  #, gcc-internal-format
  msgid "expected %<::%>"
  msgstr ""
  
! #: cp/parser.cc:35366
  #, gcc-internal-format
  msgid "expected %<...%>"
  msgstr ""
  
! #: cp/parser.cc:35369
  #, gcc-internal-format
  msgid "expected %<*%>"
  msgstr ""
  
! #: cp/parser.cc:35372
  #, gcc-internal-format
  msgid "expected %<~%>"
  msgstr ""
  
! #: cp/parser.cc:35378
  #, gcc-internal-format
  msgid "expected %<:%> or %<::%>"
  msgstr ""
  
! #: cp/parser.cc:35405
  #, gcc-internal-format
  msgid "expected %<class%>, %<typename%>, or %<template%>"
  msgstr ""
  
! #: cp/parser.cc:35740
  #, gcc-internal-format
  msgid "redundant enum-key %<enum%s%> in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:35892
  #, gcc-internal-format
  msgid "%qs tag used in naming %q#T"
  msgstr ""
  
! #: cp/parser.cc:35897
  #, gcc-internal-format
  msgid "%q#T was previously declared here"
  msgstr ""
  
! #: cp/parser.cc:36018
  #, gcc-internal-format
  msgid "redundant class-key %qs in reference to %q#T"
  msgstr ""
  
! #: cp/parser.cc:36176 cp/parser.cc:36210
  #, gcc-internal-format
  msgid "%qT declared with a mismatched class-key %qs"
  msgstr ""
  
! #: cp/parser.cc:36183 cp/parser.cc:36216
  #, gcc-internal-format
  msgid "remove the class-key or replace it with %qs"
  msgstr ""
  
! #: cp/parser.cc:36184 cp/parser.cc:36217
  #, gcc-internal-format
  msgid "replace the class-key with %qs"
  msgstr ""
  
! #: cp/parser.cc:36191
  #, gcc-internal-format
  msgid "%qT defined as %qs here"
  msgstr ""
  
! #: cp/parser.cc:36192
  #, gcc-internal-format
  msgid "%qT first declared as %qs here"
  msgstr ""
  
! #: cp/parser.cc:36275
  #, gcc-internal-format
  msgid "%qD redeclared with different access"
  msgstr ""
  
! #: cp/parser.cc:36296
  #, gcc-internal-format
  msgid ""
  "in C++98 %<template%> (as a disambiguator) is only allowed within templates"
  msgstr ""
  
! #: cp/parser.cc:36545
  #, gcc-internal-format
  msgid "file ends in default argument"
  msgstr ""
  
! #: cp/parser.cc:36786 cp/parser.cc:38098 cp/parser.cc:38287
  #, gcc-internal-format
  msgid "misplaced %<@%D%> Objective-C++ construct"
  msgstr ""
  
! #: cp/parser.cc:36857
  #, gcc-internal-format
  msgid "objective-c++ message receiver expected"
  msgstr ""
  
! #: cp/parser.cc:36931
  #, gcc-internal-format
  msgid "objective-c++ message argument(s) are expected"
  msgstr ""
  
! #: cp/parser.cc:36962
  #, gcc-internal-format
  msgid "%<@encode%> must specify a type as an argument"
  msgstr ""
  
! #: cp/parser.cc:37366
  #, gcc-internal-format
  msgid "invalid Objective-C++ selector name"
  msgstr ""
  
! #: cp/parser.cc:37441 cp/parser.cc:37459
  #, gcc-internal-format
  msgid "objective-c++ method declaration is expected"
  msgstr ""
  
! #: cp/parser.cc:37453 cp/parser.cc:37519
  #, gcc-internal-format
  msgid "method attributes must be specified at the end"
  msgstr ""
  
! #: cp/parser.cc:37562
  #, gcc-internal-format
  msgid "stray %qs between Objective-C++ methods"
  msgstr ""
  
! #: cp/parser.cc:37759 cp/parser.cc:37766 cp/parser.cc:37773
  #, gcc-internal-format
  msgid "invalid type for instance variable"
  msgstr ""
  
! #: cp/parser.cc:37890
  #, gcc-internal-format
  msgid "identifier expected after %<@protocol%>"
  msgstr ""
  
! #: cp/parser.cc:38063
  #, gcc-internal-format
  msgid ""
  "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
  msgstr ""
  
! #: cp/parser.cc:38070
  #, gcc-internal-format
  msgid "prefix attributes are ignored before %<@%D%>"
  msgstr ""
  
! #: cp/parser.cc:38350 cp/parser.cc:38357 cp/parser.cc:38364
  #, gcc-internal-format
  msgid "invalid type for property"
  msgstr ""
  
! #: cp/parser.cc:38526
  #, gcc-internal-format
  msgid "unknown property attribute %qE"
  msgstr ""
  
! #: cp/parser.cc:39824
  #, gcc-internal-format
  msgid "expected integer expression list"
  msgstr ""
  
! #: cp/parser.cc:39841
  #, gcc-internal-format
  msgid "%<wait%> expression must be integral"
  msgstr ""
  
! #: cp/parser.cc:40597
  #, gcc-internal-format
  msgid "expected %<scalar%>, %<aggregate%>, %<all%>"
  msgstr ""
  
! #: cp/parser.cc:40988
  #, gcc-internal-format
  msgid "invalid reduction-identifier"
  msgstr ""
  
! #: cp/parser.cc:42049
  #, gcc-internal-format
  msgid "types may not be defined in iterator type"
  msgstr ""
*************** msgstr ""
*** 68587,68764 ****
  #. check above and add one in semantics.cc (to properly handle templates).
  #. Base this on the allocator/align modifiers check for the 'allocate' clause
  #. in semantics.cc's finish_omp_clauses.
! #: cp/parser.cc:44102
  #, gcc-internal-format
  msgid "%<#pragma omp allocate%> not yet supported"
  msgstr ""
  
! #: cp/parser.cc:45553
  #, gcc-internal-format
  msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46484
  #, gcc-internal-format
  msgid "%<ordered%> clause with parameter on range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46566 cp/pt.cc:18593
  #, gcc-internal-format
  msgid "iteration variable %qD should not be reduction"
  msgstr ""
  
! #: cp/parser.cc:49607
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> followed by %<#pragma omp declare %s%>"
  msgstr ""
  
! #: cp/parser.cc:50294
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp dispatch%> must be followed by a direct function call with "
  "optional assignment"
  msgstr ""
  
! #: cp/parser.cc:50521
  #, gcc-internal-format
  msgid "%qD is not a C pointer"
  msgstr ""
  
! #: cp/parser.cc:50647
  #, gcc-internal-format
  msgid ""
  "an %qs clause can only be specified if the %<dispatch%> selector of the "
  "construct selector set appears in the %<match%> clause"
  msgstr ""
  
! #: cp/parser.cc:50768
  #, gcc-internal-format
  msgid ""
  "OpenMP directive other than %<declare simd%> or %<declare variant%> "
  "appertains to a declaration"
  msgstr ""
  
! #: cp/parser.cc:51822
  #, gcc-internal-format
  msgid "invalid initializer clause"
  msgstr ""
  
! #: cp/parser.cc:51853
  #, gcc-internal-format
  msgid "expected id-expression (arguments)"
  msgstr ""
  
! #: cp/parser.cc:51865
  #, gcc-internal-format
  msgid ""
  "one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>"
  msgstr ""
  
! #: cp/parser.cc:51968
  #, gcc-internal-format
  msgid "types may not be defined in declare reduction type list"
  msgstr ""
  
! #: cp/parser.cc:51988 cp/semantics.cc:6841
  #, gcc-internal-format
  msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:51992 cp/semantics.cc:6849
  #, gcc-internal-format
  msgid "function or array type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:51995 cp/pt.cc:14880 cp/semantics.cc:6855
  #, gcc-internal-format
  msgid "reference type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:51998 cp/semantics.cc:6861
  #, gcc-internal-format
  msgid ""
  "%<const%>, %<volatile%> or %<__restrict%>-qualified type %qT in %<#pragma "
  "omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52749
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> names a set of overloads"
  msgstr ""
  
! #: cp/parser.cc:52759
  #, gcc-internal-format
  msgid "%qD does not refer to a namespace scope function"
  msgstr ""
  
! #: cp/parser.cc:52929 cp/parser.cc:53464
  #, gcc-internal-format
  msgid "OpenMP directives may not appear in %<constexpr%> functions"
  msgstr ""
  
  #. cancel-and-throw is unimplemented.
! #: cp/parser.cc:53140
  #, gcc-internal-format
  msgid "%<atomic_cancel%>"
  msgstr ""
  
! #: cp/parser.cc:53187 cp/semantics.cc:12154
  #, gcc-internal-format
  msgid "%<__transaction_relaxed%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53189 cp/semantics.cc:12156
  #, gcc-internal-format
  msgid "%<__transaction_atomic%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53335
  #, gcc-internal-format
  msgid ""
  "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:53338
  #, gcc-internal-format
  msgid "  or a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: cp/parser.cc:53385
  #, gcc-internal-format
  msgid "malformed %<#pragma GCC pch_preprocess%>"
  msgstr ""
  
! #: cp/parser.cc:53714
  #, gcc-internal-format
  msgid "%<#pragma omp requires%> may only be used at file or namespace scope"
  msgstr ""
  
! #: cp/parser.cc:53725
  #, gcc-internal-format
  msgid "%<#pragma omp assumes%> may only be used at file or namespace scope"
  msgstr ""
  
! #: cp/parser.cc:53812
  #, gcc-internal-format
  msgid "%<#pragma GCC %s%> must be inside a function"
  msgstr ""
  
! #: cp/parser.cc:53954
  #, gcc-internal-format
  msgid "multi-source compilation not implemented for C++"
  msgstr ""
  
! #: cp/parser.cc:53991
  #, gcc-internal-format
  msgid "placeholder type not allowed in this context"
  msgstr ""
  
! #: cp/parser.cc:54200
  #, gcc-internal-format
  msgid "implicit templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:54256
  #, gcc-internal-format
  msgid "%<extern \"C\"%> linkage started here"
  msgstr ""
--- 68683,68860 ----
  #. check above and add one in semantics.cc (to properly handle templates).
  #. Base this on the allocator/align modifiers check for the 'allocate' clause
  #. in semantics.cc's finish_omp_clauses.
! #: cp/parser.cc:44161
  #, gcc-internal-format
  msgid "%<#pragma omp allocate%> not yet supported"
  msgstr ""
  
! #: cp/parser.cc:45612
  #, gcc-internal-format
  msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46543
  #, gcc-internal-format
  msgid "%<ordered%> clause with parameter on range-based %<for%> loop"
  msgstr ""
  
! #: cp/parser.cc:46625 cp/pt.cc:18622
  #, gcc-internal-format
  msgid "iteration variable %qD should not be reduction"
  msgstr ""
  
! #: cp/parser.cc:49666
  #, gcc-internal-format
  msgid "%<#pragma omp declare %s%> followed by %<#pragma omp declare %s%>"
  msgstr ""
  
! #: cp/parser.cc:50353
  #, gcc-internal-format
  msgid ""
  "%<#pragma omp dispatch%> must be followed by a direct function call with "
  "optional assignment"
  msgstr ""
  
! #: cp/parser.cc:50580
  #, gcc-internal-format
  msgid "%qD is not a C pointer"
  msgstr ""
  
! #: cp/parser.cc:50706
  #, gcc-internal-format
  msgid ""
  "an %qs clause can only be specified if the %<dispatch%> selector of the "
  "construct selector set appears in the %<match%> clause"
  msgstr ""
  
! #: cp/parser.cc:50827
  #, gcc-internal-format
  msgid ""
  "OpenMP directive other than %<declare simd%> or %<declare variant%> "
  "appertains to a declaration"
  msgstr ""
  
! #: cp/parser.cc:51875
  #, gcc-internal-format
  msgid "invalid initializer clause"
  msgstr ""
  
! #: cp/parser.cc:51906
  #, gcc-internal-format
  msgid "expected id-expression (arguments)"
  msgstr ""
  
! #: cp/parser.cc:51918
  #, gcc-internal-format
  msgid ""
  "one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>"
  msgstr ""
  
! #: cp/parser.cc:52021
  #, gcc-internal-format
  msgid "types may not be defined in declare reduction type list"
  msgstr ""
  
! #: cp/parser.cc:52041 cp/semantics.cc:6841
  #, gcc-internal-format
  msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52045 cp/semantics.cc:6849
  #, gcc-internal-format
  msgid "function or array type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52048 cp/pt.cc:14893 cp/semantics.cc:6855
  #, gcc-internal-format
  msgid "reference type %qT in %<#pragma omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52051 cp/semantics.cc:6861
  #, gcc-internal-format
  msgid ""
  "%<const%>, %<volatile%> or %<__restrict%>-qualified type %qT in %<#pragma "
  "omp declare reduction%>"
  msgstr ""
  
! #: cp/parser.cc:52802
  #, gcc-internal-format
  msgid "%<#pragma acc routine%> names a set of overloads"
  msgstr ""
  
! #: cp/parser.cc:52812
  #, gcc-internal-format
  msgid "%qD does not refer to a namespace scope function"
  msgstr ""
  
! #: cp/parser.cc:52982 cp/parser.cc:53517
  #, gcc-internal-format
  msgid "OpenMP directives may not appear in %<constexpr%> functions"
  msgstr ""
  
  #. cancel-and-throw is unimplemented.
! #: cp/parser.cc:53193
  #, gcc-internal-format
  msgid "%<atomic_cancel%>"
  msgstr ""
  
! #: cp/parser.cc:53240 cp/semantics.cc:12154
  #, gcc-internal-format
  msgid "%<__transaction_relaxed%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53242 cp/semantics.cc:12156
  #, gcc-internal-format
  msgid "%<__transaction_atomic%> without transactional memory support enabled"
  msgstr ""
  
! #: cp/parser.cc:53388
  #, gcc-internal-format
  msgid ""
  "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
  msgstr ""
  
! #: cp/parser.cc:53391
  #, gcc-internal-format
  msgid "  or a %<transaction_may_cancel_outer%> function"
  msgstr ""
  
! #: cp/parser.cc:53438
  #, gcc-internal-format
  msgid "malformed %<#pragma GCC pch_preprocess%>"
  msgstr ""
  
! #: cp/parser.cc:53767
  #, gcc-internal-format
  msgid "%<#pragma omp requires%> may only be used at file or namespace scope"
  msgstr ""
  
! #: cp/parser.cc:53778
  #, gcc-internal-format
  msgid "%<#pragma omp assumes%> may only be used at file or namespace scope"
  msgstr ""
  
! #: cp/parser.cc:53865
  #, gcc-internal-format
  msgid "%<#pragma GCC %s%> must be inside a function"
  msgstr ""
  
! #: cp/parser.cc:54007
  #, gcc-internal-format
  msgid "multi-source compilation not implemented for C++"
  msgstr ""
  
! #: cp/parser.cc:54044
  #, gcc-internal-format
  msgid "placeholder type not allowed in this context"
  msgstr ""
  
! #: cp/parser.cc:54253
  #, gcc-internal-format
  msgid "implicit templates may not be %<virtual%>"
  msgstr ""
  
! #: cp/parser.cc:54309
  #, gcc-internal-format
  msgid "%<extern \"C\"%> linkage started here"
  msgstr ""
*************** msgid ""
*** 69487,69773 ****
  "of a variable"
  msgstr ""
  
! #: cp/pt.cc:7549
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because string literals "
  "can never be used in this context"
  msgstr ""
  
! #: cp/pt.cc:7714
  #, gcc-internal-format
  msgid "in template argument for type %qT"
  msgstr ""
  
! #: cp/pt.cc:7728
  #, gcc-internal-format
  msgid "template argument %qE for type %qT not a compile-time constant"
  msgstr ""
  
! #: cp/pt.cc:7814
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because of conflicts in cv-"
  "qualification"
  msgstr ""
  
! #: cp/pt.cc:7822
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because it is not an lvalue"
  msgstr ""
  
! #: cp/pt.cc:7840
  #, gcc-internal-format
  msgid ""
  "%q#D is not a valid template argument for type %qT because a reference "
  "variable does not have a constant address"
  msgstr ""
  
! #: cp/pt.cc:7900
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because it is a pointer"
  msgstr ""
  
! #: cp/pt.cc:7902
  #, gcc-internal-format
  msgid "try using %qE instead"
  msgstr ""
  
! #: cp/pt.cc:7956
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because it is of type %qT"
  msgstr ""
  
! #: cp/pt.cc:8547
  #, gcc-internal-format
  msgid "ignoring attributes on template argument %qT"
  msgstr ""
  
! #: cp/pt.cc:8563
  #, gcc-internal-format
  msgid "ignoring attributes in template argument %qE"
  msgstr ""
  
! #: cp/pt.cc:8693
  #, gcc-internal-format
  msgid "injected-class-name %qD used as template template argument"
  msgstr ""
  
! #: cp/pt.cc:8722
  #, gcc-internal-format
  msgid "invalid use of destructor %qE as a type"
  msgstr ""
  
! #: cp/pt.cc:8727
  #, gcc-internal-format
  msgid "to refer to a type member of a template parameter, use %<typename %E%>"
  msgstr ""
  
! #: cp/pt.cc:8744 cp/pt.cc:8779 cp/pt.cc:8830
  #, gcc-internal-format
  msgid "type/value mismatch at argument %d in template parameter list for %qD"
  msgstr ""
  
! #: cp/pt.cc:8752
  #, gcc-internal-format
  msgid "  expected a constant of type %qT, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8760
  #, gcc-internal-format
  msgid ""
  "  ambiguous template argument for non-type template parameter is treated as "
  "function type"
  msgstr ""
  
! #: cp/pt.cc:8766
  #, gcc-internal-format
  msgid "  expected a class template, got %qE"
  msgstr ""
  
! #: cp/pt.cc:8769
  #, gcc-internal-format
  msgid "  expected a type, got %qE"
  msgstr ""
  
! #: cp/pt.cc:8784
  #, gcc-internal-format
  msgid "  expected a type, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8787
  #, gcc-internal-format
  msgid "  expected a class template, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8834
  #, gcc-internal-format
  msgid "  expected a template of type %qD, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8849
  #, gcc-internal-format
  msgid "constraint mismatch at argument %d in template parameter list for %qD"
  msgstr ""
  
! #: cp/pt.cc:8852
  #, gcc-internal-format
  msgid "  expected %qD but got %qD"
  msgstr ""
  
! #: cp/pt.cc:8940
  #, gcc-internal-format
  msgid "could not convert template argument %qE from %qT to %qT"
  msgstr ""
  
! #: cp/pt.cc:9068 cp/pt.cc:9404
  #, gcc-internal-format, gfc-internal-format
  msgid "template argument %d is invalid"
  msgstr ""
  
! #: cp/pt.cc:9083 cp/pt.cc:9229
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be %d)"
  msgstr ""
  
! #: cp/pt.cc:9225
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be at least %d)"
  msgstr ""
  
! #: cp/pt.cc:9234
  #, gcc-internal-format
  msgid "provided for %qD"
  msgstr ""
  
! #: cp/pt.cc:9260
  #, gcc-internal-format
  msgid ""
  "pack expansion argument for non-pack parameter %qD of alias template %qD"
  msgstr ""
  
! #: cp/pt.cc:9264
  #, gcc-internal-format
  msgid "pack expansion argument for non-pack parameter %qD of concept %qD"
  msgstr ""
  
! #: cp/pt.cc:9365
  #, gcc-internal-format
  msgid ""
  "so any instantiation with a non-empty parameter pack would be ill-formed"
  msgstr ""
  
! #: cp/pt.cc:9934
  #, gcc-internal-format
  msgid "instantiation exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/pt.cc:9953
  #, gcc-internal-format
  msgid "%q#D is not a function template"
  msgstr ""
  
! #: cp/pt.cc:10140
  #, gcc-internal-format
  msgid "non-template type %qT used as a template"
  msgstr ""
  
! #: cp/pt.cc:10142
  #, gcc-internal-format
  msgid "for template declaration %q+D"
  msgstr ""
  
! #: cp/pt.cc:10311 cp/pt.cc:22841
  #, gcc-internal-format
  msgid "template constraint failure for %qD"
  msgstr ""
  
! #: cp/pt.cc:10661
  #, gcc-internal-format
  msgid "use of invalid variable template %qE"
  msgstr ""
  
! #: cp/pt.cc:11392
  #, gcc-internal-format
  msgid ""
  "template instantiation depth exceeds maximum of %d (use %<-ftemplate-"
  "depth=%> to increase the maximum)"
  msgstr ""
  
! #: cp/pt.cc:12216
  #, gcc-internal-format
  msgid "score argument must be constant integer expression"
  msgstr ""
  
! #: cp/pt.cc:12225
  #, gcc-internal-format
  msgid "score argument must be non-negative"
  msgstr ""
  
! #: cp/pt.cc:12252
  #, gcc-internal-format
  msgid "property must be constant integer expression or string literal"
  msgstr ""
  
! #: cp/pt.cc:12256
  #, gcc-internal-format
  msgid "property must be constant integer expression"
  msgstr ""
  
! #: cp/pt.cc:12484
  #, gcc-internal-format
  msgid "instantiating erroneous template"
  msgstr ""
  
! #: cp/pt.cc:12485
  #, gcc-internal-format
  msgid "first error appeared here"
  msgstr ""
  
! #: cp/pt.cc:12836
  #, gcc-internal-format
  msgid "flexible array member %qD in union"
  msgstr ""
  
! #: cp/pt.cc:13355
  #, gcc-internal-format
  msgid "fold of empty expansion over %O"
  msgstr ""
  
! #: cp/pt.cc:13826
  #, gcc-internal-format
  msgid "%qE is not the entire pattern of the pack expansion"
  msgstr ""
  
! #: cp/pt.cc:13914
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qT"
  msgstr ""
  
! #: cp/pt.cc:13917
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qE"
  msgstr ""
  
! #: cp/pt.cc:14102
  #, gcc-internal-format
  msgid "cannot index an empty pack"
  msgstr ""
  
! #: cp/pt.cc:14553
  #, gcc-internal-format
  msgid "  when instantiating default argument for call to %qD"
  msgstr ""
  
! #: cp/pt.cc:14650
  #, gcc-internal-format
  msgid "creating pointer to member function of non-class type %qT"
  msgstr ""
  
! #: cp/pt.cc:15640
  #, gcc-internal-format, gfc-internal-format
  msgid "mismatched argument pack lengths (%d vs %d)"
  msgstr ""
--- 69583,69869 ----
  "of a variable"
  msgstr ""
  
! #: cp/pt.cc:7554
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because string literals "
  "can never be used in this context"
  msgstr ""
  
! #: cp/pt.cc:7719
  #, gcc-internal-format
  msgid "in template argument for type %qT"
  msgstr ""
  
! #: cp/pt.cc:7733
  #, gcc-internal-format
  msgid "template argument %qE for type %qT not a compile-time constant"
  msgstr ""
  
! #: cp/pt.cc:7819
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because of conflicts in cv-"
  "qualification"
  msgstr ""
  
! #: cp/pt.cc:7827
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because it is not an lvalue"
  msgstr ""
  
! #: cp/pt.cc:7845
  #, gcc-internal-format
  msgid ""
  "%q#D is not a valid template argument for type %qT because a reference "
  "variable does not have a constant address"
  msgstr ""
  
! #: cp/pt.cc:7905
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because it is a pointer"
  msgstr ""
  
! #: cp/pt.cc:7907
  #, gcc-internal-format
  msgid "try using %qE instead"
  msgstr ""
  
! #: cp/pt.cc:7961
  #, gcc-internal-format
  msgid ""
  "%qE is not a valid template argument for type %qT because it is of type %qT"
  msgstr ""
  
! #: cp/pt.cc:8552
  #, gcc-internal-format
  msgid "ignoring attributes on template argument %qT"
  msgstr ""
  
! #: cp/pt.cc:8568
  #, gcc-internal-format
  msgid "ignoring attributes in template argument %qE"
  msgstr ""
  
! #: cp/pt.cc:8698
  #, gcc-internal-format
  msgid "injected-class-name %qD used as template template argument"
  msgstr ""
  
! #: cp/pt.cc:8727
  #, gcc-internal-format
  msgid "invalid use of destructor %qE as a type"
  msgstr ""
  
! #: cp/pt.cc:8732
  #, gcc-internal-format
  msgid "to refer to a type member of a template parameter, use %<typename %E%>"
  msgstr ""
  
! #: cp/pt.cc:8749 cp/pt.cc:8784 cp/pt.cc:8835
  #, gcc-internal-format
  msgid "type/value mismatch at argument %d in template parameter list for %qD"
  msgstr ""
  
! #: cp/pt.cc:8757
  #, gcc-internal-format
  msgid "  expected a constant of type %qT, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8765
  #, gcc-internal-format
  msgid ""
  "  ambiguous template argument for non-type template parameter is treated as "
  "function type"
  msgstr ""
  
! #: cp/pt.cc:8771
  #, gcc-internal-format
  msgid "  expected a class template, got %qE"
  msgstr ""
  
! #: cp/pt.cc:8774
  #, gcc-internal-format
  msgid "  expected a type, got %qE"
  msgstr ""
  
! #: cp/pt.cc:8789
  #, gcc-internal-format
  msgid "  expected a type, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8792
  #, gcc-internal-format
  msgid "  expected a class template, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8839
  #, gcc-internal-format
  msgid "  expected a template of type %qD, got %qT"
  msgstr ""
  
! #: cp/pt.cc:8854
  #, gcc-internal-format
  msgid "constraint mismatch at argument %d in template parameter list for %qD"
  msgstr ""
  
! #: cp/pt.cc:8857
  #, gcc-internal-format
  msgid "  expected %qD but got %qD"
  msgstr ""
  
! #: cp/pt.cc:8945
  #, gcc-internal-format
  msgid "could not convert template argument %qE from %qT to %qT"
  msgstr ""
  
! #: cp/pt.cc:9073 cp/pt.cc:9409
  #, gcc-internal-format, gfc-internal-format
  msgid "template argument %d is invalid"
  msgstr ""
  
! #: cp/pt.cc:9088 cp/pt.cc:9234
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be %d)"
  msgstr ""
  
! #: cp/pt.cc:9230
  #, gcc-internal-format, gfc-internal-format
  msgid "wrong number of template arguments (%d, should be at least %d)"
  msgstr ""
  
! #: cp/pt.cc:9239
  #, gcc-internal-format
  msgid "provided for %qD"
  msgstr ""
  
! #: cp/pt.cc:9265
  #, gcc-internal-format
  msgid ""
  "pack expansion argument for non-pack parameter %qD of alias template %qD"
  msgstr ""
  
! #: cp/pt.cc:9269
  #, gcc-internal-format
  msgid "pack expansion argument for non-pack parameter %qD of concept %qD"
  msgstr ""
  
! #: cp/pt.cc:9370
  #, gcc-internal-format
  msgid ""
  "so any instantiation with a non-empty parameter pack would be ill-formed"
  msgstr ""
  
! #: cp/pt.cc:9939
  #, gcc-internal-format
  msgid "instantiation exposes TU-local entity %qD"
  msgstr ""
  
! #: cp/pt.cc:9958
  #, gcc-internal-format
  msgid "%q#D is not a function template"
  msgstr ""
  
! #: cp/pt.cc:10153
  #, gcc-internal-format
  msgid "non-template type %qT used as a template"
  msgstr ""
  
! #: cp/pt.cc:10155
  #, gcc-internal-format
  msgid "for template declaration %q+D"
  msgstr ""
  
! #: cp/pt.cc:10324 cp/pt.cc:22870
  #, gcc-internal-format
  msgid "template constraint failure for %qD"
  msgstr ""
  
! #: cp/pt.cc:10674
  #, gcc-internal-format
  msgid "use of invalid variable template %qE"
  msgstr ""
  
! #: cp/pt.cc:11405
  #, gcc-internal-format
  msgid ""
  "template instantiation depth exceeds maximum of %d (use %<-ftemplate-"
  "depth=%> to increase the maximum)"
  msgstr ""
  
! #: cp/pt.cc:12229
  #, gcc-internal-format
  msgid "score argument must be constant integer expression"
  msgstr ""
  
! #: cp/pt.cc:12238
  #, gcc-internal-format
  msgid "score argument must be non-negative"
  msgstr ""
  
! #: cp/pt.cc:12265
  #, gcc-internal-format
  msgid "property must be constant integer expression or string literal"
  msgstr ""
  
! #: cp/pt.cc:12269
  #, gcc-internal-format
  msgid "property must be constant integer expression"
  msgstr ""
  
! #: cp/pt.cc:12497
  #, gcc-internal-format
  msgid "instantiating erroneous template"
  msgstr ""
  
! #: cp/pt.cc:12498
  #, gcc-internal-format
  msgid "first error appeared here"
  msgstr ""
  
! #: cp/pt.cc:12849
  #, gcc-internal-format
  msgid "flexible array member %qD in union"
  msgstr ""
  
! #: cp/pt.cc:13368
  #, gcc-internal-format
  msgid "fold of empty expansion over %O"
  msgstr ""
  
! #: cp/pt.cc:13839
  #, gcc-internal-format
  msgid "%qE is not the entire pattern of the pack expansion"
  msgstr ""
  
! #: cp/pt.cc:13927
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qT"
  msgstr ""
  
! #: cp/pt.cc:13930
  #, gcc-internal-format
  msgid "mismatched argument pack lengths while expanding %qE"
  msgstr ""
  
! #: cp/pt.cc:14115
  #, gcc-internal-format
  msgid "cannot index an empty pack"
  msgstr ""
  
! #: cp/pt.cc:14566
  #, gcc-internal-format
  msgid "  when instantiating default argument for call to %qD"
  msgstr ""
  
! #: cp/pt.cc:14663
  #, gcc-internal-format
  msgid "creating pointer to member function of non-class type %qT"
  msgstr ""
  
! #: cp/pt.cc:15663
  #, gcc-internal-format, gfc-internal-format
  msgid "mismatched argument pack lengths (%d vs %d)"
  msgstr ""
*************** msgstr ""
*** 69785,70089 ****
  #.
  #. is an attempt to declare a variable with function
  #. type.
! #: cp/pt.cc:15828
  #, gcc-internal-format
  msgid "variable %qD has function type"
  msgstr ""
  
! #: cp/pt.cc:16034
  #, gcc-internal-format
  msgid "invalid parameter type %qT"
  msgstr ""
  
! #: cp/pt.cc:16036
  #, gcc-internal-format
  msgid "in declaration %q+D"
  msgstr ""
  
! #: cp/pt.cc:16163
  #, gcc-internal-format
  msgid "function returning an array"
  msgstr ""
  
! #: cp/pt.cc:16165
  #, gcc-internal-format
  msgid "function returning a function"
  msgstr ""
  
! #: cp/pt.cc:16896
  #, gcc-internal-format
  msgid "forming reference to void"
  msgstr ""
  
! #: cp/pt.cc:16898
  #, gcc-internal-format
  msgid "forming pointer to reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:16900
  #, gcc-internal-format
  msgid "forming reference to reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:16913
  #, gcc-internal-format
  msgid "forming pointer to qualified function type %qT"
  msgstr ""
  
! #: cp/pt.cc:16916
  #, gcc-internal-format
  msgid "forming reference to qualified function type %qT"
  msgstr ""
  
! #: cp/pt.cc:16969
  #, gcc-internal-format
  msgid "creating pointer to member of non-class type %qT"
  msgstr ""
  
! #: cp/pt.cc:16975
  #, gcc-internal-format
  msgid "creating pointer to member reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:16981
  #, gcc-internal-format
  msgid "creating pointer to member of type void"
  msgstr ""
  
! #: cp/pt.cc:17050
  #, gcc-internal-format
  msgid "creating array of %qT"
  msgstr ""
  
! #: cp/pt.cc:17091
  #, gcc-internal-format
  msgid "%qD expanded to more than one element"
  msgstr ""
  
! #: cp/pt.cc:17098
  #, gcc-internal-format
  msgid "%qD is instantiated for an empty pack"
  msgstr ""
  
! #: cp/pt.cc:17119
  #, gcc-internal-format
  msgid "%qT is not a class, struct, or union type"
  msgstr ""
  
! #: cp/pt.cc:17159
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not an enumeration type"
  msgstr ""
  
! #: cp/pt.cc:17167
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not a class type"
  msgstr ""
  
! #: cp/pt.cc:17290
  #, gcc-internal-format
  msgid "use of %qs in template"
  msgstr ""
  
! #: cp/pt.cc:17609
  #, gcc-internal-format
  msgid "qualifying type %qT does not match destructor name ~%qT"
  msgstr ""
  
! #: cp/pt.cc:17625
  #, gcc-internal-format
  msgid ""
  "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
  msgstr ""
  
! #: cp/pt.cc:17627
  #, gcc-internal-format
  msgid "say %<typename %E%> if a type is meant"
  msgstr ""
  
! #: cp/pt.cc:17711
  #, gcc-internal-format
  msgid "initializer for %q#D expands to an empty list of expressions"
  msgstr ""
  
! #: cp/pt.cc:19980 cp/pt.cc:22201
  #, gcc-internal-format
  msgid "invalid use of pack expansion expression"
  msgstr ""
  
! #: cp/pt.cc:19984 cp/pt.cc:22205
  #, gcc-internal-format
  msgid "use %<...%> to expand argument pack"
  msgstr ""
  
! #: cp/pt.cc:20131
  #, gcc-internal-format
  msgid "empty initializer in lambda init-capture"
  msgstr ""
  
! #: cp/pt.cc:21437
  #, gcc-internal-format
  msgid ""
  "%qD was not declared in this scope, and no declarations were found by "
  "argument-dependent lookup at the point of instantiation"
  msgstr ""
  
! #: cp/pt.cc:21472
  #, gcc-internal-format
  msgid "declarations in dependent base %qT are not found by unqualified lookup"
  msgstr ""
  
! #: cp/pt.cc:21477
  #, gcc-internal-format
  msgid "use %<this->%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21480
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21485
  #, gcc-internal-format
  msgid "%qD declared here, later in the translation unit"
  msgstr ""
  
! #: cp/pt.cc:21536
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_convertvector%>"
  msgstr ""
  
! #: cp/pt.cc:21563
  #, gcc-internal-format
  msgid "wrong number of arguments to %<assume%> attribute"
  msgstr ""
  
! #: cp/pt.cc:21802
  #, gcc-internal-format
  msgid "%qT is not a class or namespace"
  msgstr ""
  
! #: cp/pt.cc:21805
  #, gcc-internal-format
  msgid "%qD is not a class or namespace"
  msgstr ""
  
! #: cp/pt.cc:22121
  #, gcc-internal-format
  msgid "using invalid field %qD"
  msgstr ""
  
! #: cp/pt.cc:22471
  #, gcc-internal-format
  msgid "%qT is/uses unnamed type"
  msgstr ""
  
! #: cp/pt.cc:22473
  #, gcc-internal-format
  msgid "template argument for %qD uses local type %qT"
  msgstr ""
  
! #: cp/pt.cc:22483
  #, gcc-internal-format
  msgid "%qT is a variably modified type"
  msgstr ""
  
! #: cp/pt.cc:22498
  #, gcc-internal-format
  msgid "integral expression %qE is not constant"
  msgstr ""
  
! #: cp/pt.cc:22516
  #, gcc-internal-format
  msgid "  trying to instantiate %qD"
  msgstr ""
  
! #: cp/pt.cc:26953
  #, gcc-internal-format
  msgid "ambiguous template instantiation for %q#T"
  msgstr ""
  
! #: cp/pt.cc:26955
  #, gcc-internal-format
  msgid "ambiguous template instantiation for %q#D"
  msgstr ""
  
! #: cp/pt.cc:26961
  msgid "%s %#qS"
  msgstr ""
  
! #: cp/pt.cc:26988 cp/pt.cc:27075
  #, gcc-internal-format
  msgid "explicit instantiation of non-template %q#D"
  msgstr ""
  
! #: cp/pt.cc:27007
  #, gcc-internal-format
  msgid "%qD is not a static data member of a class template"
  msgstr ""
  
! #: cp/pt.cc:27013 cp/pt.cc:27070
  #, gcc-internal-format
  msgid "no matching template for %qD found"
  msgstr ""
  
! #: cp/pt.cc:27018
  #, gcc-internal-format
  msgid ""
  "type %qT for explicit instantiation %qD does not match declared type %qT"
  msgstr ""
  
! #: cp/pt.cc:27026
  #, gcc-internal-format
  msgid "explicit instantiation of %q#D"
  msgstr ""
  
! #: cp/pt.cc:27062
  #, gcc-internal-format
  msgid "duplicate explicit instantiation of %q#D"
  msgstr ""
  
! #: cp/pt.cc:27085 cp/pt.cc:27152
  #, gcc-internal-format
  msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
  msgstr ""
  
! #: cp/pt.cc:27090 cp/pt.cc:27167
  #, gcc-internal-format
  msgid "storage class %qD applied to template instantiation"
  msgstr ""
  
! #: cp/pt.cc:27124
  #, gcc-internal-format
  msgid "explicit instantiation of non-class template %qD"
  msgstr ""
  
! #: cp/pt.cc:27127
  #, gcc-internal-format
  msgid "explicit instantiation of non-template type %qT"
  msgstr ""
  
! #: cp/pt.cc:27136
  #, gcc-internal-format
  msgid "explicit instantiation of %q#T before definition of template"
  msgstr ""
  
! #: cp/pt.cc:27157
  #, gcc-internal-format
  msgid "ISO C++ forbids the use of %qE on explicit instantiations"
  msgstr ""
  
! #: cp/pt.cc:27197
  #, gcc-internal-format
  msgid "duplicate explicit instantiation of %q#T"
  msgstr ""
  
! #: cp/pt.cc:27527
  #, gcc-internal-format
  msgid "exception specification of %qD depends on itself"
  msgstr ""
  
! #: cp/pt.cc:27533
  #, gcc-internal-format
  msgid ""
  "exception specification of %qD is not available until end of class definition"
--- 69881,70185 ----
  #.
  #. is an attempt to declare a variable with function
  #. type.
! #: cp/pt.cc:15851
  #, gcc-internal-format
  msgid "variable %qD has function type"
  msgstr ""
  
! #: cp/pt.cc:16057
  #, gcc-internal-format
  msgid "invalid parameter type %qT"
  msgstr ""
  
! #: cp/pt.cc:16059
  #, gcc-internal-format
  msgid "in declaration %q+D"
  msgstr ""
  
! #: cp/pt.cc:16186
  #, gcc-internal-format
  msgid "function returning an array"
  msgstr ""
  
! #: cp/pt.cc:16188
  #, gcc-internal-format
  msgid "function returning a function"
  msgstr ""
  
! #: cp/pt.cc:16919
  #, gcc-internal-format
  msgid "forming reference to void"
  msgstr ""
  
! #: cp/pt.cc:16921
  #, gcc-internal-format
  msgid "forming pointer to reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:16923
  #, gcc-internal-format
  msgid "forming reference to reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:16936
  #, gcc-internal-format
  msgid "forming pointer to qualified function type %qT"
  msgstr ""
  
! #: cp/pt.cc:16939
  #, gcc-internal-format
  msgid "forming reference to qualified function type %qT"
  msgstr ""
  
! #: cp/pt.cc:16992
  #, gcc-internal-format
  msgid "creating pointer to member of non-class type %qT"
  msgstr ""
  
! #: cp/pt.cc:16998
  #, gcc-internal-format
  msgid "creating pointer to member reference type %qT"
  msgstr ""
  
! #: cp/pt.cc:17004
  #, gcc-internal-format
  msgid "creating pointer to member of type void"
  msgstr ""
  
! #: cp/pt.cc:17073
  #, gcc-internal-format
  msgid "creating array of %qT"
  msgstr ""
  
! #: cp/pt.cc:17114
  #, gcc-internal-format
  msgid "%qD expanded to more than one element"
  msgstr ""
  
! #: cp/pt.cc:17121
  #, gcc-internal-format
  msgid "%qD is instantiated for an empty pack"
  msgstr ""
  
! #: cp/pt.cc:17142
  #, gcc-internal-format
  msgid "%qT is not a class, struct, or union type"
  msgstr ""
  
! #: cp/pt.cc:17182
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not an enumeration type"
  msgstr ""
  
! #: cp/pt.cc:17190
  #, gcc-internal-format
  msgid "%qT resolves to %qT, which is not a class type"
  msgstr ""
  
! #: cp/pt.cc:17319
  #, gcc-internal-format
  msgid "use of %qs in template"
  msgstr ""
  
! #: cp/pt.cc:17638
  #, gcc-internal-format
  msgid "qualifying type %qT does not match destructor name ~%qT"
  msgstr ""
  
! #: cp/pt.cc:17654
  #, gcc-internal-format
  msgid ""
  "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
  msgstr ""
  
! #: cp/pt.cc:17656
  #, gcc-internal-format
  msgid "say %<typename %E%> if a type is meant"
  msgstr ""
  
! #: cp/pt.cc:17740
  #, gcc-internal-format
  msgid "initializer for %q#D expands to an empty list of expressions"
  msgstr ""
  
! #: cp/pt.cc:20009 cp/pt.cc:22230
  #, gcc-internal-format
  msgid "invalid use of pack expansion expression"
  msgstr ""
  
! #: cp/pt.cc:20013 cp/pt.cc:22234
  #, gcc-internal-format
  msgid "use %<...%> to expand argument pack"
  msgstr ""
  
! #: cp/pt.cc:20160
  #, gcc-internal-format
  msgid "empty initializer in lambda init-capture"
  msgstr ""
  
! #: cp/pt.cc:21466
  #, gcc-internal-format
  msgid ""
  "%qD was not declared in this scope, and no declarations were found by "
  "argument-dependent lookup at the point of instantiation"
  msgstr ""
  
! #: cp/pt.cc:21501
  #, gcc-internal-format
  msgid "declarations in dependent base %qT are not found by unqualified lookup"
  msgstr ""
  
! #: cp/pt.cc:21506
  #, gcc-internal-format
  msgid "use %<this->%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21509
  #, gcc-internal-format
  msgid "use %<%T::%D%> instead"
  msgstr ""
  
! #: cp/pt.cc:21514
  #, gcc-internal-format
  msgid "%qD declared here, later in the translation unit"
  msgstr ""
  
! #: cp/pt.cc:21565
  #, gcc-internal-format
  msgid "wrong number of arguments to %<__builtin_convertvector%>"
  msgstr ""
  
! #: cp/pt.cc:21592
  #, gcc-internal-format
  msgid "wrong number of arguments to %<assume%> attribute"
  msgstr ""
  
! #: cp/pt.cc:21831
  #, gcc-internal-format
  msgid "%qT is not a class or namespace"
  msgstr ""
  
! #: cp/pt.cc:21834
  #, gcc-internal-format
  msgid "%qD is not a class or namespace"
  msgstr ""
  
! #: cp/pt.cc:22150
  #, gcc-internal-format
  msgid "using invalid field %qD"
  msgstr ""
  
! #: cp/pt.cc:22500
  #, gcc-internal-format
  msgid "%qT is/uses unnamed type"
  msgstr ""
  
! #: cp/pt.cc:22502
  #, gcc-internal-format
  msgid "template argument for %qD uses local type %qT"
  msgstr ""
  
! #: cp/pt.cc:22512
  #, gcc-internal-format
  msgid "%qT is a variably modified type"
  msgstr ""
  
! #: cp/pt.cc:22527
  #, gcc-internal-format
  msgid "integral expression %qE is not constant"
  msgstr ""
  
! #: cp/pt.cc:22545
  #, gcc-internal-format
  msgid "  trying to instantiate %qD"
  msgstr ""
  
! #: cp/pt.cc:26983
  #, gcc-internal-format
  msgid "ambiguous template instantiation for %q#T"
  msgstr ""
  
! #: cp/pt.cc:26985
  #, gcc-internal-format
  msgid "ambiguous template instantiation for %q#D"
  msgstr ""
  
! #: cp/pt.cc:26991
  msgid "%s %#qS"
  msgstr ""
  
! #: cp/pt.cc:27018 cp/pt.cc:27105
  #, gcc-internal-format
  msgid "explicit instantiation of non-template %q#D"
  msgstr ""
  
! #: cp/pt.cc:27037
  #, gcc-internal-format
  msgid "%qD is not a static data member of a class template"
  msgstr ""
  
! #: cp/pt.cc:27043 cp/pt.cc:27100
  #, gcc-internal-format
  msgid "no matching template for %qD found"
  msgstr ""
  
! #: cp/pt.cc:27048
  #, gcc-internal-format
  msgid ""
  "type %qT for explicit instantiation %qD does not match declared type %qT"
  msgstr ""
  
! #: cp/pt.cc:27056
  #, gcc-internal-format
  msgid "explicit instantiation of %q#D"
  msgstr ""
  
! #: cp/pt.cc:27092
  #, gcc-internal-format
  msgid "duplicate explicit instantiation of %q#D"
  msgstr ""
  
! #: cp/pt.cc:27115 cp/pt.cc:27182
  #, gcc-internal-format
  msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
  msgstr ""
  
! #: cp/pt.cc:27120 cp/pt.cc:27197
  #, gcc-internal-format
  msgid "storage class %qD applied to template instantiation"
  msgstr ""
  
! #: cp/pt.cc:27154
  #, gcc-internal-format
  msgid "explicit instantiation of non-class template %qD"
  msgstr ""
  
! #: cp/pt.cc:27157
  #, gcc-internal-format
  msgid "explicit instantiation of non-template type %qT"
  msgstr ""
  
! #: cp/pt.cc:27166
  #, gcc-internal-format
  msgid "explicit instantiation of %q#T before definition of template"
  msgstr ""
  
! #: cp/pt.cc:27187
  #, gcc-internal-format
  msgid "ISO C++ forbids the use of %qE on explicit instantiations"
  msgstr ""
  
! #: cp/pt.cc:27227
  #, gcc-internal-format
  msgid "duplicate explicit instantiation of %q#T"
  msgstr ""
  
! #: cp/pt.cc:27557
  #, gcc-internal-format
  msgid "exception specification of %qD depends on itself"
  msgstr ""
  
! #: cp/pt.cc:27563
  #, gcc-internal-format
  msgid ""
  "exception specification of %qD is not available until end of class definition"
*************** msgstr ""
*** 70096,70107 ****
  #. member function or static data member of a class template
  #. shall be present in every translation unit in which it is
  #. explicitly instantiated.
! #: cp/pt.cc:28009
  #, gcc-internal-format
  msgid "explicit instantiation of %qD but no definition available"
  msgstr ""
  
! #: cp/pt.cc:28055
  #, gcc-internal-format
  msgid ""
  "template instantiation depth exceeds maximum of %d instantiating %q+D, "
--- 70192,70203 ----
  #. member function or static data member of a class template
  #. shall be present in every translation unit in which it is
  #. explicitly instantiated.
! #: cp/pt.cc:28039
  #, gcc-internal-format
  msgid "explicit instantiation of %qD but no definition available"
  msgstr ""
  
! #: cp/pt.cc:28085
  #, gcc-internal-format
  msgid ""
  "template instantiation depth exceeds maximum of %d instantiating %q+D, "
*************** msgid ""
*** 70109,70272 ****
  "increase the maximum)"
  msgstr ""
  
! #: cp/pt.cc:28430
  #, gcc-internal-format
  msgid ""
  "non-type template parameters of deduced class type only available with %<-"
  "std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:28460
  #, gcc-internal-format
  msgid ""
  "%qT is not a valid type for a template non-type parameter because it is not "
  "structural"
  msgstr ""
  
! #: cp/pt.cc:28469
  #, gcc-internal-format
  msgid ""
  "non-type template parameters of class type only available with %<-std=c+"
  "+20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:28477
  #, gcc-internal-format
  msgid "invalid template non-type parameter"
  msgstr ""
  
! #: cp/pt.cc:28479
  #, gcc-internal-format
  msgid "%q#T is not a valid type for a template non-type parameter"
  msgstr ""
  
! #: cp/pt.cc:29942
  #, gcc-internal-format
  msgid "keyword %<template%> not allowed in declarator-id"
  msgstr ""
  
! #: cp/pt.cc:30127
  #, gcc-internal-format
  msgid "a concept cannot be constrained"
  msgstr ""
  
! #: cp/pt.cc:30136
  #, gcc-internal-format
  msgid "concept %qE not in namespace scope"
  msgstr ""
  
! #: cp/pt.cc:30142
  #, gcc-internal-format
  msgid "concept %qE has multiple template parameter lists"
  msgstr ""
  
! #: cp/pt.cc:30186
  #, gcc-internal-format
  msgid ""
  "deducing from brace-enclosed initializer list requires %<#include "
  "<initializer_list>%>"
  msgstr ""
  
! #: cp/pt.cc:31457
  #, gcc-internal-format
  msgid "non-deducible template %qT used without template arguments"
  msgstr ""
  
! #: cp/pt.cc:31470
  #, gcc-internal-format
  msgid ""
  "alias template deduction only available with %<-std=c++20%> or %<-std=gnu+"
  "+20%>"
  msgstr ""
  
! #: cp/pt.cc:31476
  #, gcc-internal-format
  msgid "use %qD directly instead"
  msgstr ""
  
! #: cp/pt.cc:31604
  #, gcc-internal-format
  msgid ""
  "cannot deduce template arguments for copy-initialization of %qT, as it has "
  "no non-explicit deduction guides or user-declared constructors"
  msgstr ""
  
! #: cp/pt.cc:31611
  #, gcc-internal-format
  msgid ""
  "cannot deduce template arguments of %qT, as it has no viable deduction guides"
  msgstr ""
  
! #: cp/pt.cc:31624
  #, gcc-internal-format
  msgid "class template argument deduction failed:"
  msgstr ""
  
! #: cp/pt.cc:31627
  #, gcc-internal-format
  msgid "explicit deduction guides not considered for copy-initialization"
  msgstr ""
  
! #: cp/pt.cc:31642
  #, gcc-internal-format
  msgid ""
  "class template argument deduction for %qT failed: explicit deduction guide "
  "selected in copy-list-initialization"
  msgstr ""
  
! #: cp/pt.cc:31646
  #, gcc-internal-format
  msgid "explicit deduction guide declared here"
  msgstr ""
  
! #: cp/pt.cc:31661
  #, gcc-internal-format
  msgid "%qT may not intend to support class template argument deduction"
  msgstr ""
  
! #: cp/pt.cc:31663
  #, gcc-internal-format
  msgid "add a deduction guide to suppress this warning"
  msgstr ""
  
! #: cp/pt.cc:31786
  #, gcc-internal-format
  msgid "direct-list-initialization of %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/pt.cc:31789
  #, gcc-internal-format
  msgid ""
  "for deduction to %<std::initializer_list%>, use copy-list-initialization (i."
  "e. add %<=%> before the %<{%>)"
  msgstr ""
  
! #: cp/pt.cc:31849
  #, gcc-internal-format
  msgid "unable to deduce lambda return type from %qE"
  msgstr ""
  
! #: cp/pt.cc:31852
  #, gcc-internal-format
  msgid "unable to deduce %qT from %qE"
  msgstr ""
  
! #: cp/pt.cc:31927
  #, gcc-internal-format
  msgid "placeholder constraints not satisfied"
  msgstr ""
  
! #: cp/pt.cc:31931
  #, gcc-internal-format
  msgid "deduced initializer does not satisfy placeholder constraints"
  msgstr ""
  
! #: cp/pt.cc:31935
  #, gcc-internal-format
  msgid "deduced return type does not satisfy placeholder constraints"
  msgstr ""
  
! #: cp/pt.cc:31939
  #, gcc-internal-format
  msgid "deduced expression type does not satisfy placeholder constraints"
  msgstr ""
--- 70205,70368 ----
  "increase the maximum)"
  msgstr ""
  
! #: cp/pt.cc:28460
  #, gcc-internal-format
  msgid ""
  "non-type template parameters of deduced class type only available with %<-"
  "std=c++20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:28490
  #, gcc-internal-format
  msgid ""
  "%qT is not a valid type for a template non-type parameter because it is not "
  "structural"
  msgstr ""
  
! #: cp/pt.cc:28499
  #, gcc-internal-format
  msgid ""
  "non-type template parameters of class type only available with %<-std=c+"
  "+20%> or %<-std=gnu++20%>"
  msgstr ""
  
! #: cp/pt.cc:28507
  #, gcc-internal-format
  msgid "invalid template non-type parameter"
  msgstr ""
  
! #: cp/pt.cc:28509
  #, gcc-internal-format
  msgid "%q#T is not a valid type for a template non-type parameter"
  msgstr ""
  
! #: cp/pt.cc:29972
  #, gcc-internal-format
  msgid "keyword %<template%> not allowed in declarator-id"
  msgstr ""
  
! #: cp/pt.cc:30157
  #, gcc-internal-format
  msgid "a concept cannot be constrained"
  msgstr ""
  
! #: cp/pt.cc:30166
  #, gcc-internal-format
  msgid "concept %qE not in namespace scope"
  msgstr ""
  
! #: cp/pt.cc:30172
  #, gcc-internal-format
  msgid "concept %qE has multiple template parameter lists"
  msgstr ""
  
! #: cp/pt.cc:30216
  #, gcc-internal-format
  msgid ""
  "deducing from brace-enclosed initializer list requires %<#include "
  "<initializer_list>%>"
  msgstr ""
  
! #: cp/pt.cc:31487
  #, gcc-internal-format
  msgid "non-deducible template %qT used without template arguments"
  msgstr ""
  
! #: cp/pt.cc:31500
  #, gcc-internal-format
  msgid ""
  "alias template deduction only available with %<-std=c++20%> or %<-std=gnu+"
  "+20%>"
  msgstr ""
  
! #: cp/pt.cc:31506
  #, gcc-internal-format
  msgid "use %qD directly instead"
  msgstr ""
  
! #: cp/pt.cc:31634
  #, gcc-internal-format
  msgid ""
  "cannot deduce template arguments for copy-initialization of %qT, as it has "
  "no non-explicit deduction guides or user-declared constructors"
  msgstr ""
  
! #: cp/pt.cc:31641
  #, gcc-internal-format
  msgid ""
  "cannot deduce template arguments of %qT, as it has no viable deduction guides"
  msgstr ""
  
! #: cp/pt.cc:31654
  #, gcc-internal-format
  msgid "class template argument deduction failed:"
  msgstr ""
  
! #: cp/pt.cc:31657
  #, gcc-internal-format
  msgid "explicit deduction guides not considered for copy-initialization"
  msgstr ""
  
! #: cp/pt.cc:31672
  #, gcc-internal-format
  msgid ""
  "class template argument deduction for %qT failed: explicit deduction guide "
  "selected in copy-list-initialization"
  msgstr ""
  
! #: cp/pt.cc:31676
  #, gcc-internal-format
  msgid "explicit deduction guide declared here"
  msgstr ""
  
! #: cp/pt.cc:31691
  #, gcc-internal-format
  msgid "%qT may not intend to support class template argument deduction"
  msgstr ""
  
! #: cp/pt.cc:31693
  #, gcc-internal-format
  msgid "add a deduction guide to suppress this warning"
  msgstr ""
  
! #: cp/pt.cc:31816
  #, gcc-internal-format
  msgid "direct-list-initialization of %<auto%> requires exactly one element"
  msgstr ""
  
! #: cp/pt.cc:31819
  #, gcc-internal-format
  msgid ""
  "for deduction to %<std::initializer_list%>, use copy-list-initialization (i."
  "e. add %<=%> before the %<{%>)"
  msgstr ""
  
! #: cp/pt.cc:31879
  #, gcc-internal-format
  msgid "unable to deduce lambda return type from %qE"
  msgstr ""
  
! #: cp/pt.cc:31882
  #, gcc-internal-format
  msgid "unable to deduce %qT from %qE"
  msgstr ""
  
! #: cp/pt.cc:31957
  #, gcc-internal-format
  msgid "placeholder constraints not satisfied"
  msgstr ""
  
! #: cp/pt.cc:31961
  #, gcc-internal-format
  msgid "deduced initializer does not satisfy placeholder constraints"
  msgstr ""
  
! #: cp/pt.cc:31965
  #, gcc-internal-format
  msgid "deduced return type does not satisfy placeholder constraints"
  msgstr ""
  
! #: cp/pt.cc:31969
  #, gcc-internal-format
  msgid "deduced expression type does not satisfy placeholder constraints"
  msgstr ""
*************** msgid ""
*** 70288,70309 ****
  "variable size"
  msgstr ""
  
! #: cp/rtti.cc:520
  #, gcc-internal-format
  msgid "%<typeid%> of qualified function type %qT"
  msgstr ""
  
! #: cp/rtti.cc:710 cp/rtti.cc:726
  #, gcc-internal-format
  msgid "%<dynamic_cast<%#T>(%#D)%> can never succeed"
  msgstr ""
  
! #: cp/rtti.cc:738
  #, gcc-internal-format
  msgid "%<dynamic_cast%> not permitted with %<-fno-rtti%>"
  msgstr ""
  
! #: cp/rtti.cc:820
  #, gcc-internal-format
  msgid "cannot %<dynamic_cast%> %qE (of type %q#T) to type %q#T (%s)"
  msgstr ""
--- 70384,70405 ----
  "variable size"
  msgstr ""
  
! #: cp/rtti.cc:521
  #, gcc-internal-format
  msgid "%<typeid%> of qualified function type %qT"
  msgstr ""
  
! #: cp/rtti.cc:711 cp/rtti.cc:727
  #, gcc-internal-format
  msgid "%<dynamic_cast<%#T>(%#D)%> can never succeed"
  msgstr ""
  
! #: cp/rtti.cc:739
  #, gcc-internal-format
  msgid "%<dynamic_cast%> not permitted with %<-fno-rtti%>"
  msgstr ""
  
! #: cp/rtti.cc:821
  #, gcc-internal-format
  msgid "cannot %<dynamic_cast%> %qE (of type %q#T) to type %q#T (%s)"
  msgstr ""
*************** msgstr ""
*** 71613,71935 ****
  msgid "subscript missing in array reference"
  msgstr ""
  
! #: cp/typeck.cc:4084
  #, gcc-internal-format
  msgid "subscripting array declared %<register%>"
  msgstr ""
  
! #: cp/typeck.cc:4124
  #, gcc-internal-format
  msgid "subscripted value is neither array nor pointer"
  msgstr ""
  
! #: cp/typeck.cc:4196
  #, gcc-internal-format
  msgid "object missing in use of %qE"
  msgstr ""
  
! #: cp/typeck.cc:4447
  #, gcc-internal-format
  msgid "ISO C++ forbids calling %<::main%> from within program"
  msgstr ""
  
! #: cp/typeck.cc:4468
  #, gcc-internal-format
  msgid ""
  "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E "
  "(...)%>, e.g. %<(... ->* %E) (...)%>"
  msgstr ""
  
! #: cp/typeck.cc:4485
  #, gcc-internal-format
  msgid "%qE cannot be used as a function"
  msgstr ""
  
! #: cp/typeck.cc:4488
  #, gcc-internal-format
  msgid "%qD cannot be used as a function"
  msgstr ""
  
! #: cp/typeck.cc:4491
  #, gcc-internal-format
  msgid "expression cannot be used as a function"
  msgstr ""
  
! #: cp/typeck.cc:4553
  #, gcc-internal-format
  msgid "too many arguments to constructor %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4554
  #, gcc-internal-format
  msgid "too few arguments to constructor %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4559
  #, gcc-internal-format
  msgid "too many arguments to member function %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4560
  #, gcc-internal-format
  msgid "too few arguments to member function %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4566
  #, gcc-internal-format
  msgid "too many arguments to function %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4567
  #, gcc-internal-format
  msgid "too few arguments to function %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4577
  #, gcc-internal-format
  msgid "too many arguments to method %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4578
  #, gcc-internal-format
  msgid "too few arguments to method %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4581
  #, gcc-internal-format
  msgid "too many arguments to function"
  msgstr ""
  
! #: cp/typeck.cc:4582
  #, gcc-internal-format
  msgid "too few arguments to function"
  msgstr ""
  
! #: cp/typeck.cc:4664
  #, gcc-internal-format
  msgid "parameter %P of %qD has incomplete type %qT"
  msgstr ""
  
! #: cp/typeck.cc:4670
  #, gcc-internal-format
  msgid "parameter %P has incomplete type %qT"
  msgstr ""
  
! #: cp/typeck.cc:4984
  #, gcc-internal-format
  msgid "the address %qE will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5031
  #, gcc-internal-format
  msgid "the address of %qD will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5046
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qE will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5049
  #, gcc-internal-format
  msgid "comparing the result of pointer addition %qE and NULL"
  msgstr ""
  
! #: cp/typeck.cc:5064
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5123
  #, gcc-internal-format
  msgid "bitwise operation between different enumeration types %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:5126
  #, gcc-internal-format
  msgid ""
  "bitwise operation between different enumeration types %qT and %qT is "
  "deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5132
  #, gcc-internal-format
  msgid "arithmetic between different enumeration types %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:5135
  #, gcc-internal-format
  msgid ""
  "arithmetic between different enumeration types %qT and %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5172
  #, gcc-internal-format
  msgid "comparison of enumeration type %qT with floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5175
  #, gcc-internal-format
  msgid "comparison of floating-point type %qT with enumeration type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5178
  #, gcc-internal-format
  msgid ""
  "comparison of enumeration type %qT with floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5182
  #, gcc-internal-format
  msgid ""
  "comparison of floating-point type %qT with enumeration type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5191
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5194
  #, gcc-internal-format
  msgid "arithmetic between floating-point type %qT and enumeration type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5197
  #, gcc-internal-format
  msgid ""
  "arithmetic between enumeration type %qT and floating-point type %qT is "
  "deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5201
  #, gcc-internal-format
  msgid ""
  "arithmetic between floating-point type %qT and enumeration type %qT is "
  "deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5336 cp/typeck.cc:5348
  #, gcc-internal-format
  msgid "assuming cast to type %qT from overloaded function"
  msgstr ""
  
! #: cp/typeck.cc:5462
  #, gcc-internal-format
  msgid "NULL used in arithmetic"
  msgstr ""
  
! #: cp/typeck.cc:5929 cp/typeck.cc:5938 cp/typeck.cc:6244 cp/typeck.cc:6253
  #, gcc-internal-format
  msgid "ISO C++ forbids comparison between pointer and integer"
  msgstr ""
  
! #: cp/typeck.cc:6165 cp/typeck.cc:6179
  #, gcc-internal-format
  msgid "operand types are %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:6202
  #, gcc-internal-format
  msgid "three-way comparison of vectors"
  msgstr ""
  
! #: cp/typeck.cc:6236
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero (%qT and %qT)"
  msgstr ""
  
! #: cp/typeck.cc:6283
  #, gcc-internal-format
  msgid "unordered comparison on non-floating-point argument"
  msgstr ""
  
! #: cp/typeck.cc:6349
  msgid ""
  "implicit conversion from %qH to %qI to match other operand of binary "
  "expression"
  msgstr ""
  
! #: cp/typeck.cc:6458
  #, gcc-internal-format
  msgid "invalid operands of types %qT and %qT to binary %qO"
  msgstr ""
  
! #: cp/typeck.cc:6859
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6867
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a function in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6875
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a method in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6928
  #, gcc-internal-format
  msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
  msgstr ""
  
! #: cp/typeck.cc:7005
  #, gcc-internal-format
  msgid "taking address of constructor %qD"
  msgstr ""
  
! #: cp/typeck.cc:7006
  #, gcc-internal-format
  msgid "taking address of destructor %qD"
  msgstr ""
  
! #: cp/typeck.cc:7023
  #, gcc-internal-format
  msgid "invalid use of %qE to form a pointer-to-member-function"
  msgstr ""
  
! #: cp/typeck.cc:7026
  #, gcc-internal-format
  msgid "  a qualified-id is required"
  msgstr ""
  
! #: cp/typeck.cc:7033
  #, gcc-internal-format
  msgid ""
  "parentheses around %qE cannot be used to form a pointer-to-member-function"
  msgstr ""
  
! #: cp/typeck.cc:7228
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of an unqualified or parenthesized non-"
  "static member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr ""
  
! #: cp/typeck.cc:7234
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of an unqualified or parenthesized non-"
  "static member function to form a pointer to explicit object member function"
  msgstr ""
  
! #: cp/typeck.cc:7240
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of a bound member function to form a "
  "pointer to member function.  Say %<&%T::%D%>"
  msgstr ""
  
! #: cp/typeck.cc:7246
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of a bound member function to form a "
  "pointer to explicit object member function"
  msgstr ""
  
! #: cp/typeck.cc:7251
  #, gcc-internal-format
  msgid ""
  "a pointer to explicit object member function can only be formed with %<&%T::"
--- 71709,72031 ----
  msgid "subscript missing in array reference"
  msgstr ""
  
! #: cp/typeck.cc:4200
  #, gcc-internal-format
  msgid "subscripting array declared %<register%>"
  msgstr ""
  
! #: cp/typeck.cc:4240
  #, gcc-internal-format
  msgid "subscripted value is neither array nor pointer"
  msgstr ""
  
! #: cp/typeck.cc:4312
  #, gcc-internal-format
  msgid "object missing in use of %qE"
  msgstr ""
  
! #: cp/typeck.cc:4563
  #, gcc-internal-format
  msgid "ISO C++ forbids calling %<::main%> from within program"
  msgstr ""
  
! #: cp/typeck.cc:4584
  #, gcc-internal-format
  msgid ""
  "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E "
  "(...)%>, e.g. %<(... ->* %E) (...)%>"
  msgstr ""
  
! #: cp/typeck.cc:4601
  #, gcc-internal-format
  msgid "%qE cannot be used as a function"
  msgstr ""
  
! #: cp/typeck.cc:4604
  #, gcc-internal-format
  msgid "%qD cannot be used as a function"
  msgstr ""
  
! #: cp/typeck.cc:4607
  #, gcc-internal-format
  msgid "expression cannot be used as a function"
  msgstr ""
  
! #: cp/typeck.cc:4669
  #, gcc-internal-format
  msgid "too many arguments to constructor %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4670
  #, gcc-internal-format
  msgid "too few arguments to constructor %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4675
  #, gcc-internal-format
  msgid "too many arguments to member function %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4676
  #, gcc-internal-format
  msgid "too few arguments to member function %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4682
  #, gcc-internal-format
  msgid "too many arguments to function %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4683
  #, gcc-internal-format
  msgid "too few arguments to function %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4693
  #, gcc-internal-format
  msgid "too many arguments to method %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4694
  #, gcc-internal-format
  msgid "too few arguments to method %q#D"
  msgstr ""
  
! #: cp/typeck.cc:4697
  #, gcc-internal-format
  msgid "too many arguments to function"
  msgstr ""
  
! #: cp/typeck.cc:4698
  #, gcc-internal-format
  msgid "too few arguments to function"
  msgstr ""
  
! #: cp/typeck.cc:4780
  #, gcc-internal-format
  msgid "parameter %P of %qD has incomplete type %qT"
  msgstr ""
  
! #: cp/typeck.cc:4786
  #, gcc-internal-format
  msgid "parameter %P has incomplete type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5100
  #, gcc-internal-format
  msgid "the address %qE will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5147
  #, gcc-internal-format
  msgid "the address of %qD will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5162
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qE will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5165
  #, gcc-internal-format
  msgid "comparing the result of pointer addition %qE and NULL"
  msgstr ""
  
! #: cp/typeck.cc:5180
  #, gcc-internal-format
  msgid "the compiler can assume that the address of %qD will never be NULL"
  msgstr ""
  
! #: cp/typeck.cc:5239
  #, gcc-internal-format
  msgid "bitwise operation between different enumeration types %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:5242
  #, gcc-internal-format
  msgid ""
  "bitwise operation between different enumeration types %qT and %qT is "
  "deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5248
  #, gcc-internal-format
  msgid "arithmetic between different enumeration types %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:5251
  #, gcc-internal-format
  msgid ""
  "arithmetic between different enumeration types %qT and %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5288
  #, gcc-internal-format
  msgid "comparison of enumeration type %qT with floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5291
  #, gcc-internal-format
  msgid "comparison of floating-point type %qT with enumeration type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5294
  #, gcc-internal-format
  msgid ""
  "comparison of enumeration type %qT with floating-point type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5298
  #, gcc-internal-format
  msgid ""
  "comparison of floating-point type %qT with enumeration type %qT is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5307
  #, gcc-internal-format
  msgid "arithmetic between enumeration type %qT and floating-point type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5310
  #, gcc-internal-format
  msgid "arithmetic between floating-point type %qT and enumeration type %qT"
  msgstr ""
  
! #: cp/typeck.cc:5313
  #, gcc-internal-format
  msgid ""
  "arithmetic between enumeration type %qT and floating-point type %qT is "
  "deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5317
  #, gcc-internal-format
  msgid ""
  "arithmetic between floating-point type %qT and enumeration type %qT is "
  "deprecated"
  msgstr ""
  
! #: cp/typeck.cc:5452 cp/typeck.cc:5464
  #, gcc-internal-format
  msgid "assuming cast to type %qT from overloaded function"
  msgstr ""
  
! #: cp/typeck.cc:5578
  #, gcc-internal-format
  msgid "NULL used in arithmetic"
  msgstr ""
  
! #: cp/typeck.cc:6045 cp/typeck.cc:6054 cp/typeck.cc:6360 cp/typeck.cc:6369
  #, gcc-internal-format
  msgid "ISO C++ forbids comparison between pointer and integer"
  msgstr ""
  
! #: cp/typeck.cc:6281 cp/typeck.cc:6295
  #, gcc-internal-format
  msgid "operand types are %qT and %qT"
  msgstr ""
  
! #: cp/typeck.cc:6318
  #, gcc-internal-format
  msgid "three-way comparison of vectors"
  msgstr ""
  
! #: cp/typeck.cc:6352
  #, gcc-internal-format
  msgid "ordered comparison of pointer with integer zero (%qT and %qT)"
  msgstr ""
  
! #: cp/typeck.cc:6399
  #, gcc-internal-format
  msgid "unordered comparison on non-floating-point argument"
  msgstr ""
  
! #: cp/typeck.cc:6465
  msgid ""
  "implicit conversion from %qH to %qI to match other operand of binary "
  "expression"
  msgstr ""
  
! #: cp/typeck.cc:6574
  #, gcc-internal-format
  msgid "invalid operands of types %qT and %qT to binary %qO"
  msgstr ""
  
! #: cp/typeck.cc:6975
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6983
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a function in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:6991
  #, gcc-internal-format
  msgid "ISO C++ forbids using pointer to a method in subtraction"
  msgstr ""
  
! #: cp/typeck.cc:7044
  #, gcc-internal-format
  msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
  msgstr ""
  
! #: cp/typeck.cc:7121
  #, gcc-internal-format
  msgid "taking address of constructor %qD"
  msgstr ""
  
! #: cp/typeck.cc:7122
  #, gcc-internal-format
  msgid "taking address of destructor %qD"
  msgstr ""
  
! #: cp/typeck.cc:7139
  #, gcc-internal-format
  msgid "invalid use of %qE to form a pointer-to-member-function"
  msgstr ""
  
! #: cp/typeck.cc:7142
  #, gcc-internal-format
  msgid "  a qualified-id is required"
  msgstr ""
  
! #: cp/typeck.cc:7149
  #, gcc-internal-format
  msgid ""
  "parentheses around %qE cannot be used to form a pointer-to-member-function"
  msgstr ""
  
! #: cp/typeck.cc:7344
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of an unqualified or parenthesized non-"
  "static member function to form a pointer to member function.  Say %<&%T::%D%>"
  msgstr ""
  
! #: cp/typeck.cc:7350
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of an unqualified or parenthesized non-"
  "static member function to form a pointer to explicit object member function"
  msgstr ""
  
! #: cp/typeck.cc:7356
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of a bound member function to form a "
  "pointer to member function.  Say %<&%T::%D%>"
  msgstr ""
  
! #: cp/typeck.cc:7362
  #, gcc-internal-format
  msgid ""
  "ISO C++ forbids taking the address of a bound member function to form a "
  "pointer to explicit object member function"
  msgstr ""
  
! #: cp/typeck.cc:7367
  #, gcc-internal-format
  msgid ""
  "a pointer to explicit object member function can only be formed with %<&%T::"
*************** msgid ""
*** 71937,72399 ****
  msgstr ""
  
  #. Make this a permerror because we used to accept it.
! #: cp/typeck.cc:7284
  #, gcc-internal-format
  msgid "taking address of rvalue"
  msgstr ""
  
! #: cp/typeck.cc:7301
  #, gcc-internal-format
  msgid "ISO C++ forbids taking address of function %<::main%>"
  msgstr ""
  
! #: cp/typeck.cc:7359
  #, gcc-internal-format
  msgid "cannot create pointer to reference member %qD"
  msgstr ""
  
! #: cp/typeck.cc:7394 cp/typeck.cc:7976 rust/backend/rust-tree.cc:4701
  #, gcc-internal-format
  msgid "attempt to take address of bit-field"
  msgstr ""
  
! #: cp/typeck.cc:7561
  #, gcc-internal-format
  msgid "%<~%> on an expression of type %<bool%>"
  msgstr ""
  
! #: cp/typeck.cc:7562
  #, gcc-internal-format
  msgid "did you mean to use logical not (%<!%>)?"
  msgstr ""
  
! #: cp/typeck.cc:7695
  #, gcc-internal-format
  msgid "ISO C++ forbids incrementing an enum"
  msgstr ""
  
! #: cp/typeck.cc:7696
  #, gcc-internal-format
  msgid "ISO C++ forbids decrementing an enum"
  msgstr ""
  
! #: cp/typeck.cc:7712
  #, gcc-internal-format
  msgid "cannot increment a pointer to incomplete type %qT"
  msgstr ""
  
! #: cp/typeck.cc:7714
  #, gcc-internal-format
  msgid "cannot decrement a pointer to incomplete type %qT"
  msgstr ""
  
! #: cp/typeck.cc:7726
  #, gcc-internal-format
  msgid "ISO C++ forbids incrementing a pointer of type %qT"
  msgstr ""
  
! #: cp/typeck.cc:7728
  #, gcc-internal-format
  msgid "ISO C++ forbids decrementing a pointer of type %qT"
  msgstr ""
  
! #: cp/typeck.cc:7768
  #, gcc-internal-format
  msgid "%qs expression of %<volatile%>-qualified type is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:7781
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator--%> is forbidden"
  msgstr ""
  
! #: cp/typeck.cc:7791
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is forbidden in C++17"
  msgstr ""
  
! #: cp/typeck.cc:7799
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:7988 rust/backend/rust-tree.cc:4713
  #, gcc-internal-format
  msgid "cannot take the address of %<this%>, which is an rvalue expression"
  msgstr ""
  
! #: cp/typeck.cc:8010 d/d-codegen.cc:759 rust/backend/rust-tree.cc:4732
  #, gcc-internal-format
  msgid "address of explicit register variable %qD requested"
  msgstr ""
  
! #: cp/typeck.cc:8015 rust/backend/rust-tree.cc:4739
  #, gcc-internal-format
  msgid "address requested for %qD, which is declared %<register%>"
  msgstr ""
  
! #: cp/typeck.cc:8086
  #, gcc-internal-format
  msgid "list-initializer for non-class type must not be parenthesized"
  msgstr ""
  
! #: cp/typeck.cc:8098
  #, gcc-internal-format
  msgid "expression list treated as compound expression in initializer"
  msgstr ""
  
! #: cp/typeck.cc:8102
  #, gcc-internal-format
  msgid "expression list treated as compound expression in mem-initializer"
  msgstr ""
  
! #: cp/typeck.cc:8106
  #, gcc-internal-format
  msgid "expression list treated as compound expression in functional cast"
  msgstr ""
  
! #: cp/typeck.cc:8144
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expression list treated as compound expression"
  msgstr ""
  
! #: cp/typeck.cc:8247
  #, gcc-internal-format
  msgid "no context to resolve type of %qE"
  msgstr ""
  
! #: cp/typeck.cc:8284
  #, gcc-internal-format
  msgid "cast from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8290
  #, gcc-internal-format
  msgid "%<static_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8297
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8323
  #, gcc-internal-format
  msgid "useless cast to type %q#T"
  msgstr ""
  
! #: cp/typeck.cc:8337
  #, gcc-internal-format
  msgid "type qualifiers ignored on cast result type"
  msgstr ""
  
! #: cp/typeck.cc:8786
  #, gcc-internal-format
  msgid "invalid %<static_cast%> from type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:8792 cp/typeck.cc:8798 cp/typeck.cc:10522
  #, gcc-internal-format
  msgid "class type %qT is incomplete"
  msgstr ""
  
! #: cp/typeck.cc:8826
  msgid "converting from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:8901
  #, gcc-internal-format
  msgid "invalid cast of a prvalue expression of type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:8971
  msgid "cast from %qH to %qI loses precision"
  msgstr ""
  
! #: cp/typeck.cc:8996
  msgid "cast between incompatible function types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9007
  msgid "cast between incompatible pointer to member types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9028 cp/typeck.cc:9218
  msgid "cast from %qH to %qI increases required alignment of target type"
  msgstr ""
  
! #: cp/typeck.cc:9045
  #, gcc-internal-format
  msgid ""
  "casting between pointer-to-function and pointer-to-object is conditionally-"
  "supported"
  msgstr ""
  
! #: cp/typeck.cc:9059
  #, gcc-internal-format
  msgid "invalid cast from type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9132
  #, gcc-internal-format
  msgid ""
  "invalid use of %<const_cast%> with type %qT, which is not a pointer, "
  "reference, nor a pointer-to-data-member type"
  msgstr ""
  
! #: cp/typeck.cc:9141
  #, gcc-internal-format
  msgid ""
  "invalid use of %<const_cast%> with type %qT, which is a pointer or reference "
  "to a function type"
  msgstr ""
  
! #: cp/typeck.cc:9183
  #, gcc-internal-format
  msgid "invalid %<const_cast%> of an rvalue of type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9253
  #, gcc-internal-format
  msgid "invalid %<const_cast%> from type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9354 cp/typeck.cc:9363
  #, gcc-internal-format
  msgid "ISO C++ forbids casting to an array type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9372
  #, gcc-internal-format
  msgid "invalid cast to function type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9488
  #, gcc-internal-format
  msgid "moving %qE of type %qT to itself"
  msgstr ""
  
! #: cp/typeck.cc:9753
  #, gcc-internal-format
  msgid "  in evaluation of %<%Q(%#T, %#T)%>"
  msgstr ""
  
! #: cp/typeck.cc:9814
  #, gcc-internal-format
  msgid "assigning to an array from an initializer list"
  msgstr ""
  
! #: cp/typeck.cc:9841
  #, gcc-internal-format
  msgid "incompatible types in assignment of %qT to %qT"
  msgstr ""
  
! #: cp/typeck.cc:9857
  #, gcc-internal-format
  msgid "array used as initializer"
  msgstr ""
  
! #: cp/typeck.cc:9859
  #, gcc-internal-format
  msgid "invalid array assignment"
  msgstr ""
  
! #: cp/typeck.cc:9995
  #, gcc-internal-format
  msgid "   in pointer to member function conversion"
  msgstr ""
  
! #: cp/typeck.cc:10009
  #, gcc-internal-format
  msgid "pointer to member conversion via virtual base %qT"
  msgstr ""
  
! #: cp/typeck.cc:10057 cp/typeck.cc:10076
  #, gcc-internal-format
  msgid "   in pointer to member conversion"
  msgstr ""
  
! #: cp/typeck.cc:10157
  #, gcc-internal-format
  msgid "invalid conversion to type %qT from type %qT"
  msgstr ""
  
! #: cp/typeck.cc:10481
  msgid "cannot convert %qH to %qI in default argument"
  msgstr ""
  
! #: cp/typeck.cc:10486
  msgid "cannot convert %qH to %qI in argument passing"
  msgstr ""
  
! #: cp/typeck.cc:10495
  msgid "cannot convert %qH to %qI in initialization"
  msgstr ""
  
! #: cp/typeck.cc:10499
  msgid "cannot convert %qH to %qI in return"
  msgstr ""
  
! #: cp/typeck.cc:10504
  msgid "cannot convert %qH to %qI in assignment"
  msgstr ""
  
! #: cp/typeck.cc:10540
  #, gcc-internal-format
  msgid "parameter %qP of %qD might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10544
  #, gcc-internal-format
  msgid "parameter might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10549
  #, gcc-internal-format
  msgid "target of conversion might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10554
  #, gcc-internal-format
  msgid "target of initialization might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10564
  #, gcc-internal-format
  msgid ""
  "left-hand side of assignment might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10650
  #, gcc-internal-format
  msgid "in passing argument %P of %qD"
  msgstr ""
  
! #: cp/typeck.cc:10734
  #, gcc-internal-format
  msgid "returning reference to temporary"
  msgstr ""
  
! #: cp/typeck.cc:10737
  #, gcc-internal-format
  msgid "returning pointer to temporary"
  msgstr ""
  
! #: cp/typeck.cc:10740
  #, gcc-internal-format
  msgid ""
  "returning temporary %<initializer_list%> does not extend the lifetime of the "
  "underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10775
  #, gcc-internal-format
  msgid "reference to local variable %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:10779
  #, gcc-internal-format
  msgid ""
  "returning local %<initializer_list%> variable %qD does not extend the "
  "lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10785
  #, gcc-internal-format
  msgid "address of label %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:10789
  #, gcc-internal-format
  msgid "address of local variable %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:11049
  #, gcc-internal-format
  msgid "moving a temporary object prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11050 cp/typeck.cc:11066 cp/typeck.cc:11091 cp/typeck.cc:11128
  #, gcc-internal-format
  msgid "remove %<std::move%> call"
  msgstr ""
  
! #: cp/typeck.cc:11064
  #, gcc-internal-format
  msgid "moving a local object in a return statement prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11090 cp/typeck.cc:11125
  #, gcc-internal-format
  msgid "redundant move in return statement"
  msgstr ""
  
! #: cp/typeck.cc:11127
  #, gcc-internal-format
  msgid "redundant move in initialization"
  msgstr ""
  
! #: cp/typeck.cc:11165
  #, gcc-internal-format
  msgid "returning a value from a destructor"
  msgstr ""
  
  #. If a return statement appears in a handler of the
  #. function-try-block of a constructor, the program is ill-formed.
! #: cp/typeck.cc:11177
  #, gcc-internal-format
  msgid "cannot return from a handler of a function-try-block of a constructor"
  msgstr ""
  
  #. You can't return a value from a constructor.
! #: cp/typeck.cc:11180
  #, gcc-internal-format
  msgid "returning a value from a constructor"
  msgstr ""
  
! #: cp/typeck.cc:11220 cp/typeck.cc:11266
  #, gcc-internal-format
  msgid "return-statement with no value, in function returning %qT"
  msgstr ""
  
! #: cp/typeck.cc:11228
  #, gcc-internal-format
  msgid "returning initializer list"
  msgstr ""
  
! #: cp/typeck.cc:11247
  #, gcc-internal-format
  msgid "inconsistent types %qT and %qT deduced for lambda return type"
  msgstr ""
  
! #: cp/typeck.cc:11250
  #, gcc-internal-format
  msgid "inconsistent deduction for auto return type: %qT and then %qT"
  msgstr ""
  
! #: cp/typeck.cc:11287
  #, gcc-internal-format
  msgid "return-statement with a value, in function returning %qT"
  msgstr ""
  
! #: cp/typeck.cc:11316
  #, gcc-internal-format
  msgid ""
  "%<operator new%> must not return NULL unless it is declared %<throw()%> (or "
  "%<-fcheck-new%> is in effect)"
  msgstr ""
  
! #: cp/typeck.cc:11405
  #, gcc-internal-format
  msgid "not eliding copy on return from %qD"
  msgstr ""
  
! #: cp/typeck.cc:11417
  #, gcc-internal-format
  msgid "not eliding copy on return in %qD"
  msgstr ""
  
! #: cp/typeck.cc:11997
  #, gcc-internal-format
  msgid "using rvalue as lvalue"
  msgstr ""
--- 72033,72495 ----
  msgstr ""
  
  #. Make this a permerror because we used to accept it.
! #: cp/typeck.cc:7400
  #, gcc-internal-format
  msgid "taking address of rvalue"
  msgstr ""
  
! #: cp/typeck.cc:7417
  #, gcc-internal-format
  msgid "ISO C++ forbids taking address of function %<::main%>"
  msgstr ""
  
! #: cp/typeck.cc:7475
  #, gcc-internal-format
  msgid "cannot create pointer to reference member %qD"
  msgstr ""
  
! #: cp/typeck.cc:7510 cp/typeck.cc:8092 rust/backend/rust-tree.cc:4701
  #, gcc-internal-format
  msgid "attempt to take address of bit-field"
  msgstr ""
  
! #: cp/typeck.cc:7677
  #, gcc-internal-format
  msgid "%<~%> on an expression of type %<bool%>"
  msgstr ""
  
! #: cp/typeck.cc:7678
  #, gcc-internal-format
  msgid "did you mean to use logical not (%<!%>)?"
  msgstr ""
  
! #: cp/typeck.cc:7811
  #, gcc-internal-format
  msgid "ISO C++ forbids incrementing an enum"
  msgstr ""
  
! #: cp/typeck.cc:7812
  #, gcc-internal-format
  msgid "ISO C++ forbids decrementing an enum"
  msgstr ""
  
! #: cp/typeck.cc:7828
  #, gcc-internal-format
  msgid "cannot increment a pointer to incomplete type %qT"
  msgstr ""
  
! #: cp/typeck.cc:7830
  #, gcc-internal-format
  msgid "cannot decrement a pointer to incomplete type %qT"
  msgstr ""
  
! #: cp/typeck.cc:7842
  #, gcc-internal-format
  msgid "ISO C++ forbids incrementing a pointer of type %qT"
  msgstr ""
  
! #: cp/typeck.cc:7844
  #, gcc-internal-format
  msgid "ISO C++ forbids decrementing a pointer of type %qT"
  msgstr ""
  
! #: cp/typeck.cc:7884
  #, gcc-internal-format
  msgid "%qs expression of %<volatile%>-qualified type is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:7897
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator--%> is forbidden"
  msgstr ""
  
! #: cp/typeck.cc:7907
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is forbidden in C++17"
  msgstr ""
  
! #: cp/typeck.cc:7915
  #, gcc-internal-format
  msgid "use of an operand of type %qT in %<operator++%> is deprecated"
  msgstr ""
  
! #: cp/typeck.cc:8104 rust/backend/rust-tree.cc:4713
  #, gcc-internal-format
  msgid "cannot take the address of %<this%>, which is an rvalue expression"
  msgstr ""
  
! #: cp/typeck.cc:8126 d/d-codegen.cc:759 rust/backend/rust-tree.cc:4732
  #, gcc-internal-format
  msgid "address of explicit register variable %qD requested"
  msgstr ""
  
! #: cp/typeck.cc:8131 rust/backend/rust-tree.cc:4739
  #, gcc-internal-format
  msgid "address requested for %qD, which is declared %<register%>"
  msgstr ""
  
! #: cp/typeck.cc:8202
  #, gcc-internal-format
  msgid "list-initializer for non-class type must not be parenthesized"
  msgstr ""
  
! #: cp/typeck.cc:8214
  #, gcc-internal-format
  msgid "expression list treated as compound expression in initializer"
  msgstr ""
  
! #: cp/typeck.cc:8218
  #, gcc-internal-format
  msgid "expression list treated as compound expression in mem-initializer"
  msgstr ""
  
! #: cp/typeck.cc:8222
  #, gcc-internal-format
  msgid "expression list treated as compound expression in functional cast"
  msgstr ""
  
! #: cp/typeck.cc:8260
  #, gcc-internal-format, gfc-internal-format
  msgid "%s expression list treated as compound expression"
  msgstr ""
  
! #: cp/typeck.cc:8363
  #, gcc-internal-format
  msgid "no context to resolve type of %qE"
  msgstr ""
  
! #: cp/typeck.cc:8400
  #, gcc-internal-format
  msgid "cast from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8406
  #, gcc-internal-format
  msgid "%<static_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8413
  #, gcc-internal-format
  msgid "%<reinterpret_cast%> from type %qT to type %qT casts away qualifiers"
  msgstr ""
  
! #: cp/typeck.cc:8439
  #, gcc-internal-format
  msgid "useless cast to type %q#T"
  msgstr ""
  
! #: cp/typeck.cc:8453
  #, gcc-internal-format
  msgid "type qualifiers ignored on cast result type"
  msgstr ""
  
! #: cp/typeck.cc:8902
  #, gcc-internal-format
  msgid "invalid %<static_cast%> from type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:8908 cp/typeck.cc:8914 cp/typeck.cc:10638
  #, gcc-internal-format
  msgid "class type %qT is incomplete"
  msgstr ""
  
! #: cp/typeck.cc:8942
  msgid "converting from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9017
  #, gcc-internal-format
  msgid "invalid cast of a prvalue expression of type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9087
  msgid "cast from %qH to %qI loses precision"
  msgstr ""
  
! #: cp/typeck.cc:9112
  msgid "cast between incompatible function types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9123
  msgid "cast between incompatible pointer to member types from %qH to %qI"
  msgstr ""
  
! #: cp/typeck.cc:9144 cp/typeck.cc:9334
  msgid "cast from %qH to %qI increases required alignment of target type"
  msgstr ""
  
! #: cp/typeck.cc:9161
  #, gcc-internal-format
  msgid ""
  "casting between pointer-to-function and pointer-to-object is conditionally-"
  "supported"
  msgstr ""
  
! #: cp/typeck.cc:9175
  #, gcc-internal-format
  msgid "invalid cast from type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9248
  #, gcc-internal-format
  msgid ""
  "invalid use of %<const_cast%> with type %qT, which is not a pointer, "
  "reference, nor a pointer-to-data-member type"
  msgstr ""
  
! #: cp/typeck.cc:9257
  #, gcc-internal-format
  msgid ""
  "invalid use of %<const_cast%> with type %qT, which is a pointer or reference "
  "to a function type"
  msgstr ""
  
! #: cp/typeck.cc:9299
  #, gcc-internal-format
  msgid "invalid %<const_cast%> of an rvalue of type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9369
  #, gcc-internal-format
  msgid "invalid %<const_cast%> from type %qT to type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9470 cp/typeck.cc:9479
  #, gcc-internal-format
  msgid "ISO C++ forbids casting to an array type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9488
  #, gcc-internal-format
  msgid "invalid cast to function type %qT"
  msgstr ""
  
! #: cp/typeck.cc:9604
  #, gcc-internal-format
  msgid "moving %qE of type %qT to itself"
  msgstr ""
  
! #: cp/typeck.cc:9869
  #, gcc-internal-format
  msgid "  in evaluation of %<%Q(%#T, %#T)%>"
  msgstr ""
  
! #: cp/typeck.cc:9930
  #, gcc-internal-format
  msgid "assigning to an array from an initializer list"
  msgstr ""
  
! #: cp/typeck.cc:9957
  #, gcc-internal-format
  msgid "incompatible types in assignment of %qT to %qT"
  msgstr ""
  
! #: cp/typeck.cc:9973
  #, gcc-internal-format
  msgid "array used as initializer"
  msgstr ""
  
! #: cp/typeck.cc:9975
  #, gcc-internal-format
  msgid "invalid array assignment"
  msgstr ""
  
! #: cp/typeck.cc:10111
  #, gcc-internal-format
  msgid "   in pointer to member function conversion"
  msgstr ""
  
! #: cp/typeck.cc:10125
  #, gcc-internal-format
  msgid "pointer to member conversion via virtual base %qT"
  msgstr ""
  
! #: cp/typeck.cc:10173 cp/typeck.cc:10192
  #, gcc-internal-format
  msgid "   in pointer to member conversion"
  msgstr ""
  
! #: cp/typeck.cc:10273
  #, gcc-internal-format
  msgid "invalid conversion to type %qT from type %qT"
  msgstr ""
  
! #: cp/typeck.cc:10597
  msgid "cannot convert %qH to %qI in default argument"
  msgstr ""
  
! #: cp/typeck.cc:10602
  msgid "cannot convert %qH to %qI in argument passing"
  msgstr ""
  
! #: cp/typeck.cc:10611
  msgid "cannot convert %qH to %qI in initialization"
  msgstr ""
  
! #: cp/typeck.cc:10615
  msgid "cannot convert %qH to %qI in return"
  msgstr ""
  
! #: cp/typeck.cc:10620
  msgid "cannot convert %qH to %qI in assignment"
  msgstr ""
  
! #: cp/typeck.cc:10656
  #, gcc-internal-format
  msgid "parameter %qP of %qD might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10660
  #, gcc-internal-format
  msgid "parameter might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10665
  #, gcc-internal-format
  msgid "target of conversion might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10670
  #, gcc-internal-format
  msgid "target of initialization might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10680
  #, gcc-internal-format
  msgid ""
  "left-hand side of assignment might be a candidate for a format attribute"
  msgstr ""
  
! #: cp/typeck.cc:10766
  #, gcc-internal-format
  msgid "in passing argument %P of %qD"
  msgstr ""
  
! #: cp/typeck.cc:10850
  #, gcc-internal-format
  msgid "returning reference to temporary"
  msgstr ""
  
! #: cp/typeck.cc:10853
  #, gcc-internal-format
  msgid "returning pointer to temporary"
  msgstr ""
  
! #: cp/typeck.cc:10856
  #, gcc-internal-format
  msgid ""
  "returning temporary %<initializer_list%> does not extend the lifetime of the "
  "underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10891
  #, gcc-internal-format
  msgid "reference to local variable %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:10895
  #, gcc-internal-format
  msgid ""
  "returning local %<initializer_list%> variable %qD does not extend the "
  "lifetime of the underlying array"
  msgstr ""
  
! #: cp/typeck.cc:10901
  #, gcc-internal-format
  msgid "address of label %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:10905
  #, gcc-internal-format
  msgid "address of local variable %qD returned"
  msgstr ""
  
! #: cp/typeck.cc:11165
  #, gcc-internal-format
  msgid "moving a temporary object prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11166 cp/typeck.cc:11182 cp/typeck.cc:11207 cp/typeck.cc:11244
  #, gcc-internal-format
  msgid "remove %<std::move%> call"
  msgstr ""
  
! #: cp/typeck.cc:11180
  #, gcc-internal-format
  msgid "moving a local object in a return statement prevents copy elision"
  msgstr ""
  
! #: cp/typeck.cc:11206 cp/typeck.cc:11241
  #, gcc-internal-format
  msgid "redundant move in return statement"
  msgstr ""
  
! #: cp/typeck.cc:11243
  #, gcc-internal-format
  msgid "redundant move in initialization"
  msgstr ""
  
! #: cp/typeck.cc:11281
  #, gcc-internal-format
  msgid "returning a value from a destructor"
  msgstr ""
  
  #. If a return statement appears in a handler of the
  #. function-try-block of a constructor, the program is ill-formed.
! #: cp/typeck.cc:11293
  #, gcc-internal-format
  msgid "cannot return from a handler of a function-try-block of a constructor"
  msgstr ""
  
  #. You can't return a value from a constructor.
! #: cp/typeck.cc:11296
  #, gcc-internal-format
  msgid "returning a value from a constructor"
  msgstr ""
  
! #: cp/typeck.cc:11336 cp/typeck.cc:11382
  #, gcc-internal-format
  msgid "return-statement with no value, in function returning %qT"
  msgstr ""
  
! #: cp/typeck.cc:11344
  #, gcc-internal-format
  msgid "returning initializer list"
  msgstr ""
  
! #: cp/typeck.cc:11363
  #, gcc-internal-format
  msgid "inconsistent types %qT and %qT deduced for lambda return type"
  msgstr ""
  
! #: cp/typeck.cc:11366
  #, gcc-internal-format
  msgid "inconsistent deduction for auto return type: %qT and then %qT"
  msgstr ""
  
! #: cp/typeck.cc:11403
  #, gcc-internal-format
  msgid "return-statement with a value, in function returning %qT"
  msgstr ""
  
! #: cp/typeck.cc:11432
  #, gcc-internal-format
  msgid ""
  "%<operator new%> must not return NULL unless it is declared %<throw()%> (or "
  "%<-fcheck-new%> is in effect)"
  msgstr ""
  
! #: cp/typeck.cc:11521
  #, gcc-internal-format
  msgid "not eliding copy on return from %qD"
  msgstr ""
  
! #: cp/typeck.cc:11533
  #, gcc-internal-format
  msgid "not eliding copy on return in %qD"
  msgstr ""
  
! #: cp/typeck.cc:12119
  #, gcc-internal-format
  msgid "using rvalue as lvalue"
  msgstr ""
*************** msgid "Array reference at %C cannot have
*** 73532,73540 ****
  msgstr ""
  
  #: fortran/array.cc:335 fortran/array.cc:805 fortran/check.cc:3813
! #: fortran/check.cc:6539 fortran/check.cc:6582 fortran/check.cc:6624
! #: fortran/check.cc:6651 fortran/check.cc:6914 fortran/match.cc:1859
! #: fortran/match.cc:3656 fortran/match.cc:3998 fortran/match.cc:4194
  #: fortran/simplify.cc:3099 fortran/simplify.cc:3129 fortran/simplify.cc:6736
  #: fortran/simplify.cc:9043
  #, gcc-internal-format
--- 73628,73636 ----
  msgstr ""
  
  #: fortran/array.cc:335 fortran/array.cc:805 fortran/check.cc:3813
! #: fortran/check.cc:6610 fortran/check.cc:6653 fortran/check.cc:6695
! #: fortran/check.cc:6722 fortran/check.cc:6985 fortran/match.cc:1859
! #: fortran/match.cc:3657 fortran/match.cc:3999 fortran/match.cc:4195
  #: fortran/simplify.cc:3099 fortran/simplify.cc:3129 fortran/simplify.cc:6736
  #: fortran/simplify.cc:9043
  #, gcc-internal-format
*************** msgstr ""
*** 73693,73699 ****
  msgid "Array constructor including type specification at %C"
  msgstr ""
  
! #: fortran/array.cc:1372 fortran/match.cc:4630
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-spec at %L cannot contain a deferred type parameter"
  msgstr ""
--- 73789,73795 ----
  msgid "Array constructor including type specification at %C"
  msgstr ""
  
! #: fortran/array.cc:1372 fortran/match.cc:4631
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-spec at %L cannot contain a deferred type parameter"
  msgstr ""
*************** msgstr ""
*** 73813,73819 ****
  msgid "Arguments of %qs at %L and %L cannot both be BOZ literal constants"
  msgstr ""
  
! #: fortran/check.cc:123 fortran/resolve.cc:12344
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid use of BOZ literal constant at %L"
  msgstr ""
--- 73909,73915 ----
  msgid "Arguments of %qs at %L and %L cannot both be BOZ literal constants"
  msgstr ""
  
! #: fortran/check.cc:123 fortran/resolve.cc:12334
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid use of BOZ literal constant at %L"
  msgstr ""
*************** msgstr ""
*** 73891,73897 ****
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE"
  msgstr ""
  
! #: fortran/check.cc:742 fortran/check.cc:8216
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be a constant"
  msgstr ""
--- 73987,73993 ----
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE"
  msgstr ""
  
! #: fortran/check.cc:742 fortran/check.cc:8287
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be a constant"
  msgstr ""
*************** msgstr ""
*** 74324,74331 ****
  
  #: fortran/check.cc:2727 fortran/check.cc:3454 fortran/check.cc:3537
  #: fortran/check.cc:3799 fortran/check.cc:3847 fortran/check.cc:5515
! #: fortran/check.cc:5639 fortran/check.cc:5717 fortran/check.cc:6900
! #: fortran/check.cc:7031
  #, gcc-internal-format
  msgid "%qs intrinsic with KIND argument at %L"
  msgstr ""
--- 74420,74427 ----
  
  #: fortran/check.cc:2727 fortran/check.cc:3454 fortran/check.cc:3537
  #: fortran/check.cc:3799 fortran/check.cc:3847 fortran/check.cc:5515
! #: fortran/check.cc:5639 fortran/check.cc:5717 fortran/check.cc:6971
! #: fortran/check.cc:7102
  #, gcc-internal-format
  msgid "%qs intrinsic with KIND argument at %L"
  msgstr ""
*************** msgstr ""
*** 74521,74527 ****
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or UNSIGNED"
  msgstr ""
  
! #: fortran/check.cc:4577 fortran/check.cc:8136 fortran/check.cc:8151
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER"
  msgstr ""
--- 74617,74623 ----
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER or UNSIGNED"
  msgstr ""
  
! #: fortran/check.cc:4577 fortran/check.cc:8207 fortran/check.cc:8222
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be INTEGER"
  msgstr ""
*************** msgid ""
*** 74588,74594 ****
  "and %qs is of type INTEGER or UNSIGNED"
  msgstr ""
  
! #: fortran/check.cc:4984 fortran/check.cc:6978
  #, gcc-internal-format
  msgid ""
  "%qs argument of %qs intrinsic at %L must provide at least as many elements "
--- 74684,74690 ----
  "and %qs is of type INTEGER or UNSIGNED"
  msgstr ""
  
! #: fortran/check.cc:4984 fortran/check.cc:7049
  #, gcc-internal-format
  msgid ""
  "%qs argument of %qs intrinsic at %L must provide at least as many elements "
*************** msgid ""
*** 74725,74736 ****
  "array"
  msgstr ""
  
! #: fortran/check.cc:5735 fortran/check.cc:8196
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be a procedure"
  msgstr ""
  
! #: fortran/check.cc:5751 fortran/check.cc:5897 fortran/check.cc:8188
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be TYPE(*)"
  msgstr ""
--- 74821,74832 ----
  "array"
  msgstr ""
  
! #: fortran/check.cc:5735 fortran/check.cc:8267
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be a procedure"
  msgstr ""
  
! #: fortran/check.cc:5751 fortran/check.cc:5897 fortran/check.cc:8259
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L shall not be TYPE(*)"
  msgstr ""
*************** msgid ""
*** 74751,75122 ****
  "%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s"
  msgstr ""
  
! #: fortran/check.cc:5927
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or "
  "TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:5941
  #, gcc-internal-format, gfc-internal-format
  msgid ""
! "Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1: "
! "%s instead of %s"
  msgstr ""
  
! #: fortran/check.cc:5965
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/check.cc:5977
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER must be a pointer"
  msgstr ""
  
! #: fortran/check.cc:5984
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument at %L to C_F_POINTER shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:5991
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:5998
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected SHAPE argument at %L to C_F_POINTER with scalar FPTR"
  msgstr ""
  
! #: fortran/check.cc:6004
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected SHAPE argument to C_F_POINTER with array FPTR at %L"
  msgstr ""
  
! #: fortran/check.cc:6023
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "SHAPE argument at %L to C_F_POINTER must have the same size as the RANK of "
  "FPTR"
  msgstr ""
  
! #: fortran/check.cc:6033
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic FPTR at %L to C_F_POINTER"
  msgstr ""
  
! #: fortran/check.cc:6039
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument to C_F_POINTER at %L is a function returning a pointer"
  msgstr ""
  
! #: fortran/check.cc:6046
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array FPTR argument to C_F_POINTER at %L: %s"
  msgstr ""
  
! #: fortran/check.cc:6062
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:6074
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6081
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6087
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure pointer at %L to C_F_PROCPOINTER"
  msgstr ""
  
! #: fortran/check.cc:6101
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6113
  #, gcc-internal-format
  msgid "Function result %qs at %L is invalid as X argument to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6120
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Argument X at %L to C_FUNLOC shall be a procedure or a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6126
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure at %L to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6140
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6146
  #, gcc-internal-format, gfc-internal-format
  msgid "X argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6157
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Argument X at %L to C_LOC shall have either the POINTER or the TARGET "
  "attribute"
  msgstr ""
  
! #: fortran/check.cc:6165
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall be not be a zero-sized string"
  msgstr ""
  
! #: fortran/check.cc:6174
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6181
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array at %L as argument to C_LOC: %s"
  msgstr ""
  
! #: fortran/check.cc:6192
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Array of interoperable type at %L to C_LOC which is nonallocatable and "
  "neither assumed size nor explicit size"
  msgstr ""
  
! #: fortran/check.cc:6197
  #, gcc-internal-format, gfc-internal-format
  msgid "Array section at %L to C_LOC"
  msgstr ""
  
! #: fortran/check.cc:6225
  #, gcc-internal-format, gfc-internal-format
  msgid "non double precision REAL argument to %s intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6241
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be less than rank %d"
  msgstr ""
  
! #: fortran/check.cc:6260
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/check.cc:6284
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must have length at least 1"
  msgstr ""
  
! #: fortran/check.cc:6548
  #, gcc-internal-format, gfc-internal-format
  msgid "%s argument to IMAGE_INDEX must be a rank one array at %L"
  msgstr ""
  
! #: fortran/check.cc:6555
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of %s argument of IMAGE_INDEX at %L shall be INTEGER"
  msgstr ""
  
! #: fortran/check.cc:6564
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The number of array elements of the SUB argument to IMAGE_INDEX at %L shall "
  "be %d (corank) not %d"
  msgstr ""
  
! #: fortran/check.cc:6597
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6610
  #, gcc-internal-format, gfc-internal-format
  msgid "FAILED= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6634
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "TEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/check.cc:6660
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "DIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic "
  "at %L"
  msgstr ""
  
! #: fortran/check.cc:6667
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The DISTANCE argument may not be specified together with the COARRAY or DIM "
  "argument in intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6678
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected DIM argument with noncoarray argument at %L"
  msgstr ""
  
! #: fortran/check.cc:6696
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to THIS_IMAGE at %L"
  msgstr ""
  
! #: fortran/check.cc:6754
  #, gcc-internal-format
  msgid ""
  "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an array and shall not "
  "have storage size 0 when %<SOURCE%> argument has size greater than 0"
  msgstr ""
  
! #: fortran/check.cc:6806
  #, gcc-internal-format
  msgid "%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr ""
  
! #: fortran/check.cc:6825
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr ""
  
! #: fortran/check.cc:6833
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be %s"
  msgstr ""
  
! #: fortran/check.cc:6868
  msgid ""
  "Intrinsic TRANSFER at %L has partly undefined result: source size %zd < "
  "result size %zd"
  msgstr ""
  
! #: fortran/check.cc:6992
  #, gcc-internal-format
  msgid ""
  "%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a "
  "scalar"
  msgstr ""
  
! #: fortran/check.cc:7005
  #, gcc-internal-format
  msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape."
  msgstr ""
  
! #: fortran/check.cc:7141
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7153
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "VALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of "
  "at least four"
  msgstr ""
  
! #: fortran/check.cc:7308 fortran/check.cc:7344
  #, gcc-internal-format
  msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)"
  msgstr ""
  
! #: fortran/check.cc:7355
  #, gcc-internal-format, gfc-internal-format
  msgid "Too many arguments to %s at %L"
  msgstr ""
  
! #: fortran/check.cc:7373
  #, gcc-internal-format
  msgid "fe_runtime_error string must be null terminated"
  msgstr ""
  
! #: fortran/check.cc:7385
  #, gcc-internal-format, gfc-internal-format
  msgid "fe_runtime_error: Wrong number of arguments (%d instead of %d)"
  msgstr ""
  
! #: fortran/check.cc:7427
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7434
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "COUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7455
  #, gcc-internal-format, gfc-internal-format
  msgid "Real COUNT_RATE argument to SYSTEM_CLOCK at %L"
  msgstr ""
  
! #: fortran/check.cc:7465
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7472
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "COUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default "
  "integer"
  msgstr ""
  
! #: fortran/check.cc:7492
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7502
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "COUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default "
  "integer"
  msgstr ""
  
! #: fortran/check.cc:7517 fortran/check.cc:7524
  #, gcc-internal-format, gfc-internal-format
  msgid "integer arguments to SYSTEM_CLOCK at %L with different kind parameters"
  msgstr ""
  
! #: fortran/check.cc:7738
  #, gcc-internal-format
  msgid ""
  "%qs argument of %qs intrinsic at %L must be of a kind not wider than the "
  "default kind (%d)"
  msgstr ""
  
! #: fortran/check.cc:7920
  #, gcc-internal-format
  msgid "Actual argument at %L of %qs intrinsic shall be an associated pointer"
  msgstr ""
  
! #: fortran/check.cc:8109 fortran/check.cc:8120
  #, gcc-internal-format
  msgid ""
  "%qs argument of %qs intrinsic at %L must be INTEGER, LOGICAL, or a BOZ "
  "literal constant"
  msgstr ""
  
! #: fortran/check.cc:8180
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Intrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, "
--- 74847,75218 ----
  "%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s"
  msgstr ""
  
! #: fortran/check.cc:5949
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or "
  "TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:6003
  #, gcc-internal-format, gfc-internal-format
  msgid ""
! "Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1, "
! "found %s instead of %s"
  msgstr ""
  
! #: fortran/check.cc:6036
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/check.cc:6048
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER must be a pointer"
  msgstr ""
  
! #: fortran/check.cc:6055
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument at %L to C_F_POINTER shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6062
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_POINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6069
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected SHAPE argument at %L to C_F_POINTER with scalar FPTR"
  msgstr ""
  
! #: fortran/check.cc:6075
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected SHAPE argument to C_F_POINTER with array FPTR at %L"
  msgstr ""
  
! #: fortran/check.cc:6094
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "SHAPE argument at %L to C_F_POINTER must have the same size as the RANK of "
  "FPTR"
  msgstr ""
  
! #: fortran/check.cc:6104
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic FPTR at %L to C_F_POINTER"
  msgstr ""
  
! #: fortran/check.cc:6110
  #, gcc-internal-format, gfc-internal-format
  msgid "FPTR argument to C_F_POINTER at %L is a function returning a pointer"
  msgstr ""
  
! #: fortran/check.cc:6117
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array FPTR argument to C_F_POINTER at %L: %s"
  msgstr ""
  
! #: fortran/check.cc:6133
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)"
  msgstr ""
  
! #: fortran/check.cc:6145
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6152
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument FPTR at %L to C_F_PROCPOINTER shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6158
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure pointer at %L to C_F_PROCPOINTER"
  msgstr ""
  
! #: fortran/check.cc:6172
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_FUNLOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6184
  #, gcc-internal-format
  msgid "Function result %qs at %L is invalid as X argument to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6191
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Argument X at %L to C_FUNLOC shall be a procedure or a procedure pointer"
  msgstr ""
  
! #: fortran/check.cc:6197
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable procedure at %L to C_FUNLOC"
  msgstr ""
  
! #: fortran/check.cc:6211
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall not be coindexed"
  msgstr ""
  
! #: fortran/check.cc:6217
  #, gcc-internal-format, gfc-internal-format
  msgid "X argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6228
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Argument X at %L to C_LOC shall have either the POINTER or the TARGET "
  "attribute"
  msgstr ""
  
! #: fortran/check.cc:6236
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument X at %L to C_LOC shall be not be a zero-sized string"
  msgstr ""
  
! #: fortran/check.cc:6245
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument at %L to C_LOC shall not be polymorphic"
  msgstr ""
  
! #: fortran/check.cc:6252
  #, gcc-internal-format, gfc-internal-format
  msgid "Noninteroperable array at %L as argument to C_LOC: %s"
  msgstr ""
  
! #: fortran/check.cc:6263
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Array of interoperable type at %L to C_LOC which is nonallocatable and "
  "neither assumed size nor explicit size"
  msgstr ""
  
! #: fortran/check.cc:6268
  #, gcc-internal-format, gfc-internal-format
  msgid "Array section at %L to C_LOC"
  msgstr ""
  
! #: fortran/check.cc:6296
  #, gcc-internal-format, gfc-internal-format
  msgid "non double precision REAL argument to %s intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6312
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must be less than rank %d"
  msgstr ""
  
! #: fortran/check.cc:6331
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/check.cc:6355
  #, gcc-internal-format
  msgid "%qs argument of %qs intrinsic at %L must have length at least 1"
  msgstr ""
  
! #: fortran/check.cc:6619
  #, gcc-internal-format, gfc-internal-format
  msgid "%s argument to IMAGE_INDEX must be a rank one array at %L"
  msgstr ""
  
! #: fortran/check.cc:6626
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of %s argument of IMAGE_INDEX at %L shall be INTEGER"
  msgstr ""
  
! #: fortran/check.cc:6635
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The number of array elements of the SUB argument to IMAGE_INDEX at %L shall "
  "be %d (corank) not %d"
  msgstr ""
  
! #: fortran/check.cc:6668
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6681
  #, gcc-internal-format, gfc-internal-format
  msgid "FAILED= argument to NUM_IMAGES at %L"
  msgstr ""
  
! #: fortran/check.cc:6705
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "TEAM argument at %L to the intrinsic TEAM_NUMBER shall be of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/check.cc:6731
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "DIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic "
  "at %L"
  msgstr ""
  
! #: fortran/check.cc:6738
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The DISTANCE argument may not be specified together with the COARRAY or DIM "
  "argument in intrinsic at %L"
  msgstr ""
  
! #: fortran/check.cc:6749
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected DIM argument with noncoarray argument at %L"
  msgstr ""
  
! #: fortran/check.cc:6767
  #, gcc-internal-format, gfc-internal-format
  msgid "DISTANCE= argument to THIS_IMAGE at %L"
  msgstr ""
  
! #: fortran/check.cc:6825
  #, gcc-internal-format
  msgid ""
  "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an array and shall not "
  "have storage size 0 when %<SOURCE%> argument has size greater than 0"
  msgstr ""
  
! #: fortran/check.cc:6877
  #, gcc-internal-format
  msgid "%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr ""
  
! #: fortran/check.cc:6896
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be a %s"
  msgstr ""
  
! #: fortran/check.cc:6904
  #, gcc-internal-format
  msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be %s"
  msgstr ""
  
! #: fortran/check.cc:6939
  msgid ""
  "Intrinsic TRANSFER at %L has partly undefined result: source size %zd < "
  "result size %zd"
  msgstr ""
  
! #: fortran/check.cc:7063
  #, gcc-internal-format
  msgid ""
  "%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a "
  "scalar"
  msgstr ""
  
! #: fortran/check.cc:7076
  #, gcc-internal-format
  msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape."
  msgstr ""
  
! #: fortran/check.cc:7212
  #, gcc-internal-format, gfc-internal-format
  msgid "VALUES argument of DATE_AND_TIME at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7224
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "VALUES argument of DATE_AND_TIME at %L must have a decimal exponent range of "
  "at least four"
  msgstr ""
  
! #: fortran/check.cc:7379 fortran/check.cc:7415
  #, gcc-internal-format
  msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)"
  msgstr ""
  
! #: fortran/check.cc:7426
  #, gcc-internal-format, gfc-internal-format
  msgid "Too many arguments to %s at %L"
  msgstr ""
  
! #: fortran/check.cc:7444
  #, gcc-internal-format
  msgid "fe_runtime_error string must be null terminated"
  msgstr ""
  
! #: fortran/check.cc:7456
  #, gcc-internal-format, gfc-internal-format
  msgid "fe_runtime_error: Wrong number of arguments (%d instead of %d)"
  msgstr ""
  
! #: fortran/check.cc:7498
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7505
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "COUNT argument to SYSTEM_CLOCK at %L with kind smaller than default integer"
  msgstr ""
  
! #: fortran/check.cc:7526
  #, gcc-internal-format, gfc-internal-format
  msgid "Real COUNT_RATE argument to SYSTEM_CLOCK at %L"
  msgstr ""
  
! #: fortran/check.cc:7536
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7543
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "COUNT_RATE argument to SYSTEM_CLOCK at %L with kind smaller than default "
  "integer"
  msgstr ""
  
! #: fortran/check.cc:7563
  #, gcc-internal-format, gfc-internal-format
  msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind"
  msgstr ""
  
! #: fortran/check.cc:7573
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "COUNT_MAX argument to SYSTEM_CLOCK at %L with kind smaller than default "
  "integer"
  msgstr ""
  
! #: fortran/check.cc:7588 fortran/check.cc:7595
  #, gcc-internal-format, gfc-internal-format
  msgid "integer arguments to SYSTEM_CLOCK at %L with different kind parameters"
  msgstr ""
  
! #: fortran/check.cc:7809
  #, gcc-internal-format
  msgid ""
  "%qs argument of %qs intrinsic at %L must be of a kind not wider than the "
  "default kind (%d)"
  msgstr ""
  
! #: fortran/check.cc:7991
  #, gcc-internal-format
  msgid "Actual argument at %L of %qs intrinsic shall be an associated pointer"
  msgstr ""
  
! #: fortran/check.cc:8180 fortran/check.cc:8191
  #, gcc-internal-format
  msgid ""
  "%qs argument of %qs intrinsic at %L must be INTEGER, LOGICAL, or a BOZ "
  "literal constant"
  msgstr ""
  
! #: fortran/check.cc:8251
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Intrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, "
*************** msgstr ""
*** 75130,75136 ****
  msgid "Maximum extension level reached with type %qs at %L"
  msgstr ""
  
! #: fortran/class.cc:3123 fortran/class.cc:3197
  #, gcc-internal-format
  msgid "%qs of %qs is PRIVATE at %L"
  msgstr ""
--- 75226,75232 ----
  msgid "Maximum extension level reached with type %qs at %L"
  msgstr ""
  
! #: fortran/class.cc:3127 fortran/class.cc:3201
  #, gcc-internal-format
  msgid "%qs of %qs is PRIVATE at %L"
  msgstr ""
*************** msgstr ""
*** 75175,75186 ****
  msgid "Initialization string at %L was truncated to fit the variable (%wd/%wd)"
  msgstr ""
  
! #: fortran/data.cc:220 fortran/resolve.cc:5604
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L is less than one"
  msgstr ""
  
! #: fortran/data.cc:226 fortran/resolve.cc:5634
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L exceeds the string length"
  msgstr ""
--- 75271,75282 ----
  msgid "Initialization string at %L was truncated to fit the variable (%wd/%wd)"
  msgstr ""
  
! #: fortran/data.cc:220 fortran/resolve.cc:5577
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L is less than one"
  msgstr ""
  
! #: fortran/data.cc:226 fortran/resolve.cc:5607
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L exceeds the string length"
  msgstr ""
*************** msgstr ""
*** 75200,75206 ****
  msgid "Data element above array upper bound at %L"
  msgstr ""
  
! #: fortran/data.cc:390 fortran/data.cc:620
  #, gcc-internal-format
  msgid "re-initialization of %qs at %L"
  msgstr ""
--- 75296,75302 ----
  msgid "Data element above array upper bound at %L"
  msgstr ""
  
! #: fortran/data.cc:390 fortran/data.cc:626
  #, gcc-internal-format
  msgid "re-initialization of %qs at %L"
  msgstr ""
*************** msgstr ""
*** 75221,75235 ****
  msgid "LEN or KIND inquiry ref in DATA statement at %L"
  msgstr ""
  
! #: fortran/data.cc:643
  #, gcc-internal-format
  msgid ""
  "Nonpointer object %qs with default initialization shall not appear in a DATA "
  "statement at %L"
  msgstr ""
  
! #: fortran/data.cc:703 fortran/data.cc:722 fortran/data.cc:736
! #: fortran/data.cc:762 fortran/data.cc:909
  #, gcc-internal-format
  msgid "Simplification error"
  msgstr ""
--- 75317,75331 ----
  msgid "LEN or KIND inquiry ref in DATA statement at %L"
  msgstr ""
  
! #: fortran/data.cc:649
  #, gcc-internal-format
  msgid ""
  "Nonpointer object %qs with default initialization shall not appear in a DATA "
  "statement at %L"
  msgstr ""
  
! #: fortran/data.cc:709 fortran/data.cc:728 fortran/data.cc:742
! #: fortran/data.cc:768 fortran/data.cc:915
  #, gcc-internal-format
  msgid "Simplification error"
  msgstr ""
*************** msgstr ""
*** 75376,75382 ****
  msgid "deferred type parameter at %C"
  msgstr ""
  
! #: fortran/decl.cc:1166 fortran/resolve.cc:14157
  #, gcc-internal-format, gfc-internal-format
  msgid "Scalar INTEGER expression expected at %L"
  msgstr ""
--- 75472,75478 ----
  msgid "deferred type parameter at %C"
  msgstr ""
  
! #: fortran/decl.cc:1166 fortran/resolve.cc:14147
  #, gcc-internal-format, gfc-internal-format
  msgid "Scalar INTEGER expression expected at %L"
  msgstr ""
*************** msgstr ""
*** 77313,77325 ****
  msgid "are_identical_variables: Bad type"
  msgstr ""
  
! #: fortran/dependency.cc:1021
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "INTENT(%s) actual argument at %L might interfere with actual argument at %L."
  msgstr ""
  
! #: fortran/dependency.cc:1326
  #, gcc-internal-format
  msgid "gfc_check_dependency: expecting an EXPR_VARIABLE"
  msgstr ""
--- 77409,77421 ----
  msgid "are_identical_variables: Bad type"
  msgstr ""
  
! #: fortran/dependency.cc:1025
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "INTENT(%s) actual argument at %L might interfere with actual argument at %L."
  msgstr ""
  
! #: fortran/dependency.cc:1330
  #, gcc-internal-format
  msgid "gfc_check_dependency: expecting an EXPR_VARIABLE"
  msgstr ""
*************** msgstr ""
*** 77354,77360 ****
  msgid "show_code_node(): Bad statement code"
  msgstr ""
  
! #: fortran/dump-parse-tree.cc:4356 fortran/dump-parse-tree.cc:4450
  #, gcc-internal-format
  msgid "Cannot convert %qs to interoperable type at %L"
  msgstr ""
--- 77450,77456 ----
  msgid "show_code_node(): Bad statement code"
  msgstr ""
  
! #: fortran/dump-parse-tree.cc:4358 fortran/dump-parse-tree.cc:4453
  #, gcc-internal-format
  msgid "Cannot convert %qs to interoperable type at %L"
  msgstr ""
*************** msgstr ""
*** 77397,77839 ****
  msgid "gfc_is_constant_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:1338
  #, gcc-internal-format
  msgid "simplify_intrinsic_op(): Bad operator"
  msgstr ""
  
! #: fortran/expr.cc:1444
  #, gcc-internal-format, gfc-internal-format
  msgid "Index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1643 fortran/expr.cc:1694
  #, gcc-internal-format, gfc-internal-format
  msgid "index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1769
  #, gcc-internal-format
  msgid ""
  "The number of elements in the array constructor at %L requires an increase "
  "of the allowed %d upper limit.  See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/expr.cc:1780
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in array constructor referenced at %L"
  msgstr ""
  
! #: fortran/expr.cc:1890 fortran/primary.cc:2521 fortran/primary.cc:2698
  #, gcc-internal-format, gfc-internal-format
  msgid "LEN part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:1915 fortran/primary.cc:2516 fortran/primary.cc:2713
  #, gcc-internal-format, gfc-internal-format
  msgid "KIND part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:1926
  #, gcc-internal-format, gfc-internal-format
  msgid "RE part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:1938
  #, gcc-internal-format, gfc-internal-format
  msgid "IM part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:2592
  #, gcc-internal-format, gfc-internal-format
  msgid "elemental function arguments at %C are not compliant"
  msgstr ""
  
! #: fortran/expr.cc:2636
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric or CHARACTER operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2661
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Concatenation operator in expression at %L must have two CHARACTER operands"
  msgstr ""
  
! #: fortran/expr.cc:2668
  #, gcc-internal-format, gfc-internal-format
  msgid "Concat operator at %L must concatenate strings of the same kind"
  msgstr ""
  
! #: fortran/expr.cc:2678
  #, gcc-internal-format, gfc-internal-format
  msgid ".NOT. operator in expression at %L must have a LOGICAL operand"
  msgstr ""
  
! #: fortran/expr.cc:2694
  #, gcc-internal-format, gfc-internal-format
  msgid "LOGICAL operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2705
  #, gcc-internal-format, gfc-internal-format
  msgid "Only intrinsic operators can be used in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2713
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2736
  #, gcc-internal-format
  msgid ""
  "Invalid initialization expression for ALLOCATABLE component %qs in structure "
  "constructor at %L"
  msgstr ""
  
! #: fortran/expr.cc:2873
  #, gcc-internal-format
  msgid ""
  "Assumed or deferred character length variable %qs in constant expression at "
  "%L"
  msgstr ""
  
! #: fortran/expr.cc:2957
  #, gcc-internal-format
  msgid ""
  "transformational intrinsic %qs at %L is not permitted in an initialization "
  "expression"
  msgstr ""
  
! #: fortran/expr.cc:2988
  #, gcc-internal-format, gfc-internal-format
  msgid "Evaluation of nonstandard initialization expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3065 fortran/resolve.cc:2890
  #, gcc-internal-format
  msgid ""
  "Function %qs in initialization expression at %L must be an intrinsic function"
  msgstr ""
  
! #: fortran/expr.cc:3077
  #, gcc-internal-format
  msgid ""
  "Intrinsic function %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3116
  #, gcc-internal-format
  msgid "PARAMETER %qs is used at %L before its definition is complete"
  msgstr ""
  
! #: fortran/expr.cc:3136
  #, gcc-internal-format
  msgid ""
  "Assumed size array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3142
  #, gcc-internal-format
  msgid ""
  "Assumed shape array %qs at %L is not permitted in an initialization "
  "expression"
  msgstr ""
  
! #: fortran/expr.cc:3151
  #, gcc-internal-format
  msgid ""
  "Assumed-shape array %qs at %L is not permitted in an initialization "
  "expression"
  msgstr ""
  
! #: fortran/expr.cc:3155
  #, gcc-internal-format
  msgid ""
  "Deferred array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3161
  #, gcc-internal-format
  msgid ""
  "Array %qs at %L is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3167
  #, gcc-internal-format
  msgid ""
  "Assumed-rank array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3177
  #, gcc-internal-format
  msgid ""
  "Parameter %qs at %L has not been declared or is a variable, which does not "
  "reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3231
  #, gcc-internal-format
  msgid "check_init_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3371
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be a statement function"
  msgstr ""
  
! #: fortran/expr.cc:3378
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be an internal function"
  msgstr ""
  
! #: fortran/expr.cc:3385
  #, gcc-internal-format
  msgid "Specification function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3393
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be RECURSIVE"
  msgstr ""
  
! #: fortran/expr.cc:3540
  #, gcc-internal-format
  msgid "Dummy argument %qs not allowed in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3548
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be OPTIONAL"
  msgstr ""
  
! #: fortran/expr.cc:3555
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be INTENT(OUT)"
  msgstr ""
  
! #: fortran/expr.cc:3577
  #, gcc-internal-format
  msgid "Variable %qs cannot appear in the expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3608
  #, gcc-internal-format
  msgid "check_restricted(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3628
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/expr.cc:3640
  #, gcc-internal-format
  msgid "Function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3649
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be scalar"
  msgstr ""
  
  #. Reject truncation.
! #: fortran/expr.cc:3681
  #, gcc-internal-format, gfc-internal-format
  msgid "optype_msgid overflow: %d"
  msgstr ""
  
! #: fortran/expr.cc:3685
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks in %s (%d and %d) at %L"
  msgstr ""
  
! #: fortran/expr.cc:3699
  #, gcc-internal-format, gfc-internal-format
  msgid "Different shape for %s at %L on dimension %d (%d and %d)"
  msgstr ""
  
! #: fortran/expr.cc:3747
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a LEN or KIND part_ref at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:3803
  #, gcc-internal-format
  msgid "%qs at %L is not a VALUE"
  msgstr ""
  
! #: fortran/expr.cc:3814
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal assignment to external procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:3822
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks %d and %d in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3829
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable type is UNKNOWN in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3841
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL appears on right-hand side in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3851
  #, gcc-internal-format, gfc-internal-format
  msgid "POINTER-valued function appears on right-hand side of assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3894
  #, gcc-internal-format
  msgid "BOZ literal constant near %L cannot be assigned to a %qs variable"
  msgstr ""
  
! #: fortran/expr.cc:3901
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The assignment to a KIND or LEN component of a parameterized type at %L is "
  "not allowed"
  msgstr ""
  
! #: fortran/expr.cc:3932
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:3976
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is not a POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:3984
  #, gcc-internal-format
  msgid ""
  "%qs in the pointer assignment at %L cannot be an l-value since it is a "
  "procedure"
  msgstr ""
  
! #: fortran/expr.cc:4008
  #, gcc-internal-format
  msgid "Expected bounds specification for %qs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4013
  #, gcc-internal-format
  msgid "Bounds specification for %qs in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4042
  #, gcc-internal-format, gfc-internal-format
  msgid "Stride must not be present at %L"
  msgstr ""
  
! #: fortran/expr.cc:4048 fortran/expr.cc:4068
  #, gcc-internal-format
  msgid ""
  "Rank remapping requires a list of %<lower-bound : upper-bound%> "
  "specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4056 fortran/expr.cc:4075
  #, gcc-internal-format
  msgid ""
  "Expected list of %<lower-bound :%> or list of %<lower-bound : upper-bound%> "
  "specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4102
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4123
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4148
  #, gcc-internal-format
  msgid ""
  "Function result %qs is invalid as proc-target in procedure pointer "
  "assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4157
  #, gcc-internal-format
  msgid "Abstract interface %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4167
  #, gcc-internal-format
  msgid "Statement function %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4173
  #, gcc-internal-format
  msgid "Internal procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4180
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is invalid in procedure pointer assignment"
  msgstr ""
  
! #: fortran/expr.cc:4188
  #, gcc-internal-format
  msgid ""
  "Nonintrinsic elemental procedure %qs is invalid in procedure pointer "
  "assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4211
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Mismatch in the procedure pointer assignment at %L: mismatch in the calling "
  "convention"
  msgstr ""
  
! #: fortran/expr.cc:4264
  #, gcc-internal-format
  msgid ""
  "Interface mismatch in procedure pointer assignment at %L: %qs is not a "
  "subroutine"
  msgstr ""
  
! #: fortran/expr.cc:4274 fortran/expr.cc:4289
  #, gcc-internal-format
  msgid "Explicit interface required for component %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4280 fortran/expr.cc:4295 fortran/resolve.cc:2764
  #, gcc-internal-format
  msgid "Explicit interface required for %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4307
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in procedure pointer assignment at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4316
  #, gcc-internal-format
  msgid ""
  "Procedure pointer target %qs at %L must be either an intrinsic, host or use "
  "associated, referenced or have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/expr.cc:4329
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target cannot be a constant at %L"
  msgstr ""
  
! #: fortran/expr.cc:4343
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data-pointer-object at %L must be unlimited polymorphic, or of a type with "
--- 77493,77935 ----
  msgid "gfc_is_constant_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:1339
  #, gcc-internal-format
  msgid "simplify_intrinsic_op(): Bad operator"
  msgstr ""
  
! #: fortran/expr.cc:1445
  #, gcc-internal-format, gfc-internal-format
  msgid "Index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1644 fortran/expr.cc:1695
  #, gcc-internal-format, gfc-internal-format
  msgid "index in dimension %d is out of bounds at %L"
  msgstr ""
  
! #: fortran/expr.cc:1770
  #, gcc-internal-format
  msgid ""
  "The number of elements in the array constructor at %L requires an increase "
  "of the allowed %d upper limit.  See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/expr.cc:1781
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in array constructor referenced at %L"
  msgstr ""
  
! #: fortran/expr.cc:1945 fortran/primary.cc:2554 fortran/primary.cc:2739
  #, gcc-internal-format, gfc-internal-format
  msgid "LEN part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:1992 fortran/primary.cc:2549 fortran/primary.cc:2754
  #, gcc-internal-format, gfc-internal-format
  msgid "KIND part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:2003
  #, gcc-internal-format, gfc-internal-format
  msgid "RE part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:2028
  #, gcc-internal-format, gfc-internal-format
  msgid "IM part_ref at %C"
  msgstr ""
  
! #: fortran/expr.cc:2696
  #, gcc-internal-format, gfc-internal-format
  msgid "elemental function arguments at %C are not compliant"
  msgstr ""
  
! #: fortran/expr.cc:2740
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric or CHARACTER operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2765
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Concatenation operator in expression at %L must have two CHARACTER operands"
  msgstr ""
  
! #: fortran/expr.cc:2772
  #, gcc-internal-format, gfc-internal-format
  msgid "Concat operator at %L must concatenate strings of the same kind"
  msgstr ""
  
! #: fortran/expr.cc:2782
  #, gcc-internal-format, gfc-internal-format
  msgid ".NOT. operator in expression at %L must have a LOGICAL operand"
  msgstr ""
  
! #: fortran/expr.cc:2798
  #, gcc-internal-format, gfc-internal-format
  msgid "LOGICAL operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2809
  #, gcc-internal-format, gfc-internal-format
  msgid "Only intrinsic operators can be used in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2817
  #, gcc-internal-format, gfc-internal-format
  msgid "Numeric operands are required in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:2840
  #, gcc-internal-format
  msgid ""
  "Invalid initialization expression for ALLOCATABLE component %qs in structure "
  "constructor at %L"
  msgstr ""
  
! #: fortran/expr.cc:2977
  #, gcc-internal-format
  msgid ""
  "Assumed or deferred character length variable %qs in constant expression at "
  "%L"
  msgstr ""
  
! #: fortran/expr.cc:3061
  #, gcc-internal-format
  msgid ""
  "transformational intrinsic %qs at %L is not permitted in an initialization "
  "expression"
  msgstr ""
  
! #: fortran/expr.cc:3092
  #, gcc-internal-format, gfc-internal-format
  msgid "Evaluation of nonstandard initialization expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3169 fortran/resolve.cc:2891
  #, gcc-internal-format
  msgid ""
  "Function %qs in initialization expression at %L must be an intrinsic function"
  msgstr ""
  
! #: fortran/expr.cc:3181
  #, gcc-internal-format
  msgid ""
  "Intrinsic function %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3220
  #, gcc-internal-format
  msgid "PARAMETER %qs is used at %L before its definition is complete"
  msgstr ""
  
! #: fortran/expr.cc:3240
  #, gcc-internal-format
  msgid ""
  "Assumed size array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3246
  #, gcc-internal-format
  msgid ""
  "Assumed shape array %qs at %L is not permitted in an initialization "
  "expression"
  msgstr ""
  
! #: fortran/expr.cc:3255
  #, gcc-internal-format
  msgid ""
  "Assumed-shape array %qs at %L is not permitted in an initialization "
  "expression"
  msgstr ""
  
! #: fortran/expr.cc:3259
  #, gcc-internal-format
  msgid ""
  "Deferred array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3265
  #, gcc-internal-format
  msgid ""
  "Array %qs at %L is a variable, which does not reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3271
  #, gcc-internal-format
  msgid ""
  "Assumed-rank array %qs at %L is not permitted in an initialization expression"
  msgstr ""
  
! #: fortran/expr.cc:3281
  #, gcc-internal-format
  msgid ""
  "Parameter %qs at %L has not been declared or is a variable, which does not "
  "reduce to a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:3335
  #, gcc-internal-format
  msgid "check_init_expr(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3475
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be a statement function"
  msgstr ""
  
! #: fortran/expr.cc:3482
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be an internal function"
  msgstr ""
  
! #: fortran/expr.cc:3489
  #, gcc-internal-format
  msgid "Specification function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3497
  #, gcc-internal-format
  msgid "Specification function %qs at %L cannot be RECURSIVE"
  msgstr ""
  
! #: fortran/expr.cc:3644
  #, gcc-internal-format
  msgid "Dummy argument %qs not allowed in expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3652
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be OPTIONAL"
  msgstr ""
  
! #: fortran/expr.cc:3659
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L cannot be INTENT(OUT)"
  msgstr ""
  
! #: fortran/expr.cc:3681
  #, gcc-internal-format
  msgid "Variable %qs cannot appear in the expression at %L"
  msgstr ""
  
! #: fortran/expr.cc:3712
  #, gcc-internal-format
  msgid "check_restricted(): Unknown expression type"
  msgstr ""
  
! #: fortran/expr.cc:3732
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/expr.cc:3744
  #, gcc-internal-format
  msgid "Function %qs at %L must be PURE"
  msgstr ""
  
! #: fortran/expr.cc:3753
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression at %L must be scalar"
  msgstr ""
  
  #. Reject truncation.
! #: fortran/expr.cc:3785
  #, gcc-internal-format, gfc-internal-format
  msgid "optype_msgid overflow: %d"
  msgstr ""
  
! #: fortran/expr.cc:3789
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks in %s (%d and %d) at %L"
  msgstr ""
  
! #: fortran/expr.cc:3803
  #, gcc-internal-format, gfc-internal-format
  msgid "Different shape for %s at %L on dimension %d (%d and %d)"
  msgstr ""
  
! #: fortran/expr.cc:3851
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a LEN or KIND part_ref at %L is not allowed"
  msgstr ""
  
! #: fortran/expr.cc:3907
  #, gcc-internal-format
  msgid "%qs at %L is not a VALUE"
  msgstr ""
  
! #: fortran/expr.cc:3918
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal assignment to external procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:3926
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible ranks %d and %d in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3933
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable type is UNKNOWN in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3945
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL appears on right-hand side in assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3955
  #, gcc-internal-format, gfc-internal-format
  msgid "POINTER-valued function appears on right-hand side of assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:3998
  #, gcc-internal-format
  msgid "BOZ literal constant near %L cannot be assigned to a %qs variable"
  msgstr ""
  
! #: fortran/expr.cc:4005
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The assignment to a KIND or LEN component of a parameterized type at %L is "
  "not allowed"
  msgstr ""
  
! #: fortran/expr.cc:4036
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:4080
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is not a POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:4088
  #, gcc-internal-format
  msgid ""
  "%qs in the pointer assignment at %L cannot be an l-value since it is a "
  "procedure"
  msgstr ""
  
! #: fortran/expr.cc:4112
  #, gcc-internal-format
  msgid "Expected bounds specification for %qs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4117
  #, gcc-internal-format
  msgid "Bounds specification for %qs in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4146
  #, gcc-internal-format, gfc-internal-format
  msgid "Stride must not be present at %L"
  msgstr ""
  
! #: fortran/expr.cc:4152 fortran/expr.cc:4172
  #, gcc-internal-format
  msgid ""
  "Rank remapping requires a list of %<lower-bound : upper-bound%> "
  "specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4160 fortran/expr.cc:4179
  #, gcc-internal-format
  msgid ""
  "Expected list of %<lower-bound :%> or list of %<lower-bound : upper-bound%> "
  "specifications at %L"
  msgstr ""
  
! #: fortran/expr.cc:4206
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4227
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4252
  #, gcc-internal-format
  msgid ""
  "Function result %qs is invalid as proc-target in procedure pointer "
  "assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4261
  #, gcc-internal-format
  msgid "Abstract interface %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4271
  #, gcc-internal-format
  msgid "Statement function %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4277
  #, gcc-internal-format
  msgid "Internal procedure %qs is invalid in procedure pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4284
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is invalid in procedure pointer assignment"
  msgstr ""
  
! #: fortran/expr.cc:4292
  #, gcc-internal-format
  msgid ""
  "Nonintrinsic elemental procedure %qs is invalid in procedure pointer "
  "assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4315
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Mismatch in the procedure pointer assignment at %L: mismatch in the calling "
  "convention"
  msgstr ""
  
! #: fortran/expr.cc:4368
  #, gcc-internal-format
  msgid ""
  "Interface mismatch in procedure pointer assignment at %L: %qs is not a "
  "subroutine"
  msgstr ""
  
! #: fortran/expr.cc:4378 fortran/expr.cc:4393
  #, gcc-internal-format
  msgid "Explicit interface required for component %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4384 fortran/expr.cc:4399 fortran/resolve.cc:2765
  #, gcc-internal-format
  msgid "Explicit interface required for %qs at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4411
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in procedure pointer assignment at %L: %s"
  msgstr ""
  
! #: fortran/expr.cc:4420
  #, gcc-internal-format
  msgid ""
  "Procedure pointer target %qs at %L must be either an intrinsic, host or use "
  "associated, referenced or have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/expr.cc:4433
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target cannot be a constant at %L"
  msgstr ""
  
! #: fortran/expr.cc:4447
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data-pointer-object at %L must be unlimited polymorphic, or of a type with "
*************** msgid ""
*** 77841,77886 ****
  "polymorphic target"
  msgstr ""
  
! #: fortran/expr.cc:4348
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Different types in pointer assignment at %L; attempted assignment of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:4356
  #, gcc-internal-format, gfc-internal-format
  msgid "Different kind type parameters in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4363
  #, gcc-internal-format, gfc-internal-format
  msgid "Different ranks in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4384
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Rank remapping target is smaller than size of the pointer (%ld < %ld) at %L"
  msgstr ""
  
! #: fortran/expr.cc:4400
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The assumed rank target at %L is an experimental F202y feature. Use option -"
  "std=f202y to enable"
  msgstr ""
  
! #: fortran/expr.cc:4412
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target must be rank 1 or simply contiguous at %L"
  msgstr ""
  
! #: fortran/expr.cc:4416
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is not rank 1 at %L"
  msgstr ""
  
! #: fortran/expr.cc:4423
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The data-target at %L is an assumed rank object and so the data-pointer-"
--- 77937,77982 ----
  "polymorphic target"
  msgstr ""
  
! #: fortran/expr.cc:4452
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Different types in pointer assignment at %L; attempted assignment of %s to %s"
  msgstr ""
  
! #: fortran/expr.cc:4460
  #, gcc-internal-format, gfc-internal-format
  msgid "Different kind type parameters in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4467
  #, gcc-internal-format, gfc-internal-format
  msgid "Different ranks in pointer assignment at %L"
  msgstr ""
  
! #: fortran/expr.cc:4488
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Rank remapping target is smaller than size of the pointer (%ld < %ld) at %L"
  msgstr ""
  
! #: fortran/expr.cc:4504
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The assumed rank target at %L is an experimental F202y feature. Use option -"
  "std=f202y to enable"
  msgstr ""
  
! #: fortran/expr.cc:4516
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target must be rank 1 or simply contiguous at %L"
  msgstr ""
  
! #: fortran/expr.cc:4520
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank remapping target is not rank 1 at %L"
  msgstr ""
  
! #: fortran/expr.cc:4527
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The data-target at %L is an assumed rank object and so the data-pointer-"
*************** msgid ""
*** 77888,77894 ****
  "dimension)"
  msgstr ""
  
! #: fortran/expr.cc:4432
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank data-target at %L must be contiguous"
  msgstr ""
--- 77984,77990 ----
  "dimension)"
  msgstr ""
  
! #: fortran/expr.cc:4536
  #, gcc-internal-format, gfc-internal-format
  msgid "The assumed rank data-target at %L must be contiguous"
  msgstr ""
*************** msgstr ""
*** 77896,78117 ****
  #. The test above might need to be extend when F08, Note 5.4 has to be
  #. interpreted in the way that target and pointer with the same coindex
  #. are allowed.
! #: fortran/expr.cc:4456 fortran/expr.cc:4582
  #, gcc-internal-format, gfc-internal-format
  msgid "Data target at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4459
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Target expression in pointer assignment at %L must deliver a pointer result"
  msgstr ""
  
! #: fortran/expr.cc:4473
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Zero-sized array detected at %L where an entity with the TARGET attribute is "
  "expected"
  msgstr ""
  
! #: fortran/expr.cc:4479 fortran/expr.cc:4494
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Pointer assignment target in initialization expression does not have the "
  "TARGET attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4510
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Every subscript of target specification at %L must be a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:4521
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Substring starting and ending points of target specification at %L must be "
  "constant expressions"
  msgstr ""
  
! #: fortran/expr.cc:4537
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:4552
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad target in pointer assignment in PURE procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:4561
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment with vector subscript on rhs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4569
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target has PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4597 fortran/expr.cc:4602
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to contiguous pointer from non-contiguous target at %L"
  msgstr ""
  
! #: fortran/expr.cc:4642
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer at %L in pointer assignment might outlive the pointer target"
  msgstr ""
  
! #: fortran/expr.cc:4722 fortran/resolve.cc:1573
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/expr.cc:4728
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the TARGET attribute"
  msgstr ""
  
! #: fortran/expr.cc:4743 fortran/resolve.cc:1579
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the SAVE attribute"
  msgstr ""
  
! #: fortran/expr.cc:4755
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Procedure pointer initialization target at %L may not be a procedure pointer"
  msgstr ""
  
! #: fortran/expr.cc:4761
  #, gcc-internal-format
  msgid ""
  "Internal procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr ""
  
! #: fortran/expr.cc:4768
  #, gcc-internal-format
  msgid ""
  "Dummy procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr ""
  
! #: fortran/expr.cc:5252
  #, gcc-internal-format
  msgid ""
  "generate_isocbinding_initializer(): bad iso_c_binding type, expected "
  "%<c_ptr%> or %<c_funptr%>"
  msgstr ""
  
! #: fortran/expr.cc:6385
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Fortran 2008: Pointer functions in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6393
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-variable expression in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6401
  #, gcc-internal-format
  msgid "Named constant %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6412
  #, gcc-internal-format
  msgid "%qs in variable definition context (%s) at %L is not a variable"
  msgstr ""
  
! #: fortran/expr.cc:6423
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-POINTER in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6432
  #, gcc-internal-format, gfc-internal-format
  msgid "Type inaccessible in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6445
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_TYPE in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6458
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_EVENT in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6489
  #, gcc-internal-format
  msgid "%qs parameter inquiry for %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6506
  #, gcc-internal-format
  msgid ""
  "Dummy argument %qs with INTENT(IN) in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6516
  #, gcc-internal-format
  msgid ""
  "Dummy argument %qs with INTENT(IN) in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6532
  #, gcc-internal-format
  msgid ""
  "Variable %qs is PROTECTED and cannot appear in a pointer association context "
  "(%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6540
  #, gcc-internal-format
  msgid ""
  "Variable %qs is PROTECTED and cannot appear in a variable definition context "
  "(%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6555
  #, gcc-internal-format
  msgid ""
  "Variable %qs cannot appear in a variable definition context (%s) at %L in "
  "PURE procedure"
  msgstr ""
  
! #: fortran/expr.cc:6615 fortran/expr.cc:6636
  #, gcc-internal-format
  msgid ""
  "%qs at %L associated to vector-indexed target cannot be used in a variable "
  "definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6620
  #, gcc-internal-format
  msgid ""
  "%qs at %L associated to expression cannot be used in a variable definition "
  "context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6629
  #, gcc-internal-format
  msgid ""
  "%qs at %L associated to pointer function target being used in a variable "
  "definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6648
  #, gcc-internal-format
  msgid ""
  "Associate-name %qs cannot appear in a variable definition context (%s) at %L "
  "because its target at %L cannot, either"
  msgstr ""
  
! #: fortran/expr.cc:6690
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Elements with the same value at %L and %L in vector subscript in a variable "
--- 77992,78213 ----
  #. The test above might need to be extend when F08, Note 5.4 has to be
  #. interpreted in the way that target and pointer with the same coindex
  #. are allowed.
! #: fortran/expr.cc:4560 fortran/expr.cc:4686
  #, gcc-internal-format, gfc-internal-format
  msgid "Data target at %L shall not have a coindex"
  msgstr ""
  
! #: fortran/expr.cc:4563
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Target expression in pointer assignment at %L must deliver a pointer result"
  msgstr ""
  
! #: fortran/expr.cc:4577
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Zero-sized array detected at %L where an entity with the TARGET attribute is "
  "expected"
  msgstr ""
  
! #: fortran/expr.cc:4583 fortran/expr.cc:4598
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Pointer assignment target in initialization expression does not have the "
  "TARGET attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4614
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Every subscript of target specification at %L must be a constant expression"
  msgstr ""
  
! #: fortran/expr.cc:4625
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Substring starting and ending points of target specification at %L must be "
  "constant expressions"
  msgstr ""
  
! #: fortran/expr.cc:4641
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
  msgstr ""
  
! #: fortran/expr.cc:4656
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad target in pointer assignment in PURE procedure at %L"
  msgstr ""
  
! #: fortran/expr.cc:4665
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment with vector subscript on rhs at %L"
  msgstr ""
  
! #: fortran/expr.cc:4673
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target has PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/expr.cc:4701 fortran/expr.cc:4706
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to contiguous pointer from non-contiguous target at %L"
  msgstr ""
  
! #: fortran/expr.cc:4746
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer at %L in pointer assignment might outlive the pointer target"
  msgstr ""
  
! #: fortran/expr.cc:4826 fortran/resolve.cc:1574
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/expr.cc:4832
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the TARGET attribute"
  msgstr ""
  
! #: fortran/expr.cc:4847 fortran/resolve.cc:1580
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer initialization target at %L must have the SAVE attribute"
  msgstr ""
  
! #: fortran/expr.cc:4859
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Procedure pointer initialization target at %L may not be a procedure pointer"
  msgstr ""
  
! #: fortran/expr.cc:4865
  #, gcc-internal-format
  msgid ""
  "Internal procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr ""
  
! #: fortran/expr.cc:4872
  #, gcc-internal-format
  msgid ""
  "Dummy procedure %qs is invalid in procedure pointer initialization at %L"
  msgstr ""
  
! #: fortran/expr.cc:5356
  #, gcc-internal-format
  msgid ""
  "generate_isocbinding_initializer(): bad iso_c_binding type, expected "
  "%<c_ptr%> or %<c_funptr%>"
  msgstr ""
  
! #: fortran/expr.cc:6489
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Fortran 2008: Pointer functions in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6497
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-variable expression in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6505
  #, gcc-internal-format
  msgid "Named constant %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6516
  #, gcc-internal-format
  msgid "%qs in variable definition context (%s) at %L is not a variable"
  msgstr ""
  
! #: fortran/expr.cc:6527
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-POINTER in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6536
  #, gcc-internal-format, gfc-internal-format
  msgid "Type inaccessible in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6549
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_TYPE in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6562
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK_EVENT in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6593
  #, gcc-internal-format
  msgid "%qs parameter inquiry for %qs in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6610
  #, gcc-internal-format
  msgid ""
  "Dummy argument %qs with INTENT(IN) in pointer association context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6620
  #, gcc-internal-format
  msgid ""
  "Dummy argument %qs with INTENT(IN) in variable definition context (%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6636
  #, gcc-internal-format
  msgid ""
  "Variable %qs is PROTECTED and cannot appear in a pointer association context "
  "(%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6644
  #, gcc-internal-format
  msgid ""
  "Variable %qs is PROTECTED and cannot appear in a variable definition context "
  "(%s) at %L"
  msgstr ""
  
! #: fortran/expr.cc:6659
  #, gcc-internal-format
  msgid ""
  "Variable %qs cannot appear in a variable definition context (%s) at %L in "
  "PURE procedure"
  msgstr ""
  
! #: fortran/expr.cc:6719 fortran/expr.cc:6740
  #, gcc-internal-format
  msgid ""
  "%qs at %L associated to vector-indexed target cannot be used in a variable "
  "definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6724
  #, gcc-internal-format
  msgid ""
  "%qs at %L associated to expression cannot be used in a variable definition "
  "context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6733
  #, gcc-internal-format
  msgid ""
  "%qs at %L associated to pointer function target being used in a variable "
  "definition context (%s)"
  msgstr ""
  
! #: fortran/expr.cc:6752
  #, gcc-internal-format
  msgid ""
  "Associate-name %qs cannot appear in a variable definition context (%s) at %L "
  "because its target at %L cannot, either"
  msgstr ""
  
! #: fortran/expr.cc:6794
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Elements with the same value at %L and %L in vector subscript in a variable "
*************** msgid "Illegal id in copy_walk_reduction
*** 78134,78141 ****
  msgstr ""
  
  #: fortran/frontend-passes.cc:874 fortran/trans-array.cc:1565
! #: fortran/trans-array.cc:7434 fortran/trans-array.cc:9248
! #: fortran/trans-intrinsic.cc:8577
  #, gcc-internal-format, gfc-internal-format
  msgid "Creating array temporary at %L"
  msgstr ""
--- 78230,78237 ----
  msgstr ""
  
  #: fortran/frontend-passes.cc:874 fortran/trans-array.cc:1565
! #: fortran/trans-array.cc:7436 fortran/trans-array.cc:9250
! #: fortran/trans-intrinsic.cc:8556
  #, gcc-internal-format, gfc-internal-format
  msgid "Creating array temporary at %L"
  msgstr ""
*************** msgstr ""
*** 78316,78592 ****
  msgid "Expecting %<END INTERFACE OPERATOR (.%s.)%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:458
  #, gcc-internal-format
  msgid "Expecting %<END INTERFACE %s%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:655
  #, gcc-internal-format
  msgid "gfc_compare_derived_types: invalid derived type"
  msgstr ""
  
! #: fortran/interface.cc:943
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return cannot appear in operator interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:972
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must have two arguments"
  msgstr ""
  
! #: fortran/interface.cc:975
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L has the wrong number of arguments"
  msgstr ""
  
! #: fortran/interface.cc:988
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:1006
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assignment operator interface at %L must not redefine an INTRINSIC type "
  "assignment"
  msgstr ""
  
! #: fortran/interface.cc:1015
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic operator interface at %L must be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:1026
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "First argument of defined assignment at %L must be INTENT(OUT) or "
  "INTENT(INOUT)"
  msgstr ""
  
! #: fortran/interface.cc:1033
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of defined assignment at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1042 fortran/resolve.cc:19136
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1049 fortran/resolve.cc:19154
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1154
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L conflicts with intrinsic interface"
  msgstr ""
  
! #: fortran/interface.cc:1518 fortran/interface.cc:1590
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "check_dummy_characteristics: Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1715
  #, gcc-internal-format, gfc-internal-format
  msgid "Possible character length mismatch in function result between %L and %L"
  msgstr ""
  
! #: fortran/interface.cc:1724
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "check_result_characteristics (1): Unexpected result %i of "
  "gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1771
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "check_result_characteristics (2): Unexpected result %i of "
  "gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1968
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:1973
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:1977
  #, gcc-internal-format
  msgid ""
  "Procedure %qs in %s at %L is neither function nor subroutine; did you mean "
  "%qs?"
  msgstr ""
  
! #: fortran/interface.cc:1981
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine"
  msgstr ""
  
! #: fortran/interface.cc:1993
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
  msgstr ""
  
! #: fortran/interface.cc:1997
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "In %s at %L procedures must be all FUNCTIONs as the generic name is also the "
  "name of a derived type"
  msgstr ""
  
! #: fortran/interface.cc:2005
  #, gcc-internal-format
  msgid "Internal procedure %qs in %s at %L"
  msgstr ""
  
! #: fortran/interface.cc:2062 fortran/interface.cc:2067
  #, gcc-internal-format
  msgid "Ambiguous interfaces in %s for %qs at %L and %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2072
  #, gcc-internal-format
  msgid "Although not referenced, %qs has ambiguous interfaces at %L"
  msgstr ""
  
! #: fortran/interface.cc:2110
  #, gcc-internal-format
  msgid "%qs at %L is not a module procedure"
  msgstr ""
  
! #: fortran/interface.cc:2315
  #, gcc-internal-format
  msgid ""
  "The assumed-rank array at %L requires that the dummy argument %qs has "
  "assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2318
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2321
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2324
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2336
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Rank mismatch between actual argument at %L and actual argument at %L "
  "(scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2340
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Rank mismatch between actual argument at %L and actual argument at %L (rank-"
  "%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2344
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Rank mismatch between actual argument at %L and actual argument at %L (rank-"
  "%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2468
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid procedure argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2480 fortran/interface.cc:2496
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in dummy procedure at %L conflicts with %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2484 fortran/interface.cc:2500
! #: fortran/interface.cc:2590
  #, gcc-internal-format
  msgid "Interface mismatch in dummy procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2519
  #, gcc-internal-format
  msgid "Passing global subroutine %qs declared at %L as function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2526
  #, gcc-internal-format
  msgid "Passing global function %qs declared at %L as subroutine at %L"
  msgstr ""
  
! #: fortran/interface.cc:2539
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch between subroutine and function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2548
  #, gcc-internal-format
  msgid "Type mismatch at %L passing global function %qs declared at %L (%s/%s)"
  msgstr ""
  
! #: fortran/interface.cc:2601
  #, gcc-internal-format
  msgid ""
  "Actual argument to contiguous pointer dummy %qs at %L must be simply "
  "contiguous"
  msgstr ""
  
! #: fortran/interface.cc:2624
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Type mismatch between actual argument at %L and actual argument at %L (%s/"
  "%s)."
  msgstr ""
  
! #: fortran/interface.cc:2634
  #, gcc-internal-format
  msgid "Type mismatch in argument %qs at %L; passed %s to %s"
  msgstr ""
  
! #: fortran/interface.cc:2644
  #, gcc-internal-format
  msgid ""
  "Assumed-type actual argument at %L requires that dummy argument %qs is of "
  "assumed type"
  msgstr ""
  
! #: fortran/interface.cc:2658
  #, gcc-internal-format
  msgid ""
  "Assumed-type actual argument at %L corresponding to assumed-rank dummy "
  "argument %qs must be assumed-shape or assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2675
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be polymorphic"
  msgstr ""
  
! #: fortran/interface.cc:2685
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must have the same declared type"
  msgstr ""
  
! #: fortran/interface.cc:2700
  #, gcc-internal-format
  msgid ""
  "Actual argument to %qs at %L must be unlimited polymorphic since the formal "
--- 78412,78688 ----
  msgid "Expecting %<END INTERFACE OPERATOR (.%s.)%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:468
  #, gcc-internal-format
  msgid "Expecting %<END INTERFACE %s%> at %C"
  msgstr ""
  
! #: fortran/interface.cc:664
  #, gcc-internal-format
  msgid "gfc_compare_derived_types: invalid derived type"
  msgstr ""
  
! #: fortran/interface.cc:952
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return cannot appear in operator interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:981
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must have two arguments"
  msgstr ""
  
! #: fortran/interface.cc:984
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L has the wrong number of arguments"
  msgstr ""
  
! #: fortran/interface.cc:997
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment operator interface at %L must be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:1015
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assignment operator interface at %L must not redefine an INTRINSIC type "
  "assignment"
  msgstr ""
  
! #: fortran/interface.cc:1024
  #, gcc-internal-format, gfc-internal-format
  msgid "Intrinsic operator interface at %L must be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:1035
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "First argument of defined assignment at %L must be INTENT(OUT) or "
  "INTENT(INOUT)"
  msgstr ""
  
! #: fortran/interface.cc:1042
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of defined assignment at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1051 fortran/resolve.cc:19136
  #, gcc-internal-format, gfc-internal-format
  msgid "First argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1058 fortran/resolve.cc:19154
  #, gcc-internal-format, gfc-internal-format
  msgid "Second argument of operator interface at %L must be INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:1163
  #, gcc-internal-format, gfc-internal-format
  msgid "Operator interface at %L conflicts with intrinsic interface"
  msgstr ""
  
! #: fortran/interface.cc:1532 fortran/interface.cc:1604
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "check_dummy_characteristics: Unexpected result %i of gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1729
  #, gcc-internal-format, gfc-internal-format
  msgid "Possible character length mismatch in function result between %L and %L"
  msgstr ""
  
! #: fortran/interface.cc:1738
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "check_result_characteristics (1): Unexpected result %i of "
  "gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1785
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "check_result_characteristics (2): Unexpected result %i of "
  "gfc_dep_compare_expr"
  msgstr ""
  
! #: fortran/interface.cc:1982
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:1987
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L has no explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:1991
  #, gcc-internal-format
  msgid ""
  "Procedure %qs in %s at %L is neither function nor subroutine; did you mean "
  "%qs?"
  msgstr ""
  
! #: fortran/interface.cc:1995
  #, gcc-internal-format
  msgid "Procedure %qs in %s at %L is neither function nor subroutine"
  msgstr ""
  
! #: fortran/interface.cc:2007
  #, gcc-internal-format, gfc-internal-format
  msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
  msgstr ""
  
! #: fortran/interface.cc:2011
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "In %s at %L procedures must be all FUNCTIONs as the generic name is also the "
  "name of a derived type"
  msgstr ""
  
! #: fortran/interface.cc:2019
  #, gcc-internal-format
  msgid "Internal procedure %qs in %s at %L"
  msgstr ""
  
! #: fortran/interface.cc:2076 fortran/interface.cc:2081
  #, gcc-internal-format
  msgid "Ambiguous interfaces in %s for %qs at %L and %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2086
  #, gcc-internal-format
  msgid "Although not referenced, %qs has ambiguous interfaces at %L"
  msgstr ""
  
! #: fortran/interface.cc:2124
  #, gcc-internal-format
  msgid "%qs at %L is not a module procedure"
  msgstr ""
  
! #: fortran/interface.cc:2329
  #, gcc-internal-format
  msgid ""
  "The assumed-rank array at %L requires that the dummy argument %qs has "
  "assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2332
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2335
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2338
  #, gcc-internal-format
  msgid "Rank mismatch in argument %qs at %L (rank-%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2350
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Rank mismatch between actual argument at %L and actual argument at %L "
  "(scalar and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2354
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Rank mismatch between actual argument at %L and actual argument at %L (rank-"
  "%d and scalar)"
  msgstr ""
  
! #: fortran/interface.cc:2358
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Rank mismatch between actual argument at %L and actual argument at %L (rank-"
  "%d and rank-%d)"
  msgstr ""
  
! #: fortran/interface.cc:2482
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid procedure argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2494 fortran/interface.cc:2510
  #, gcc-internal-format, gfc-internal-format
  msgid "Interface mismatch in dummy procedure at %L conflicts with %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2498 fortran/interface.cc:2514
! #: fortran/interface.cc:2611
  #, gcc-internal-format
  msgid "Interface mismatch in dummy procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:2533
  #, gcc-internal-format
  msgid "Passing global subroutine %qs declared at %L as function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2540
  #, gcc-internal-format
  msgid "Passing global function %qs declared at %L as subroutine at %L"
  msgstr ""
  
! #: fortran/interface.cc:2553
  #, gcc-internal-format, gfc-internal-format
  msgid "Mismatch between subroutine and function at %L"
  msgstr ""
  
! #: fortran/interface.cc:2569
  #, gcc-internal-format
  msgid "Type mismatch at %L passing global function %qs declared at %L (%s/%s)"
  msgstr ""
  
! #: fortran/interface.cc:2622
  #, gcc-internal-format
  msgid ""
  "Actual argument to contiguous pointer dummy %qs at %L must be simply "
  "contiguous"
  msgstr ""
  
! #: fortran/interface.cc:2645
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Type mismatch between actual argument at %L and actual argument at %L (%s/"
  "%s)."
  msgstr ""
  
! #: fortran/interface.cc:2655
  #, gcc-internal-format
  msgid "Type mismatch in argument %qs at %L; passed %s to %s"
  msgstr ""
  
! #: fortran/interface.cc:2665
  #, gcc-internal-format
  msgid ""
  "Assumed-type actual argument at %L requires that dummy argument %qs is of "
  "assumed type"
  msgstr ""
  
! #: fortran/interface.cc:2679
  #, gcc-internal-format
  msgid ""
  "Assumed-type actual argument at %L corresponding to assumed-rank dummy "
  "argument %qs must be assumed-shape or assumed-rank"
  msgstr ""
  
! #: fortran/interface.cc:2696
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be polymorphic"
  msgstr ""
  
! #: fortran/interface.cc:2706
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must have the same declared type"
  msgstr ""
  
! #: fortran/interface.cc:2721
  #, gcc-internal-format
  msgid ""
  "Actual argument to %qs at %L must be unlimited polymorphic since the formal "
*************** msgid ""
*** 78594,78631 ****
  "12.5.2.5]"
  msgstr ""
  
! #: fortran/interface.cc:2716
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be a coarray"
  msgstr ""
  
! #: fortran/interface.cc:2738
  #, gcc-internal-format
  msgid "Corank mismatch in argument %qs at %L (%d and %d)"
  msgstr ""
  
! #: fortran/interface.cc:2756
  #, gcc-internal-format
  msgid ""
  "Actual argument to %qs at %L must be simply contiguous or an element of such "
  "an array"
  msgstr ""
  
! #: fortran/interface.cc:2771
  #, gcc-internal-format
  msgid ""
  "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or "
  "has a LOCK_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2786
  #, gcc-internal-format
  msgid ""
  "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or "
  "has a EVENT_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2805
  #, gcc-internal-format
  msgid ""
  "Dummy argument %qs has to be a pointer, assumed-shape or assumed-rank array "
--- 78690,78727 ----
  "12.5.2.5]"
  msgstr ""
  
! #: fortran/interface.cc:2737
  #, gcc-internal-format
  msgid "Actual argument to %qs at %L must be a coarray"
  msgstr ""
  
! #: fortran/interface.cc:2759
  #, gcc-internal-format
  msgid "Corank mismatch in argument %qs at %L (%d and %d)"
  msgstr ""
  
! #: fortran/interface.cc:2777
  #, gcc-internal-format
  msgid ""
  "Actual argument to %qs at %L must be simply contiguous or an element of such "
  "an array"
  msgstr ""
  
! #: fortran/interface.cc:2792
  #, gcc-internal-format
  msgid ""
  "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or "
  "has a LOCK_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2807
  #, gcc-internal-format
  msgid ""
  "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or "
  "has a EVENT_TYPE component"
  msgstr ""
  
! #: fortran/interface.cc:2826
  #, gcc-internal-format
  msgid ""
  "Dummy argument %qs has to be a pointer, assumed-shape or assumed-rank array "
*************** msgid ""
*** 78633,78882 ****
  "contiguous and both are ASYNCHRONOUS or VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:2818
  #, gcc-internal-format
  msgid ""
  "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument "
  "%qs"
  msgstr ""
  
! #: fortran/interface.cc:2825
  #, gcc-internal-format
  msgid ""
  "Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which "
  "is invalid if the allocation status is modified"
  msgstr ""
  
! #: fortran/interface.cc:2912
  #, gcc-internal-format
  msgid "Polymorphic scalar passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2923
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Element of assumed-shape or pointer array as actual argument at %L cannot "
  "correspond to actual argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2928
  #, gcc-internal-format
  msgid ""
  "Element of assumed-shape or pointer array passed to array dummy argument %qs "
  "at %L"
  msgstr ""
  
! #: fortran/interface.cc:2941
  #, gcc-internal-format
  msgid ""
  "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual "
  "argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2949
  #, gcc-internal-format
  msgid ""
  "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs "
  "at %L"
  msgstr ""
  
! #: fortran/interface.cc:3338
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is invalid in a statement function"
  msgstr ""
  
! #: fortran/interface.cc:3361
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:3365
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure"
  msgstr ""
  
! #: fortran/interface.cc:3374
  #, gcc-internal-format
  msgid ""
  "Keyword argument %qs at %L is already associated with another actual argument"
  msgstr ""
  
! #: fortran/interface.cc:3384
  #, gcc-internal-format, gfc-internal-format
  msgid "More actual than formal arguments in procedure call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3397
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return specifier in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3415
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected alternate return specifier in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3438
  #, gcc-internal-format
  msgid ""
  "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-rank "
  "dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3451
  #, gcc-internal-format
  msgid ""
  "The assumed-size dummy %qs is being passed at %L to an assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3462
  #, gcc-internal-format
  msgid ""
  "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-"
  "length dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3502
  #, gcc-internal-format
  msgid "Unexpected NULL() intrinsic at %L to dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3505
  #, gcc-internal-format
  msgid "Fortran 2008: Null pointer at %L to non-pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3531
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Actual argument at %L to assumed-type dummy has type parameters or is of "
  "derived type with type-bound or FINAL procedures"
  msgstr ""
  
! #: fortran/interface.cc:3543
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Unlimited polymorphic actual argument at %L is not matched with either an "
  "unlimited polymorphic or assumed type dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:3567
  #, gcc-internal-format
  msgid ""
  "Character length mismatch (%ld/%ld) between actual argument and pointer or "
  "allocatable dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3574
  #, gcc-internal-format
  msgid ""
  "Character length mismatch (%ld/%ld) between actual argument and assumed-"
  "shape dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3589
  #, gcc-internal-format
  msgid ""
  "Actual argument at %L to allocatable or pointer dummy argument %qs must have "
  "a deferred length type parameter if and only if the dummy has one"
  msgstr ""
  
! #: fortran/interface.cc:3612
  #, gcc-internal-format
  msgid ""
  "Character length of actual argument shorter than of dummy argument %qs (%lu/"
  "%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3622 fortran/interface.cc:3627
  #, gcc-internal-format
  msgid ""
  "Actual argument contains too few elements for dummy argument %qs (%lu/%lu) "
  "at %L"
  msgstr ""
  
! #: fortran/interface.cc:3653
  #, gcc-internal-format
  msgid "Expected a procedure pointer for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3670
  #, gcc-internal-format
  msgid "Expected a procedure for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3737
  #, gcc-internal-format
  msgid "Actual argument for %qs cannot be an assumed-size array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3766
  #, gcc-internal-format
  msgid ""
  "Actual argument to assumed-rank INTENT(OUT) dummy %qs at %L cannot be of "
  "unknown size"
  msgstr ""
  
! #: fortran/interface.cc:3781
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L must be a pointer"
  msgstr ""
  
! #: fortran/interface.cc:3790
  #, gcc-internal-format
  msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3799
  #, gcc-internal-format
  msgid ""
  "Actual argument for %qs at %L must be a pointer or a valid target for the "
  "dummy pointer in a pointer assignment statement"
  msgstr ""
  
! #: fortran/interface.cc:3813
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3827
  #, gcc-internal-format
  msgid ""
  "Coindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3842
  #, gcc-internal-format
  msgid ""
  "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy "
  "%qs has neither ASYNCHRONOUS nor VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:3857
  #, gcc-internal-format
  msgid ""
  "Coindexed actual argument at %L with allocatable ultimate component to dummy "
  "%qs requires either VALUE or INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3870
  #, gcc-internal-format
  msgid "Actual CLASS array argument for %qs must be a full array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3881
  #, gcc-internal-format
  msgid "Actual argument for %qs must be ALLOCATABLE at %L"
  msgstr ""
  
! #: fortran/interface.cc:3892
  #, gcc-internal-format
  msgid ""
  "Actual argument for %qs at %L is a function result and the dummy argument is "
  "ALLOCATABLE"
  msgstr ""
  
! #: fortran/interface.cc:3930
  #, gcc-internal-format
  msgid ""
  "Array-section actual argument with vector subscripts at %L is incompatible "
--- 78729,78978 ----
  "contiguous and both are ASYNCHRONOUS or VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:2839
  #, gcc-internal-format
  msgid ""
  "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument "
  "%qs"
  msgstr ""
  
! #: fortran/interface.cc:2846
  #, gcc-internal-format
  msgid ""
  "Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which "
  "is invalid if the allocation status is modified"
  msgstr ""
  
! #: fortran/interface.cc:2933
  #, gcc-internal-format
  msgid "Polymorphic scalar passed to array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2944
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Element of assumed-shape or pointer array as actual argument at %L cannot "
  "correspond to actual argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:2949
  #, gcc-internal-format
  msgid ""
  "Element of assumed-shape or pointer array passed to array dummy argument %qs "
  "at %L"
  msgstr ""
  
! #: fortran/interface.cc:2962
  #, gcc-internal-format
  msgid ""
  "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual "
  "argument with array dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:2970
  #, gcc-internal-format
  msgid ""
  "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs "
  "at %L"
  msgstr ""
  
! #: fortran/interface.cc:3359
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is invalid in a statement function"
  msgstr ""
  
! #: fortran/interface.cc:3382
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:3386
  #, gcc-internal-format
  msgid "Keyword argument %qs at %L is not in the procedure"
  msgstr ""
  
! #: fortran/interface.cc:3395
  #, gcc-internal-format
  msgid ""
  "Keyword argument %qs at %L is already associated with another actual argument"
  msgstr ""
  
! #: fortran/interface.cc:3405
  #, gcc-internal-format, gfc-internal-format
  msgid "More actual than formal arguments in procedure call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3418
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return specifier in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3436
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected alternate return specifier in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:3459
  #, gcc-internal-format
  msgid ""
  "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-rank "
  "dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3472
  #, gcc-internal-format
  msgid ""
  "The assumed-size dummy %qs is being passed at %L to an assumed-rank dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3483
  #, gcc-internal-format
  msgid ""
  "Intrinsic %<NULL()%> without %<MOLD%> argument at %L passed to assumed-"
  "length dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3523
  #, gcc-internal-format
  msgid "Unexpected NULL() intrinsic at %L to dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3526
  #, gcc-internal-format
  msgid "Fortran 2008: Null pointer at %L to non-pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3552
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Actual argument at %L to assumed-type dummy has type parameters or is of "
  "derived type with type-bound or FINAL procedures"
  msgstr ""
  
! #: fortran/interface.cc:3564
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Unlimited polymorphic actual argument at %L is not matched with either an "
  "unlimited polymorphic or assumed type dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:3588
  #, gcc-internal-format
  msgid ""
  "Character length mismatch (%ld/%ld) between actual argument and pointer or "
  "allocatable dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3595
  #, gcc-internal-format
  msgid ""
  "Character length mismatch (%ld/%ld) between actual argument and assumed-"
  "shape dummy argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3610
  #, gcc-internal-format
  msgid ""
  "Actual argument at %L to allocatable or pointer dummy argument %qs must have "
  "a deferred length type parameter if and only if the dummy has one"
  msgstr ""
  
! #: fortran/interface.cc:3633
  #, gcc-internal-format
  msgid ""
  "Character length of actual argument shorter than of dummy argument %qs (%lu/"
  "%lu) at %L"
  msgstr ""
  
! #: fortran/interface.cc:3643 fortran/interface.cc:3648
  #, gcc-internal-format
  msgid ""
  "Actual argument contains too few elements for dummy argument %qs (%lu/%lu) "
  "at %L"
  msgstr ""
  
! #: fortran/interface.cc:3674
  #, gcc-internal-format
  msgid "Expected a procedure pointer for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3691
  #, gcc-internal-format
  msgid "Expected a procedure for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:3758
  #, gcc-internal-format
  msgid "Actual argument for %qs cannot be an assumed-size array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3787
  #, gcc-internal-format
  msgid ""
  "Actual argument to assumed-rank INTENT(OUT) dummy %qs at %L cannot be of "
  "unknown size"
  msgstr ""
  
! #: fortran/interface.cc:3802
  #, gcc-internal-format
  msgid "Actual argument for %qs at %L must be a pointer"
  msgstr ""
  
! #: fortran/interface.cc:3811
  #, gcc-internal-format
  msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3820
  #, gcc-internal-format
  msgid ""
  "Actual argument for %qs at %L must be a pointer or a valid target for the "
  "dummy pointer in a pointer assignment statement"
  msgstr ""
  
! #: fortran/interface.cc:3834
  #, gcc-internal-format
  msgid "Coindexed actual argument at %L to pointer dummy %qs"
  msgstr ""
  
! #: fortran/interface.cc:3848
  #, gcc-internal-format
  msgid ""
  "Coindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3863
  #, gcc-internal-format
  msgid ""
  "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy "
  "%qs has neither ASYNCHRONOUS nor VOLATILE"
  msgstr ""
  
! #: fortran/interface.cc:3878
  #, gcc-internal-format
  msgid ""
  "Coindexed actual argument at %L with allocatable ultimate component to dummy "
  "%qs requires either VALUE or INTENT(IN)"
  msgstr ""
  
! #: fortran/interface.cc:3891
  #, gcc-internal-format
  msgid "Actual CLASS array argument for %qs must be a full array at %L"
  msgstr ""
  
! #: fortran/interface.cc:3902
  #, gcc-internal-format
  msgid "Actual argument for %qs must be ALLOCATABLE at %L"
  msgstr ""
  
! #: fortran/interface.cc:3913
  #, gcc-internal-format
  msgid ""
  "Actual argument for %qs at %L is a function result and the dummy argument is "
  "ALLOCATABLE"
  msgstr ""
  
! #: fortran/interface.cc:3951
  #, gcc-internal-format
  msgid ""
  "Array-section actual argument with vector subscripts at %L is incompatible "
*************** msgid ""
*** 78884,79224 ****
  "dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:3950
  #, gcc-internal-format
  msgid ""
  "Assumed-shape actual argument at %L is incompatible with the non-assumed-"
  "shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:3968
  #, gcc-internal-format
  msgid ""
  "Array-section actual argument at %L is incompatible with the non-assumed-"
  "shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:3989
  #, gcc-internal-format
  msgid ""
  "Pointer-array actual argument at %L requires an assumed-shape or pointer-"
  "array dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:4017
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return spec in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:4030
  #, gcc-internal-format
  msgid "Missing actual argument for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4158
  #, gcc-internal-format
  msgid "compare_actual_expr(): Bad component code"
  msgstr ""
  
! #: fortran/interface.cc:4187
  #, gcc-internal-format
  msgid "check_some_aliasing(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4213
  #, gcc-internal-format
  msgid "check_some_aliasing(): corrupted data"
  msgstr ""
  
! #: fortran/interface.cc:4223
  #, gcc-internal-format
  msgid ""
  "Same actual argument associated with INTENT(%s) argument %qs and INTENT(%s) "
  "argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4253
  #, gcc-internal-format
  msgid "check_intents(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4273
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Procedure argument at %L is local to a PURE procedure and has the POINTER "
  "attribute"
  msgstr ""
  
! #: fortran/interface.cc:4285
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) "
  "argument"
  msgstr ""
  
! #: fortran/interface.cc:4295
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Coindexed actual argument at %L in PURE procedure is passed to a POINTER "
  "dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:4306
  #, gcc-internal-format
  msgid ""
  "Coindexed polymorphic actual argument at %L is passed polymorphic dummy "
  "argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:4348
  #, gcc-internal-format
  msgid ""
  "Procedure %qs called at %L is not explicitly declared; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:4352 fortran/interface.cc:4362
  #, gcc-internal-format
  msgid "Procedure %qs called at %L is not explicitly declared"
  msgstr ""
  
! #: fortran/interface.cc:4358
  #, gcc-internal-format
  msgid "Procedure %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4371
  #, gcc-internal-format
  msgid ""
  "The pointer object %qs at %L must have an explicit function interface or be "
  "declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4379
  #, gcc-internal-format
  msgid ""
  "The allocatable object %qs at %L must have an explicit function interface or "
  "be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4387
  #, gcc-internal-format
  msgid "Allocatable function %qs at %L must have an explicit function interface"
  msgstr ""
  
! #: fortran/interface.cc:4404
  #, gcc-internal-format, gfc-internal-format
  msgid "Explicit interface required for polymorphic argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:4413
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4422
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type argument %s at %L requires an explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:4437
  #, gcc-internal-format
  msgid ""
  "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an "
  "explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4452
  #, gcc-internal-format
  msgid ""
  "Actual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an "
  "explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4462
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD argument to NULL required at %L"
  msgstr ""
  
! #: fortran/interface.cc:4470
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Passing intrinsic NULL as actual argument at %L requires an explicit "
  "interface"
  msgstr ""
  
! #: fortran/interface.cc:4480
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank argument requires an explicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4522
  #, gcc-internal-format
  msgid "Procedure pointer component %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4533
  #, gcc-internal-format
  msgid ""
  "Keyword argument requires explicit interface for procedure pointer component "
  "%qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4618
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "MOLD= required in NULL() argument at %L: Ambiguity between specific "
  "functions %s and %s"
  msgstr ""
  
! #: fortran/interface.cc:4688
  #, gcc-internal-format
  msgid "Unable to find symbol %qs"
  msgstr ""
  
! #: fortran/interface.cc:5072
  #, gcc-internal-format
  msgid "Entity %qs at %L is already present in the interface"
  msgstr ""
  
! #: fortran/interface.cc:5189
  #, gcc-internal-format
  msgid "gfc_add_interface(): Bad interface type"
  msgstr ""
  
! #: fortran/interface.cc:5283
  #, gcc-internal-format
  msgid "Cannot overwrite GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:5295
  #, gcc-internal-format
  msgid "%qs at %L overrides a procedure binding declared NON_OVERRIDABLE"
  msgstr ""
  
! #: fortran/interface.cc:5303
  #, gcc-internal-format
  msgid "%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
  msgstr ""
  
! #: fortran/interface.cc:5311
  #, gcc-internal-format
  msgid "%qs at %L overrides a PURE procedure and must also be PURE"
  msgstr ""
  
! #: fortran/interface.cc:5320
  #, gcc-internal-format
  msgid "%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
  msgstr ""
  
! #: fortran/interface.cc:5326
  #, gcc-internal-format
  msgid ""
  "%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, "
  "either"
  msgstr ""
  
! #: fortran/interface.cc:5335
  #, gcc-internal-format
  msgid "%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:5346
  #, gcc-internal-format
  msgid "%qs at %L overrides a FUNCTION and must also be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:5354
  #, gcc-internal-format
  msgid "Result mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5365
  #, gcc-internal-format
  msgid "%qs at %L overrides a PUBLIC procedure and must not be PRIVATE"
  msgstr ""
  
! #: fortran/interface.cc:5395
  #, gcc-internal-format
  msgid ""
  "Dummy argument %qs of %qs at %L should be named %qs as to match the "
  "corresponding argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5406
  #, gcc-internal-format
  msgid "Argument mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5415
  #, gcc-internal-format
  msgid ""
  "%qs at %L must have the same number of formal arguments as the overridden "
  "procedure"
  msgstr ""
  
! #: fortran/interface.cc:5424
  #, gcc-internal-format
  msgid "%qs at %L overrides a NOPASS binding and must also be NOPASS"
  msgstr ""
  
! #: fortran/interface.cc:5435
  #, gcc-internal-format
  msgid "%qs at %L overrides a binding with PASS and must also be PASS"
  msgstr ""
  
! #: fortran/interface.cc:5442
  #, gcc-internal-format
  msgid ""
  "Passed-object dummy argument of %qs at %L must be at the same position as "
  "the passed-object dummy argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5463
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be of type %s"
  msgstr ""
  
! #: fortran/interface.cc:5470
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be of KIND = %d"
  msgstr ""
  
! #: fortran/interface.cc:5477
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be a scalar"
  msgstr ""
  
! #: fortran/interface.cc:5481
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be an ASSUMED SHAPE ARRAY"
  msgstr ""
  
! #: fortran/interface.cc:5485
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO character argument at %L must have assumed length"
  msgstr ""
  
! #: fortran/interface.cc:5489
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must have INTENT %s"
  msgstr ""
  
! #: fortran/interface.cc:5547 fortran/interface.cc:5593
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return at %L is not permitted in a DTIO procedure"
  msgstr ""
  
! #: fortran/interface.cc:5559
  #, gcc-internal-format
  msgid "DTIO procedure %qs at %L must be a subroutine"
  msgstr ""
  
! #: fortran/interface.cc:5571
  #, gcc-internal-format
  msgid "Too few dummy arguments in DTIO procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:5578
  #, gcc-internal-format
  msgid "Too many dummy arguments in DTIO procedure %qs at %L"
  msgstr ""
--- 78980,79320 ----
  "dummy argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:3971
  #, gcc-internal-format
  msgid ""
  "Assumed-shape actual argument at %L is incompatible with the non-assumed-"
  "shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:3989
  #, gcc-internal-format
  msgid ""
  "Array-section actual argument at %L is incompatible with the non-assumed-"
  "shape dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:4010
  #, gcc-internal-format
  msgid ""
  "Pointer-array actual argument at %L requires an assumed-shape or pointer-"
  "array dummy argument %qs due to VOLATILE attribute"
  msgstr ""
  
! #: fortran/interface.cc:4038
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing alternate return spec in subroutine call at %L"
  msgstr ""
  
! #: fortran/interface.cc:4051
  #, gcc-internal-format
  msgid "Missing actual argument for argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4179
  #, gcc-internal-format
  msgid "compare_actual_expr(): Bad component code"
  msgstr ""
  
! #: fortran/interface.cc:4208
  #, gcc-internal-format
  msgid "check_some_aliasing(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4234
  #, gcc-internal-format
  msgid "check_some_aliasing(): corrupted data"
  msgstr ""
  
! #: fortran/interface.cc:4244
  #, gcc-internal-format
  msgid ""
  "Same actual argument associated with INTENT(%s) argument %qs and INTENT(%s) "
  "argument %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4274
  #, gcc-internal-format
  msgid "check_intents(): List mismatch"
  msgstr ""
  
! #: fortran/interface.cc:4294
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Procedure argument at %L is local to a PURE procedure and has the POINTER "
  "attribute"
  msgstr ""
  
! #: fortran/interface.cc:4306
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) "
  "argument"
  msgstr ""
  
! #: fortran/interface.cc:4316
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Coindexed actual argument at %L in PURE procedure is passed to a POINTER "
  "dummy argument"
  msgstr ""
  
! #: fortran/interface.cc:4327
  #, gcc-internal-format
  msgid ""
  "Coindexed polymorphic actual argument at %L is passed polymorphic dummy "
  "argument %qs"
  msgstr ""
  
! #: fortran/interface.cc:4369
  #, gcc-internal-format
  msgid ""
  "Procedure %qs called at %L is not explicitly declared; did you mean %qs?"
  msgstr ""
  
! #: fortran/interface.cc:4373 fortran/interface.cc:4383
  #, gcc-internal-format
  msgid "Procedure %qs called at %L is not explicitly declared"
  msgstr ""
  
! #: fortran/interface.cc:4379
  #, gcc-internal-format
  msgid "Procedure %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4392
  #, gcc-internal-format
  msgid ""
  "The pointer object %qs at %L must have an explicit function interface or be "
  "declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4400
  #, gcc-internal-format
  msgid ""
  "The allocatable object %qs at %L must have an explicit function interface or "
  "be declared as array"
  msgstr ""
  
! #: fortran/interface.cc:4408
  #, gcc-internal-format
  msgid "Allocatable function %qs at %L must have an explicit function interface"
  msgstr ""
  
! #: fortran/interface.cc:4425
  #, gcc-internal-format, gfc-internal-format
  msgid "Explicit interface required for polymorphic argument at %L"
  msgstr ""
  
! #: fortran/interface.cc:4434
  #, gcc-internal-format
  msgid "Keyword argument requires explicit interface for procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4443
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type argument %s at %L requires an explicit interface"
  msgstr ""
  
! #: fortran/interface.cc:4458
  #, gcc-internal-format
  msgid ""
  "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an "
  "explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4473
  #, gcc-internal-format
  msgid ""
  "Actual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an "
  "explicit interface for procedure %qs"
  msgstr ""
  
! #: fortran/interface.cc:4483
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD argument to NULL required at %L"
  msgstr ""
  
! #: fortran/interface.cc:4491
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Passing intrinsic NULL as actual argument at %L requires an explicit "
  "interface"
  msgstr ""
  
! #: fortran/interface.cc:4501
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank argument requires an explicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4543
  #, gcc-internal-format
  msgid "Procedure pointer component %qs called with an implicit interface at %L"
  msgstr ""
  
! #: fortran/interface.cc:4554
  #, gcc-internal-format
  msgid ""
  "Keyword argument requires explicit interface for procedure pointer component "
  "%qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:4639
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "MOLD= required in NULL() argument at %L: Ambiguity between specific "
  "functions %s and %s"
  msgstr ""
  
! #: fortran/interface.cc:4709
  #, gcc-internal-format
  msgid "Unable to find symbol %qs"
  msgstr ""
  
! #: fortran/interface.cc:5100
  #, gcc-internal-format
  msgid "Entity %qs at %L is already present in the interface"
  msgstr ""
  
! #: fortran/interface.cc:5217
  #, gcc-internal-format
  msgid "gfc_add_interface(): Bad interface type"
  msgstr ""
  
! #: fortran/interface.cc:5311
  #, gcc-internal-format
  msgid "Cannot overwrite GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:5323
  #, gcc-internal-format
  msgid "%qs at %L overrides a procedure binding declared NON_OVERRIDABLE"
  msgstr ""
  
! #: fortran/interface.cc:5331
  #, gcc-internal-format
  msgid "%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
  msgstr ""
  
! #: fortran/interface.cc:5339
  #, gcc-internal-format
  msgid "%qs at %L overrides a PURE procedure and must also be PURE"
  msgstr ""
  
! #: fortran/interface.cc:5348
  #, gcc-internal-format
  msgid "%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
  msgstr ""
  
! #: fortran/interface.cc:5354
  #, gcc-internal-format
  msgid ""
  "%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, "
  "either"
  msgstr ""
  
! #: fortran/interface.cc:5363
  #, gcc-internal-format
  msgid "%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
  msgstr ""
  
! #: fortran/interface.cc:5374
  #, gcc-internal-format
  msgid "%qs at %L overrides a FUNCTION and must also be a FUNCTION"
  msgstr ""
  
! #: fortran/interface.cc:5382
  #, gcc-internal-format
  msgid "Result mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5393
  #, gcc-internal-format
  msgid "%qs at %L overrides a PUBLIC procedure and must not be PRIVATE"
  msgstr ""
  
! #: fortran/interface.cc:5423
  #, gcc-internal-format
  msgid ""
  "Dummy argument %qs of %qs at %L should be named %qs as to match the "
  "corresponding argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5434
  #, gcc-internal-format
  msgid "Argument mismatch for the overriding procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/interface.cc:5443
  #, gcc-internal-format
  msgid ""
  "%qs at %L must have the same number of formal arguments as the overridden "
  "procedure"
  msgstr ""
  
! #: fortran/interface.cc:5452
  #, gcc-internal-format
  msgid "%qs at %L overrides a NOPASS binding and must also be NOPASS"
  msgstr ""
  
! #: fortran/interface.cc:5463
  #, gcc-internal-format
  msgid "%qs at %L overrides a binding with PASS and must also be PASS"
  msgstr ""
  
! #: fortran/interface.cc:5470
  #, gcc-internal-format
  msgid ""
  "Passed-object dummy argument of %qs at %L must be at the same position as "
  "the passed-object dummy argument of the overridden procedure"
  msgstr ""
  
! #: fortran/interface.cc:5491
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be of type %s"
  msgstr ""
  
! #: fortran/interface.cc:5498
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be of KIND = %d"
  msgstr ""
  
! #: fortran/interface.cc:5505
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be a scalar"
  msgstr ""
  
! #: fortran/interface.cc:5509
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must be an ASSUMED SHAPE ARRAY"
  msgstr ""
  
! #: fortran/interface.cc:5513
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO character argument at %L must have assumed length"
  msgstr ""
  
! #: fortran/interface.cc:5517
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO dummy argument at %L must have INTENT %s"
  msgstr ""
  
! #: fortran/interface.cc:5575 fortran/interface.cc:5621
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate return at %L is not permitted in a DTIO procedure"
  msgstr ""
  
! #: fortran/interface.cc:5587
  #, gcc-internal-format
  msgid "DTIO procedure %qs at %L must be a subroutine"
  msgstr ""
  
! #: fortran/interface.cc:5599
  #, gcc-internal-format
  msgid "Too few dummy arguments in DTIO procedure %qs at %L"
  msgstr ""
  
! #: fortran/interface.cc:5606
  #, gcc-internal-format
  msgid "Too many dummy arguments in DTIO procedure %qs at %L"
  msgstr ""
*************** msgstr ""
*** 79429,79435 ****
  #. Use of -fdec-char-conversions allows assignment of character data
  #. to non-character variables.  This not permitted for nonconstant
  #. strings.
! #: fortran/intrinsic.cc:5573 fortran/resolve.cc:12312
  #, gcc-internal-format, gfc-internal-format
  msgid "Cannot convert %s to %s at %L"
  msgstr ""
--- 79525,79531 ----
  #. Use of -fdec-char-conversions allows assignment of character data
  #. to non-character variables.  This not permitted for nonconstant
  #. strings.
! #: fortran/intrinsic.cc:5573 fortran/resolve.cc:12302
  #, gcc-internal-format, gfc-internal-format
  msgid "Cannot convert %s to %s at %L"
  msgstr ""
*************** msgstr ""
*** 79614,80159 ****
  msgid "The H format specifier at %L is a Fortran 95 deleted feature"
  msgstr ""
  
! #: fortran/io.cc:1231 fortran/io.cc:1293
  #, gcc-internal-format, gfc-internal-format
! msgid "Missing comma at %L"
  msgstr ""
  
! #: fortran/io.cc:1349
  #, gcc-internal-format, gfc-internal-format
  msgid "Extraneous characters in format at %L"
  msgstr ""
  
! #: fortran/io.cc:1371
  #, gcc-internal-format, gfc-internal-format
  msgid "Format statement in module main block at %C"
  msgstr ""
  
! #: fortran/io.cc:1380
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT statement at %C cannot appear within an INTERFACE"
  msgstr ""
  
! #: fortran/io.cc:1386
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing format label at %C"
  msgstr ""
  
! #: fortran/io.cc:1441 fortran/io.cc:1472 fortran/io.cc:1552
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid value for %s specification at %C"
  msgstr ""
  
! #: fortran/io.cc:1447 fortran/io.cc:1478 fortran/io.cc:1634 fortran/io.cc:1647
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate %s specification at %C"
  msgstr ""
  
! #: fortran/io.cc:1489
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:1497
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be assigned in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:1527
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a variable at %L"
  msgstr ""
  
! #: fortran/io.cc:1558
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate %s label specification at %C"
  msgstr ""
  
! #: fortran/io.cc:1578 fortran/io.cc:1595 fortran/io.cc:1616
  #, gcc-internal-format
  msgid "%s at %C is a DEC extension, enable with %<-fdec%>"
  msgstr ""
  
! #: fortran/io.cc:1669
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Constant expression in FORMAT tag at %L must be of type default CHARACTER"
  msgstr ""
  
! #: fortran/io.cc:1694
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L cannot be a zero-sized array"
  msgstr ""
  
! #: fortran/io.cc:1735
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L must be of type default-kind CHARACTER or of INTEGER"
  msgstr ""
  
! #: fortran/io.cc:1741
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED variable in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1746
  #, gcc-internal-format
  msgid "Variable %qs at %L has not been assigned a format label"
  msgstr ""
  
! #: fortran/io.cc:1753
  #, gcc-internal-format
  msgid "Scalar %qs in FORMAT tag at %L is not an ASSIGNED variable"
  msgstr ""
  
! #: fortran/io.cc:1768
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character non-Hollerith in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1772
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1778
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed shape array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1785
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed size array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1792
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character pointer array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1818
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be of type %s"
  msgstr ""
  
! #: fortran/io.cc:1825
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be a character string of default kind"
  msgstr ""
  
! #: fortran/io.cc:1832
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be scalar"
  msgstr ""
  
! #: fortran/io.cc:1838
  #, gcc-internal-format, gfc-internal-format
  msgid "IOMSG tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1846
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 95 requires default INTEGER in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1855
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-default LOGICAL kind in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1862
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:1880
  #, gcc-internal-format, gfc-internal-format
  msgid "CONVERT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:2096
  #, gcc-internal-format
  msgid "Fortran 2003: %s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2104 fortran/io.cc:2131
  #, gcc-internal-format
  msgid "%s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2123
  #, gcc-internal-format
  msgid "Extension: %s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2145 fortran/io.cc:2153
  #, gcc-internal-format
  msgid "%s specifier in %s statement at %L has invalid value %qs"
  msgstr ""
  
! #: fortran/io.cc:2210
  #, gcc-internal-format, gfc-internal-format
  msgid "ACTION type conflicts with READONLY specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:2226
  #, gcc-internal-format, gfc-internal-format
  msgid "ASYNCHRONOUS= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2245 fortran/io.cc:3919
  #, gcc-internal-format, gfc-internal-format
  msgid "BLANK= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2273 fortran/io.cc:3897
  #, gcc-internal-format, gfc-internal-format
  msgid "DECIMAL= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2305
  #, gcc-internal-format, gfc-internal-format
  msgid "ENCODING= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2356 fortran/io.cc:3964
  #, gcc-internal-format, gfc-internal-format
  msgid "ROUND= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2386
  #, gcc-internal-format, gfc-internal-format
  msgid "SIGN= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2407
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL in OPEN statement at %L must be positive"
  msgstr ""
  
! #: fortran/io.cc:2432
  #, gcc-internal-format
  msgid ""
  "The STATUS specified in OPEN statement at %L is %qs and no FILE specifier is "
  "present"
  msgstr ""
  
! #: fortran/io.cc:2443
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The STATUS specified in OPEN statement at %L cannot have the value SCRATCH "
  "if a FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2454
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specifier not allowed with NEWUNIT at %L"
  msgstr ""
  
! #: fortran/io.cc:2465
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %L"
  msgstr ""
  
! #: fortran/io.cc:2472
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement at %L must have UNIT or NEWUNIT specified"
  msgstr ""
  
! #: fortran/io.cc:2507
  #, gcc-internal-format, gfc-internal-format
  msgid "%sspecifier at %L not allowed in OPEN statement for unformatted I/O"
  msgstr ""
  
! #: fortran/io.cc:2515
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL specifier not allowed in OPEN statement at %L for stream I/O"
  msgstr ""
  
! #: fortran/io.cc:2528
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "POSITION specifier in OPEN statement at %L only allowed for stream or "
  "sequential ACCESS"
  msgstr ""
  
! #: fortran/io.cc:2581
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2689
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2715
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement at %L requires a UNIT number"
  msgstr ""
  
! #: fortran/io.cc:2723
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in CLOSE statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2846 fortran/match.cc:3471
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2876
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number missing in statement at %L"
  msgstr ""
  
! #: fortran/io.cc:2887 fortran/io.cc:3377
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2920
  #, gcc-internal-format, gfc-internal-format
  msgid "FLUSH statement at %C"
  msgstr ""
  
! #: fortran/io.cc:2961
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing format with default unit at %C"
  msgstr ""
  
! #: fortran/io.cc:2981
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate UNIT specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3055
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate format specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3096
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs is INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:3132
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate NML specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3141
  #, gcc-internal-format
  msgid "Symbol %qs at %C must be a NAMELIST group name"
  msgstr ""
  
! #: fortran/io.cc:3207
  #, gcc-internal-format, gfc-internal-format
  msgid "END tag at %C not allowed in output statement"
  msgstr ""
  
! #: fortran/io.cc:3303
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT not specified at %L"
  msgstr ""
  
! #: fortran/io.cc:3310
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must not be a character PARAMETER"
  msgstr ""
  
! #: fortran/io.cc:3323
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "UNIT specification at %L must be an INTEGER expression or a CHARACTER "
  "variable"
  msgstr ""
  
! #: fortran/io.cc:3345
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid form of WRITE statement at %L, UNIT required"
  msgstr ""
  
! #: fortran/io.cc:3356
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal unit with vector subscript at %L"
  msgstr ""
  
! #: fortran/io.cc:3370
  #, gcc-internal-format, gfc-internal-format
  msgid "External IO UNIT cannot be an array at %L"
  msgstr ""
  
! #: fortran/io.cc:3400
  #, gcc-internal-format
  msgid ""
  "NAMELIST %qs in READ statement at %L contains the symbol %qs which may not "
  "appear in a variable definition context"
  msgstr ""
  
! #: fortran/io.cc:3412
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs in namelist %qs at %L is polymorphic and requires a "
  "defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3422 fortran/resolve.cc:16941
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER "
  "components"
  msgstr ""
  
! #: fortran/io.cc:3430
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER "
  "components and thus requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3441
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma before i/o item list at %L"
  msgstr ""
  
! #: fortran/io.cc:3451
  #, gcc-internal-format, gfc-internal-format
  msgid "ERR tag label %d at %L not defined"
  msgstr ""
  
! #: fortran/io.cc:3463
  #, gcc-internal-format, gfc-internal-format
  msgid "END tag label %d at %L not defined"
  msgstr ""
  
! #: fortran/io.cc:3475
  #, gcc-internal-format, gfc-internal-format
  msgid "EOR tag label %d at %L not defined"
  msgstr ""
  
! #: fortran/io.cc:3485
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT label %d at %L not defined"
  msgstr ""
  
! #: fortran/io.cc:3516
  #, gcc-internal-format
  msgid "io_kind_name(): bad I/O-kind"
  msgstr ""
  
! #: fortran/io.cc:3605
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in I/O iterator at %C"
  msgstr ""
  
! #: fortran/io.cc:3637
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable in READ statement at %C"
  msgstr ""
  
! #: fortran/io.cc:3643
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do in READ statement at %L"
  msgstr ""
  
! #: fortran/io.cc:3652
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do at %L"
  msgstr ""
  
! #: fortran/io.cc:3661
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected expression in %s statement at %C"
  msgstr ""
  
! #: fortran/io.cc:3666
  #, gcc-internal-format, gfc-internal-format
  msgid "BOZ literal constant at %L cannot appear in an output IO list"
  msgstr ""
  
! #: fortran/io.cc:3814
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal file at %L with namelist"
  msgstr ""
  
! #: fortran/io.cc:3829
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "IO UNIT in %s statement at %L must be an internal file in a PURE procedure"
  msgstr ""
  
! #: fortran/io.cc:3942
  #, gcc-internal-format, gfc-internal-format
  msgid "PAD= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4011
  #, gcc-internal-format, gfc-internal-format
  msgid "DELIM= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4185
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT namelist at %C is an extension"
  msgstr ""
  
! #: fortran/io.cc:4207
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma after * at %C not allowed without I/O list"
  msgstr ""
  
! #: fortran/io.cc:4380
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected comma in I/O list at %C"
  msgstr ""
  
! #: fortran/io.cc:4447
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT statement at %C not allowed within PURE procedure"
  msgstr ""
  
! #: fortran/io.cc:4609
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL() near %L cannot appear in INQUIRE statement"
  msgstr ""
  
! #: fortran/io.cc:4621 fortran/io.cc:4683
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:4649
  #, gcc-internal-format, gfc-internal-format
  msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
  msgstr ""
  
! #: fortran/io.cc:4659 fortran/trans-io.cc:1364
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
  msgstr ""
  
! #: fortran/io.cc:4666
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
  msgstr ""
  
! #: fortran/io.cc:4676
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in INQUIRE statement at %L cannot be %d"
  msgstr ""
  
! #: fortran/io.cc:4691
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
  msgstr ""
  
! #: fortran/io.cc:4867
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT at %C not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4873
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT statement not allowed in PURE procedure at %C"
  msgstr ""
--- 79710,80255 ----
  msgid "The H format specifier at %L is a Fortran 95 deleted feature"
  msgstr ""
  
! #: fortran/io.cc:1232 fortran/io.cc:1295
  #, gcc-internal-format, gfc-internal-format
! msgid "Missing comma in FORMAT string at %L"
  msgstr ""
  
! #: fortran/io.cc:1351
  #, gcc-internal-format, gfc-internal-format
  msgid "Extraneous characters in format at %L"
  msgstr ""
  
! #: fortran/io.cc:1373
  #, gcc-internal-format, gfc-internal-format
  msgid "Format statement in module main block at %C"
  msgstr ""
  
! #: fortran/io.cc:1382
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT statement at %C cannot appear within an INTERFACE"
  msgstr ""
  
! #: fortran/io.cc:1388
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing format label at %C"
  msgstr ""
  
! #: fortran/io.cc:1443 fortran/io.cc:1474 fortran/io.cc:1554
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid value for %s specification at %C"
  msgstr ""
  
! #: fortran/io.cc:1449 fortran/io.cc:1480 fortran/io.cc:1636 fortran/io.cc:1649
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate %s specification at %C"
  msgstr ""
  
! #: fortran/io.cc:1491
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:1499
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s cannot be assigned in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:1529
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a variable at %L"
  msgstr ""
  
! #: fortran/io.cc:1560
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate %s label specification at %C"
  msgstr ""
  
! #: fortran/io.cc:1580 fortran/io.cc:1597 fortran/io.cc:1618
  #, gcc-internal-format
  msgid "%s at %C is a DEC extension, enable with %<-fdec%>"
  msgstr ""
  
! #: fortran/io.cc:1671
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Constant expression in FORMAT tag at %L must be of type default CHARACTER"
  msgstr ""
  
! #: fortran/io.cc:1696
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L cannot be a zero-sized array"
  msgstr ""
  
! #: fortran/io.cc:1737
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT tag at %L must be of type default-kind CHARACTER or of INTEGER"
  msgstr ""
  
! #: fortran/io.cc:1743
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED variable in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1748
  #, gcc-internal-format
  msgid "Variable %qs at %L has not been assigned a format label"
  msgstr ""
  
! #: fortran/io.cc:1755
  #, gcc-internal-format
  msgid "Scalar %qs in FORMAT tag at %L is not an ASSIGNED variable"
  msgstr ""
  
! #: fortran/io.cc:1770
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character non-Hollerith in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1774
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1780
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed shape array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1787
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character assumed size array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1794
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-character pointer array element in FORMAT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1820
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be of type %s"
  msgstr ""
  
! #: fortran/io.cc:1827
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be a character string of default kind"
  msgstr ""
  
! #: fortran/io.cc:1834
  #, gcc-internal-format, gfc-internal-format
  msgid "%s tag at %L must be scalar"
  msgstr ""
  
! #: fortran/io.cc:1840
  #, gcc-internal-format, gfc-internal-format
  msgid "IOMSG tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1848
  #, gcc-internal-format, gfc-internal-format
  msgid "Fortran 95 requires default INTEGER in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1857
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-default LOGICAL kind in %s tag at %L"
  msgstr ""
  
! #: fortran/io.cc:1864
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:1882
  #, gcc-internal-format, gfc-internal-format
  msgid "CONVERT tag at %L"
  msgstr ""
  
! #: fortran/io.cc:2098
  #, gcc-internal-format
  msgid "Fortran 2003: %s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2106 fortran/io.cc:2133
  #, gcc-internal-format
  msgid "%s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2125
  #, gcc-internal-format
  msgid "Extension: %s specifier in %s statement at %L has value %qs"
  msgstr ""
  
! #: fortran/io.cc:2147 fortran/io.cc:2155
  #, gcc-internal-format
  msgid "%s specifier in %s statement at %L has invalid value %qs"
  msgstr ""
  
! #: fortran/io.cc:2212
  #, gcc-internal-format, gfc-internal-format
  msgid "ACTION type conflicts with READONLY specifier at %L"
  msgstr ""
  
! #: fortran/io.cc:2228
  #, gcc-internal-format, gfc-internal-format
  msgid "ASYNCHRONOUS= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2247 fortran/io.cc:3921
  #, gcc-internal-format, gfc-internal-format
  msgid "BLANK= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2275 fortran/io.cc:3899
  #, gcc-internal-format, gfc-internal-format
  msgid "DECIMAL= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2307
  #, gcc-internal-format, gfc-internal-format
  msgid "ENCODING= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2358 fortran/io.cc:3966
  #, gcc-internal-format, gfc-internal-format
  msgid "ROUND= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2388
  #, gcc-internal-format, gfc-internal-format
  msgid "SIGN= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:2409
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL in OPEN statement at %L must be positive"
  msgstr ""
  
! #: fortran/io.cc:2434
  #, gcc-internal-format
  msgid ""
  "The STATUS specified in OPEN statement at %L is %qs and no FILE specifier is "
  "present"
  msgstr ""
  
! #: fortran/io.cc:2445
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The STATUS specified in OPEN statement at %L cannot have the value SCRATCH "
  "if a FILE specifier is present"
  msgstr ""
  
! #: fortran/io.cc:2456
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specifier not allowed with NEWUNIT at %L"
  msgstr ""
  
! #: fortran/io.cc:2467
  #, gcc-internal-format, gfc-internal-format
  msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %L"
  msgstr ""
  
! #: fortran/io.cc:2474
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement at %L must have UNIT or NEWUNIT specified"
  msgstr ""
  
! #: fortran/io.cc:2509
  #, gcc-internal-format, gfc-internal-format
  msgid "%sspecifier at %L not allowed in OPEN statement for unformatted I/O"
  msgstr ""
  
! #: fortran/io.cc:2517
  #, gcc-internal-format, gfc-internal-format
  msgid "RECL specifier not allowed in OPEN statement at %L for stream I/O"
  msgstr ""
  
! #: fortran/io.cc:2530
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "POSITION specifier in OPEN statement at %L only allowed for stream or "
  "sequential ACCESS"
  msgstr ""
  
! #: fortran/io.cc:2583
  #, gcc-internal-format, gfc-internal-format
  msgid "OPEN statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2691
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2717
  #, gcc-internal-format, gfc-internal-format
  msgid "CLOSE statement at %L requires a UNIT number"
  msgstr ""
  
! #: fortran/io.cc:2725
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in CLOSE statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2848 fortran/match.cc:3472
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:2878
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number missing in statement at %L"
  msgstr ""
  
! #: fortran/io.cc:2889 fortran/io.cc:3379
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in statement at %L must be non-negative"
  msgstr ""
  
! #: fortran/io.cc:2922
  #, gcc-internal-format, gfc-internal-format
  msgid "FLUSH statement at %C"
  msgstr ""
  
! #: fortran/io.cc:2963
  #, gcc-internal-format, gfc-internal-format
  msgid "Missing format with default unit at %C"
  msgstr ""
  
! #: fortran/io.cc:2983
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate UNIT specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3057
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate format specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3098
  #, gcc-internal-format
  msgid "Symbol %qs in namelist %qs is INTENT(IN) at %C"
  msgstr ""
  
! #: fortran/io.cc:3134
  #, gcc-internal-format, gfc-internal-format
  msgid "Duplicate NML specification at %C"
  msgstr ""
  
! #: fortran/io.cc:3143
  #, gcc-internal-format
  msgid "Symbol %qs at %C must be a NAMELIST group name"
  msgstr ""
  
! #: fortran/io.cc:3209
  #, gcc-internal-format, gfc-internal-format
  msgid "END tag at %C not allowed in output statement"
  msgstr ""
  
! #: fortran/io.cc:3305
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT not specified at %L"
  msgstr ""
  
! #: fortran/io.cc:3312
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT specification at %L must not be a character PARAMETER"
  msgstr ""
  
! #: fortran/io.cc:3325
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "UNIT specification at %L must be an INTEGER expression or a CHARACTER "
  "variable"
  msgstr ""
  
! #: fortran/io.cc:3347
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid form of WRITE statement at %L, UNIT required"
  msgstr ""
  
! #: fortran/io.cc:3358
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal unit with vector subscript at %L"
  msgstr ""
  
! #: fortran/io.cc:3372
  #, gcc-internal-format, gfc-internal-format
  msgid "External IO UNIT cannot be an array at %L"
  msgstr ""
  
! #: fortran/io.cc:3402
  #, gcc-internal-format
  msgid ""
  "NAMELIST %qs in READ statement at %L contains the symbol %qs which may not "
  "appear in a variable definition context"
  msgstr ""
  
! #: fortran/io.cc:3414
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs in namelist %qs at %L is polymorphic and requires a "
  "defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3424 fortran/resolve.cc:16931
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER "
  "components"
  msgstr ""
  
! #: fortran/io.cc:3432
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER "
  "components and thus requires a defined input/output procedure"
  msgstr ""
  
! #: fortran/io.cc:3443
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma before i/o item list at %L"
  msgstr ""
  
! #: fortran/io.cc:3453
  #, gcc-internal-format, gfc-internal-format
  msgid "ERR tag label %d at %L not defined"
  msgstr ""
  
! #: fortran/io.cc:3465
  #, gcc-internal-format, gfc-internal-format
  msgid "END tag label %d at %L not defined"
  msgstr ""
  
! #: fortran/io.cc:3477
  #, gcc-internal-format, gfc-internal-format
  msgid "EOR tag label %d at %L not defined"
  msgstr ""
  
! #: fortran/io.cc:3487
  #, gcc-internal-format, gfc-internal-format
  msgid "FORMAT label %d at %L not defined"
  msgstr ""
  
! #: fortran/io.cc:3518
  #, gcc-internal-format
  msgid "io_kind_name(): bad I/O-kind"
  msgstr ""
  
! #: fortran/io.cc:3607
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in I/O iterator at %C"
  msgstr ""
  
! #: fortran/io.cc:3639
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable in READ statement at %C"
  msgstr ""
  
! #: fortran/io.cc:3645
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do in READ statement at %L"
  msgstr ""
  
! #: fortran/io.cc:3654
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting variable or io-implied-do at %L"
  msgstr ""
  
! #: fortran/io.cc:3663
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected expression in %s statement at %C"
  msgstr ""
  
! #: fortran/io.cc:3668
  #, gcc-internal-format, gfc-internal-format
  msgid "BOZ literal constant at %L cannot appear in an output IO list"
  msgstr ""
  
! #: fortran/io.cc:3816
  #, gcc-internal-format, gfc-internal-format
  msgid "Internal file at %L with namelist"
  msgstr ""
  
! #: fortran/io.cc:3831
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "IO UNIT in %s statement at %L must be an internal file in a PURE procedure"
  msgstr ""
  
! #: fortran/io.cc:3944
  #, gcc-internal-format, gfc-internal-format
  msgid "PAD= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4013
  #, gcc-internal-format, gfc-internal-format
  msgid "DELIM= at %L not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4187
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT namelist at %C is an extension"
  msgstr ""
  
! #: fortran/io.cc:4209
  #, gcc-internal-format, gfc-internal-format
  msgid "Comma after * at %C not allowed without I/O list"
  msgstr ""
  
! #: fortran/io.cc:4382
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected comma in I/O list at %C"
  msgstr ""
  
! #: fortran/io.cc:4449
  #, gcc-internal-format, gfc-internal-format
  msgid "PRINT statement at %C not allowed within PURE procedure"
  msgstr ""
  
! #: fortran/io.cc:4611
  #, gcc-internal-format, gfc-internal-format
  msgid "NULL() near %L cannot appear in INQUIRE statement"
  msgstr ""
  
! #: fortran/io.cc:4623 fortran/io.cc:4685
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement not allowed in PURE procedure at %C"
  msgstr ""
  
! #: fortran/io.cc:4651
  #, gcc-internal-format, gfc-internal-format
  msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
  msgstr ""
  
! #: fortran/io.cc:4661 fortran/trans-io.cc:1364
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
  msgstr ""
  
! #: fortran/io.cc:4668
  #, gcc-internal-format, gfc-internal-format
  msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
  msgstr ""
  
! #: fortran/io.cc:4678
  #, gcc-internal-format, gfc-internal-format
  msgid "UNIT number in INQUIRE statement at %L cannot be %d"
  msgstr ""
  
! #: fortran/io.cc:4693
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
  msgstr ""
  
! #: fortran/io.cc:4869
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT at %C not allowed in Fortran 95"
  msgstr ""
  
! #: fortran/io.cc:4875
  #, gcc-internal-format, gfc-internal-format
  msgid "WAIT statement not allowed in PURE procedure at %C"
  msgstr ""
*************** msgstr ""
*** 80500,81016 ****
  msgid "Locality spec at %L"
  msgstr ""
  
! #: fortran/match.cc:3112
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is unknown"
  msgstr ""
  
! #: fortran/match.cc:3120
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is not a construct name"
  msgstr ""
  
! #: fortran/match.cc:3132
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves CRITICAL construct"
  msgstr ""
  
  #. F2008, C821 & C845.
! #: fortran/match.cc:3140
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves DO CONCURRENT construct"
  msgstr ""
  
! #: fortran/match.cc:3152
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C is not within a construct"
  msgstr ""
  
! #: fortran/match.cc:3155
  #, gcc-internal-format
  msgid "%s statement at %C is not within construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3181
  #, gcc-internal-format
  msgid "CYCLE statement at %C is not applicable to non-loop construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3186
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement with no do-construct-name at %C"
  msgstr ""
  
! #: fortran/match.cc:3192
  #, gcc-internal-format
  msgid "%s statement at %C is not applicable to construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3200
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenACC structured block"
  msgstr ""
  
! #: fortran/match.cc:3201
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenMP structured block"
  msgstr ""
  
! #: fortran/match.cc:3241
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3247
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost tiled !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3249
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3296
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3301
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3406
  #, gcc-internal-format, gfc-internal-format
  msgid "Blank required in %s statement near %C"
  msgstr ""
  
! #: fortran/match.cc:3429
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C cannot be negative"
  msgstr ""
  
! #: fortran/match.cc:3435
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C contains too many digits"
  msgstr ""
  
! #: fortran/match.cc:3451
  #, gcc-internal-format, gfc-internal-format
  msgid "QUIET= specifier for %s at %L"
  msgstr ""
  
! #: fortran/match.cc:3465
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3481
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3486
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3498
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "STOP code at %L must be a scalar CHARACTER constant or "
  "digit[digit[digit[digit[digit]]]]"
  msgstr ""
  
! #: fortran/match.cc:3510
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "STOP code at %L must be a scalar default CHARACTER or INTEGER constant "
  "expression"
  msgstr ""
  
! #: fortran/match.cc:3517
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be either INTEGER or CHARACTER type"
  msgstr ""
  
! #: fortran/match.cc:3524
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:3531
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default character KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3538
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default integer KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3550 fortran/resolve.cc:13453
  #, gcc-internal-format, gfc-internal-format
  msgid "QUIET specifier at %L must be a scalar LOGICAL"
  msgstr ""
  
! #: fortran/match.cc:3600
  #, gcc-internal-format, gfc-internal-format
  msgid "PAUSE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3621
  #, gcc-internal-format, gfc-internal-format
  msgid "ERROR STOP statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3647
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3662
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3669
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3699 fortran/match.cc:4041 fortran/match.cc:4253
! #: fortran/match.cc:4805 fortran/match.cc:5177
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant STAT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3720 fortran/match.cc:4062 fortran/match.cc:4273
! #: fortran/match.cc:4837 fortran/match.cc:5202
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ERRMSG tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3741
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant UNTIL_COUNT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3807
  #, gcc-internal-format, gfc-internal-format
  msgid "EVENT POST statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3817
  #, gcc-internal-format, gfc-internal-format
  msgid "EVENT WAIT statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3829
  #, gcc-internal-format, gfc-internal-format
  msgid "FAIL IMAGE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3853
  #, gcc-internal-format, gfc-internal-format
  msgid "FORM TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3892
  #, gcc-internal-format, gfc-internal-format
  msgid "CHANGE TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3922
  #, gcc-internal-format, gfc-internal-format
  msgid "END TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3946
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3989
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4004
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4011
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4083
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ACQUIRED_LOCK tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4148
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4158
  #, gcc-internal-format, gfc-internal-format
  msgid "UNLOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4183
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4189
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4201
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4207
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4387
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4431
  #, gcc-internal-format, gfc-internal-format
  msgid "Assigned GOTO statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4475 fortran/match.cc:4526
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement label list in GOTO at %C cannot be empty"
  msgstr ""
  
! #: fortran/match.cc:4536
  #, gcc-internal-format, gfc-internal-format
  msgid "Computed GOTO at %C"
  msgstr ""
  
! #: fortran/match.cc:4611
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4624
  #, gcc-internal-format, gfc-internal-format
  msgid "typespec in ALLOCATE at %L"
  msgstr ""
  
! #: fortran/match.cc:4647
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The type parameter spec list in the type-spec at %L cannot contain DEFERRED "
  "parameters"
  msgstr ""
  
! #: fortran/match.cc:4677 fortran/match.cc:5115
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected constant at %C"
  msgstr ""
  
! #: fortran/match.cc:4687
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4702
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible allocate-object at %C for CHARACTER type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4724
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4729
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4751
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocate-object at %L is neither a data pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:4763
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with typespec"
  msgstr ""
  
! #: fortran/match.cc:4771
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Kind type parameter for entity at %L differs from the kind type parameter of "
  "the typespec"
  msgstr ""
  
! #: fortran/match.cc:4788
  #, gcc-internal-format, gfc-internal-format
  msgid "Shape specification for allocatable scalar at %C"
  msgstr ""
  
! #: fortran/match.cc:4815
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT tag at %L cannot be a constant"
  msgstr ""
  
! #: fortran/match.cc:4831
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4854
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4860
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant SOURCE tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4867
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4873
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L with more than a single allocate object"
  msgstr ""
  
! #: fortran/match.cc:4891
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4897
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant MOLD tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4904
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4930
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4938
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocate-object at %L with a deferred type parameter requires either a type-"
  "spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:4950
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Unlimited polymorphic allocate-object at %L requires either a type-spec or "
  "SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:5017
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %C shall not be coindexed"
  msgstr ""
  
! #: fortran/match.cc:5032
  #, gcc-internal-format, gfc-internal-format
  msgid "NULLIFY does not allow bounds remapping for pointer object at %C"
  msgstr ""
  
! #: fortran/match.cc:5127
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:5137
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5144
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5160
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocate-object at %C is not a nonprocedure pointer nor an allocatable "
  "variable"
  msgstr ""
  
! #: fortran/match.cc:5197
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L"
  msgstr ""
  
! #: fortran/match.cc:5254
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5260
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5269
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
  msgstr ""
  
! #: fortran/match.cc:5300
  #, gcc-internal-format, gfc-internal-format
  msgid "RETURN statement in main program at %C"
  msgstr ""
  
! #: fortran/match.cc:5328
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected component reference at %C"
  msgstr ""
  
! #: fortran/match.cc:5337
  #, gcc-internal-format, gfc-internal-format
  msgid "Junk after CALL at %C"
  msgstr ""
  
! #: fortran/match.cc:5348
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected type-bound procedure or procedure pointer component at %C"
  msgstr ""
  
! #: fortran/match.cc:5446
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "A BOZ literal constant at %L cannot appear as an actual argument in a "
  "subroutine reference"
  msgstr ""
  
! #: fortran/match.cc:5587
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in common block name at %C"
  msgstr ""
--- 80596,81112 ----
  msgid "Locality spec at %L"
  msgstr ""
  
! #: fortran/match.cc:3113
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is unknown"
  msgstr ""
  
! #: fortran/match.cc:3121
  #, gcc-internal-format
  msgid "Name %qs in %s statement at %C is not a construct name"
  msgstr ""
  
! #: fortran/match.cc:3133
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves CRITICAL construct"
  msgstr ""
  
  #. F2008, C821 & C845.
! #: fortran/match.cc:3141
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaves DO CONCURRENT construct"
  msgstr ""
  
! #: fortran/match.cc:3153
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C is not within a construct"
  msgstr ""
  
! #: fortran/match.cc:3156
  #, gcc-internal-format
  msgid "%s statement at %C is not within construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3182
  #, gcc-internal-format
  msgid "CYCLE statement at %C is not applicable to non-loop construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3187
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement with no do-construct-name at %C"
  msgstr ""
  
! #: fortran/match.cc:3193
  #, gcc-internal-format
  msgid "%s statement at %C is not applicable to construct %qs"
  msgstr ""
  
! #: fortran/match.cc:3201
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenACC structured block"
  msgstr ""
  
! #: fortran/match.cc:3202
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C leaving OpenMP structured block"
  msgstr ""
  
! #: fortran/match.cc:3242
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3248
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost tiled !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3250
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$ACC LOOP loop"
  msgstr ""
  
! #: fortran/match.cc:3297
  #, gcc-internal-format, gfc-internal-format
  msgid "EXIT statement at %C terminating !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3302
  #, gcc-internal-format, gfc-internal-format
  msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop"
  msgstr ""
  
! #: fortran/match.cc:3407
  #, gcc-internal-format, gfc-internal-format
  msgid "Blank required in %s statement near %C"
  msgstr ""
  
! #: fortran/match.cc:3430
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C cannot be negative"
  msgstr ""
  
! #: fortran/match.cc:3436
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %C contains too many digits"
  msgstr ""
  
! #: fortran/match.cc:3452
  #, gcc-internal-format, gfc-internal-format
  msgid "QUIET= specifier for %s at %L"
  msgstr ""
  
! #: fortran/match.cc:3466
  #, gcc-internal-format, gfc-internal-format
  msgid "%s statement at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3482
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3487
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement STOP at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3499
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "STOP code at %L must be a scalar CHARACTER constant or "
  "digit[digit[digit[digit[digit]]]]"
  msgstr ""
  
! #: fortran/match.cc:3511
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "STOP code at %L must be a scalar default CHARACTER or INTEGER constant "
  "expression"
  msgstr ""
  
! #: fortran/match.cc:3518
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be either INTEGER or CHARACTER type"
  msgstr ""
  
! #: fortran/match.cc:3525
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:3532
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default character KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3539
  #, gcc-internal-format, gfc-internal-format
  msgid "STOP code at %L must be default integer KIND=%d"
  msgstr ""
  
! #: fortran/match.cc:3551 fortran/resolve.cc:13443
  #, gcc-internal-format, gfc-internal-format
  msgid "QUIET specifier at %L must be a scalar LOGICAL"
  msgstr ""
  
! #: fortran/match.cc:3601
  #, gcc-internal-format, gfc-internal-format
  msgid "PAUSE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3622
  #, gcc-internal-format, gfc-internal-format
  msgid "ERROR STOP statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3648
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:3663
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:3670
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement EVENT %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:3700 fortran/match.cc:4042 fortran/match.cc:4254
! #: fortran/match.cc:4806 fortran/match.cc:5178
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant STAT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3721 fortran/match.cc:4063 fortran/match.cc:4274
! #: fortran/match.cc:4838 fortran/match.cc:5203
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ERRMSG tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3742
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant UNTIL_COUNT tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:3808
  #, gcc-internal-format, gfc-internal-format
  msgid "EVENT POST statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3818
  #, gcc-internal-format, gfc-internal-format
  msgid "EVENT WAIT statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3830
  #, gcc-internal-format, gfc-internal-format
  msgid "FAIL IMAGE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3854
  #, gcc-internal-format, gfc-internal-format
  msgid "FORM TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3893
  #, gcc-internal-format, gfc-internal-format
  msgid "CHANGE TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3923
  #, gcc-internal-format, gfc-internal-format
  msgid "END TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3947
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC TEAM statement at %C"
  msgstr ""
  
! #: fortran/match.cc:3990
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4005
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4012
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement %s at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4084
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant ACQUIRED_LOCK tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4149
  #, gcc-internal-format, gfc-internal-format
  msgid "LOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4159
  #, gcc-internal-format, gfc-internal-format
  msgid "UNLOCK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4184
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4190
  #, gcc-internal-format, gfc-internal-format
  msgid "SYNC statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4202
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4208
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement SYNC at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4388
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4432
  #, gcc-internal-format, gfc-internal-format
  msgid "Assigned GOTO statement at %C"
  msgstr ""
  
! #: fortran/match.cc:4476 fortran/match.cc:4527
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement label list in GOTO at %C cannot be empty"
  msgstr ""
  
! #: fortran/match.cc:4537
  #, gcc-internal-format, gfc-internal-format
  msgid "Computed GOTO at %C"
  msgstr ""
  
! #: fortran/match.cc:4612
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4625
  #, gcc-internal-format, gfc-internal-format
  msgid "typespec in ALLOCATE at %L"
  msgstr ""
  
! #: fortran/match.cc:4648
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The type parameter spec list in the type-spec at %L cannot contain DEFERRED "
  "parameters"
  msgstr ""
  
! #: fortran/match.cc:4678 fortran/match.cc:5116
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected constant at %C"
  msgstr ""
  
! #: fortran/match.cc:4688
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:4703
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible allocate-object at %C for CHARACTER type-spec at %L"
  msgstr ""
  
! #: fortran/match.cc:4725
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:4730
  #, gcc-internal-format, gfc-internal-format
  msgid "ALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:4752
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocate-object at %L is neither a data pointer nor an allocatable variable"
  msgstr ""
  
! #: fortran/match.cc:4764
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with typespec"
  msgstr ""
  
! #: fortran/match.cc:4772
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Kind type parameter for entity at %L differs from the kind type parameter of "
  "the typespec"
  msgstr ""
  
! #: fortran/match.cc:4789
  #, gcc-internal-format, gfc-internal-format
  msgid "Shape specification for allocatable scalar at %C"
  msgstr ""
  
! #: fortran/match.cc:4816
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT tag at %L cannot be a constant"
  msgstr ""
  
! #: fortran/match.cc:4832
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4855
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4861
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant SOURCE tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4868
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4874
  #, gcc-internal-format, gfc-internal-format
  msgid "SOURCE tag at %L with more than a single allocate object"
  msgstr ""
  
! #: fortran/match.cc:4892
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4898
  #, gcc-internal-format, gfc-internal-format
  msgid "Redundant MOLD tag found at %L"
  msgstr ""
  
! #: fortran/match.cc:4905
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with the typespec at %L"
  msgstr ""
  
! #: fortran/match.cc:4931
  #, gcc-internal-format, gfc-internal-format
  msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
  msgstr ""
  
! #: fortran/match.cc:4939
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocate-object at %L with a deferred type parameter requires either a type-"
  "spec or SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:4951
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Unlimited polymorphic allocate-object at %L requires either a type-spec or "
  "SOURCE tag or a MOLD tag"
  msgstr ""
  
! #: fortran/match.cc:5018
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer object at %C shall not be coindexed"
  msgstr ""
  
! #: fortran/match.cc:5033
  #, gcc-internal-format, gfc-internal-format
  msgid "NULLIFY does not allow bounds remapping for pointer object at %C"
  msgstr ""
  
! #: fortran/match.cc:5128
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal allocate-object at %C for a PURE procedure"
  msgstr ""
  
! #: fortran/match.cc:5138
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5145
  #, gcc-internal-format, gfc-internal-format
  msgid "DEALLOCATE of coarray at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5161
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocate-object at %C is not a nonprocedure pointer nor an allocatable "
  "variable"
  msgstr ""
  
! #: fortran/match.cc:5198
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L"
  msgstr ""
  
! #: fortran/match.cc:5255
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in CRITICAL block"
  msgstr ""
  
! #: fortran/match.cc:5261
  #, gcc-internal-format, gfc-internal-format
  msgid "Image control statement RETURN at %C in DO CONCURRENT block"
  msgstr ""
  
! #: fortran/match.cc:5270
  #, gcc-internal-format, gfc-internal-format
  msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
  msgstr ""
  
! #: fortran/match.cc:5301
  #, gcc-internal-format, gfc-internal-format
  msgid "RETURN statement in main program at %C"
  msgstr ""
  
! #: fortran/match.cc:5329
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected component reference at %C"
  msgstr ""
  
! #: fortran/match.cc:5338
  #, gcc-internal-format, gfc-internal-format
  msgid "Junk after CALL at %C"
  msgstr ""
  
! #: fortran/match.cc:5349
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected type-bound procedure or procedure pointer component at %C"
  msgstr ""
  
! #: fortran/match.cc:5447
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "A BOZ literal constant at %L cannot appear as an actual argument in a "
  "subroutine reference"
  msgstr ""
  
! #: fortran/match.cc:5588
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in common block name at %C"
  msgstr ""
*************** msgstr ""
*** 81018,81086 ****
  #. If we find an error, just print it and continue,
  #. cause it's just semantic, and we can see if there
  #. are more errors.
! #: fortran/match.cc:5662
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L in common block %qs at %C must be declared with a C "
  "interoperable kind since common block %qs is bind(c)"
  msgstr ""
  
! #: fortran/match.cc:5671
  #, gcc-internal-format
  msgid ""
  "Variable %qs in common block %qs at %C cannot be bind(c) since it is not "
  "global"
  msgstr ""
  
! #: fortran/match.cc:5678
  #, gcc-internal-format
  msgid "Symbol %qs at %C is already in a COMMON block"
  msgstr ""
  
! #: fortran/match.cc:5686
  #, gcc-internal-format
  msgid "Initialized symbol %qs at %C can only be COMMON in BLOCK DATA"
  msgstr ""
  
! #: fortran/match.cc:5697
  #, gcc-internal-format
  msgid ""
  "Symbol %qs at %C is USE associated from module %qs and cannot occur in COMMON"
  msgstr ""
  
! #: fortran/match.cc:5712
  #, gcc-internal-format
  msgid "Array specification for symbol %qs in COMMON at %C must be explicit"
  msgstr ""
  
! #: fortran/match.cc:5719
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a coarray"
  msgstr ""
  
! #: fortran/match.cc:5729
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a POINTER array"
  msgstr ""
  
! #: fortran/match.cc:5775
  #, gcc-internal-format
  msgid ""
  "Symbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to "
  "another COMMON block %qs"
  msgstr ""
  
! #: fortran/match.cc:5837
  #, gcc-internal-format, gfc-internal-format
  msgid "BLOCK DATA construct at %L"
  msgstr ""
  
! #: fortran/match.cc:5950
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already has a basic type of %s"
  msgstr ""
  
! #: fortran/match.cc:5960
  #, gcc-internal-format
  msgid ""
  "Namelist group name %qs at %C already is USE associated and cannot be "
--- 81114,81182 ----
  #. If we find an error, just print it and continue,
  #. cause it's just semantic, and we can see if there
  #. are more errors.
! #: fortran/match.cc:5663
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L in common block %qs at %C must be declared with a C "
  "interoperable kind since common block %qs is bind(c)"
  msgstr ""
  
! #: fortran/match.cc:5672
  #, gcc-internal-format
  msgid ""
  "Variable %qs in common block %qs at %C cannot be bind(c) since it is not "
  "global"
  msgstr ""
  
! #: fortran/match.cc:5679
  #, gcc-internal-format
  msgid "Symbol %qs at %C is already in a COMMON block"
  msgstr ""
  
! #: fortran/match.cc:5687
  #, gcc-internal-format
  msgid "Initialized symbol %qs at %C can only be COMMON in BLOCK DATA"
  msgstr ""
  
! #: fortran/match.cc:5698
  #, gcc-internal-format
  msgid ""
  "Symbol %qs at %C is USE associated from module %qs and cannot occur in COMMON"
  msgstr ""
  
! #: fortran/match.cc:5713
  #, gcc-internal-format
  msgid "Array specification for symbol %qs in COMMON at %C must be explicit"
  msgstr ""
  
! #: fortran/match.cc:5720
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a coarray"
  msgstr ""
  
! #: fortran/match.cc:5730
  #, gcc-internal-format
  msgid "Symbol %qs in COMMON at %C cannot be a POINTER array"
  msgstr ""
  
! #: fortran/match.cc:5776
  #, gcc-internal-format
  msgid ""
  "Symbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to "
  "another COMMON block %qs"
  msgstr ""
  
! #: fortran/match.cc:5838
  #, gcc-internal-format, gfc-internal-format
  msgid "BLOCK DATA construct at %L"
  msgstr ""
  
! #: fortran/match.cc:5951
  #, gcc-internal-format
  msgid "Namelist group name %qs at %C already has a basic type of %s"
  msgstr ""
  
! #: fortran/match.cc:5961
  #, gcc-internal-format
  msgid ""
  "Namelist group name %qs at %C already is USE associated and cannot be "
*************** msgstr ""
*** 81090,81286 ****
  #. It is required that members of a namelist be declared
  #. before the namelist.  We check this by checking if the
  #. symbol has a defined type for IMPLICIT NONE.
! #: fortran/match.cc:5985
  #, gcc-internal-format
  msgid ""
  "Symbol %qs in namelist %qs at %C must be declared before the namelist is "
  "declared."
  msgstr ""
  
! #: fortran/match.cc:6005
  #, gcc-internal-format
  msgid "Derived type %qs at %L conflicts with namelist object %qs at %C"
  msgstr ""
  
! #: fortran/match.cc:6025
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %C is not allowed"
  msgstr ""
  
! #: fortran/match.cc:6168
  #, gcc-internal-format, gfc-internal-format
  msgid "Derived type component %C is not a permitted EQUIVALENCE member"
  msgstr ""
  
! #: fortran/match.cc:6176
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
  msgstr ""
  
! #: fortran/match.cc:6209
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE at %C requires two or more objects"
  msgstr ""
  
! #: fortran/match.cc:6223
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6236
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a comma in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6241
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:6334
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid use of statement function argument at %L"
  msgstr ""
  
! #: fortran/match.cc:6401
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %L is recursive"
  msgstr ""
  
! #: fortran/match.cc:6407
  #, gcc-internal-format
  msgid "Statement function %qs at %L conflicts with function name"
  msgstr ""
  
! #: fortran/match.cc:6421
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %L cannot appear within an INTERFACE"
  msgstr ""
  
! #: fortran/match.cc:6426
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %C"
  msgstr ""
  
! #: fortran/match.cc:6553 fortran/match.cc:6571 fortran/match.cc:6592
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE selector at %L cannot be %s"
  msgstr ""
  
! #: fortran/match.cc:6602 fortran/match.cc:6608
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE selector at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:6617
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected initialization expression in CASE at %C"
  msgstr ""
  
! #: fortran/match.cc:6649
  #, gcc-internal-format
  msgid "Expected block name %qs of SELECT construct at %C"
  msgstr ""
  
! #: fortran/match.cc:7029
  #, gcc-internal-format, gfc-internal-format
  msgid "SELECT TYPE at %C cannot appear in this scope"
  msgstr ""
  
! #: fortran/match.cc:7057
  #, gcc-internal-format, gfc-internal-format
  msgid "parse error in SELECT TYPE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7082
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
  msgstr ""
  
! #: fortran/match.cc:7270
  #, gcc-internal-format, gfc-internal-format
  msgid "SELECT RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7311 fortran/match.cc:7365
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK selector at %C must be an assumed rank variable"
  msgstr ""
  
! #: fortran/match.cc:7375
  #, gcc-internal-format, gfc-internal-format
  msgid "parse error in SELECT RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7411
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected CASE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7463
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in CASE specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7481
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected TYPE IS statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7513
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The type-spec shall not specify a sequence derived type or a type with the "
  "BIND attribute in SELECT TYPE at %C [F2003:C815]"
  msgstr ""
  
! #: fortran/match.cc:7524
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "All the LEN type parameters in the TYPE IS statement at %C must be ASSUMED"
  msgstr ""
  
! #: fortran/match.cc:7535
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in TYPE IS specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7611
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in CLASS IS specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7631
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7677
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The SELECT RANK CASE expression at %C must be a scalar, integer constant"
  msgstr ""
  
! #: fortran/match.cc:7686
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The value of the SELECT RANK CASE expression at %C must not be less than "
  "zero or greater than %d"
  msgstr ""
  
! #: fortran/match.cc:7713
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in RANK specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7835
  #, gcc-internal-format, gfc-internal-format
  msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
  msgstr ""
  
! #: fortran/match.cc:7873
  #, gcc-internal-format
  msgid "Label %qs at %C doesn't match WHERE label %qs"
  msgstr ""
--- 81186,81382 ----
  #. It is required that members of a namelist be declared
  #. before the namelist.  We check this by checking if the
  #. symbol has a defined type for IMPLICIT NONE.
! #: fortran/match.cc:5986
  #, gcc-internal-format
  msgid ""
  "Symbol %qs in namelist %qs at %C must be declared before the namelist is "
  "declared."
  msgstr ""
  
! #: fortran/match.cc:6006
  #, gcc-internal-format
  msgid "Derived type %qs at %L conflicts with namelist object %qs at %C"
  msgstr ""
  
! #: fortran/match.cc:6026
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %C is not allowed"
  msgstr ""
  
! #: fortran/match.cc:6169
  #, gcc-internal-format, gfc-internal-format
  msgid "Derived type component %C is not a permitted EQUIVALENCE member"
  msgstr ""
  
! #: fortran/match.cc:6177
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
  msgstr ""
  
! #: fortran/match.cc:6210
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE at %C requires two or more objects"
  msgstr ""
  
! #: fortran/match.cc:6224
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6237
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting a comma in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/match.cc:6242
  #, gcc-internal-format, gfc-internal-format
  msgid "EQUIVALENCE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:6335
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid use of statement function argument at %L"
  msgstr ""
  
! #: fortran/match.cc:6402
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %L is recursive"
  msgstr ""
  
! #: fortran/match.cc:6408
  #, gcc-internal-format
  msgid "Statement function %qs at %L conflicts with function name"
  msgstr ""
  
! #: fortran/match.cc:6422
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %L cannot appear within an INTERFACE"
  msgstr ""
  
! #: fortran/match.cc:6427
  #, gcc-internal-format, gfc-internal-format
  msgid "Statement function at %C"
  msgstr ""
  
! #: fortran/match.cc:6554 fortran/match.cc:6572 fortran/match.cc:6593
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE selector at %L cannot be %s"
  msgstr ""
  
! #: fortran/match.cc:6603 fortran/match.cc:6609
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE selector at %L must be scalar"
  msgstr ""
  
! #: fortran/match.cc:6618
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected initialization expression in CASE at %C"
  msgstr ""
  
! #: fortran/match.cc:6650
  #, gcc-internal-format
  msgid "Expected block name %qs of SELECT construct at %C"
  msgstr ""
  
! #: fortran/match.cc:7030
  #, gcc-internal-format, gfc-internal-format
  msgid "SELECT TYPE at %C cannot appear in this scope"
  msgstr ""
  
! #: fortran/match.cc:7058
  #, gcc-internal-format, gfc-internal-format
  msgid "parse error in SELECT TYPE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7083
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
  msgstr ""
  
! #: fortran/match.cc:7271
  #, gcc-internal-format, gfc-internal-format
  msgid "SELECT RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7312 fortran/match.cc:7366
  #, gcc-internal-format, gfc-internal-format
  msgid "The SELECT RANK selector at %C must be an assumed rank variable"
  msgstr ""
  
! #: fortran/match.cc:7376
  #, gcc-internal-format, gfc-internal-format
  msgid "parse error in SELECT RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7412
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected CASE statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7464
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in CASE specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7482
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected TYPE IS statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7514
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The type-spec shall not specify a sequence derived type or a type with the "
  "BIND attribute in SELECT TYPE at %C [F2003:C815]"
  msgstr ""
  
! #: fortran/match.cc:7525
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "All the LEN type parameters in the TYPE IS statement at %C must be ASSUMED"
  msgstr ""
  
! #: fortran/match.cc:7536
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in TYPE IS specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7612
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in CLASS IS specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7632
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected RANK statement at %C"
  msgstr ""
  
! #: fortran/match.cc:7678
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The SELECT RANK CASE expression at %C must be a scalar, integer constant"
  msgstr ""
  
! #: fortran/match.cc:7687
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The value of the SELECT RANK CASE expression at %C must not be less than "
  "zero or greater than %d"
  msgstr ""
  
! #: fortran/match.cc:7714
  #, gcc-internal-format, gfc-internal-format
  msgid "Syntax error in RANK specification at %C"
  msgstr ""
  
! #: fortran/match.cc:7836
  #, gcc-internal-format, gfc-internal-format
  msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
  msgstr ""
  
! #: fortran/match.cc:7874
  #, gcc-internal-format
  msgid "Label %qs at %C doesn't match WHERE label %qs"
  msgstr ""
*************** msgstr ""
*** 81323,81334 ****
  msgid "gfc_basic_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:218
  #, gcc-internal-format
  msgid "gfc_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:322
  #, gcc-internal-format
  msgid "gfc_code2string(): Bad code"
  msgstr ""
--- 81419,81430 ----
  msgid "gfc_basic_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:221
  #, gcc-internal-format
  msgid "gfc_typename(): Undefined type"
  msgstr ""
  
! #: fortran/misc.cc:325
  #, gcc-internal-format
  msgid "gfc_code2string(): Bad code"
  msgstr ""
*************** msgstr ""
*** 83005,83012 ****
  msgid "ORDER clause must not be used together with ORDERED at %L"
  msgstr ""
  
! #: fortran/openmp.cc:8630 fortran/openmp.cc:8641 fortran/resolve.cc:12090
! #: fortran/resolve.cc:13699
  #, gcc-internal-format, gfc-internal-format
  msgid "IF clause at %L requires a scalar LOGICAL expression"
  msgstr ""
--- 83101,83108 ----
  msgid "ORDER clause must not be used together with ORDERED at %L"
  msgstr ""
  
! #: fortran/openmp.cc:8630 fortran/openmp.cc:8641 fortran/resolve.cc:12080
! #: fortran/resolve.cc:13689
  #, gcc-internal-format, gfc-internal-format
  msgid "IF clause at %L requires a scalar LOGICAL expression"
  msgstr ""
*************** msgstr ""
*** 83162,83168 ****
  msgid "%qs appears more than once in %<allocate%> at %L"
  msgstr ""
  
! #: fortran/openmp.cc:9216 fortran/trans-openmp.cc:8309
  #, gcc-internal-format
  msgid ""
  "%qs specified in %<allocate%> clause at %L but not in an explicit "
--- 83258,83264 ----
  msgid "%qs appears more than once in %<allocate%> at %L"
  msgstr ""
  
! #: fortran/openmp.cc:9216 fortran/trans-openmp.cc:8329
  #, gcc-internal-format
  msgid ""
  "%qs specified in %<allocate%> clause at %L but not in an explicit "
*************** msgstr ""
*** 85139,85371 ****
  msgid "Syntax error in argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2108
! #, gcc-internal-format
! msgid "extend_ref(): Bad tail"
! msgstr ""
! 
! #: fortran/primary.cc:2210
  #, gcc-internal-format
  msgid ""
  "Array section designator, e.g. %<(:)%>, is required besides the coarray "
  "designator %<[...]%> at %C"
  msgstr ""
  
! #: fortran/primary.cc:2218
  #, gcc-internal-format
  msgid "Coarray designator at %C but %qs is not a coarray"
  msgstr ""
  
! #: fortran/primary.cc:2461
  #, gcc-internal-format
  msgid "Symbol %qs at %C has no IMPLICIT type"
  msgstr ""
  
! #: fortran/primary.cc:2468
  #, gcc-internal-format
  msgid "Unexpected %<%c%> for nonderived-type variable %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:2489
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected structure component name at %C"
  msgstr ""
  
! #: fortran/primary.cc:2510 fortran/primary.cc:2685
  #, gcc-internal-format, gfc-internal-format
  msgid "RE or IM part_ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2562 fortran/primary.cc:2690
  #, gcc-internal-format, gfc-internal-format
  msgid "The RE or IM part_ref at %C must be applied to a COMPLEX expression"
  msgstr ""
  
! #: fortran/primary.cc:2569 fortran/primary.cc:2703
  #, gcc-internal-format, gfc-internal-format
  msgid "The LEN part_ref at %C must be applied to a CHARACTER expression"
  msgstr ""
  
! #: fortran/primary.cc:2628
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2646
  #, gcc-internal-format
  msgid ""
  "%qs at %C is not an inquiry reference to an intrinsic type component %qs"
  msgstr ""
  
! #: fortran/primary.cc:2649
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component"
  msgstr ""
  
! #: fortran/primary.cc:2719
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The KIND part_ref at %C must be applied to an expression of intrinsic type"
  msgstr ""
  
! #: fortran/primary.cc:2747
  #, gcc-internal-format
  msgid "Procedure pointer component %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2833
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected array/substring ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2855
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonpolymorphic reference to abstract type at %C"
  msgstr ""
  
! #: fortran/primary.cc:2862
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed procedure-pointer component at %C"
  msgstr ""
  
! #: fortran/primary.cc:2900
  #, gcc-internal-format
  msgid "gfc_variable_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3118
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3175
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Bad array reference"
  msgstr ""
  
! #: fortran/primary.cc:3354
  #, gcc-internal-format
  msgid ""
  "No initializer for allocatable component %qs given in the structure "
  "constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3365
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with missing optional arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3374
  #, gcc-internal-format
  msgid ""
  "No initializer for component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3422
  #, gcc-internal-format
  msgid "Cannot construct ABSTRACT type %qs at %L"
  msgstr ""
  
! #: fortran/primary.cc:3442
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with named arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3457
  #, gcc-internal-format, gfc-internal-format
  msgid "Component initializer without name after component named %s at %L"
  msgstr ""
  
! #: fortran/primary.cc:3462
  #, gcc-internal-format, gfc-internal-format
  msgid "Too many components in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3521
  msgid "CHARACTER expression will be truncated in constructor (%td/%td) at %L"
  msgstr ""
  
! #: fortran/primary.cc:3539
  #, gcc-internal-format
  msgid "Component %qs is initialized twice in the structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3551
  #, gcc-internal-format
  msgid ""
  "Coindexed expression to pointer component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3605
  #, gcc-internal-format
  msgid ""
  "component %qs at %L has already been set by a parent derived type constructor"
  msgstr ""
  
! #: fortran/primary.cc:3768
  #, gcc-internal-format, gfc-internal-format
  msgid "%%LOC() as an rvalue at %C"
  msgstr ""
  
! #: fortran/primary.cc:3827
  #, gcc-internal-format
  msgid ""
  "%qs at %C is the name of a recursive function and so refers to the result "
  "variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
  msgstr ""
  
! #: fortran/primary.cc:3858 fortran/primary.cc:4265
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %C is not appropriate for an expression"
  msgstr ""
  
! #: fortran/primary.cc:3963
  #, gcc-internal-format
  msgid "Unexpected use of subroutine name %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:3995
  #, gcc-internal-format
  msgid "Statement function %qs requires argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:3998
  #, gcc-internal-format
  msgid "Function %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:4053
  #, gcc-internal-format
  msgid "Missing argument to %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:4066
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The leftmost part-ref in a data-ref cannot be a function reference at %C"
  msgstr ""
  
! #: fortran/primary.cc:4221
  #, gcc-internal-format
  msgid "Missing argument list in function %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:4337
  #, gcc-internal-format
  msgid "Derived type %qs cannot be used as a variable at %C"
  msgstr ""
  
! #: fortran/primary.cc:4378
  #, gcc-internal-format, gfc-internal-format
  msgid "Named constant at %C in an EQUIVALENCE"
  msgstr ""
  
! #: fortran/primary.cc:4383
  #, gcc-internal-format
  msgid "PARAMETER %qs shall not appear in a DATA statement at %C"
  msgstr ""
  
! #: fortran/primary.cc:4419
  #, gcc-internal-format
  msgid "%qs at %C is not a variable"
  msgstr ""
--- 85235,85462 ----
  msgid "Syntax error in argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2218
  #, gcc-internal-format
  msgid ""
  "Array section designator, e.g. %<(:)%>, is required besides the coarray "
  "designator %<[...]%> at %C"
  msgstr ""
  
! #: fortran/primary.cc:2226
  #, gcc-internal-format
  msgid "Coarray designator at %C but %qs is not a coarray"
  msgstr ""
  
! #: fortran/primary.cc:2483
  #, gcc-internal-format
  msgid "Symbol %qs at %C has no IMPLICIT type"
  msgstr ""
  
! #: fortran/primary.cc:2490
  #, gcc-internal-format
  msgid "Unexpected %<%c%> for nonderived-type variable %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:2512
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected structure component name at %C"
  msgstr ""
  
! #: fortran/primary.cc:2543 fortran/primary.cc:2726
  #, gcc-internal-format, gfc-internal-format
  msgid "RE or IM part_ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2595 fortran/primary.cc:2731
  #, gcc-internal-format, gfc-internal-format
  msgid "The RE or IM part_ref at %C must be applied to a COMPLEX expression"
  msgstr ""
  
! #: fortran/primary.cc:2602 fortran/primary.cc:2744
  #, gcc-internal-format, gfc-internal-format
  msgid "The LEN part_ref at %C must be applied to a CHARACTER expression"
  msgstr ""
  
! #: fortran/primary.cc:2661
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2679
  #, gcc-internal-format
  msgid ""
  "%qs at %C is not an inquiry reference to an intrinsic type component %qs"
  msgstr ""
  
! #: fortran/primary.cc:2682
  #, gcc-internal-format
  msgid "%qs at %C is not an inquiry reference to an intrinsic type component"
  msgstr ""
  
! #: fortran/primary.cc:2760
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The KIND part_ref at %C must be applied to an expression of intrinsic type"
  msgstr ""
  
! #: fortran/primary.cc:2788
  #, gcc-internal-format
  msgid "Procedure pointer component %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:2875
  #, gcc-internal-format, gfc-internal-format
  msgid "Unexpected array/substring ref at %C"
  msgstr ""
  
! #: fortran/primary.cc:2897
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonpolymorphic reference to abstract type at %C"
  msgstr ""
  
! #: fortran/primary.cc:2904
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed procedure-pointer component at %C"
  msgstr ""
  
! #: fortran/primary.cc:2943
  #, gcc-internal-format
  msgid "gfc_variable_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3165
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Expression isn't a variable"
  msgstr ""
  
! #: fortran/primary.cc:3222
  #, gcc-internal-format
  msgid "gfc_caf_attr(): Bad array reference"
  msgstr ""
  
! #: fortran/primary.cc:3401
  #, gcc-internal-format
  msgid ""
  "No initializer for allocatable component %qs given in the structure "
  "constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3412
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with missing optional arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3421
  #, gcc-internal-format
  msgid ""
  "No initializer for component %qs given in the structure constructor at %C"
  msgstr ""
  
! #: fortran/primary.cc:3469
  #, gcc-internal-format
  msgid "Cannot construct ABSTRACT type %qs at %L"
  msgstr ""
  
! #: fortran/primary.cc:3489
  #, gcc-internal-format, gfc-internal-format
  msgid "Structure constructor with named arguments at %C"
  msgstr ""
  
! #: fortran/primary.cc:3504
  #, gcc-internal-format, gfc-internal-format
  msgid "Component initializer without name after component named %s at %L"
  msgstr ""
  
! #: fortran/primary.cc:3509
  #, gcc-internal-format, gfc-internal-format
  msgid "Too many components in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3568
  msgid "CHARACTER expression will be truncated in constructor (%td/%td) at %L"
  msgstr ""
  
! #: fortran/primary.cc:3586
  #, gcc-internal-format
  msgid "Component %qs is initialized twice in the structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3598
  #, gcc-internal-format
  msgid ""
  "Coindexed expression to pointer component %qs in structure constructor at %L"
  msgstr ""
  
! #: fortran/primary.cc:3652
  #, gcc-internal-format
  msgid ""
  "component %qs at %L has already been set by a parent derived type constructor"
  msgstr ""
  
! #: fortran/primary.cc:3815
  #, gcc-internal-format, gfc-internal-format
  msgid "%%LOC() as an rvalue at %C"
  msgstr ""
  
! #: fortran/primary.cc:3874
  #, gcc-internal-format
  msgid ""
  "%qs at %C is the name of a recursive function and so refers to the result "
  "variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
  msgstr ""
  
! #: fortran/primary.cc:3905 fortran/primary.cc:4312
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %C is not appropriate for an expression"
  msgstr ""
  
! #: fortran/primary.cc:4010
  #, gcc-internal-format
  msgid "Unexpected use of subroutine name %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:4042
  #, gcc-internal-format
  msgid "Statement function %qs requires argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:4045
  #, gcc-internal-format
  msgid "Function %qs requires an argument list at %C"
  msgstr ""
  
! #: fortran/primary.cc:4100
  #, gcc-internal-format
  msgid "Missing argument to %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:4113
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The leftmost part-ref in a data-ref cannot be a function reference at %C"
  msgstr ""
  
! #: fortran/primary.cc:4268
  #, gcc-internal-format
  msgid "Missing argument list in function %qs at %C"
  msgstr ""
  
! #: fortran/primary.cc:4394
  #, gcc-internal-format
  msgid "Derived type %qs cannot be used as a variable at %C"
  msgstr ""
  
! #: fortran/primary.cc:4435
  #, gcc-internal-format, gfc-internal-format
  msgid "Named constant at %C in an EQUIVALENCE"
  msgstr ""
  
! #: fortran/primary.cc:4440
  #, gcc-internal-format
  msgid "PARAMETER %qs shall not appear in a DATA statement at %C"
  msgstr ""
  
! #: fortran/primary.cc:4476
  #, gcc-internal-format
  msgid "%qs at %C is not a variable"
  msgstr ""
*************** msgid ""
*** 85512,85815 ****
  "length"
  msgstr ""
  
! #: fortran/resolve.cc:578
  #, gcc-internal-format
  msgid ""
  "Contained procedure %qs at %L has the same name as its encompassing procedure"
  msgstr ""
  
! #: fortran/resolve.cc:598
  #, gcc-internal-format
  msgid "Contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:601
  #, gcc-internal-format
  msgid "Result %qs of contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:627
  #, gcc-internal-format
  msgid "Character-valued module procedure %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:629
  #, gcc-internal-format
  msgid "Character-valued internal function %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:802
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L has entries with mismatched array specifications"
  msgstr ""
  
! #: fortran/resolve.cc:813
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L has entry %s with mismatched characteristics"
  msgstr ""
  
! #: fortran/resolve.cc:828
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Function %s at %L with entries returning variables of different string "
  "lengths"
  msgstr ""
  
! #: fortran/resolve.cc:860
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be an array in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:864
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be an array in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:871
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:875
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:882
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:886
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:924
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:929
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:980
  #, gcc-internal-format
  msgid "Global entity %qs at %L cannot appear in a COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:984
  #, gcc-internal-format
  msgid "Global entity %qs at %L cannot appear in a COMMON block"
  msgstr ""
  
! #: fortran/resolve.cc:994
  #, gcc-internal-format, gfc-internal-format
  msgid "COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1001
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L is in COMMON but only in BLOCK DATA initialization is "
  "allowed"
  msgstr ""
  
! #: fortran/resolve.cc:1005
  #, gcc-internal-format
  msgid ""
  "Initialized variable %qs at %L is in a blank COMMON but initialization is "
  "only allowed in named common blocks"
  msgstr ""
  
! #: fortran/resolve.cc:1012
  #, gcc-internal-format
  msgid "%qs at %L cannot appear in COMMON [F2008:C5100]"
  msgstr ""
  
! #: fortran/resolve.cc:1017
  #, gcc-internal-format
  msgid "Automatic object %qs at %L cannot appear in COMMON at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1029
  #, gcc-internal-format
  msgid ""
  "Derived type variable %qs in COMMON at %L has neither the SEQUENCE nor the "
  "BIND(C) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1033
  #, gcc-internal-format
  msgid ""
  "Derived type variable %qs in COMMON at %L has an ultimate component that is "
  "allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:1037
  #, gcc-internal-format
  msgid ""
  "Derived type variable %qs in COMMON at %L may not have default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:1081
  #, gcc-internal-format
  msgid ""
  "In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus "
  "have the same binding name as the same-named COMMON block at %L: %s vs %s"
  msgstr ""
  
! #: fortran/resolve.cc:1095
  #, gcc-internal-format
  msgid "COMMON block %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1103
  #, gcc-internal-format
  msgid ""
  "Fortran 2008: COMMON block %qs with binding label at %L sharing the "
  "identifier with global non-COMMON-block entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1125
  #, gcc-internal-format
  msgid ""
  "COMMON block at %L with binding label %qs uses the same global identifier as "
  "entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1146
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is used as PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1150
  #, gcc-internal-format
  msgid "COMMON block %qs at %L cannot have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1154
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is also an intrinsic procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1158
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a function result"
  msgstr ""
  
! #: fortran/resolve.cc:1163
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a global procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1230
  #, gcc-internal-format
  msgid "The KIND parameter %qs in the PDT constructor at %C has no value"
  msgstr ""
  
! #: fortran/resolve.cc:1373
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The rank of the element in the structure constructor at %L does not match "
  "that of the component (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:1394
  #, gcc-internal-format
  msgid ""
  "The element in the structure constructor at %L, for pointer component %qs, "
  "is %s but should be %s"
  msgstr ""
  
! #: fortran/resolve.cc:1429
  #, gcc-internal-format
  msgid ""
  "Unequal character lengths (%wd/%wd) for pointer component %qs in constructor "
  "at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1475
  #, gcc-internal-format
  msgid ""
  "The NULL in the structure constructor at %L is being applied to component "
  "%qs, which is neither a POINTER nor ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:1509
  #, gcc-internal-format
  msgid ""
  "Interface mismatch for procedure-pointer component %qs in structure "
  "constructor at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:1528
  #, gcc-internal-format
  msgid ""
  "Bad array spec of component %qs referenced in structure constructor at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1541
  #, gcc-internal-format
  msgid ""
  "The shape of component %qs in the structure constructor at %L differs from "
  "the shape of the declared component for dimension %d (%ld/%ld)"
  msgstr ""
  
! #: fortran/resolve.cc:1562
  #, gcc-internal-format
  msgid ""
  "The element in the structure constructor at %L, for pointer component %qs "
  "should be a POINTER or a TARGET"
  msgstr ""
  
! #: fortran/resolve.cc:1589
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target at %L has a vector subscript"
  msgstr ""
  
! #: fortran/resolve.cc:1601
  #, gcc-internal-format
  msgid ""
  "Invalid expression in the structure constructor for pointer component %qs at "
  "%L in PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1727
  #, gcc-internal-format
  msgid ""
  "The upper bound in the last dimension must appear in the reference to the "
  "assumed size array %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1789
  #, gcc-internal-format
  msgid "%qs at %L is ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:1793
  #, gcc-internal-format
  msgid "GENERIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1914
  #, gcc-internal-format
  msgid "Type specified for intrinsic function %qs at %L is ignored"
  msgstr ""
  
! #: fortran/resolve.cc:1927
  #, gcc-internal-format
  msgid "Intrinsic subroutine %qs at %L shall not have a type specifier"
  msgstr ""
  
! #: fortran/resolve.cc:1938
  #, gcc-internal-format
  msgid "%qs declared INTRINSIC at %L does not exist"
  msgstr ""
  
! #: fortran/resolve.cc:1951
  #, gcc-internal-format
  msgid ""
  "The intrinsic %qs declared INTRINSIC at %L is not available in the current "
--- 85603,85906 ----
  "length"
  msgstr ""
  
! #: fortran/resolve.cc:579
  #, gcc-internal-format
  msgid ""
  "Contained procedure %qs at %L has the same name as its encompassing procedure"
  msgstr ""
  
! #: fortran/resolve.cc:599
  #, gcc-internal-format
  msgid "Contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:602
  #, gcc-internal-format
  msgid "Result %qs of contained function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:628
  #, gcc-internal-format
  msgid "Character-valued module procedure %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:630
  #, gcc-internal-format
  msgid "Character-valued internal function %qs at %L must not be assumed length"
  msgstr ""
  
! #: fortran/resolve.cc:803
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L has entries with mismatched array specifications"
  msgstr ""
  
! #: fortran/resolve.cc:814
  #, gcc-internal-format, gfc-internal-format
  msgid "Function %s at %L has entry %s with mismatched characteristics"
  msgstr ""
  
! #: fortran/resolve.cc:829
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Function %s at %L with entries returning variables of different string "
  "lengths"
  msgstr ""
  
! #: fortran/resolve.cc:861
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be an array in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:865
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be an array in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:872
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:876
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be a POINTER in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:883
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:887
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be ALLOCATABLE in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:925
  #, gcc-internal-format, gfc-internal-format
  msgid "FUNCTION result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:930
  #, gcc-internal-format, gfc-internal-format
  msgid "ENTRY result %s cannot be of type %s in FUNCTION %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:981
  #, gcc-internal-format
  msgid "Global entity %qs at %L cannot appear in a COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:985
  #, gcc-internal-format
  msgid "Global entity %qs at %L cannot appear in a COMMON block"
  msgstr ""
  
! #: fortran/resolve.cc:995
  #, gcc-internal-format, gfc-internal-format
  msgid "COMMON block at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1002
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L is in COMMON but only in BLOCK DATA initialization is "
  "allowed"
  msgstr ""
  
! #: fortran/resolve.cc:1006
  #, gcc-internal-format
  msgid ""
  "Initialized variable %qs at %L is in a blank COMMON but initialization is "
  "only allowed in named common blocks"
  msgstr ""
  
! #: fortran/resolve.cc:1013
  #, gcc-internal-format
  msgid "%qs at %L cannot appear in COMMON [F2008:C5100]"
  msgstr ""
  
! #: fortran/resolve.cc:1018
  #, gcc-internal-format
  msgid "Automatic object %qs at %L cannot appear in COMMON at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1030
  #, gcc-internal-format
  msgid ""
  "Derived type variable %qs in COMMON at %L has neither the SEQUENCE nor the "
  "BIND(C) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1034
  #, gcc-internal-format
  msgid ""
  "Derived type variable %qs in COMMON at %L has an ultimate component that is "
  "allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:1038
  #, gcc-internal-format
  msgid ""
  "Derived type variable %qs in COMMON at %L may not have default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:1082
  #, gcc-internal-format
  msgid ""
  "In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus "
  "have the same binding name as the same-named COMMON block at %L: %s vs %s"
  msgstr ""
  
! #: fortran/resolve.cc:1096
  #, gcc-internal-format
  msgid "COMMON block %qs at %L uses the same global identifier as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1104
  #, gcc-internal-format
  msgid ""
  "Fortran 2008: COMMON block %qs with binding label at %L sharing the "
  "identifier with global non-COMMON-block entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1126
  #, gcc-internal-format
  msgid ""
  "COMMON block at %L with binding label %qs uses the same global identifier as "
  "entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1147
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is used as PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1151
  #, gcc-internal-format
  msgid "COMMON block %qs at %L cannot have the EXTERNAL attribute"
  msgstr ""
  
! #: fortran/resolve.cc:1155
  #, gcc-internal-format
  msgid "COMMON block %qs at %L is also an intrinsic procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1159
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a function result"
  msgstr ""
  
! #: fortran/resolve.cc:1164
  #, gcc-internal-format
  msgid "COMMON block %qs at %L that is also a global procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1231
  #, gcc-internal-format
  msgid "The KIND parameter %qs in the PDT constructor at %C has no value"
  msgstr ""
  
! #: fortran/resolve.cc:1374
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The rank of the element in the structure constructor at %L does not match "
  "that of the component (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:1395
  #, gcc-internal-format
  msgid ""
  "The element in the structure constructor at %L, for pointer component %qs, "
  "is %s but should be %s"
  msgstr ""
  
! #: fortran/resolve.cc:1430
  #, gcc-internal-format
  msgid ""
  "Unequal character lengths (%wd/%wd) for pointer component %qs in constructor "
  "at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1476
  #, gcc-internal-format
  msgid ""
  "The NULL in the structure constructor at %L is being applied to component "
  "%qs, which is neither a POINTER nor ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:1510
  #, gcc-internal-format
  msgid ""
  "Interface mismatch for procedure-pointer component %qs in structure "
  "constructor at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:1529
  #, gcc-internal-format
  msgid ""
  "Bad array spec of component %qs referenced in structure constructor at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1542
  #, gcc-internal-format
  msgid ""
  "The shape of component %qs in the structure constructor at %L differs from "
  "the shape of the declared component for dimension %d (%ld/%ld)"
  msgstr ""
  
! #: fortran/resolve.cc:1563
  #, gcc-internal-format
  msgid ""
  "The element in the structure constructor at %L, for pointer component %qs "
  "should be a POINTER or a TARGET"
  msgstr ""
  
! #: fortran/resolve.cc:1590
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer assignment target at %L has a vector subscript"
  msgstr ""
  
! #: fortran/resolve.cc:1602
  #, gcc-internal-format
  msgid ""
  "Invalid expression in the structure constructor for pointer component %qs at "
  "%L in PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:1728
  #, gcc-internal-format
  msgid ""
  "The upper bound in the last dimension must appear in the reference to the "
  "assumed size array %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1790
  #, gcc-internal-format
  msgid "%qs at %L is ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:1794
  #, gcc-internal-format
  msgid "GENERIC procedure %qs is not allowed as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:1915
  #, gcc-internal-format
  msgid "Type specified for intrinsic function %qs at %L is ignored"
  msgstr ""
  
! #: fortran/resolve.cc:1928
  #, gcc-internal-format
  msgid "Intrinsic subroutine %qs at %L shall not have a type specifier"
  msgstr ""
  
! #: fortran/resolve.cc:1939
  #, gcc-internal-format
  msgid "%qs declared INTRINSIC at %L does not exist"
  msgstr ""
  
! #: fortran/resolve.cc:1952
  #, gcc-internal-format
  msgid ""
  "The intrinsic %qs declared INTRINSIC at %L is not available in the current "
*************** msgid ""
*** 85817,85912 ****
  "fall-intrinsics%> in order to use it."
  msgstr ""
  
! #: fortran/resolve.cc:1989
  #, gcc-internal-format
  msgid ""
  "Non-RECURSIVE procedure %qs from module %qs is possibly calling itself "
  "recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:1994 fortran/resolve.cc:7179
  #, gcc-internal-format
  msgid ""
  "Non-RECURSIVE procedure %qs at %L is possibly calling itself recursively.  "
  "Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:2053 fortran/resolve.cc:11603 fortran/resolve.cc:13626
  #, gcc-internal-format, gfc-internal-format
  msgid "Label %d referenced at %L is never defined"
  msgstr ""
  
! #: fortran/resolve.cc:2085
  #, gcc-internal-format
  msgid "Derived type %qs is used as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2103
  #, gcc-internal-format
  msgid "Statement function %qs at %L is not allowed as an actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:2111
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is not allowed as an actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:2118
  #, gcc-internal-format
  msgid "Internal procedure %qs is used as actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2126
  #, gcc-internal-format
  msgid ""
  "ELEMENTAL non-INTRINSIC procedure %qs is not allowed as an actual argument "
  "at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2153
  #, gcc-internal-format
  msgid ""
  "Unable to find a specific INTRINSIC procedure for the reference %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2175
  #, gcc-internal-format
  msgid "Symbol %qs at %L is ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:2239
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not of numeric type"
  msgstr ""
  
! #: fortran/resolve.cc:2246
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L cannot be an array or an array section"
  msgstr ""
  
! #: fortran/resolve.cc:2260
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not allowed in this context"
  msgstr ""
  
! #: fortran/resolve.cc:2272
  #, gcc-internal-format, gfc-internal-format
  msgid "Passing internal procedure at %L by location not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:2283
  #, gcc-internal-format
  msgid ""
  "ELEMENTAL procedure pointer component %qs is not allowed as an actual "
  "argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2292
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L with ultimate pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:2442
  #, gcc-internal-format
  msgid ""
  "%qs at %L is an array and OPTIONAL; If it is not present, then it cannot be "
--- 85908,86003 ----
  "fall-intrinsics%> in order to use it."
  msgstr ""
  
! #: fortran/resolve.cc:1990
  #, gcc-internal-format
  msgid ""
  "Non-RECURSIVE procedure %qs from module %qs is possibly calling itself "
  "recursively in procedure %qs.  Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:1995 fortran/resolve.cc:7152
  #, gcc-internal-format
  msgid ""
  "Non-RECURSIVE procedure %qs at %L is possibly calling itself recursively.  "
  "Declare it RECURSIVE or use %<-frecursive%>"
  msgstr ""
  
! #: fortran/resolve.cc:2054 fortran/resolve.cc:11593 fortran/resolve.cc:13616
  #, gcc-internal-format, gfc-internal-format
  msgid "Label %d referenced at %L is never defined"
  msgstr ""
  
! #: fortran/resolve.cc:2086
  #, gcc-internal-format
  msgid "Derived type %qs is used as an actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2104
  #, gcc-internal-format
  msgid "Statement function %qs at %L is not allowed as an actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:2112
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L is not allowed as an actual argument"
  msgstr ""
  
! #: fortran/resolve.cc:2119
  #, gcc-internal-format
  msgid "Internal procedure %qs is used as actual argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2127
  #, gcc-internal-format
  msgid ""
  "ELEMENTAL non-INTRINSIC procedure %qs is not allowed as an actual argument "
  "at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2154
  #, gcc-internal-format
  msgid ""
  "Unable to find a specific INTRINSIC procedure for the reference %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2176
  #, gcc-internal-format
  msgid "Symbol %qs at %L is ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:2240
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not of numeric type"
  msgstr ""
  
! #: fortran/resolve.cc:2247
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L cannot be an array or an array section"
  msgstr ""
  
! #: fortran/resolve.cc:2261
  #, gcc-internal-format, gfc-internal-format
  msgid "By-value argument at %L is not allowed in this context"
  msgstr ""
  
! #: fortran/resolve.cc:2273
  #, gcc-internal-format, gfc-internal-format
  msgid "Passing internal procedure at %L by location not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:2284
  #, gcc-internal-format
  msgid ""
  "ELEMENTAL procedure pointer component %qs is not allowed as an actual "
  "argument at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2293
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed actual argument at %L with ultimate pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:2443
  #, gcc-internal-format
  msgid ""
  "%qs at %L is an array and OPTIONAL; If it is not present, then it cannot be "
*************** msgid ""
*** 85914,86010 ****
  "argument with the same rank (Fortran 2018, 15.5.2.12)"
  msgstr ""
  
! #: fortran/resolve.cc:2481
  #, gcc-internal-format
  msgid ""
  "Actual argument at %L for INTENT(%s) dummy %qs of ELEMENTAL subroutine %qs "
  "is a scalar, but another actual argument is an array"
  msgstr ""
  
! #: fortran/resolve.cc:2755
  #, gcc-internal-format
  msgid "Return type mismatch of function %qs at %L (%s/%s)"
  msgstr ""
  
! #: fortran/resolve.cc:2782
  #, gcc-internal-format
  msgid "Interface mismatch in global procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:2894
  #, gcc-internal-format
  msgid "There is no specific function for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2914
  #, gcc-internal-format
  msgid ""
  "Generic function %qs at %L is not consistent with a specific intrinsic "
  "interface"
  msgstr ""
  
! #: fortran/resolve.cc:2952
  #, gcc-internal-format
  msgid "Function %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3013
  #, gcc-internal-format
  msgid "Unable to resolve the specific function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3090
  #, gcc-internal-format
  msgid ""
  "Missing explicit declaration with EXTERNAL attribute for symbol %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3125
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type; did you mean %qs?"
  msgstr ""
  
! #: fortran/resolve.cc:3129 fortran/resolve.cc:19066
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:3283
  #, gcc-internal-format, gfc-internal-format
  msgid "Reference to impure function at %L inside a DO CONCURRENT"
  msgstr ""
  
! #: fortran/resolve.cc:3294
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a FORALL %s"
  msgstr ""
  
! #: fortran/resolve.cc:3301
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a DO CONCURRENT %s"
  msgstr ""
  
! #: fortran/resolve.cc:3308
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L within a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:3375
  #, gcc-internal-format
  msgid "Unexpected junk after %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3386
  #, gcc-internal-format
  msgid "%qs at %L is not a function"
  msgstr ""
  
! #: fortran/resolve.cc:3394 fortran/resolve.cc:3966
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs must not be referenced at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3406
  #, gcc-internal-format
  msgid ""
  "ABSTRACT INTERFACE %qs at %L must not have an assumed character length "
--- 86005,86101 ----
  "argument with the same rank (Fortran 2018, 15.5.2.12)"
  msgstr ""
  
! #: fortran/resolve.cc:2482
  #, gcc-internal-format
  msgid ""
  "Actual argument at %L for INTENT(%s) dummy %qs of ELEMENTAL subroutine %qs "
  "is a scalar, but another actual argument is an array"
  msgstr ""
  
! #: fortran/resolve.cc:2756
  #, gcc-internal-format
  msgid "Return type mismatch of function %qs at %L (%s/%s)"
  msgstr ""
  
! #: fortran/resolve.cc:2783
  #, gcc-internal-format
  msgid "Interface mismatch in global procedure %qs at %L: %s"
  msgstr ""
  
! #: fortran/resolve.cc:2895
  #, gcc-internal-format
  msgid "There is no specific function for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:2915
  #, gcc-internal-format
  msgid ""
  "Generic function %qs at %L is not consistent with a specific intrinsic "
  "interface"
  msgstr ""
  
! #: fortran/resolve.cc:2953
  #, gcc-internal-format
  msgid "Function %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3014
  #, gcc-internal-format
  msgid "Unable to resolve the specific function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3091
  #, gcc-internal-format
  msgid ""
  "Missing explicit declaration with EXTERNAL attribute for symbol %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3126
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type; did you mean %qs?"
  msgstr ""
  
! #: fortran/resolve.cc:3130 fortran/resolve.cc:19066
  #, gcc-internal-format
  msgid "Function %qs at %L has no IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:3284
  #, gcc-internal-format, gfc-internal-format
  msgid "Reference to impure function at %L inside a DO CONCURRENT"
  msgstr ""
  
! #: fortran/resolve.cc:3295
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a FORALL %s"
  msgstr ""
  
! #: fortran/resolve.cc:3302
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L inside a DO CONCURRENT %s"
  msgstr ""
  
! #: fortran/resolve.cc:3309
  #, gcc-internal-format
  msgid "Reference to impure function %qs at %L within a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:3376
  #, gcc-internal-format
  msgid "Unexpected junk after %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3387
  #, gcc-internal-format
  msgid "%qs at %L is not a function"
  msgstr ""
  
! #: fortran/resolve.cc:3395 fortran/resolve.cc:3967
  #, gcc-internal-format
  msgid "ABSTRACT INTERFACE %qs must not be referenced at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3407
  #, gcc-internal-format
  msgid ""
  "ABSTRACT INTERFACE %qs at %L must not have an assumed character length "
*************** msgid ""
*** 86012,86509 ****
  msgstr ""
  
  #. Internal procedures are taken care of in resolve_contained_fntype.
! #: fortran/resolve.cc:3449
  #, gcc-internal-format
  msgid ""
  "Function %qs is declared CHARACTER(*) and cannot be used at %L since it is "
  "not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:3470
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy function %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:3509
  #, gcc-internal-format
  msgid "resolve_function(): bad function type"
  msgstr ""
  
! #: fortran/resolve.cc:3523
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "A BOZ literal constant at %L cannot appear as an actual argument in a "
  "function reference"
  msgstr ""
  
! #: fortran/resolve.cc:3539
  #, gcc-internal-format
  msgid ""
  "User defined non-ELEMENTAL function %qs at %L not allowed in WORKSHARE "
  "construct"
  msgstr ""
  
! #: fortran/resolve.cc:3601
  #, gcc-internal-format
  msgid ""
  "ENTRY %qs at %L cannot be called recursively, as function %qs is not "
  "RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3605
  #, gcc-internal-format
  msgid "Function %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3663
  #, gcc-internal-format
  msgid "Using function %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:3701
  #, gcc-internal-format, gfc-internal-format
  msgid "Subroutine call at %L in a DO CONCURRENT block is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3710
  #, gcc-internal-format
  msgid "Subroutine call to %qs in FORALL block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3716
  #, gcc-internal-format
  msgid "Subroutine call to %qs in DO CONCURRENT block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3722
  #, gcc-internal-format
  msgid "Subroutine call to %qs at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3790
  #, gcc-internal-format
  msgid "There is no specific subroutine for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3799
  #, gcc-internal-format
  msgid ""
  "Generic subroutine %qs at %L is not consistent with an intrinsic subroutine "
  "interface"
  msgstr ""
  
! #: fortran/resolve.cc:3834
  #, gcc-internal-format
  msgid ""
  "Subroutine %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3879
  #, gcc-internal-format
  msgid "Unable to resolve the specific subroutine %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3937
  #, gcc-internal-format
  msgid "%qs at %L has a type, which is not consistent with the CALL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3976
  #, gcc-internal-format
  msgid ""
  "ENTRY %qs at %L cannot be called recursively, as subroutine %qs is not "
  "RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3980
  #, gcc-internal-format
  msgid ""
  "SUBROUTINE %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:4031
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy subroutine %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4062
  #, gcc-internal-format
  msgid "resolve_subroutine(): bad function type"
  msgstr ""
  
! #: fortran/resolve.cc:4079
  #, gcc-internal-format
  msgid "Using subroutine %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:4106
  #, gcc-internal-format, gfc-internal-format
  msgid "Shapes for operands at %L and %L are not conformable"
  msgstr ""
  
! #: fortran/resolve.cc:4158
  #, gcc-internal-format
  msgid "logical_to_bitwise(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:4261
  #, gcc-internal-format
  msgid "Impure function %qs at %L might not be evaluated"
  msgstr ""
  
! #: fortran/resolve.cc:4265
  #, gcc-internal-format, gfc-internal-format
  msgid "Impure function at %L might not be evaluated"
  msgstr ""
  
! #: fortran/resolve.cc:4360
  #, gcc-internal-format
  msgid "BOZ literal constant at %L cannot be an operand of unary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4368
  #, gcc-internal-format, gfc-internal-format
  msgid "Negation of unsigned expression at %L not permitted "
  msgstr ""
  
! #: fortran/resolve.cc:4389
  #, gcc-internal-format
  msgid "Operands at %L and %L cannot appear as operands of binary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4399
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL() pointer at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4417
  #, gcc-internal-format
  msgid "Operand of unary numeric operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4432 fortran/resolve.cc:4466
  #, gcc-internal-format
  msgid "Operands of binary numeric operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4446 fortran/resolve.cc:4635 fortran/resolve.cc:4804
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent ranks for operator at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4458
  #, gcc-internal-format
  msgid ""
  "Unexpected derived-type entities in binary intrinsic numeric operator %qs at "
  "%L"
  msgstr ""
  
! #: fortran/resolve.cc:4482
  #, gcc-internal-format, gfc-internal-format
  msgid "Operands of string concatenation operator at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4525
  #, gcc-internal-format
  msgid "Operands of logical operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4548
  #, gcc-internal-format, gfc-internal-format
  msgid "Operand of .not. operator at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4563
  #, gcc-internal-format, gfc-internal-format
  msgid "COMPLEX quantities cannot be compared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4593 fortran/resolve.cc:4608
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "BOZ literal constant near %L cannot appear as an operand of a relational "
  "operator"
  msgstr ""
  
! #: fortran/resolve.cc:4643
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent types for operator at %L and %L: %s and %s"
  msgstr ""
  
! #: fortran/resolve.cc:4667
  #, gcc-internal-format, gfc-internal-format
  msgid "Equality comparison for %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4669
  #, gcc-internal-format, gfc-internal-format
  msgid "Inequality comparison for %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4682
  #, gcc-internal-format, gfc-internal-format
  msgid "Logicals at %L must be compared with %s instead of %s"
  msgstr ""
  
! #: fortran/resolve.cc:4690
  #, gcc-internal-format
  msgid "Operands of comparison operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4705
  #, gcc-internal-format
  msgid "Unknown operator %qs at %L; did you mean %qs?"
  msgstr ""
  
! #: fortran/resolve.cc:4708
  #, gcc-internal-format
  msgid "Unknown operator %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4713
  #, gcc-internal-format
  msgid "Operand of user operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4720
  #, gcc-internal-format
  msgid "Operands of user operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4734
  #, gcc-internal-format
  msgid "resolve_operator(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:4832
! #, gcc-internal-format, gfc-internal-format
! msgid "Inconsistent coranks for operator at %L and %L"
! msgstr ""
! 
! #: fortran/resolve.cc:5031
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5036
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5046
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5051
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5072
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal stride of zero at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5089
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5097
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5113
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5122
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5138
  #, gcc-internal-format
  msgid "check_dimension(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5161
  #, gcc-internal-format, gfc-internal-format
  msgid "Rightmost upper bound of assumed size array section not specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5171
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5179
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5195
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex of codimension %d must be a scalar at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5223
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5229
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5235
  #, gcc-internal-format, gfc-internal-format
  msgid "REAL array index at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5275
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5282
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be of INTEGER type"
  msgstr ""
  
! #: fortran/resolve.cc:5343
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid array reference of a non-array entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5358
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(1)"
  msgstr ""
  
! #: fortran/resolve.cc:5370
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(2)"
  msgstr ""
  
! #: fortran/resolve.cc:5415
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L is an array of rank %d"
  msgstr ""
  
! #: fortran/resolve.cc:5506
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5513
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5527
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5536
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "TEAM argument at %L must be of TEAM_TYPE from the intrinsic module "
  "ISO_FORTRAN_ENV, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5550
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5557
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5566
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT's expression at %L must be a variable"
  msgstr ""
  
! #: fortran/resolve.cc:5588
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5595
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5617
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5624
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5644
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L is too large"
  msgstr ""
  
! #: fortran/resolve.cc:5835
  #, gcc-internal-format
  msgid "resolve_ref(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5849
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Component to the right of a part reference with nonzero rank must not have "
  "the POINTER attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5859
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Component to the right of a part reference with nonzero rank must not have "
  "the ALLOCATABLE attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5907
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Two or more part references with nonzero rank must not be specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6019
  #, gcc-internal-format
  msgid "gfc_expression_rank(): Two array specs"
  msgstr ""
  
! #: fortran/resolve.cc:6048
  #, gcc-internal-format
  msgid "Illegal coarray index"
  msgstr ""
  
! #: fortran/resolve.cc:6096
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute may only be used as actual "
  "argument"
  msgstr ""
  
! #: fortran/resolve.cc:6106
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may only be used as actual argument"
  msgstr ""
--- 86103,86595 ----
  msgstr ""
  
  #. Internal procedures are taken care of in resolve_contained_fntype.
! #: fortran/resolve.cc:3450
  #, gcc-internal-format
  msgid ""
  "Function %qs is declared CHARACTER(*) and cannot be used at %L since it is "
  "not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:3471
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy function %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:3510
  #, gcc-internal-format
  msgid "resolve_function(): bad function type"
  msgstr ""
  
! #: fortran/resolve.cc:3524
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "A BOZ literal constant at %L cannot appear as an actual argument in a "
  "function reference"
  msgstr ""
  
! #: fortran/resolve.cc:3540
  #, gcc-internal-format
  msgid ""
  "User defined non-ELEMENTAL function %qs at %L not allowed in WORKSHARE "
  "construct"
  msgstr ""
  
! #: fortran/resolve.cc:3602
  #, gcc-internal-format
  msgid ""
  "ENTRY %qs at %L cannot be called recursively, as function %qs is not "
  "RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3606
  #, gcc-internal-format
  msgid "Function %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3664
  #, gcc-internal-format
  msgid "Using function %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:3702
  #, gcc-internal-format, gfc-internal-format
  msgid "Subroutine call at %L in a DO CONCURRENT block is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3711
  #, gcc-internal-format
  msgid "Subroutine call to %qs in FORALL block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3717
  #, gcc-internal-format
  msgid "Subroutine call to %qs in DO CONCURRENT block at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3723
  #, gcc-internal-format
  msgid "Subroutine call to %qs at %L is not PURE"
  msgstr ""
  
! #: fortran/resolve.cc:3791
  #, gcc-internal-format
  msgid "There is no specific subroutine for the generic %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3800
  #, gcc-internal-format
  msgid ""
  "Generic subroutine %qs at %L is not consistent with an intrinsic subroutine "
  "interface"
  msgstr ""
  
! #: fortran/resolve.cc:3835
  #, gcc-internal-format
  msgid ""
  "Subroutine %qs at %L is INTRINSIC but is not compatible with an intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:3880
  #, gcc-internal-format
  msgid "Unable to resolve the specific subroutine %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3938
  #, gcc-internal-format
  msgid "%qs at %L has a type, which is not consistent with the CALL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:3977
  #, gcc-internal-format
  msgid ""
  "ENTRY %qs at %L cannot be called recursively, as subroutine %qs is not "
  "RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:3981
  #, gcc-internal-format
  msgid ""
  "SUBROUTINE %qs at %L cannot be called recursively, as it is not RECURSIVE"
  msgstr ""
  
! #: fortran/resolve.cc:4032
  #, gcc-internal-format, gfc-internal-format
  msgid "Different argument lists in external dummy subroutine %s at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4063
  #, gcc-internal-format
  msgid "resolve_subroutine(): bad function type"
  msgstr ""
  
! #: fortran/resolve.cc:4080
  #, gcc-internal-format
  msgid "Using subroutine %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:4107
  #, gcc-internal-format, gfc-internal-format
  msgid "Shapes for operands at %L and %L are not conformable"
  msgstr ""
  
! #: fortran/resolve.cc:4159
  #, gcc-internal-format
  msgid "logical_to_bitwise(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:4262
  #, gcc-internal-format
  msgid "Impure function %qs at %L might not be evaluated"
  msgstr ""
  
! #: fortran/resolve.cc:4266
  #, gcc-internal-format, gfc-internal-format
  msgid "Impure function at %L might not be evaluated"
  msgstr ""
  
! #: fortran/resolve.cc:4361
  #, gcc-internal-format
  msgid "BOZ literal constant at %L cannot be an operand of unary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4369
  #, gcc-internal-format, gfc-internal-format
  msgid "Negation of unsigned expression at %L not permitted "
  msgstr ""
  
! #: fortran/resolve.cc:4390
  #, gcc-internal-format
  msgid "Operands at %L and %L cannot appear as operands of binary operator %qs"
  msgstr ""
  
! #: fortran/resolve.cc:4400
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL() pointer at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4418
  #, gcc-internal-format
  msgid "Operand of unary numeric operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4433 fortran/resolve.cc:4467
  #, gcc-internal-format
  msgid "Operands of binary numeric operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4447 fortran/resolve.cc:4636 fortran/resolve.cc:4805
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent ranks for operator at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:4459
  #, gcc-internal-format
  msgid ""
  "Unexpected derived-type entities in binary intrinsic numeric operator %qs at "
  "%L"
  msgstr ""
  
! #: fortran/resolve.cc:4483
  #, gcc-internal-format, gfc-internal-format
  msgid "Operands of string concatenation operator at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4526
  #, gcc-internal-format
  msgid "Operands of logical operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4549
  #, gcc-internal-format, gfc-internal-format
  msgid "Operand of .not. operator at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4564
  #, gcc-internal-format, gfc-internal-format
  msgid "COMPLEX quantities cannot be compared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4594 fortran/resolve.cc:4609
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "BOZ literal constant near %L cannot appear as an operand of a relational "
  "operator"
  msgstr ""
  
! #: fortran/resolve.cc:4644
  #, gcc-internal-format, gfc-internal-format
  msgid "Inconsistent types for operator at %L and %L: %s and %s"
  msgstr ""
  
! #: fortran/resolve.cc:4668
  #, gcc-internal-format, gfc-internal-format
  msgid "Equality comparison for %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4670
  #, gcc-internal-format, gfc-internal-format
  msgid "Inequality comparison for %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4683
  #, gcc-internal-format, gfc-internal-format
  msgid "Logicals at %L must be compared with %s instead of %s"
  msgstr ""
  
! #: fortran/resolve.cc:4691
  #, gcc-internal-format
  msgid "Operands of comparison operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4706
  #, gcc-internal-format
  msgid "Unknown operator %qs at %L; did you mean %qs?"
  msgstr ""
  
! #: fortran/resolve.cc:4709
  #, gcc-internal-format
  msgid "Unknown operator %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:4714
  #, gcc-internal-format
  msgid "Operand of user operator %qs at %L is %s"
  msgstr ""
  
! #: fortran/resolve.cc:4721
  #, gcc-internal-format
  msgid "Operands of user operator %qs at %L are %s/%s"
  msgstr ""
  
! #: fortran/resolve.cc:4735
  #, gcc-internal-format
  msgid "resolve_operator(): Bad intrinsic"
  msgstr ""
  
! #: fortran/resolve.cc:5004
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5009
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld < %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5019
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5024
  #, gcc-internal-format, gfc-internal-format
  msgid "Array reference at %L is out of bounds (%ld > %ld) in codimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5045
  #, gcc-internal-format, gfc-internal-format
  msgid "Illegal stride of zero at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5062
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5070
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5086
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5095
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
  msgstr ""
  
! #: fortran/resolve.cc:5111
  #, gcc-internal-format
  msgid "check_dimension(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5134
  #, gcc-internal-format, gfc-internal-format
  msgid "Rightmost upper bound of assumed size array section not specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5144
  #, gcc-internal-format, gfc-internal-format
  msgid "Rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5152
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex rank mismatch in array reference at %L (%d/%d)"
  msgstr ""
  
! #: fortran/resolve.cc:5168
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindex of codimension %d must be a scalar at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5196
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5202
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5208
  #, gcc-internal-format, gfc-internal-format
  msgid "REAL array index at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5248
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5255
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument dim at %L must be of INTEGER type"
  msgstr ""
  
! #: fortran/resolve.cc:5316
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid array reference of a non-array entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5331
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(1)"
  msgstr ""
  
! #: fortran/resolve.cc:5343
  #, gcc-internal-format
  msgid "find_array_spec(): unused as(2)"
  msgstr ""
  
! #: fortran/resolve.cc:5388
  #, gcc-internal-format, gfc-internal-format
  msgid "Array index at %L is an array of rank %d"
  msgstr ""
  
! #: fortran/resolve.cc:5479
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5486
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM_NUMBER argument at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5500
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM argument at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5509
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "TEAM argument at %L must be of TEAM_TYPE from the intrinsic module "
  "ISO_FORTRAN_ENV, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5523
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5530
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT argument at %L must be of INTEGER type, found %s"
  msgstr ""
  
! #: fortran/resolve.cc:5539
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT's expression at %L must be a variable"
  msgstr ""
  
! #: fortran/resolve.cc:5561
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5568
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring start index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5590
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be of type INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:5597
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:5617
  #, gcc-internal-format, gfc-internal-format
  msgid "Substring end index at %L is too large"
  msgstr ""
  
! #: fortran/resolve.cc:5808
  #, gcc-internal-format
  msgid "resolve_ref(): Bad array reference"
  msgstr ""
  
! #: fortran/resolve.cc:5822
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Component to the right of a part reference with nonzero rank must not have "
  "the POINTER attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5832
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Component to the right of a part reference with nonzero rank must not have "
  "the ALLOCATABLE attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5880
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Two or more part references with nonzero rank must not be specified at %L"
  msgstr ""
  
! #: fortran/resolve.cc:5992
  #, gcc-internal-format
  msgid "gfc_expression_rank(): Two array specs"
  msgstr ""
  
! #: fortran/resolve.cc:6021
  #, gcc-internal-format
  msgid "Illegal coarray index"
  msgstr ""
  
! #: fortran/resolve.cc:6069
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute may only be used as actual "
  "argument"
  msgstr ""
  
! #: fortran/resolve.cc:6079
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may only be used as actual argument"
  msgstr ""
*************** msgstr ""
*** 86512,86525 ****
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6116
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assumed-type variable %s at %L as actual argument to an inquiry function "
  "shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6137
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L may only be used as actual argument"
  msgstr ""
--- 86598,86611 ----
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6089
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assumed-type variable %s at %L as actual argument to an inquiry function "
  "shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6110
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L may only be used as actual argument"
  msgstr ""
*************** msgstr ""
*** 86528,86977 ****
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6147
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assumed-rank variable %s at %L as actual argument to an inquiry function "
  "shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6158
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute shall not have a subobject "
  "reference"
  msgstr ""
  
! #: fortran/resolve.cc:6167
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6184
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6245
  #, gcc-internal-format
  msgid "Scalar variable %qs has an array reference at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6401
  #, gcc-internal-format
  msgid ""
  "Variable %qs, used in a specification expression, is referenced at %L before "
  "the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6406
  #, gcc-internal-format
  msgid ""
  "Variable %qs is used at %L before the ENTRY statement in which it is a "
  "parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6480
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic subobject of coindexed object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6493
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed object with polymorphic allocatable subcomponent at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6506
  #, gcc-internal-format
  msgid "Using variable %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:6562 fortran/resolve.cc:6650 fortran/resolve.cc:6674
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid array reference at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6759
  #, gcc-internal-format
  msgid ""
  "%qs at %L is host associated at %L into a contained procedure with an "
  "internal procedure of the same name"
  msgstr ""
  
! #: fortran/resolve.cc:6938 fortran/resolve.cc:7090
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in typebound call at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7054
  #, gcc-internal-format, gfc-internal-format
  msgid "Passed-object at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7061
  #, gcc-internal-format
  msgid ""
  "Base object for procedure-pointer component call at %L is of ABSTRACT type "
  "%qs"
  msgstr ""
  
! #: fortran/resolve.cc:7100
  #, gcc-internal-format
  msgid "Base object for type-bound procedure call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7109
  #, gcc-internal-format, gfc-internal-format
  msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
  msgstr ""
  
  #. Nothing matching found!
! #: fortran/resolve.cc:7304
  #, gcc-internal-format
  msgid ""
  "Found no matching specific binding for the call to the GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7338
  #, gcc-internal-format
  msgid "%qs at %L should be a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:7391
  #, gcc-internal-format
  msgid "%qs at %L should be a FUNCTION"
  msgstr ""
  
! #: fortran/resolve.cc:7932
  #, gcc-internal-format
  msgid "gfc_resolve_expr(): Bad expression type"
  msgstr ""
  
! #: fortran/resolve.cc:7965
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be a scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7975
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be integer"
  msgstr ""
  
! #: fortran/resolve.cc:7979 fortran/resolve.cc:7986
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8041
  #, gcc-internal-format, gfc-internal-format
  msgid "Step expression in DO loop at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8064
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L will be executed zero times"
  msgstr ""
  
! #: fortran/resolve.cc:8081
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it overflows"
  msgstr ""
  
! #: fortran/resolve.cc:8087
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it underflows"
  msgstr ""
  
! #: fortran/resolve.cc:8147
  #, gcc-internal-format
  msgid ""
  "Variable %qs referenced in concurrent-header at %L must not appear in LOCAL "
  "locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8183
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L not specified in a locality spec of DO CONCURRENT at %L "
  "but required due to DEFAULT (NONE)"
  msgstr ""
  
! #: fortran/resolve.cc:8235
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected variable name in %s locality spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8244
  #, gcc-internal-format
  msgid "Variable %qs at %L has already been specified in a locality-spec"
  msgstr ""
  
! #: fortran/resolve.cc:8254
  #, gcc-internal-format
  msgid "Index variable %qs at %L cannot be specified in a locality-spec"
  msgstr ""
  
! #: fortran/resolve.cc:8267
  #, gcc-internal-format
  msgid "OPTIONAL attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8274
  #, gcc-internal-format
  msgid "Assumed-size array not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8287
  #, gcc-internal-format
  msgid "ALLOCATABLE attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8292
  #, gcc-internal-format
  msgid ""
  "Nonpointer polymorphic dummy argument not permitted for %qs in %s locality-"
  "spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8297
  #, gcc-internal-format
  msgid "Coarray not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8303
  #, gcc-internal-format
  msgid "Finalizable type not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8308
  #, gcc-internal-format
  msgid ""
  "Type with ultimate allocatable component not permitted for %qs in %s "
  "locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8316
  #, gcc-internal-format
  msgid ""
  "ASYNCHRONOUS attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8320
  #, gcc-internal-format
  msgid "VOLATILE attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8374
  #, gcc-internal-format
  msgid "Expected numeric type for %qs in REDUCE at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8383
  #, gcc-internal-format
  msgid "Expected logical type for %qs in REDUCE at %L, got %qs"
  msgstr ""
  
! #: fortran/resolve.cc:8401
  #, gcc-internal-format
  msgid ""
  "Expected INTEGER, REAL or CHARACTER type for %qs in REDUCE with MIN/MAX at "
  "%L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8410
  #, gcc-internal-format
  msgid ""
  "Expected integer type for %qs in REDUCE with IAND/IOR/IEOR at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8448
  #, gcc-internal-format
  msgid "Variable %qs in locality-spec at %L is not used"
  msgstr ""
  
! #: fortran/resolve.cc:8479
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8484
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL start expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8491
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL end expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8499
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L must be a scalar %s"
  msgstr ""
  
! #: fortran/resolve.cc:8504
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8517
  #, gcc-internal-format
  msgid "FORALL index %qs may not appear in triplet specification at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8622 fortran/resolve.cc:8928
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:8630 fortran/resolve.cc:8891
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed allocatable object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8748
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Source-expr at %L must be scalar or have the same rank as the allocate-"
  "object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8779
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L and allocate-object at %L must have the same shape"
  msgstr ""
  
! #: fortran/resolve.cc:8943
  #, gcc-internal-format, gfc-internal-format
  msgid "The intrinsic NULL cannot be used as source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8951
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8963
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The allocate-object at %L and the source-expr at %L shall have the same kind "
  "type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:8977
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The source-expr at %L shall neither be of type LOCK_TYPE nor have a "
  "LOCK_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:9002
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The source-expr at %L shall neither be of type EVENT_TYPE nor have a "
  "EVENT_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:9015
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
  msgstr ""
  
! #: fortran/resolve.cc:9029
  #, gcc-internal-format
  msgid ""
  "The type parameter in ALLOCATE statement with type-spec shall be an asterisk "
  "as allocate object %qs at %L is a dummy argument with assumed type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:9049
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocating %s at %L with type-spec requires the same character-length "
  "parameter as in the declaration"
  msgstr ""
  
! #: fortran/resolve.cc:9133 fortran/resolve.cc:9148
  #, gcc-internal-format, gfc-internal-format
  msgid "Array specification required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9140
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Array specification or array-valued SOURCE= expression required in ALLOCATE "
  "statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9165
  #, gcc-internal-format, gfc-internal-format
  msgid "Coarray specification required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9175 fortran/resolve.cc:9277
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad coarray specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9181
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9193
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound of 1 at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9204 fortran/resolve.cc:9232
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad array specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9251
  #, gcc-internal-format
  msgid ""
  "%qs must not appear in the array specification at %L in the same ALLOCATE "
  "statement where it is itself allocated"
  msgstr ""
  
! #: fortran/resolve.cc:9266
  #, gcc-internal-format
  msgid "Expected %<*%> in coindex specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9308
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9337
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9350
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L is useless without a STAT tag"
  msgstr ""
  
! #: fortran/resolve.cc:9364
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG variable at %L shall be a scalar default CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9393
  #, gcc-internal-format, gfc-internal-format
  msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9425
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L also appears at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9431 fortran/resolve.cc:9437
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is subobject of object at %L"
  msgstr ""
--- 86614,87069 ----
  #. for all inquiry functions in resolve_function; the reason is
  #. that the function-name resolution happens too late in that
  #. function.
! #: fortran/resolve.cc:6120
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assumed-rank variable %s at %L as actual argument to an inquiry function "
  "shall be the first argument"
  msgstr ""
  
! #: fortran/resolve.cc:6131
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute shall not have a subobject "
  "reference"
  msgstr ""
  
! #: fortran/resolve.cc:6140
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6157
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank variable %s at %L shall not have a subobject reference"
  msgstr ""
  
! #: fortran/resolve.cc:6218
  #, gcc-internal-format
  msgid "Scalar variable %qs has an array reference at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6374
  #, gcc-internal-format
  msgid ""
  "Variable %qs, used in a specification expression, is referenced at %L before "
  "the ENTRY statement in which it is a parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6379
  #, gcc-internal-format
  msgid ""
  "Variable %qs is used at %L before the ENTRY statement in which it is a "
  "parameter"
  msgstr ""
  
! #: fortran/resolve.cc:6453
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic subobject of coindexed object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6466
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed object with polymorphic allocatable subcomponent at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6479
  #, gcc-internal-format
  msgid "Using variable %qs at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:6535 fortran/resolve.cc:6623 fortran/resolve.cc:6647
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid array reference at %L"
  msgstr ""
  
! #: fortran/resolve.cc:6732
  #, gcc-internal-format
  msgid ""
  "%qs at %L is host associated at %L into a contained procedure with an "
  "internal procedure of the same name"
  msgstr ""
  
! #: fortran/resolve.cc:6911 fortran/resolve.cc:7063
  #, gcc-internal-format, gfc-internal-format
  msgid "Error in typebound call at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7027
  #, gcc-internal-format, gfc-internal-format
  msgid "Passed-object at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7034
  #, gcc-internal-format
  msgid ""
  "Base object for procedure-pointer component call at %L is of ABSTRACT type "
  "%qs"
  msgstr ""
  
! #: fortran/resolve.cc:7073
  #, gcc-internal-format
  msgid "Base object for type-bound procedure call at %L is of ABSTRACT type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:7082
  #, gcc-internal-format, gfc-internal-format
  msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
  msgstr ""
  
  #. Nothing matching found!
! #: fortran/resolve.cc:7277
  #, gcc-internal-format
  msgid ""
  "Found no matching specific binding for the call to the GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:7311
  #, gcc-internal-format
  msgid "%qs at %L should be a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:7364
  #, gcc-internal-format
  msgid "%qs at %L should be a FUNCTION"
  msgstr ""
  
! #: fortran/resolve.cc:7905
  #, gcc-internal-format
  msgid "gfc_resolve_expr(): Bad expression type"
  msgstr ""
  
! #: fortran/resolve.cc:7938
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be a scalar"
  msgstr ""
  
! #: fortran/resolve.cc:7948
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be integer"
  msgstr ""
  
! #: fortran/resolve.cc:7952 fortran/resolve.cc:7959
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L must be INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8014
  #, gcc-internal-format, gfc-internal-format
  msgid "Step expression in DO loop at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8037
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L will be executed zero times"
  msgstr ""
  
! #: fortran/resolve.cc:8054
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it overflows"
  msgstr ""
  
! #: fortran/resolve.cc:8060
  #, gcc-internal-format, gfc-internal-format
  msgid "DO loop at %L is undefined as it underflows"
  msgstr ""
  
! #: fortran/resolve.cc:8120
  #, gcc-internal-format
  msgid ""
  "Variable %qs referenced in concurrent-header at %L must not appear in LOCAL "
  "locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8156
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L not specified in a locality spec of DO CONCURRENT at %L "
  "but required due to DEFAULT (NONE)"
  msgstr ""
  
! #: fortran/resolve.cc:8208
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected variable name in %s locality spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8217
  #, gcc-internal-format
  msgid "Variable %qs at %L has already been specified in a locality-spec"
  msgstr ""
  
! #: fortran/resolve.cc:8227
  #, gcc-internal-format
  msgid "Index variable %qs at %L cannot be specified in a locality-spec"
  msgstr ""
  
! #: fortran/resolve.cc:8240
  #, gcc-internal-format
  msgid "OPTIONAL attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8247
  #, gcc-internal-format
  msgid "Assumed-size array not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8260
  #, gcc-internal-format
  msgid "ALLOCATABLE attribute not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8265
  #, gcc-internal-format
  msgid ""
  "Nonpointer polymorphic dummy argument not permitted for %qs in %s locality-"
  "spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8270
  #, gcc-internal-format
  msgid "Coarray not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8276
  #, gcc-internal-format
  msgid "Finalizable type not permitted for %qs in %s locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8281
  #, gcc-internal-format
  msgid ""
  "Type with ultimate allocatable component not permitted for %qs in %s "
  "locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8289
  #, gcc-internal-format
  msgid ""
  "ASYNCHRONOUS attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8293
  #, gcc-internal-format
  msgid "VOLATILE attribute not permitted for %qs in REDUCE locality-spec at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8347
  #, gcc-internal-format
  msgid "Expected numeric type for %qs in REDUCE at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8356
  #, gcc-internal-format
  msgid "Expected logical type for %qs in REDUCE at %L, got %qs"
  msgstr ""
  
! #: fortran/resolve.cc:8374
  #, gcc-internal-format
  msgid ""
  "Expected INTEGER, REAL or CHARACTER type for %qs in REDUCE with MIN/MAX at "
  "%L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8383
  #, gcc-internal-format
  msgid ""
  "Expected integer type for %qs in REDUCE with IAND/IOR/IEOR at %L, got %s"
  msgstr ""
  
! #: fortran/resolve.cc:8421
  #, gcc-internal-format
  msgid "Variable %qs in locality-spec at %L is not used"
  msgstr ""
  
! #: fortran/resolve.cc:8452
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8457
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL start expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8464
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL end expression at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:8472
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L must be a scalar %s"
  msgstr ""
  
! #: fortran/resolve.cc:8477
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL stride expression at %L cannot be zero"
  msgstr ""
  
! #: fortran/resolve.cc:8490
  #, gcc-internal-format
  msgid "FORALL index %qs may not appear in triplet specification at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8595 fortran/resolve.cc:8918
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:8603 fortran/resolve.cc:8881
  #, gcc-internal-format, gfc-internal-format
  msgid "Coindexed allocatable object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8727
! #, gcc-internal-format, gfc-internal-format
! msgid ""
! "Allocate-object at %L has rank %d but MOLD= expression at %L has rank %d"
! msgstr ""
! 
! #: fortran/resolve.cc:8738
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Source-expr at %L must be scalar or have the same rank as the allocate-"
  "object at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8769
  #, gcc-internal-format, gfc-internal-format
  msgid "Source-expr at %L and allocate-object at %L must have the same shape"
  msgstr ""
  
! #: fortran/resolve.cc:8933
  #, gcc-internal-format, gfc-internal-format
  msgid "The intrinsic NULL cannot be used as source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8941
  #, gcc-internal-format, gfc-internal-format
  msgid "Type of entity at %L is type incompatible with source-expr at %L"
  msgstr ""
  
! #: fortran/resolve.cc:8953
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The allocate-object at %L and the source-expr at %L shall have the same kind "
  "type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:8967
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The source-expr at %L shall neither be of type LOCK_TYPE nor have a "
  "LOCK_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:8992
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The source-expr at %L shall neither be of type EVENT_TYPE nor have a "
  "EVENT_TYPE component if allocate-object at %L is a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:9005
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
  msgstr ""
  
! #: fortran/resolve.cc:9019
  #, gcc-internal-format
  msgid ""
  "The type parameter in ALLOCATE statement with type-spec shall be an asterisk "
  "as allocate object %qs at %L is a dummy argument with assumed type parameter"
  msgstr ""
  
! #: fortran/resolve.cc:9039
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Allocating %s at %L with type-spec requires the same character-length "
  "parameter as in the declaration"
  msgstr ""
  
! #: fortran/resolve.cc:9123 fortran/resolve.cc:9138
  #, gcc-internal-format, gfc-internal-format
  msgid "Array specification required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9130
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Array specification or array-valued SOURCE= expression required in ALLOCATE "
  "statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9155
  #, gcc-internal-format, gfc-internal-format
  msgid "Coarray specification required in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9165 fortran/resolve.cc:9267
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad coarray specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9171
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9183
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper cobound is less than lower cobound of 1 at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9194 fortran/resolve.cc:9222
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad array specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9241
  #, gcc-internal-format
  msgid ""
  "%qs must not appear in the array specification at %L in the same ALLOCATE "
  "statement where it is itself allocated"
  msgstr ""
  
! #: fortran/resolve.cc:9256
  #, gcc-internal-format
  msgid "Expected %<*%> in coindex specification in ALLOCATE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9298
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9327
  #, gcc-internal-format, gfc-internal-format
  msgid "Stat-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9340
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG at %L is useless without a STAT tag"
  msgstr ""
  
! #: fortran/resolve.cc:9354
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG variable at %L shall be a scalar default CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:9383
  #, gcc-internal-format, gfc-internal-format
  msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
  msgstr ""
  
! #: fortran/resolve.cc:9415
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L also appears at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9421 fortran/resolve.cc:9427
  #, gcc-internal-format, gfc-internal-format
  msgid "Allocate-object at %L is subobject of object at %L"
  msgstr ""
*************** msgstr ""
*** 86980,87287 ****
  #. element in the list.  Either way, we must
  #. issue an error and get the next case from P.
  #. FIXME: Sort P and Q by line number.
! #: fortran/resolve.cc:9665
  #, gcc-internal-format, gfc-internal-format
  msgid "CASE label at %L overlaps with CASE label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9716
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of type %s"
  msgstr ""
  
! #: fortran/resolve.cc:9727
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of kind %d"
  msgstr ""
  
! #: fortran/resolve.cc:9740
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:9786
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Selection expression in computed GOTO statement at %L must be a scalar "
  "integer expression"
  msgstr ""
  
! #: fortran/resolve.cc:9807
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L cannot be %s"
  msgstr ""
  
! #: fortran/resolve.cc:9817
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L must be a scalar expression"
  msgstr ""
  
! #: fortran/resolve.cc:9835 fortran/resolve.cc:9843
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L is not in the range of %s"
  msgstr ""
  
! #: fortran/resolve.cc:9905 fortran/resolve.cc:10739
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9931
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical range in CASE statement at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:9944
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant logical value in CASE statement is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9959
  #, gcc-internal-format, gfc-internal-format
  msgid "Range specification at %L can never be matched"
  msgstr ""
  
! #: fortran/resolve.cc:10062
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical SELECT CASE block at %L has more that two cases"
  msgstr ""
  
! #: fortran/resolve.cc:10124
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "(F202y)Missing or invalid bound in ASSOCIATE rank remapping of associate "
  "name %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10140
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure pointer"
  msgstr ""
  
! #: fortran/resolve.cc:10149
  #, gcc-internal-format
  msgid "Derived type %qs cannot be used as a variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10166
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure name"
  msgstr ""
  
! #: fortran/resolve.cc:10182
  #, gcc-internal-format, gfc-internal-format
  msgid "Associating selector-expression at %L yields a procedure"
  msgstr ""
  
! #: fortran/resolve.cc:10236
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L cannot be NULL()"
  msgstr ""
  
! #: fortran/resolve.cc:10241
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L has no type"
  msgstr ""
  
! #: fortran/resolve.cc:10300
  #, gcc-internal-format
  msgid "Associate-name %qs at %L is used as array"
  msgstr ""
  
! #: fortran/resolve.cc:10311
  #, gcc-internal-format, gfc-internal-format
  msgid "CLASS selector at %L needs a temporary which is not yet implemented"
  msgstr ""
  
! #: fortran/resolve.cc:10598
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10647 fortran/resolve.cc:10659
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L must not be coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:10688
  #, gcc-internal-format, gfc-internal-format
  msgid "TYPE IS at %L overlaps with TYPE IS at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10701
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be extensible"
  msgstr ""
  
! #: fortran/resolve.cc:10714
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be an extension of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:10717
  #, gcc-internal-format
  msgid "Unexpected intrinsic type %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10727
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The type-spec at %L shall specify that each length type parameter is assumed"
  msgstr ""
  
! #: fortran/resolve.cc:10978
  #, gcc-internal-format, gfc-internal-format
  msgid "Double CLASS IS block in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11111
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK DEFAULT at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11120
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11123
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (%i) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11133
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "RANK (*) at %L cannot be used with the pointer or allocatable selector at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11242
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL () intrinsic at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11296
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO %s procedure at %L must be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:11306
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot be polymorphic unless it is processed by "
  "a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11319
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot have POINTER components unless it is "
  "processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11328
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have procedure pointer components"
  msgstr ""
  
! #: fortran/resolve.cc:11335
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot have ALLOCATABLE components unless it is "
  "processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11346
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components"
  msgstr ""
  
! #: fortran/resolve.cc:11352
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot have PRIVATE components unless it is "
  "processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11370
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot be a full reference to an assumed-size "
  "array"
  msgstr ""
  
! #: fortran/resolve.cc:11421
  #, gcc-internal-format, gfc-internal-format
  msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11431
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable at %L must be a scalar of type EVENT_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11435
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray or coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11438
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray but not coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11445 fortran/resolve.cc:11567
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT= argument at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11457 fortran/resolve.cc:11579
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11469
  #, gcc-internal-format, gfc-internal-format
  msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
  msgstr ""
  
! #: fortran/resolve.cc:11482
  #, gcc-internal-format, gfc-internal-format
  msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11543
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11547 fortran/resolve.cc:11557
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must between 1 and num_images()"
  msgstr ""
  
! #: fortran/resolve.cc:11610
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Statement at %L is not a valid branch target statement for the branch "
  "statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11620
  #, gcc-internal-format, gfc-internal-format
  msgid "Branch at %L may result in an infinite loop"
  msgstr ""
  
  #. Note: A label at END CRITICAL does not leave the CRITICAL
  #. construct as END CRITICAL is still part of it.
! #: fortran/resolve.cc:11637 fortran/resolve.cc:11660
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11641 fortran/resolve.cc:11666
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
  msgstr ""
--- 87072,87379 ----
  #. element in the list.  Either way, we must
  #. issue an error and get the next case from P.
  #. FIXME: Sort P and Q by line number.
! #: fortran/resolve.cc:9655
  #, gcc-internal-format, gfc-internal-format
  msgid "CASE label at %L overlaps with CASE label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9706
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of type %s"
  msgstr ""
  
! #: fortran/resolve.cc:9717
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be of kind %d"
  msgstr ""
  
! #: fortran/resolve.cc:9730
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:9776
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Selection expression in computed GOTO statement at %L must be a scalar "
  "integer expression"
  msgstr ""
  
! #: fortran/resolve.cc:9797
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L cannot be %s"
  msgstr ""
  
! #: fortran/resolve.cc:9807
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of SELECT statement at %L must be a scalar expression"
  msgstr ""
  
! #: fortran/resolve.cc:9825 fortran/resolve.cc:9833
  #, gcc-internal-format, gfc-internal-format
  msgid "Expression in CASE statement at %L is not in the range of %s"
  msgstr ""
  
! #: fortran/resolve.cc:9895 fortran/resolve.cc:10729
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9921
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical range in CASE statement at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:9934
  #, gcc-internal-format, gfc-internal-format
  msgid "Constant logical value in CASE statement is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:9949
  #, gcc-internal-format, gfc-internal-format
  msgid "Range specification at %L can never be matched"
  msgstr ""
  
! #: fortran/resolve.cc:10052
  #, gcc-internal-format, gfc-internal-format
  msgid "Logical SELECT CASE block at %L has more that two cases"
  msgstr ""
  
! #: fortran/resolve.cc:10114
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "(F202y)Missing or invalid bound in ASSOCIATE rank remapping of associate "
  "name %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10130
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure pointer"
  msgstr ""
  
! #: fortran/resolve.cc:10139
  #, gcc-internal-format
  msgid "Derived type %qs cannot be used as a variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10156
  #, gcc-internal-format
  msgid "Associating entity %qs at %L is a procedure name"
  msgstr ""
  
! #: fortran/resolve.cc:10172
  #, gcc-internal-format, gfc-internal-format
  msgid "Associating selector-expression at %L yields a procedure"
  msgstr ""
  
! #: fortran/resolve.cc:10226
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L cannot be NULL()"
  msgstr ""
  
! #: fortran/resolve.cc:10231
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L has no type"
  msgstr ""
  
! #: fortran/resolve.cc:10290
  #, gcc-internal-format
  msgid "Associate-name %qs at %L is used as array"
  msgstr ""
  
! #: fortran/resolve.cc:10301
  #, gcc-internal-format, gfc-internal-format
  msgid "CLASS selector at %L needs a temporary which is not yet implemented"
  msgstr ""
  
! #: fortran/resolve.cc:10588
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10637 fortran/resolve.cc:10649
  #, gcc-internal-format, gfc-internal-format
  msgid "Selector at %L must not be coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:10678
  #, gcc-internal-format, gfc-internal-format
  msgid "TYPE IS at %L overlaps with TYPE IS at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10691
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be extensible"
  msgstr ""
  
! #: fortran/resolve.cc:10704
  #, gcc-internal-format
  msgid "Derived type %qs at %L must be an extension of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:10707
  #, gcc-internal-format
  msgid "Unexpected intrinsic type %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:10717
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The type-spec at %L shall specify that each length type parameter is assumed"
  msgstr ""
  
! #: fortran/resolve.cc:10968
  #, gcc-internal-format, gfc-internal-format
  msgid "Double CLASS IS block in SELECT TYPE statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11101
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK DEFAULT at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11110
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (*) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11113
  #, gcc-internal-format, gfc-internal-format
  msgid "RANK (%i) at %L is repeated at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11123
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "RANK (*) at %L cannot be used with the pointer or allocatable selector at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11232
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid context for NULL () intrinsic at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11286
  #, gcc-internal-format, gfc-internal-format
  msgid "DTIO %s procedure at %L must be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:11296
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot be polymorphic unless it is processed by "
  "a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11309
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot have POINTER components unless it is "
  "processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11318
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have procedure pointer components"
  msgstr ""
  
! #: fortran/resolve.cc:11325
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot have ALLOCATABLE components unless it is "
  "processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11336
  #, gcc-internal-format, gfc-internal-format
  msgid "Data transfer element at %L cannot have PRIVATE components"
  msgstr ""
  
! #: fortran/resolve.cc:11342
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot have PRIVATE components unless it is "
  "processed by a defined input/output procedure"
  msgstr ""
  
! #: fortran/resolve.cc:11360
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Data transfer element at %L cannot be a full reference to an assumed-size "
  "array"
  msgstr ""
  
! #: fortran/resolve.cc:11411
  #, gcc-internal-format, gfc-internal-format
  msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11421
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable at %L must be a scalar of type EVENT_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:11425
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray or coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11428
  #, gcc-internal-format, gfc-internal-format
  msgid "Event variable argument at %L must be a coarray but not coindexed"
  msgstr ""
  
! #: fortran/resolve.cc:11435 fortran/resolve.cc:11557
  #, gcc-internal-format, gfc-internal-format
  msgid "STAT= argument at %L must be a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11447 fortran/resolve.cc:11569
  #, gcc-internal-format, gfc-internal-format
  msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
  msgstr ""
  
! #: fortran/resolve.cc:11459
  #, gcc-internal-format, gfc-internal-format
  msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
  msgstr ""
  
! #: fortran/resolve.cc:11472
  #, gcc-internal-format, gfc-internal-format
  msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11533
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:11537 fortran/resolve.cc:11547
  #, gcc-internal-format, gfc-internal-format
  msgid "Imageset argument at %L must between 1 and num_images()"
  msgstr ""
  
! #: fortran/resolve.cc:11600
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Statement at %L is not a valid branch target statement for the branch "
  "statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11610
  #, gcc-internal-format, gfc-internal-format
  msgid "Branch at %L may result in an infinite loop"
  msgstr ""
  
  #. Note: A label at END CRITICAL does not leave the CRITICAL
  #. construct as END CRITICAL is still part of it.
! #: fortran/resolve.cc:11627 fortran/resolve.cc:11650
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11631 fortran/resolve.cc:11656
  #, gcc-internal-format, gfc-internal-format
  msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
  msgstr ""
*************** msgstr ""
*** 87289,87373 ****
  #. The label is not in an enclosing block, so illegal.  This was
  #. allowed in Fortran 66, so we allow it as extension.  No
  #. further checks are necessary in this case.
! #: fortran/resolve.cc:11681
  #, gcc-internal-format, gfc-internal-format
  msgid "Label at %L is not in the same block as the GOTO statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11753
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE mask at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11769
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE assignment target at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11782 fortran/resolve.cc:11874
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11792 fortran/resolve.cc:11884
  #, gcc-internal-format, gfc-internal-format
  msgid "Unsupported statement inside WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11823
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a FORALL index variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11832
  #, gcc-internal-format
  msgid ""
  "The FORALL with index %qs is not used on the left side of the assignment at "
  "%L and so might cause multiple assignment to this object"
  msgstr ""
  
! #: fortran/resolve.cc:11989
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL construct at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12010
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar variable of type integer"
  msgstr ""
  
! #: fortran/resolve.cc:12020
  #, gcc-internal-format, gfc-internal-format
  msgid "An outer FORALL construct already has an index with this name %L"
  msgstr ""
  
! #: fortran/resolve.cc:12098
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
  msgstr ""
  
! #: fortran/resolve.cc:12219
  #, gcc-internal-format
  msgid "gfc_resolve_blocks(): Bad block type"
  msgstr ""
  
! #: fortran/resolve.cc:12299
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable in the ordinary assignment at %L is a procedure pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:12319
  #, gcc-internal-format, gfc-internal-format
  msgid "Cannot assign %s to %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12367
  #, gcc-internal-format
  msgid "CHARACTER expression will be truncated in assignment (%wd/%wd) at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12399
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Coindexed expression at %L is assigned to a derived type variable with a "
--- 87381,87465 ----
  #. The label is not in an enclosing block, so illegal.  This was
  #. allowed in Fortran 66, so we allow it as extension.  No
  #. further checks are necessary in this case.
! #: fortran/resolve.cc:11671
  #, gcc-internal-format, gfc-internal-format
  msgid "Label at %L is not in the same block as the GOTO statement at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11743
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE mask at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11759
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE assignment target at %L has inconsistent shape"
  msgstr ""
  
! #: fortran/resolve.cc:11772 fortran/resolve.cc:11864
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11782 fortran/resolve.cc:11874
  #, gcc-internal-format, gfc-internal-format
  msgid "Unsupported statement inside WHERE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11813
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to a FORALL index variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:11822
  #, gcc-internal-format
  msgid ""
  "The FORALL with index %qs is not used on the left side of the assignment at "
  "%L and so might cause multiple assignment to this object"
  msgstr ""
  
! #: fortran/resolve.cc:11979
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL construct at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12000
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL index-name at %L must be a scalar variable of type integer"
  msgstr ""
  
! #: fortran/resolve.cc:12010
  #, gcc-internal-format, gfc-internal-format
  msgid "An outer FORALL construct already has an index with this name %L"
  msgstr ""
  
! #: fortran/resolve.cc:12088
  #, gcc-internal-format, gfc-internal-format
  msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
  msgstr ""
  
! #: fortran/resolve.cc:12209
  #, gcc-internal-format
  msgid "gfc_resolve_blocks(): Bad block type"
  msgstr ""
  
! #: fortran/resolve.cc:12289
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable in the ordinary assignment at %L is a procedure pointer component"
  msgstr ""
  
! #: fortran/resolve.cc:12309
  #, gcc-internal-format, gfc-internal-format
  msgid "Cannot assign %s to %s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12357
  #, gcc-internal-format
  msgid "CHARACTER expression will be truncated in assignment (%wd/%wd) at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12389
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Coindexed expression at %L is assigned to a derived type variable with a "
*************** msgid ""
*** 87375,87381 ****
  msgstr ""
  
  #. F2008, C1283 (4).
! #: fortran/resolve.cc:12405
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "In a pure subprogram an INTENT(IN) dummy argument shall not be used as the "
--- 87467,87473 ----
  msgstr ""
  
  #. F2008, C1283 (4).
! #: fortran/resolve.cc:12395
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "In a pure subprogram an INTENT(IN) dummy argument shall not be used as the "
*************** msgid ""
*** 87384,87426 ****
  "component selection."
  msgstr ""
  
! #: fortran/resolve.cc:12417
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to coindexed variable at %L in a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:12449
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to polymorphic coarray at %L is not permitted"
  msgstr ""
  
! #: fortran/resolve.cc:12453
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12458
  #, gcc-internal-format
  msgid ""
  "Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-"
  "lhs%>"
  msgstr ""
  
! #: fortran/resolve.cc:12465
  #, gcc-internal-format
  msgid ""
  "Nonallocatable variable must not be polymorphic in intrinsic assignment at "
  "%L - check that there is a matching specific subroutine for %<=%> operator"
  msgstr ""
  
! #: fortran/resolve.cc:12476
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Coindexed variable must not have an allocatable ultimate component in "
  "assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12865
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "TODO: type-bound defined assignment(s) at %L not done because multiple part "
--- 87476,87518 ----
  "component selection."
  msgstr ""
  
! #: fortran/resolve.cc:12407
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to coindexed variable at %L in a PURE procedure"
  msgstr ""
  
! #: fortran/resolve.cc:12439
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to polymorphic coarray at %L is not permitted"
  msgstr ""
  
! #: fortran/resolve.cc:12443
  #, gcc-internal-format, gfc-internal-format
  msgid "Assignment to an allocatable polymorphic variable at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12448
  #, gcc-internal-format
  msgid ""
  "Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-"
  "lhs%>"
  msgstr ""
  
! #: fortran/resolve.cc:12455
  #, gcc-internal-format
  msgid ""
  "Nonallocatable variable must not be polymorphic in intrinsic assignment at "
  "%L - check that there is a matching specific subroutine for %<=%> operator"
  msgstr ""
  
! #: fortran/resolve.cc:12466
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Coindexed variable must not have an allocatable ultimate component in "
  "assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:12855
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "TODO: type-bound defined assignment(s) at %L not done because multiple part "
*************** msgstr ""
*** 87429,87521 ****
  
  #. Even if standard does not support this feature, continue to build
  #. the two statements to avoid upsetting frontend_passes.c.
! #: fortran/resolve.cc:13179
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer procedure assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13191
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The function result on the lhs of the assignment at %L must have the pointer "
  "attribute."
  msgstr ""
  
! #: fortran/resolve.cc:13287
  #, gcc-internal-format
  msgid ""
  "TEAM argument to %qs at %L must be a scalar expression of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:13486
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM NUMBER argument to FORM TEAM at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:13522
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED GOTO statement at %L requires a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13526
  #, gcc-internal-format
  msgid "Variable %qs has not been assigned a target label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13537
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
  msgstr ""
  
! #: fortran/resolve.cc:13593
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected intrinsic assignment in OMP WORKSHARE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13635
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13682
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid NULL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13686
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:13747
  #, gcc-internal-format
  msgid "gfc_resolve_code(): No expression on DO WHILE"
  msgstr ""
  
! #: fortran/resolve.cc:13752
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13836
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13948
  #, gcc-internal-format
  msgid "gfc_resolve_code(): Bad statement code"
  msgstr ""
  
! #: fortran/resolve.cc:13969
  #, gcc-internal-format
  msgid "Using parameter %qs declared at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:14065
  #, gcc-internal-format
  msgid ""
  "Variable %qs with binding label %qs at %L uses the same global identifier as "
--- 87521,87613 ----
  
  #. Even if standard does not support this feature, continue to build
  #. the two statements to avoid upsetting frontend_passes.c.
! #: fortran/resolve.cc:13169
  #, gcc-internal-format, gfc-internal-format
  msgid "Pointer procedure assignment at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13181
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The function result on the lhs of the assignment at %L must have the pointer "
  "attribute."
  msgstr ""
  
! #: fortran/resolve.cc:13277
  #, gcc-internal-format
  msgid ""
  "TEAM argument to %qs at %L must be a scalar expression of type TEAM_TYPE"
  msgstr ""
  
! #: fortran/resolve.cc:13476
  #, gcc-internal-format, gfc-internal-format
  msgid "TEAM NUMBER argument to FORM TEAM at %L must be a scalar INTEGER"
  msgstr ""
  
! #: fortran/resolve.cc:13512
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGNED GOTO statement at %L requires a scalar INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13516
  #, gcc-internal-format
  msgid "Variable %qs has not been assigned a target label at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13527
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
  msgstr ""
  
! #: fortran/resolve.cc:13583
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected intrinsic assignment in OMP WORKSHARE at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13625
  #, gcc-internal-format, gfc-internal-format
  msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
  msgstr ""
  
! #: fortran/resolve.cc:13672
  #, gcc-internal-format, gfc-internal-format
  msgid "Invalid NULL at %L"
  msgstr ""
  
! #: fortran/resolve.cc:13676
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression"
  msgstr ""
  
! #: fortran/resolve.cc:13737
  #, gcc-internal-format
  msgid "gfc_resolve_code(): No expression on DO WHILE"
  msgstr ""
  
! #: fortran/resolve.cc:13742
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13826
  #, gcc-internal-format, gfc-internal-format
  msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
  msgstr ""
  
! #: fortran/resolve.cc:13938
  #, gcc-internal-format
  msgid "gfc_resolve_code(): Bad statement code"
  msgstr ""
  
! #: fortran/resolve.cc:13959
  #, gcc-internal-format
  msgid "Using parameter %qs declared at %L is deprecated"
  msgstr ""
  
! #: fortran/resolve.cc:14055
  #, gcc-internal-format
  msgid ""
  "Variable %qs with binding label %qs at %L uses the same global identifier as "
*************** msgstr ""
*** 87524,87530 ****
  
  #. This can only happen if the variable is defined in a module - if it
  #. isn't the same module, reject it.
! #: fortran/resolve.cc:14079
  #, gcc-internal-format
  msgid ""
  "Variable %qs from module %qs with binding label %qs at %L uses the same "
--- 87616,87622 ----
  
  #. This can only happen if the variable is defined in a module - if it
  #. isn't the same module, reject it.
! #: fortran/resolve.cc:14069
  #, gcc-internal-format
  msgid ""
  "Variable %qs from module %qs with binding label %qs at %L uses the same "
*************** msgstr ""
*** 87534,88547 ****
  #. Print an error if the procedure is defined multiple times; we have to
  #. exclude references to the same procedure via module association or
  #. multiple checks for the same procedure.
! #: fortran/resolve.cc:14098
  #, gcc-internal-format
  msgid ""
  "Procedure %qs with binding label %qs at %L uses the same global identifier "
  "as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14184
  #, gcc-internal-format, gfc-internal-format
  msgid "String length at %L is too large"
  msgstr ""
  
! #: fortran/resolve.cc:14422
  #, gcc-internal-format
  msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14426
  #, gcc-internal-format
  msgid "Scalar object %qs at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:14434
  #, gcc-internal-format
  msgid "Array pointer %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14445
  #, gcc-internal-format
  msgid "Array %qs at %L cannot have a deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:14463
  #, gcc-internal-format
  msgid "Type %qs of CLASS variable %qs at %L is not extensible"
  msgstr ""
  
! #: fortran/resolve.cc:14477
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer"
  msgstr ""
  
! #: fortran/resolve.cc:14510
  #, gcc-internal-format
  msgid ""
  "The type %qs cannot be host associated at %L because it is blocked by an "
  "incompatible object of the same name declared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14532
  #, gcc-internal-format
  msgid ""
  "Implied SAVE for module variable %qs at %L, needed due to the default "
  "initialization"
  msgstr ""
  
! #: fortran/resolve.cc:14565
  #, gcc-internal-format
  msgid ""
  "Entity %qs at %L has a deferred type parameter and requires either the "
  "POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14579
  #, gcc-internal-format
  msgid "Automatic object %qs at %L cannot have the SAVE attribute"
  msgstr ""
  
  #. F08:C541. The shape of an array defined in a main program or module
  #. * needs to be constant.
! #: fortran/resolve.cc:14601
  #, gcc-internal-format
  msgid "The module or main program array %qs at %L must have constant shape"
  msgstr ""
  
! #: fortran/resolve.cc:14626
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Entity with assumed character length at %L must be a dummy argument or a "
  "PARAMETER"
  msgstr ""
  
! #: fortran/resolve.cc:14647
  #, gcc-internal-format
  msgid "%qs at %L must have constant character length in this context"
  msgstr ""
  
! #: fortran/resolve.cc:14654
  #, gcc-internal-format
  msgid "COMMON variable %qs at %L must have constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:14702
  #, gcc-internal-format
  msgid "Allocatable %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14705
  #, gcc-internal-format
  msgid "External %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14708
  #, gcc-internal-format
  msgid "Dummy %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14711
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14714
  #, gcc-internal-format
  msgid "Function result %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14717
  #, gcc-internal-format
  msgid "Automatic array %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14759
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14791
  #, gcc-internal-format
  msgid "Character-valued statement function %qs at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:14814
  #, gcc-internal-format
  msgid ""
  "%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is "
  "PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14836
  #, gcc-internal-format
  msgid ""
  "Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs "
  "which is PRIVATE"
  msgstr ""
  
! #: fortran/resolve.cc:14854
  #, gcc-internal-format
  msgid "Function %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14866
  #, gcc-internal-format
  msgid "External object %qs at %L may not have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14876
  #, gcc-internal-format
  msgid "ELEMENTAL function %qs at %L must have a scalar result"
  msgstr ""
  
! #: fortran/resolve.cc:14886
  #, gcc-internal-format
  msgid ""
  "Statement function %qs at %L may not have pointer or allocatable attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14905
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be array-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14909
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14913
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pure"
  msgstr ""
  
! #: fortran/resolve.cc:14917
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:14930
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14941
  #, gcc-internal-format
  msgid "Procedure pointer %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14947
  #, gcc-internal-format
  msgid "Dummy procedure %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14967
  #, gcc-internal-format
  msgid ""
  "Function result variable %qs at %L of elemental function %qs shall not have "
  "an ALLOCATABLE or POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15024
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15030
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15036
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15044
  #, gcc-internal-format
  msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15050
  #, gcc-internal-format
  msgid "Procedure pointer result %qs at %L is missing the pointer attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15093
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its "
  "interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15101
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface "
  "in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15109
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its "
  "interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15118
  #, gcc-internal-format
  msgid ""
  "%s between the MODULE PROCEDURE declaration in MODULE %qs and the "
  "declaration at %L in (SUB)MODULE %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15142
  #, gcc-internal-format
  msgid "Interface of %qs at %L must be explicit"
  msgstr ""
  
! #: fortran/resolve.cc:15212
  #, gcc-internal-format
  msgid "FINAL procedure %qs at %L is not a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:15221
  #, gcc-internal-format, gfc-internal-format
  msgid "FINAL procedure at %L must have exactly one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15229 fortran/resolve.cc:15246
  #, gcc-internal-format
  msgid "Argument of FINAL procedure at %L must be of type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15237
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "FINAL procedure at %L with assumed rank argument must be the only finalizer "
  "with the same kind/type (F2018: C790)"
  msgstr ""
  
! #: fortran/resolve.cc:15254
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15260
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15266
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
  msgstr ""
  
! #: fortran/resolve.cc:15274
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:15283
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:15305
  #, gcc-internal-format
  msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15342
  #, gcc-internal-format
  msgid ""
  "Only array FINAL procedures declared for derived type %qs defined at %L, "
  "suggest also scalar one unless an assumed rank finalizer has been declared"
  msgstr ""
  
! #: fortran/resolve.cc:15383
  #, gcc-internal-format
  msgid "%qs and %qs cannot be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15419
  #, gcc-internal-format
  msgid "%qs and %qs for GENERIC %qs at %L are ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:15478
  #, gcc-internal-format
  msgid "Undefined specific binding %qs as target of GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15490
  #, gcc-internal-format
  msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too"
  msgstr ""
  
! #: fortran/resolve.cc:15518
  #, gcc-internal-format
  msgid "GENERIC %qs at %L cannot overwrite specific binding with the same name"
  msgstr ""
  
! #: fortran/resolve.cc:15574
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-bound operator at %L cannot be NOPASS"
  msgstr ""
  
! #: fortran/resolve.cc:15786
  #, gcc-internal-format
  msgid ""
  "%qs must be a module procedure or an external procedure with an explicit "
  "interface at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15829
  #, gcc-internal-format
  msgid "Procedure %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15843
  #, gcc-internal-format
  msgid "Procedure %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15857 fortran/resolve.cc:16399
  #, gcc-internal-format
  msgid "Non-polymorphic passed-object dummy argument of %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15866
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15876
  #, gcc-internal-format
  msgid ""
  "Argument %qs of %qs with PASS(%s) at %L must be of the parametric derived-"
  "type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15918
  #, gcc-internal-format
  msgid ""
  "All LEN type parameters of the passed dummy argument %qs of %qs at %L must "
  "be ASSUMED."
  msgstr ""
  
! #: fortran/resolve.cc:15928
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:15934
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15940
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15969
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as a component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15979
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as an inherited component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16074
  #, gcc-internal-format
  msgid ""
  "Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and "
  "not overridden"
  msgstr ""
  
! #: fortran/resolve.cc:16179
  #, gcc-internal-format
  msgid "Coarray component %qs at %L must be allocatable with deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:16188
  #, gcc-internal-format
  msgid ""
  "Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:16198
  #, gcc-internal-format
  msgid ""
  "Component %qs at %L with coarray component shall be a nonpointer, "
  "nonallocatable scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16223
  #, gcc-internal-format
  msgid ""
  "Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer"
  msgstr ""
  
! #: fortran/resolve.cc:16234
  #, gcc-internal-format
  msgid "Component %qs of BIND(C) type at %L must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:16332
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16346
  #, gcc-internal-format
  msgid ""
  "Procedure pointer component %qs with PASS at %L must have at least one "
  "argument"
  msgstr ""
  
! #: fortran/resolve.cc:16362
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16372
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16381
  #, gcc-internal-format
  msgid ""
  "Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16390
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16432
  #, gcc-internal-format
  msgid ""
  "Component %qs of %qs at %L has the same name as an inherited type-bound "
  "procedure"
  msgstr ""
  
! #: fortran/resolve.cc:16445
  #, gcc-internal-format
  msgid ""
  "Character length of component %qs needs to be a constant specification "
  "expression at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16456
  #, gcc-internal-format
  msgid ""
  "Character length expression of component %qs at %L must be of INTEGER type, "
  "found %s"
  msgstr ""
  
! #: fortran/resolve.cc:16469
  #, gcc-internal-format
  msgid ""
  "Character component %qs of %qs at %L with deferred length must be a POINTER "
  "or ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16502
  #, gcc-internal-format
  msgid ""
  "the component %qs is a PRIVATE type and cannot be a component of %qs, which "
  "is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16510
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
  msgstr ""
  
! #: fortran/resolve.cc:16519
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE "
  "attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16605
  #, gcc-internal-format, gfc-internal-format
  msgid "Conflicting initializers in union at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:16697
  #, gcc-internal-format
  msgid ""
  "As extending type %qs at %L has a coarray component, parent type %qs shall "
  "also have one"
  msgstr ""
  
! #: fortran/resolve.cc:16710
  #, gcc-internal-format
  msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT"
  msgstr ""
  
! #: fortran/resolve.cc:16780
  #, gcc-internal-format
  msgid ""
  "Parameterized type %qs does not have a component corresponding to parameter "
  "%qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16812
  #, gcc-internal-format
  msgid ""
  "Generic name %qs of function %qs at %L being the same name as derived type "
  "at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16826
  #, gcc-internal-format
  msgid "Derived type %qs at %L has not been declared"
  msgstr ""
  
! #: fortran/resolve.cc:16894
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:16900
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16906
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16914
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs with nonconstant character length in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16931
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC "
  "namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16953
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs has use-associated PRIVATE components and cannot be "
  "member of namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16964
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC "
  "namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16991
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17010
  #, gcc-internal-format
  msgid "Parameter array %qs at %L cannot be automatic or of deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17026
  #, gcc-internal-format
  msgid ""
  "Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:17037
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible derived type in PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17045
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17097
  #, gcc-internal-format
  msgid ""
  "Entity %qs at %L has a deferred LEN parameter %qs and requires either the "
  "POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17109
  #, gcc-internal-format
  msgid ""
  "The AUTOMATIC object %qs at %L must not have the SAVE attribute or be a "
  "variable declared in the main program, a module or a submodule(F08/C513)"
  msgstr ""
  
! #: fortran/resolve.cc:17116
  #, gcc-internal-format
  msgid ""
  "The object %qs at %L with ASSUMED type parameters must be a dummy or a "
  "SELECT TYPE selector(F08/4.2)"
  msgstr ""
  
! #: fortran/resolve.cc:17175
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Sorry, allocatable/pointer components in polymorphic (CLASS) type coarrays "
  "at %L are unsupported"
  msgstr ""
  
! #: fortran/resolve.cc:17188
  #, gcc-internal-format
  msgid ""
  "%<omp_all_memory%>, declared at %L, may only be used in the OpenMP DEPEND "
  "clause"
  msgstr ""
  
! #: fortran/resolve.cc:17253
  #, gcc-internal-format, gfc-internal-format
  msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17256
  #, gcc-internal-format, gfc-internal-format
  msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17362
  #, gcc-internal-format
  msgid ""
  "%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an "
  "assumed-shape or assumed-rank array"
  msgstr ""
  
! #: fortran/resolve.cc:17383
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad specification for assumed size array at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17397
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed size array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17400
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed shape array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17412
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17419
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17432
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %L is not a DUMMY variable"
  msgstr ""
  
! #: fortran/resolve.cc:17438
  #, gcc-internal-format
  msgid ""
  "%qs at %L cannot have the VALUE attribute because it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17448
  #, gcc-internal-format
  msgid ""
  "Character dummy variable %qs at %L with VALUE attribute must have constant "
  "length"
  msgstr ""
  
! #: fortran/resolve.cc:17457
  #, gcc-internal-format
  msgid ""
  "C interoperable character dummy variable %qs at %L with VALUE attribute must "
  "have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17470 fortran/resolve.cc:17647
  #, gcc-internal-format
  msgid "The derived type %qs at %L is of type %qs, which has not been defined"
  msgstr ""
  
! #: fortran/resolve.cc:17484
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17493
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of "
  "an numeric intrinsic type"
  msgstr ""
  
! #: fortran/resolve.cc:17502
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, "
  "CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17510
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) "
  "attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17517
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an "
  "assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:17537
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed type of variable %s at %L is only permitted for dummy variables"
  msgstr ""
  
! #: fortran/resolve.cc:17544
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, "
  "POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17551
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17558
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not be an explicit-shape array"
  msgstr ""
  
! #: fortran/resolve.cc:17584
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L cannot be BIND(C) because it is neither a COMMON block "
  "nor declared at the module level scope"
  msgstr ""
  
! #: fortran/resolve.cc:17594
  #, gcc-internal-format
  msgid "BIND(C) Variable %qs at %L must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17673
  #, gcc-internal-format
  msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17688
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE "
  "must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17701
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE "
  "must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17719
  #, gcc-internal-format
  msgid ""
  "The INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have "
  "a default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:17731
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17740
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17753
  #, gcc-internal-format
  msgid ""
  "Function result %qs at %L shall not be a coarray or have a coarray component"
  msgstr ""
  
! #: fortran/resolve.cc:17762
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17775
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L with coarray component shall be a nonpointer, "
  "nonallocatable scalar, which is not a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17791
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy "
  "argument"
  msgstr ""
  
! #: fortran/resolve.cc:17799
  #, gcc-internal-format
  msgid ""
  "Coarray variable %qs at %L shall not have codimensions with deferred shape "
  "without allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:17807
  #, gcc-internal-format
  msgid "Allocatable coarray variable %qs at %L must have deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17820
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray "
  "or have coarray components"
  msgstr ""
  
! #: fortran/resolve.cc:17829
  #, gcc-internal-format
  msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17845
  #, gcc-internal-format
  msgid ""
  "LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure "
  "%qs"
  msgstr ""
  
! #: fortran/resolve.cc:17851
  #, gcc-internal-format
  msgid ""
  "LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure "
  "%qs"
  msgstr ""
  
! #: fortran/resolve.cc:17876
  #, gcc-internal-format
  msgid "Namelist %qs cannot be an argument to subroutine or function at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17936
  #, gcc-internal-format, gfc-internal-format
  msgid "Threadprivate at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:17948
  #, gcc-internal-format
  msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:18059
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting definable entity near %L"
  msgstr ""
  
! #: fortran/resolve.cc:18067
  #, gcc-internal-format
  msgid "BLOCK DATA element %qs at %L must be in COMMON"
  msgstr ""
  
! #: fortran/resolve.cc:18074
  #, gcc-internal-format
  msgid "DATA array %qs at %L must be specified in a previous declaration"
  msgstr ""
  
! #: fortran/resolve.cc:18081
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have a coindex"
  msgstr ""
  
! #: fortran/resolve.cc:18097
  #, gcc-internal-format
  msgid "DATA element %qs at %L is a pointer and so must be a full array"
  msgstr ""
  
! #: fortran/resolve.cc:18104
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "DATA object near %L has the pointer attribute and the corresponding DATA "
  "value is not a valid initial-data-target"
  msgstr ""
  
! #: fortran/resolve.cc:18113
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have the ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:18175
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonconstant array section at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18188
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more variables than values"
  msgstr ""
  
! #: fortran/resolve.cc:18264
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-constant character length at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18292
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "start of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18300
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "end of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18308
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "step of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18315
  #, gcc-internal-format, gfc-internal-format
  msgid "step of implied-do loop at %L shall not be zero"
  msgstr ""
  
! #: fortran/resolve.cc:18440
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more values than variables"
  msgstr ""
--- 87626,88639 ----
  #. Print an error if the procedure is defined multiple times; we have to
  #. exclude references to the same procedure via module association or
  #. multiple checks for the same procedure.
! #: fortran/resolve.cc:14088
  #, gcc-internal-format
  msgid ""
  "Procedure %qs with binding label %qs at %L uses the same global identifier "
  "as entity at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14174
  #, gcc-internal-format, gfc-internal-format
  msgid "String length at %L is too large"
  msgstr ""
  
! #: fortran/resolve.cc:14412
  #, gcc-internal-format
  msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14416
  #, gcc-internal-format
  msgid "Scalar object %qs at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:14424
  #, gcc-internal-format
  msgid "Array pointer %qs at %L must have a deferred shape or assumed rank"
  msgstr ""
  
! #: fortran/resolve.cc:14435
  #, gcc-internal-format
  msgid "Array %qs at %L cannot have a deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:14453
  #, gcc-internal-format
  msgid "Type %qs of CLASS variable %qs at %L is not extensible"
  msgstr ""
  
! #: fortran/resolve.cc:14467
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer"
  msgstr ""
  
! #: fortran/resolve.cc:14500
  #, gcc-internal-format
  msgid ""
  "The type %qs cannot be host associated at %L because it is blocked by an "
  "incompatible object of the same name declared at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14522
  #, gcc-internal-format
  msgid ""
  "Implied SAVE for module variable %qs at %L, needed due to the default "
  "initialization"
  msgstr ""
  
! #: fortran/resolve.cc:14555
  #, gcc-internal-format
  msgid ""
  "Entity %qs at %L has a deferred type parameter and requires either the "
  "POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14569
  #, gcc-internal-format
  msgid "Automatic object %qs at %L cannot have the SAVE attribute"
  msgstr ""
  
  #. F08:C541. The shape of an array defined in a main program or module
  #. * needs to be constant.
! #: fortran/resolve.cc:14591
  #, gcc-internal-format
  msgid "The module or main program array %qs at %L must have constant shape"
  msgstr ""
  
! #: fortran/resolve.cc:14616
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Entity with assumed character length at %L must be a dummy argument or a "
  "PARAMETER"
  msgstr ""
  
! #: fortran/resolve.cc:14637
  #, gcc-internal-format
  msgid "%qs at %L must have constant character length in this context"
  msgstr ""
  
! #: fortran/resolve.cc:14644
  #, gcc-internal-format
  msgid "COMMON variable %qs at %L must have constant character length"
  msgstr ""
  
! #: fortran/resolve.cc:14692
  #, gcc-internal-format
  msgid "Allocatable %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14695
  #, gcc-internal-format
  msgid "External %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14698
  #, gcc-internal-format
  msgid "Dummy %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14701
  #, gcc-internal-format
  msgid "Intrinsic %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14704
  #, gcc-internal-format
  msgid "Function result %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14707
  #, gcc-internal-format
  msgid "Automatic array %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14749
  #, gcc-internal-format, gfc-internal-format
  msgid "%s at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14781
  #, gcc-internal-format
  msgid "Character-valued statement function %qs at %L must have constant length"
  msgstr ""
  
! #: fortran/resolve.cc:14804
  #, gcc-internal-format
  msgid ""
  "%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is "
  "PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14826
  #, gcc-internal-format
  msgid ""
  "Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs "
  "which is PRIVATE"
  msgstr ""
  
! #: fortran/resolve.cc:14844
  #, gcc-internal-format
  msgid "Function %qs at %L cannot have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14856
  #, gcc-internal-format
  msgid "External object %qs at %L may not have an initializer"
  msgstr ""
  
! #: fortran/resolve.cc:14866
  #, gcc-internal-format
  msgid "ELEMENTAL function %qs at %L must have a scalar result"
  msgstr ""
  
! #: fortran/resolve.cc:14876
  #, gcc-internal-format
  msgid ""
  "Statement function %qs at %L may not have pointer or allocatable attribute"
  msgstr ""
  
! #: fortran/resolve.cc:14895
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be array-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14899
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued"
  msgstr ""
  
! #: fortran/resolve.cc:14903
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be pure"
  msgstr ""
  
! #: fortran/resolve.cc:14907
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L cannot be recursive"
  msgstr ""
  
! #: fortran/resolve.cc:14920
  #, gcc-internal-format
  msgid "CHARACTER(*) function %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:14931
  #, gcc-internal-format
  msgid "Procedure pointer %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14937
  #, gcc-internal-format
  msgid "Dummy procedure %qs at %L shall not be elemental"
  msgstr ""
  
! #: fortran/resolve.cc:14957
  #, gcc-internal-format
  msgid ""
  "Function result variable %qs at %L of elemental function %qs shall not have "
  "an ALLOCATABLE or POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15014
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15020
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15026
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15034
  #, gcc-internal-format
  msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15040
  #, gcc-internal-format
  msgid "Procedure pointer result %qs at %L is missing the pointer attribute"
  msgstr ""
  
! #: fortran/resolve.cc:15083
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its "
  "interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15091
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface "
  "in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15099
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its "
  "interface in %s"
  msgstr ""
  
! #: fortran/resolve.cc:15108
  #, gcc-internal-format
  msgid ""
  "%s between the MODULE PROCEDURE declaration in MODULE %qs and the "
  "declaration at %L in (SUB)MODULE %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15132
  #, gcc-internal-format
  msgid "Interface of %qs at %L must be explicit"
  msgstr ""
  
! #: fortran/resolve.cc:15202
  #, gcc-internal-format
  msgid "FINAL procedure %qs at %L is not a SUBROUTINE"
  msgstr ""
  
! #: fortran/resolve.cc:15211
  #, gcc-internal-format, gfc-internal-format
  msgid "FINAL procedure at %L must have exactly one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15219 fortran/resolve.cc:15236
  #, gcc-internal-format
  msgid "Argument of FINAL procedure at %L must be of type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15227
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "FINAL procedure at %L with assumed rank argument must be the only finalizer "
  "with the same kind/type (F2018: C790)"
  msgstr ""
  
! #: fortran/resolve.cc:15244
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be a POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15250
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15256
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
  msgstr ""
  
! #: fortran/resolve.cc:15264
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:15273
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
  msgstr ""
  
! #: fortran/resolve.cc:15295
  #, gcc-internal-format
  msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15332
  #, gcc-internal-format
  msgid ""
  "Only array FINAL procedures declared for derived type %qs defined at %L, "
  "suggest also scalar one unless an assumed rank finalizer has been declared"
  msgstr ""
  
! #: fortran/resolve.cc:15373
  #, gcc-internal-format
  msgid "%qs and %qs cannot be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15409
  #, gcc-internal-format
  msgid "%qs and %qs for GENERIC %qs at %L are ambiguous"
  msgstr ""
  
! #: fortran/resolve.cc:15468
  #, gcc-internal-format
  msgid "Undefined specific binding %qs as target of GENERIC %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15480
  #, gcc-internal-format
  msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too"
  msgstr ""
  
! #: fortran/resolve.cc:15508
  #, gcc-internal-format
  msgid "GENERIC %qs at %L cannot overwrite specific binding with the same name"
  msgstr ""
  
! #: fortran/resolve.cc:15564
  #, gcc-internal-format, gfc-internal-format
  msgid "Type-bound operator at %L cannot be NOPASS"
  msgstr ""
  
! #: fortran/resolve.cc:15776
  #, gcc-internal-format
  msgid ""
  "%qs must be a module procedure or an external procedure with an explicit "
  "interface at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15819
  #, gcc-internal-format
  msgid "Procedure %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15833
  #, gcc-internal-format
  msgid "Procedure %qs with PASS at %L must have at least one argument"
  msgstr ""
  
! #: fortran/resolve.cc:15847 fortran/resolve.cc:16389
  #, gcc-internal-format
  msgid "Non-polymorphic passed-object dummy argument of %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:15856
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15866
  #, gcc-internal-format
  msgid ""
  "Argument %qs of %qs with PASS(%s) at %L must be of the parametric derived-"
  "type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15908
  #, gcc-internal-format
  msgid ""
  "All LEN type parameters of the passed dummy argument %qs of %qs at %L must "
  "be ASSUMED."
  msgstr ""
  
! #: fortran/resolve.cc:15918
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:15924
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:15930
  #, gcc-internal-format
  msgid "Passed-object dummy argument of %qs at %L must not be POINTER"
  msgstr ""
  
! #: fortran/resolve.cc:15959
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as a component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:15969
  #, gcc-internal-format
  msgid "Procedure %qs at %L has the same name as an inherited component of %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16064
  #, gcc-internal-format
  msgid ""
  "Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and "
  "not overridden"
  msgstr ""
  
! #: fortran/resolve.cc:16169
  #, gcc-internal-format
  msgid "Coarray component %qs at %L must be allocatable with deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:16178
  #, gcc-internal-format
  msgid ""
  "Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:16188
  #, gcc-internal-format
  msgid ""
  "Component %qs at %L with coarray component shall be a nonpointer, "
  "nonallocatable scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16213
  #, gcc-internal-format
  msgid ""
  "Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer"
  msgstr ""
  
! #: fortran/resolve.cc:16224
  #, gcc-internal-format
  msgid "Component %qs of BIND(C) type at %L must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:16322
  #, gcc-internal-format
  msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16336
  #, gcc-internal-format
  msgid ""
  "Procedure pointer component %qs with PASS at %L must have at least one "
  "argument"
  msgstr ""
  
! #: fortran/resolve.cc:16352
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:16362
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar"
  msgstr ""
  
! #: fortran/resolve.cc:16371
  #, gcc-internal-format
  msgid ""
  "Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16380
  #, gcc-internal-format
  msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16422
  #, gcc-internal-format
  msgid ""
  "Component %qs of %qs at %L has the same name as an inherited type-bound "
  "procedure"
  msgstr ""
  
! #: fortran/resolve.cc:16435
  #, gcc-internal-format
  msgid ""
  "Character length of component %qs needs to be a constant specification "
  "expression at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16446
  #, gcc-internal-format
  msgid ""
  "Character length expression of component %qs at %L must be of INTEGER type, "
  "found %s"
  msgstr ""
  
! #: fortran/resolve.cc:16459
  #, gcc-internal-format
  msgid ""
  "Character component %qs of %qs at %L with deferred length must be a POINTER "
  "or ALLOCATABLE"
  msgstr ""
  
! #: fortran/resolve.cc:16492
  #, gcc-internal-format
  msgid ""
  "the component %qs is a PRIVATE type and cannot be a component of %qs, which "
  "is PUBLIC at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16500
  #, gcc-internal-format, gfc-internal-format
  msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
  msgstr ""
  
! #: fortran/resolve.cc:16509
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE "
  "attribute"
  msgstr ""
  
! #: fortran/resolve.cc:16595
  #, gcc-internal-format, gfc-internal-format
  msgid "Conflicting initializers in union at %L and %L"
  msgstr ""
  
! #: fortran/resolve.cc:16687
  #, gcc-internal-format
  msgid ""
  "As extending type %qs at %L has a coarray component, parent type %qs shall "
  "also have one"
  msgstr ""
  
! #: fortran/resolve.cc:16700
  #, gcc-internal-format
  msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT"
  msgstr ""
  
! #: fortran/resolve.cc:16770
  #, gcc-internal-format
  msgid ""
  "Parameterized type %qs does not have a component corresponding to parameter "
  "%qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16802
  #, gcc-internal-format
  msgid ""
  "Generic name %qs of function %qs at %L being the same name as derived type "
  "at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16816
  #, gcc-internal-format
  msgid "Derived type %qs at %L has not been declared"
  msgstr ""
  
! #: fortran/resolve.cc:16884
  #, gcc-internal-format
  msgid "Assumed size array %qs in namelist %qs at %L is not allowed"
  msgstr ""
  
! #: fortran/resolve.cc:16890
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16896
  #, gcc-internal-format
  msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16904
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs with nonconstant character length in namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16921
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC "
  "namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16943
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs has use-associated PRIVATE components and cannot be "
  "member of namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16954
  #, gcc-internal-format
  msgid ""
  "NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC "
  "namelist %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:16981
  #, gcc-internal-format
  msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17000
  #, gcc-internal-format
  msgid "Parameter array %qs at %L cannot be automatic or of deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17016
  #, gcc-internal-format
  msgid ""
  "Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type"
  msgstr ""
  
! #: fortran/resolve.cc:17027
  #, gcc-internal-format, gfc-internal-format
  msgid "Incompatible derived type in PARAMETER at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17035
  #, gcc-internal-format
  msgid "CLASS variable %qs at %L cannot have the PARAMETER attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17087
  #, gcc-internal-format
  msgid ""
  "Entity %qs at %L has a deferred LEN parameter %qs and requires either the "
  "POINTER or ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17099
  #, gcc-internal-format
  msgid ""
  "The AUTOMATIC object %qs at %L must not have the SAVE attribute or be a "
  "variable declared in the main program, a module or a submodule(F08/C513)"
  msgstr ""
  
! #: fortran/resolve.cc:17106
  #, gcc-internal-format
  msgid ""
  "The object %qs at %L with ASSUMED type parameters must be a dummy or a "
  "SELECT TYPE selector(F08/4.2)"
  msgstr ""
  
! #: fortran/resolve.cc:17165
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Sorry, allocatable/pointer components in polymorphic (CLASS) type coarrays "
  "at %L are unsupported"
  msgstr ""
  
! #: fortran/resolve.cc:17178
  #, gcc-internal-format
  msgid ""
  "%<omp_all_memory%>, declared at %L, may only be used in the OpenMP DEPEND "
  "clause"
  msgstr ""
  
! #: fortran/resolve.cc:17243
  #, gcc-internal-format, gfc-internal-format
  msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17246
  #, gcc-internal-format, gfc-internal-format
  msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17352
  #, gcc-internal-format
  msgid ""
  "%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an "
  "assumed-shape or assumed-rank array"
  msgstr ""
  
! #: fortran/resolve.cc:17373
  #, gcc-internal-format, gfc-internal-format
  msgid "Bad specification for assumed size array at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17387
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed size array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17390
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed shape array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17402
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-rank array at %L must be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17409
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17422
  #, gcc-internal-format, gfc-internal-format
  msgid "Symbol at %L is not a DUMMY variable"
  msgstr ""
  
! #: fortran/resolve.cc:17428
  #, gcc-internal-format
  msgid ""
  "%qs at %L cannot have the VALUE attribute because it is not a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17438
  #, gcc-internal-format
  msgid ""
  "Character dummy variable %qs at %L with VALUE attribute must have constant "
  "length"
  msgstr ""
  
! #: fortran/resolve.cc:17447
  #, gcc-internal-format
  msgid ""
  "C interoperable character dummy variable %qs at %L with VALUE attribute must "
  "have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17460 fortran/resolve.cc:17637
  #, gcc-internal-format
  msgid "The derived type %qs at %L is of type %qs, which has not been defined"
  msgstr ""
  
! #: fortran/resolve.cc:17474
  #, gcc-internal-format, gfc-internal-format
  msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument"
  msgstr ""
  
! #: fortran/resolve.cc:17483
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of "
  "an numeric intrinsic type"
  msgstr ""
  
! #: fortran/resolve.cc:17492
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, "
  "CODIMENSION, POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17500
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) "
  "attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17507
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an "
  "assumed-size array"
  msgstr ""
  
! #: fortran/resolve.cc:17527
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed type of variable %s at %L is only permitted for dummy variables"
  msgstr ""
  
! #: fortran/resolve.cc:17534
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, "
  "POINTER or VALUE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17541
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute"
  msgstr ""
  
! #: fortran/resolve.cc:17548
  #, gcc-internal-format, gfc-internal-format
  msgid "Assumed-type variable %s at %L shall not be an explicit-shape array"
  msgstr ""
  
! #: fortran/resolve.cc:17574
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L cannot be BIND(C) because it is neither a COMMON block "
  "nor declared at the module level scope"
  msgstr ""
  
! #: fortran/resolve.cc:17584
  #, gcc-internal-format
  msgid "BIND(C) Variable %qs at %L must have length one"
  msgstr ""
  
! #: fortran/resolve.cc:17663
  #, gcc-internal-format
  msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17678
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE "
  "must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17691
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "Variable %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE "
  "must be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17709
  #, gcc-internal-format
  msgid ""
  "The INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have "
  "a default initializer"
  msgstr ""
  
! #: fortran/resolve.cc:17721
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17730
  #, gcc-internal-format
  msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)"
  msgstr ""
  
! #: fortran/resolve.cc:17743
  #, gcc-internal-format
  msgid ""
  "Function result %qs at %L shall not be a coarray or have a coarray component"
  msgstr ""
  
! #: fortran/resolve.cc:17752
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17765
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L with coarray component shall be a nonpointer, "
  "nonallocatable scalar, which is not a coarray"
  msgstr ""
  
! #: fortran/resolve.cc:17781
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy "
  "argument"
  msgstr ""
  
! #: fortran/resolve.cc:17789
  #, gcc-internal-format
  msgid ""
  "Coarray variable %qs at %L shall not have codimensions with deferred shape "
  "without allocatable"
  msgstr ""
  
! #: fortran/resolve.cc:17797
  #, gcc-internal-format
  msgid "Allocatable coarray variable %qs at %L must have deferred shape"
  msgstr ""
  
! #: fortran/resolve.cc:17810
  #, gcc-internal-format
  msgid ""
  "Variable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray "
  "or have coarray components"
  msgstr ""
  
! #: fortran/resolve.cc:17819
  #, gcc-internal-format
  msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs"
  msgstr ""
  
! #: fortran/resolve.cc:17835
  #, gcc-internal-format
  msgid ""
  "LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure "
  "%qs"
  msgstr ""
  
! #: fortran/resolve.cc:17841
  #, gcc-internal-format
  msgid ""
  "LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure "
  "%qs"
  msgstr ""
  
! #: fortran/resolve.cc:17866
  #, gcc-internal-format
  msgid "Namelist %qs cannot be an argument to subroutine or function at %L"
  msgstr ""
  
! #: fortran/resolve.cc:17926
  #, gcc-internal-format, gfc-internal-format
  msgid "Threadprivate at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:17938
  #, gcc-internal-format
  msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd"
  msgstr ""
  
! #: fortran/resolve.cc:18049
  #, gcc-internal-format, gfc-internal-format
  msgid "Expecting definable entity near %L"
  msgstr ""
  
! #: fortran/resolve.cc:18057
  #, gcc-internal-format
  msgid "BLOCK DATA element %qs at %L must be in COMMON"
  msgstr ""
  
! #: fortran/resolve.cc:18064
  #, gcc-internal-format
  msgid "DATA array %qs at %L must be specified in a previous declaration"
  msgstr ""
  
! #: fortran/resolve.cc:18071
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have a coindex"
  msgstr ""
  
! #: fortran/resolve.cc:18087
  #, gcc-internal-format
  msgid "DATA element %qs at %L is a pointer and so must be a full array"
  msgstr ""
  
! #: fortran/resolve.cc:18094
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "DATA object near %L has the pointer attribute and the corresponding DATA "
  "value is not a valid initial-data-target"
  msgstr ""
  
! #: fortran/resolve.cc:18103
  #, gcc-internal-format
  msgid "DATA element %qs at %L cannot have the ALLOCATABLE attribute"
  msgstr ""
  
! #: fortran/resolve.cc:18165
  #, gcc-internal-format, gfc-internal-format
  msgid "Nonconstant array section at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18178
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more variables than values"
  msgstr ""
  
! #: fortran/resolve.cc:18254
  #, gcc-internal-format, gfc-internal-format
  msgid "Non-constant character length at %L in DATA statement"
  msgstr ""
  
! #: fortran/resolve.cc:18282
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "start of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18290
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "end of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18298
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "step of implied-do loop at %L could not be simplified to a constant value"
  msgstr ""
  
! #: fortran/resolve.cc:18305
  #, gcc-internal-format, gfc-internal-format
  msgid "step of implied-do loop at %L shall not be zero"
  msgstr ""
  
! #: fortran/resolve.cc:18430
  #, gcc-internal-format, gfc-internal-format
  msgid "DATA statement at %L has more values than variables"
  msgstr ""
*************** msgstr ""
*** 89653,89659 ****
  msgid "Overlapping unequal initializers in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/trans-array.cc:2466 fortran/trans-expr.cc:10439
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The structure constructor at %L has been finalized. This feature was removed "
--- 89745,89751 ----
  msgid "Overlapping unequal initializers in EQUIVALENCE at %C"
  msgstr ""
  
! #: fortran/trans-array.cc:2469 fortran/trans-expr.cc:10450
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "The structure constructor at %L has been finalized. This feature was removed "
*************** msgstr ""
*** 89662,89680 ****
  
  #. Problems occur when we get something like
  #. integer :: a(lots) = (/(i, i=1, lots)/)
! #: fortran/trans-array.cc:6838
  #, gcc-internal-format
  msgid ""
  "The number of elements in the array constructor at %L requires an increase "
  "of the allowed %d upper limit. See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/trans-array.cc:9244
  #, gcc-internal-format
  msgid "Creating array temporary at %L for argument %qs"
  msgstr ""
  
! #: fortran/trans-array.cc:12704
  #, gcc-internal-format, gfc-internal-format
  msgid "bad expression type during walk (%d)"
  msgstr ""
--- 89754,89772 ----
  
  #. Problems occur when we get something like
  #. integer :: a(lots) = (/(i, i=1, lots)/)
! #: fortran/trans-array.cc:6840
  #, gcc-internal-format
  msgid ""
  "The number of elements in the array constructor at %L requires an increase "
  "of the allowed %d upper limit. See %<-fmax-array-constructor%> option"
  msgstr ""
  
! #: fortran/trans-array.cc:9246
  #, gcc-internal-format
  msgid "Creating array temporary at %L for argument %qs"
  msgstr ""
  
! #: fortran/trans-array.cc:12706
  #, gcc-internal-format, gfc-internal-format
  msgid "bad expression type during walk (%d)"
  msgstr ""
*************** msgstr ""
*** 89878,89884 ****
  msgid "Sorry, !$ACC DECLARE at %L is not allowed in BLOCK construct"
  msgstr ""
  
! #: fortran/trans-decl.cc:7199 fortran/trans-expr.cc:6117
  #, gcc-internal-format
  msgid "Unsigned not yet implemented"
  msgstr ""
--- 89970,89976 ----
  msgid "Sorry, !$ACC DECLARE at %L is not allowed in BLOCK construct"
  msgstr ""
  
! #: fortran/trans-decl.cc:7199 fortran/trans-expr.cc:6127
  #, gcc-internal-format
  msgid "Unsigned not yet implemented"
  msgstr ""
*************** msgid ""
*** 89914,89930 ****
  "supported"
  msgstr ""
  
! #: fortran/trans-expr.cc:4279
  #, gcc-internal-format
  msgid "Unknown intrinsic op"
  msgstr ""
  
! #: fortran/trans-expr.cc:5865
  #, gcc-internal-format, gfc-internal-format
  msgid "Unknown argument list function at %L"
  msgstr ""
  
! #: fortran/trans-expr.cc:11037
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "If bounds remapping is specified at %L, the pointer target shall not be NULL"
--- 90006,90022 ----
  "supported"
  msgstr ""
  
! #: fortran/trans-expr.cc:4289
  #, gcc-internal-format
  msgid "Unknown intrinsic op"
  msgstr ""
  
! #: fortran/trans-expr.cc:5875
  #, gcc-internal-format, gfc-internal-format
  msgid "Unknown argument list function at %L"
  msgstr ""
  
! #: fortran/trans-expr.cc:11050
  #, gcc-internal-format, gfc-internal-format
  msgid ""
  "If bounds remapping is specified at %L, the pointer target shall not be NULL"
*************** msgstr ""
*** 89941,89952 ****
  msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12709 fortran/trans-stmt.cc:1107
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, the event component of derived type at %L is not yet supported"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12716
  #, gcc-internal-format, gfc-internal-format
  msgid "The event variable at %L shall not be coindexed"
  msgstr ""
--- 90033,90044 ----
  msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12688 fortran/trans-stmt.cc:1107
  #, gcc-internal-format, gfc-internal-format
  msgid "Sorry, the event component of derived type at %L is not yet supported"
  msgstr ""
  
! #: fortran/trans-intrinsic.cc:12695
  #, gcc-internal-format, gfc-internal-format
  msgid "The event variable at %L shall not be coindexed"
  msgstr ""
*************** msgstr ""
*** 89983,90021 ****
  msgid "Mapping of polymorphic list item %qD is unspecified behavior"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4176
  #, gcc-internal-format
  msgid "optional class parameter"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4640
  #, gcc-internal-format
  msgid "unhandled expression type"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4949
  #, gcc-internal-format
  msgid "unhandled expression"
  msgstr ""
  
! #: fortran/trans-openmp.cc:5072
  #, gcc-internal-format
  msgid "%<uses_allocators%> clause with traits and memory spaces"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6050
  #, gcc-internal-format
  msgid "%<!$OMP %s%> at %L requires %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6053
  #, gcc-internal-format
  msgid ""
  "All files that might deallocate such a variable must be compiled with %<-"
  "fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6056
  #, gcc-internal-format
  msgid ""
  "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, "
--- 90075,90113 ----
  msgid "Mapping of polymorphic list item %qD is unspecified behavior"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4196
  #, gcc-internal-format
  msgid "optional class parameter"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4660
  #, gcc-internal-format
  msgid "unhandled expression type"
  msgstr ""
  
! #: fortran/trans-openmp.cc:4969
  #, gcc-internal-format
  msgid "unhandled expression"
  msgstr ""
  
! #: fortran/trans-openmp.cc:5092
  #, gcc-internal-format
  msgid "%<uses_allocators%> clause with traits and memory spaces"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6070
  #, gcc-internal-format
  msgid "%<!$OMP %s%> at %L requires %<-fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6073
  #, gcc-internal-format
  msgid ""
  "All files that might deallocate such a variable must be compiled with %<-"
  "fopenmp-allocators%>"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6076
  #, gcc-internal-format
  msgid ""
  "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, "
*************** msgid ""
*** 90023,90096 ****
  "components allocated with an OpenMP allocator"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6633 fortran/trans-openmp.cc:6653
  #, gcc-internal-format
  msgid "non-rectangular loop nest with non-constant step for %qs"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6655
  #, gcc-internal-format
  msgid "Used here"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9221
  #, gcc-internal-format
  msgid "gfc_trans_omp_workshare(): Bad statement code"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9631
  #, gcc-internal-format
  msgid "The base name for %<declare variant%> must be specified at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9642
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L does not match the name of the current procedure"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9645
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be an entry name"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9648
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be a generic name"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9651
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be a procedure pointer"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9654
  #, gcc-internal-format, gfc-internal-format
  msgid "The base procedure at %L must have an explicit interface"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9690
  #, gcc-internal-format
! msgid "Cannot find symbol %qs"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9702
  #, gcc-internal-format
  msgid "variant %qs at %L is not a function or subroutine"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9744
  #, gcc-internal-format
  msgid "variant %qs and base %qs at %L have incompatible types: %s"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9750
  #, gcc-internal-format
  msgid ""
  "%<append_args%> clause implies that %qs has %d dummy arguments of integer "
  "type with %<omp_interop_kind%> kind"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9776
  #, gcc-internal-format
  msgid ""
  "%qs at %L must be a nonpointer, nonallocatable scalar integer dummy argument "
--- 90115,90188 ----
  "components allocated with an OpenMP allocator"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6653 fortran/trans-openmp.cc:6673
  #, gcc-internal-format
  msgid "non-rectangular loop nest with non-constant step for %qs"
  msgstr ""
  
! #: fortran/trans-openmp.cc:6675
  #, gcc-internal-format
  msgid "Used here"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9241
  #, gcc-internal-format
  msgid "gfc_trans_omp_workshare(): Bad statement code"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9651
  #, gcc-internal-format
  msgid "The base name for %<declare variant%> must be specified at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9662
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L does not match the name of the current procedure"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9665
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be an entry name"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9668
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be a generic name"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9671
  #, gcc-internal-format, gfc-internal-format
  msgid "The base name at %L must not be a procedure pointer"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9674
  #, gcc-internal-format, gfc-internal-format
  msgid "The base procedure at %L must have an explicit interface"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9710
  #, gcc-internal-format
! msgid "Cannot find symbol %qs at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9723
  #, gcc-internal-format
  msgid "variant %qs at %L is not a function or subroutine"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9765
  #, gcc-internal-format
  msgid "variant %qs and base %qs at %L have incompatible types: %s"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9771
  #, gcc-internal-format
  msgid ""
  "%<append_args%> clause implies that %qs has %d dummy arguments of integer "
  "type with %<omp_interop_kind%> kind"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9797
  #, gcc-internal-format
  msgid ""
  "%qs at %L must be a nonpointer, nonallocatable scalar integer dummy argument "
*************** msgid ""
*** 90098,90169 ****
  "at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9786
  #, gcc-internal-format
  msgid ""
  "%qs at %L with OPTIONAL attribute not support when utilized with the "
  "%<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9796
  #, gcc-internal-format
  msgid ""
  "%qs at %L has %d but requires %d %<omp_interop_kind%> kind dummy arguments "
  "as it is utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9811
  #, gcc-internal-format
  msgid ""
  "the %qs clause can only be specified if the %<dispatch%> selector of the "
  "construct selector set appears in the %<match%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9912 fortran/trans-openmp.cc:9951
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected positive argument index at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9923
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument index at %L exceeds number of arguments %d"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9961
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper argument index smaller than lower one at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9987
  #, gcc-internal-format
  msgid "List item %qs at %L, declared at %L, is not a dummy argument"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10001
  #, gcc-internal-format
  msgid ""
  "Argument %qs at %L to list item in %<need_device_ptr%> at %L must be a "
  "scalar of TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10008
  #, gcc-internal-format
  msgid "Consider using %<need_device_addr%> instead"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10015
  #, gcc-internal-format
  msgid ""
  "Argument %qs at %L to list item in %<need_device_addr%> at %L must not have "
  "the VALUE attribute"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10024
  #, gcc-internal-format
  msgid "%qs at %L is specified more than once"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10041
  #, gcc-internal-format
  msgid "%<need_device_addr%> not yet supported"
  msgstr ""
--- 90190,90261 ----
  "at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9807
  #, gcc-internal-format
  msgid ""
  "%qs at %L with OPTIONAL attribute not support when utilized with the "
  "%<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9817
  #, gcc-internal-format
  msgid ""
  "%qs at %L has %d but requires %d %<omp_interop_kind%> kind dummy arguments "
  "as it is utilized with the %<append_args%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9832
  #, gcc-internal-format
  msgid ""
  "the %qs clause can only be specified if the %<dispatch%> selector of the "
  "construct selector set appears in the %<match%> clause at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9933 fortran/trans-openmp.cc:9972
  #, gcc-internal-format, gfc-internal-format
  msgid "Expected positive argument index at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9944
  #, gcc-internal-format, gfc-internal-format
  msgid "Argument index at %L exceeds number of arguments %d"
  msgstr ""
  
! #: fortran/trans-openmp.cc:9982
  #, gcc-internal-format, gfc-internal-format
  msgid "Upper argument index smaller than lower one at %L"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10008
  #, gcc-internal-format
  msgid "List item %qs at %L, declared at %L, is not a dummy argument"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10022
  #, gcc-internal-format
  msgid ""
  "Argument %qs at %L to list item in %<need_device_ptr%> at %L must be a "
  "scalar of TYPE(C_PTR)"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10029
  #, gcc-internal-format
  msgid "Consider using %<need_device_addr%> instead"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10036
  #, gcc-internal-format
  msgid ""
  "Argument %qs at %L to list item in %<need_device_addr%> at %L must not have "
  "the VALUE attribute"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10045
  #, gcc-internal-format
  msgid "%qs at %L is specified more than once"
  msgstr ""
  
! #: fortran/trans-openmp.cc:10062
  #, gcc-internal-format
  msgid "%<need_device_addr%> not yet supported"
  msgstr ""
*************** msgid "unused name %qE"
*** 91924,91930 ****
  msgstr ""
  
  #: rust/resolve/rust-ast-resolve-expr.cc:134
! #: rust/resolve/rust-late-name-resolver-2.0.cc:268
  #, gcc-internal-format, gfc-internal-format
  msgid "are you trying to break %s? how dare you?"
  msgstr ""
--- 92016,92022 ----
  msgstr ""
  
  #: rust/resolve/rust-ast-resolve-expr.cc:134
! #: rust/resolve/rust-late-name-resolver-2.0.cc:270
  #, gcc-internal-format, gfc-internal-format
  msgid "are you trying to break %s? how dare you?"
  msgstr ""
diff -Nrcpad gcc-15-20250726/gcc/rust/ChangeLog gcc-15-20250809/gcc/rust/ChangeLog
*** gcc-15-20250726/gcc/rust/ChangeLog	Sat Jul 26 22:32:14 2025
--- gcc-15-20250809/gcc/rust/ChangeLog	Sat Aug  9 22:32:39 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-07-18  Martin Jambor  <mjambor@suse.cz>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/gcc/stor-layout.cc gcc-15-20250809/gcc/stor-layout.cc
*** gcc-15-20250726/gcc/stor-layout.cc	Sat Jul 26 22:32:14 2025
--- gcc-15-20250809/gcc/stor-layout.cc	Sat Aug  9 22:32:39 2025
*************** bit_field_mode_iterator::prefer_smaller_
*** 3162,3168 ****
     decide which of the above modes should be used.  */
  
  bool
! get_best_mode (int bitsize, int bitpos,
  	       poly_uint64 bitregion_start, poly_uint64 bitregion_end,
  	       unsigned int align,
  	       unsigned HOST_WIDE_INT largest_mode_bitsize, bool volatilep,
--- 3162,3168 ----
     decide which of the above modes should be used.  */
  
  bool
! get_best_mode (HOST_WIDE_INT bitsize, HOST_WIDE_INT bitpos,
  	       poly_uint64 bitregion_start, poly_uint64 bitregion_end,
  	       unsigned int align,
  	       unsigned HOST_WIDE_INT largest_mode_bitsize, bool volatilep,
diff -Nrcpad gcc-15-20250726/gcc/testsuite/ChangeLog gcc-15-20250809/gcc/testsuite/ChangeLog
*** gcc-15-20250726/gcc/testsuite/ChangeLog	Sat Jul 26 22:32:14 2025
--- gcc-15-20250809/gcc/testsuite/ChangeLog	Sat Aug  9 22:32:39 2025
***************
*** 1,3 ****
--- 1,805 ----
+ 2025-08-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121351
+ 	PR c++/119859
+ 	* g++.dg/cpp2a/concepts-using5.C: New test.
+ 	* g++.dg/cpp2a/concepts-using5a.C: New test.
+ 
+ 2025-08-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/120620
+ 	* g++.dg/cpp2a/constexpr-dynamic19.C: New test.
+ 	* g++.dg/cpp2a/constexpr-dynamic1a.C: New test.
+ 
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121389
+ 	* c-c++-common/asan/pr121389-1.c: New test.
+ 	* c-c++-common/asan/pr121389-2.c: New test.
+ 	* c-c++-common/asan/pr121389-3.c: New test.
+ 	* c-c++-common/asan/pr121389-4.c: New test.
+ 
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121413
+ 	* gcc.dg/torture/bitint-85.c: New test.
+ 
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121127
+ 	* gcc.dg/bitint-125.c: New test.
+ 
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120845
+ 	* g++.dg/modules/cpp-21.C: New test.
+ 
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-08-06  Tejas Belagod  <tejas.belagod@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/acle/general/cops.c: Fix test.
+ 
+ 2025-08-01  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-05-19  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/120351
+ 	* gcc.target/arm/pr120351.c: New test.
+ 
+ 2025-08-01  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-05-02  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	* gcc.dg/Wdeprecated-non-prototype-6.c: New test.
+ 
+ 2025-08-01  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-05-01  Florian Weimer  <fweimer@redhat.com>
+ 
+ 	* gcc.dg/Wdeprecated-non-prototype-5.c: New test.
+ 
+ 2025-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121322
+ 	* gcc.dg/pr121322.c: New test.
+ 
+ 2025-08-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-08-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/108080
+ 	* g++.dg/modules/pr108080.H: New test.
+ 
+ 2025-08-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-08-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/121238
+ 	* g++.dg/modules/merge-19.h: New test.
+ 	* g++.dg/modules/merge-19_a.H: New test.
+ 	* g++.dg/modules/merge-19_b.C: New test.
+ 
+ 2025-07-31  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-31  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120800
+ 	* g++.dg/cpp0x/constexpr-array30.C: New test.
+ 
+ 2025-07-31  Spencer Abson  <spencer.abson@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-31  Spencer Abson  <spencer.abson@arm.com>
+ 
+ 	PR target/121028
+ 	* gcc.target/aarch64/sme/call_sm_switch_1.c: Tell check-function
+ 	-bodies not to ignore .inst directives, and replace the test for
+ 	"smstart sm" with one for it's encoding.
+ 	* gcc.target/aarch64/sme/call_sm_switch_11.c: Likewise.
+ 	* gcc.target/aarch64/sme/pr121028.c: New test.
+ 
+ 2025-07-31  Spencer Abson  <spencer.abson@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-31  Spencer Abson  <spencer.abson@arm.com>
+ 
+ 	* lib/target-supports.exp: Split the extensions that require SME into
+ 	a separate set, and use armv9-a as their baseline.
+ 
+ 2025-07-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/120224
+ 	* g++.dg/cpp0x/alias-decl-80.C: New test.
+ 
+ 2025-07-31  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-27  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/120756
+ 	* g++.dg/warn/deprecated-22.C: New test.
+ 
+ 2025-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121264
+ 	* gcc.dg/tree-ssa/pr121264.c: New test.
+ 
+ 2025-07-31  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	Backported from master:
+ 	2025-07-11  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* g++.dg/lto/pr114790_0.C: New test.
+ 	* g++.dg/lto/pr114790_1.C: New test.
+ 
+ 2025-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121256
+ 	* gcc.dg/vect/vect-recurr-pr121256.c: New testcase.
+ 	* gcc.dg/vect/vect-recurr-pr121256-2.c: Likewise.
+ 
+ 2025-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121130
+ 	* gcc.dg/vect/vect-simd-pr121130.c: New testcase.
+ 
+ 2025-07-31  Pengfei Li  <Pengfei.Li2@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-30  Pengfei Li  <Pengfei.Li2@arm.com>
+ 
+ 	PR tree-optimization/121190
+ 	* gcc.dg/vect/vect-early-break_52.c: Update an unsafe test.
+ 	* gcc.dg/vect/vect-early-break_137-pr121190.c: New test.
+ 
+ 2025-07-31  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-07-30  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/120427
+ 	* gcc.target/i386/pr120427-5.c: New test.
+ 
+ 2025-07-31  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2025-07-30  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/pr121274.c: New test.
+ 
+ 2025-07-30  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR c/120354
+ 	* gcc.dg/pr120354.c: New test.
+ 
+ 2025-07-30  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR c/120353
+ 	* gcc.dg/pr120353.c: New test.
+ 
+ 2025-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121133
+ 	* g++.dg/warn/pr121133-1.C: New test.
+ 	* g++.dg/warn/pr121133-2.C: New test.
+ 	* g++.dg/warn/pr121133-3.C: New test.
+ 	* g++.dg/warn/pr121133-4.C: New test.
+ 
+ 2025-07-30  Jeevitha  <jeevitha@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2025-07-24  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+ 
+ 	PR testsuite/119382
+ 	* gcc.target/powerpc/vsx-builtin-7.c: Add '-fno-ipa-icf' to dg-options.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-24  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/_-static__compilation.cob: Modify for -static warning.
+ 	* cobol.dg/group2/_-static__compilation.out: Removed.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__2_.cob:
+ 	Append INTRINSIC keyword.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-20  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/FUNCTION_SQRT__2_.cob: Testcase.
+ 	* cobol.dg/group2/FUNCTION_SQRT__2_.out: Known-good for the testcase.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-16  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group1/declarative_1.cob: Handle modified exception handling.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-15  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/120251
+ 	* cobol.dg/group1/check_88.cob: One final regex "." instead of "ß"
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-15  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/120251
+ 	* cobol.dg/group1/check_88.cob: Ignore characters above 0x80.
+ 	* cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob:
+ 	Output HIGH-VALUE as hex, rather than as characters.
+ 	* cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out:
+ 	Likewise.
+ 	* cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob: Typo.
+ 	* cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_1.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_2.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_3.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_4.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_5-f.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_6.cob: Likewise.
+ 	* cobol.dg/group2/INSPECT_ISO_Example_7.cob: Likewise.
+ 	* cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob: New test.
+ 	* cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out: New test.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-11  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/258_Nested_PERFORM.cob: New testcase.
+ 	* cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.cob: Likewise.
+ 	* cobol.dg/group2/338_Default_Arithmetic__1_.cob: Likewise.
+ 	* cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob: Likewise.
+ 	* cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob: Likewise.
+ 	* cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob: Likewise.
+ 	* cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__2_.cob: Likewise.
+ 	* cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob: Likewise.
+ 	* cobol.dg/group2/Alphanumeric_and_binary_numeric.cob: Likewise.
+ 	* cobol.dg/group2/Alphanumeric_MOVE_with_truncation.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__1_.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__2_.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__3_.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__4_.cob: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__5_.cob: Likewise.
+ 	* cobol.dg/group2/CALL_with_OMITTED_parameter.cob: Likewise.
+ 	* cobol.dg/group2/Class_check_with_reference_modification.cob: Likewise.
+ 	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.cob: Likewise.
+ 	* cobol.dg/group2/Complex_IF.cob: Likewise.
+ 	* cobol.dg/group2/Concatenation_operator.cob: Likewise.
+ 	* cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.cob: Likewise.
+ 	* cobol.dg/group2/CURRENCY_SIGN.cob: Likewise.
+ 	* cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.cob: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.cob: Likewise.
+ 	* cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.cob: Likewise.
+ 	* cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.cob: Likewise.
+ 	* cobol.dg/group2/EXIT_PARAGRAPH.cob: Likewise.
+ 	* cobol.dg/group2/EXIT_PERFORM.cob: Likewise.
+ 	* cobol.dg/group2/EXIT_PERFORM_CYCLE.cob: Likewise.
+ 	* cobol.dg/group2/EXIT_SECTION.cob: Likewise.
+ 	* cobol.dg/group2/Fixed_continuation_indicator.cob: Likewise.
+ 	* cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.cob: Likewise.
+ 	* cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.cob: Likewise.
+ 	* cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.cob: Likewise.
+ 	* cobol.dg/group2/Index_and_parenthesized_expression.cob: Likewise.
+ 	* cobol.dg/group2/LENGTH_OF_omnibus.cob: Likewise.
+ 	* cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.cob: Likewise.
+ 	* cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_indexes.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_edited_item__1_.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_edited_item__2_.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_itself.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_to_JUSTIFIED_item.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_with_group_refmod.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_with_refmod.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_with_refmod__variable_.cob: Likewise.
+ 	* cobol.dg/group2/MOVE_Z_literal_.cob: Likewise.
+ 	* cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob: Likewise.
+ 	* cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob: Likewise.
+ 	* cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.cob: Likewise.
+ 	* cobol.dg/group2/Non-overflow_after_overflow.cob: Likewise.
+ 	* cobol.dg/group2/OCCURS_clause_with_1_entry.cob: Likewise.
+ 	* cobol.dg/group2/OSVS_Arithmetic_Test__2_.cob: Likewise.
+ 	* cobol.dg/group2/PERFORM_..._CONTINUE.cob: Likewise.
+ 	* cobol.dg/group2/PERFORM_inline__1_.cob: Likewise.
+ 	* cobol.dg/group2/PERFORM_inline__2_.cob: Likewise.
+ 	* cobol.dg/group2/PERFORM_type_OSVS.cob: Likewise.
+ 	* cobol.dg/group2/PIC_ZZZ-__ZZZ_.cob: Likewise.
+ 	* cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.cob: Likewise.
+ 	* cobol.dg/group2/Quote_marks_in_comment_paragraphs.cob: Likewise.
+ 	* cobol.dg/group2/Recursive_PERFORM_paragraph.cob: Likewise.
+ 	* cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.cob: Likewise.
+ 	* cobol.dg/group2/SORT__EBCDIC_table_sort__1_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__EBCDIC_table_sort__2_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__2_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__3A_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__3B_.cob: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort.cob: Likewise.
+ 	* cobol.dg/group2/SOURCE_FIXED_FREE_directives.cob: Likewise.
+ 	* cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob: Likewise.
+ 	* cobol.dg/group2/_-static__compilation.cob: Likewise.
+ 	* cobol.dg/group2/STOP_RUN_WITH_ERROR_STATUS.cob: Likewise.
+ 	* cobol.dg/group2/STOP_RUN_WITH_NORMAL_STATUS.cob: Likewise.
+ 	* cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.cob: Likewise.
+ 	* cobol.dg/group2/STRING_with_subscript_reference.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_DELIMITED_ALL_LOW-VALUE.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_DELIMITED_ALL_SPACE-2.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_DELIMITED_POINTER.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_DELIMITER_IN.cob: Likewise.
+ 	* cobol.dg/group2/UNSTRING_with_FUNCTION___literal.cob: Likewise.
+ 	* cobol.dg/group2/258_Nested_PERFORM.out: Known-good results file.
+ 	* cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out: Likewise.
+ 	* cobol.dg/group2/338_Default_Arithmetic__1_.out: Likewise.
+ 	* cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out: Likewise.
+ 	* cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.out: Likewise.
+ 	* cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out: Likewise.
+ 	* cobol.dg/group2/Alphanumeric_MOVE_with_truncation.out: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__1_.out: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__2_.out: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__3_.out: Likewise.
+ 	* cobol.dg/group2/ANY_LENGTH__5_.out: Likewise.
+ 	* cobol.dg/group2/CALL_with_OMITTED_parameter.out: Likewise.
+ 	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.out: Likewise.
+ 	* cobol.dg/group2/Complex_IF.out: Likewise.
+ 	* cobol.dg/group2/Concatenation_operator.out: Likewise.
+ 	* cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.out: Likewise.
+ 	* cobol.dg/group2/CURRENCY_SIGN.out: Likewise.
+ 	* cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.out: Likewise.
+ 	* cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.out: Likewise.
+ 	* cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.out: Likewise.
+ 	* cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.out: Likewise.
+ 	* cobol.dg/group2/EXIT_PERFORM_CYCLE.out: Likewise.
+ 	* cobol.dg/group2/EXIT_PERFORM.out: Likewise.
+ 	* cobol.dg/group2/Fixed_continuation_indicator.out: Likewise.
+ 	* cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.out: Likewise.
+ 	* cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.out: Likewise.
+ 	* cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.out: Likewise.
+ 	* cobol.dg/group2/Index_and_parenthesized_expression.out: Likewise.
+ 	* cobol.dg/group2/LENGTH_OF_omnibus.out: Likewise.
+ 	* cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.out: Likewise.
+ 	* cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.out: Likewise.
+ 	* cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.out: Likewise.
+ 	* cobol.dg/group2/MOVE_to_edited_item__1_.out: Likewise.
+ 	* cobol.dg/group2/MOVE_to_edited_item__2_.out: Likewise.
+ 	* cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.out: Likewise.
+ 	* cobol.dg/group2/MOVE_to_JUSTIFIED_item.out: Likewise.
+ 	* cobol.dg/group2/MOVE_Z_literal_.out: Likewise.
+ 	* cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out: Likewise.
+ 	* cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out: Likewise.
+ 	* cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.out: Likewise.
+ 	* cobol.dg/group2/OSVS_Arithmetic_Test__2_.out: Likewise.
+ 	* cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.out: Likewise.
+ 	* cobol.dg/group2/Quote_marks_in_comment_paragraphs.out: Likewise.
+ 	* cobol.dg/group2/Recursive_PERFORM_paragraph.out: Likewise.
+ 	* cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.out: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__2_.out: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__3A_.out: Likewise.
+ 	* cobol.dg/group2/SORT__table_sort__3B_.out: Likewise.
+ 	* cobol.dg/group2/SOURCE_FIXED_FREE_directives.out: Likewise.
+ 	* cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out: Likewise.
+ 	* cobol.dg/group2/_-static__compilation.out: Likewise.
+ 	* cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.out: Likewise.
+ 	* cobol.dg/group2/UNSTRING_with_FUNCTION___literal.out: Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-10  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group1/simple-if.cob: Make explicitly >>SOURCE FREE
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-04-25  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/88_level_with_FALSE_IS_clause.cob: New testcase.
+ 	* cobol.dg/group2/88_level_with_FILLER.cob: Likewise.
+ 	* cobol.dg/group2/88_level_with_THRU.cob: Likewise.
+ 	* cobol.dg/group2/ADD_CORRESPONDING.cob: Likewise.
+ 	* cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.cob: Likewise.
+ 	* cobol.dg/group2/ALPHABETIC-LOWER_test.cob: Likewise.
+ 	* cobol.dg/group2/ALPHABETIC_test.cob: Likewise.
+ 	* cobol.dg/group2/ALPHABETIC-UPPER_test.cob: Likewise.
+ 	* cobol.dg/group2/BLANK_WHEN_ZERO.cob: Likewise.
+ 	* cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob: Likewise.
+ 	* cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob: Likewise.
+ 	* cobol.dg/group2/Contained_program_visibility__3_.cob: Likewise.
+ 	* cobol.dg/group2/Contained_program_visibility__4_.cob: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__1_.cob: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__2_.cob: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__3_.cob: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__4_.cob: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__5_.cob: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__6_.cob: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__7_.cob: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__8_.cob: Likewise.
+ 	* cobol.dg/group2/debugging_lines__not_active_.cob: Likewise.
+ 	* cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.cob: Likewise.
+ 	* cobol.dg/group2/DEBUG_Line.cob: Likewise.
+ 	* cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.cob: Likewise.
+ 	* cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.cob: Likewise.
+ 	* cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.cob: Likewise.
+ 	* cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.cob: Likewise.
+ 	* cobol.dg/group2/GLOBAL_at_lower_level.cob: Likewise.
+ 	* cobol.dg/group2/GLOBAL_at_same_level.cob: Likewise.
+ 	* cobol.dg/group2/GLOBAL_FD__1_.cob: Likewise.
+ 	* cobol.dg/group2/GLOBAL_FD__2_.cob: Likewise.
+ 	* cobol.dg/group2/GLOBAL_FD__3_.cob: Likewise.
+ 	* cobol.dg/group2/GLOBAL_FD__4_.cob: Likewise.
+ 	* cobol.dg/group2/Hexadecimal_literal.cob: Likewise.
+ 	* cobol.dg/group2/integer_arithmetic_on_floating-point_var.cob: Likewise.
+ 	* cobol.dg/group2/MULTIPLY_BY_literal_in_INITIAL_program.cob: Likewise.
+ 	* cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob: Likewise.
+ 	* cobol.dg/group2/Numeric_operations__1_.cob: Likewise.
+ 	* cobol.dg/group2/Numeric_operations__2_.cob: Likewise.
+ 	* cobol.dg/group2/Numeric_operations__3_.cob: Likewise.
+ 	* cobol.dg/group2/Numeric_operations__4_.cob: Likewise.
+ 	* cobol.dg/group2/Numeric_operations__5_.cob: Likewise.
+ 	* cobol.dg/group2/Numeric_operations__7_.cob: Likewise.
+ 	* cobol.dg/group2/Numeric_operations__8_.cob: Likewise.
+ 	* cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.cob: Likewise.
+ 	* cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.cob: Likewise.
+ 	* cobol.dg/group2/ROUNDED_NEAREST-EVEN.cob: Likewise.
+ 	* cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.cob: Likewise.
+ 	* cobol.dg/group2/ROUNDED_TOWARD-GREATER.cob: Likewise.
+ 	* cobol.dg/group2/ROUNDED_TOWARD-LESSER.cob: Likewise.
+ 	* cobol.dg/group2/ROUNDED_TRUNCATION.cob: Likewise.
+ 	* cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.cob: Likewise.
+ 	* cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.cob: Likewise.
+ 	* cobol.dg/group2/Separate_sign_positions__1_.cob: Likewise.
+ 	* cobol.dg/group2/Separate_sign_positions__2_.cob: Likewise.
+ 	* cobol.dg/group2/Simple_p-scaling.cob: Likewise.
+ 	* cobol.dg/group2/Simple_TYPEDEF.cob: Likewise.
+ 	* cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.out: New known-good result.
+ 	* cobol.dg/group2/BLANK_WHEN_ZERO.out: Likewise.
+ 	* cobol.dg/group2/Contained_program_visibility__4_.out: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__1_.out: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__2_.out: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__3_.out: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__4_.out: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__5_.out: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__6_.out: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__7_.out: Likewise.
+ 	* cobol.dg/group2/Context_sensitive_words__8_.out: Likewise.
+ 	* cobol.dg/group2/debugging_lines__not_active_.out: Likewise.
+ 	* cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.out: Likewise.
+ 	* cobol.dg/group2/DEBUG_Line.out: Likewise.
+ 	* cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.out: Likewise.
+ 	* cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.out: Likewise.
+ 	* cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.out: Likewise.
+ 	* cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.out: Likewise.
+ 	* cobol.dg/group2/GLOBAL_at_lower_level.out: Likewise.
+ 	* cobol.dg/group2/GLOBAL_at_same_level.out: Likewise.
+ 	* cobol.dg/group2/Hexadecimal_literal.out: Likewise.
+ 	* cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.out: Likewise.
+ 	* cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.out: Likewise.
+ 	* cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.out: Likewise.
+ 	* cobol.dg/group2/ROUNDED_NEAREST-EVEN.out: Likewise.
+ 	* cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.out: Likewise.
+ 	* cobol.dg/group2/ROUNDED_TOWARD-GREATER.out: Likewise.
+ 	* cobol.dg/group2/ROUNDED_TOWARD-LESSER.out: Likewise.
+ 	* cobol.dg/group2/ROUNDED_TRUNCATION.out: Likewise.
+ 	* cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.out: Likewise.
+ 	* cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.out: Likewise.
+ 	* cobol.dg/group2/Separate_sign_positions__1_.out: Likewise.
+ 	* cobol.dg/group2/Separate_sign_positions__2_.out: Likewise.
+ 	* cobol.dg/group2/Simple_p-scaling.out: Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-04-24  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group1/declarative_1.cob: Adjust for repaired exception logic.
+ 
+ 2025-07-29  Juergen Christ  <jchrist@linux.ibm.com>
+ 
+ 	PR testsuite/121286
+ 	PR testsuite/121288
+ 	* gcc.dg/vect/pr112325.c: Adjust parameters for s390.
+ 	* gcc.dg/vect/pr117888-1.c: Ditto.
+ 
+ 2025-07-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-14  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	* gcc.dg/darwin-minversion-link.c: Account for macOS 26.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-07-25  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/121219
+ 	* g++.dg/coroutines/torture/pr121219.C: New test.
+ 
+ 2025-07-29  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120243
+ 	* g++.dg/coroutines/torture/pr120243-unhandled-1.C: New test.
+ 	* g++.dg/coroutines/torture/pr120243-unhandled-2.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/115908
+ 	PR c++/118074
+ 	PR c++/95615
+ 	* g++.dg/coroutines/pr115908.C: Move to...
+ 	* g++.dg/coroutines/torture/pr115908.C: ...here.
+ 	* g++.dg/coroutines/torture/pr95615-02.C: Move to...
+ 	* g++.dg/coroutines/torture/pr95615-01-promise-ctor-throws.C: ...here.
+ 	* g++.dg/coroutines/torture/pr95615-03.C: Move to...
+ 	* g++.dg/coroutines/torture/pr95615-02-get-return-object-throws.C: ...here.
+ 	* g++.dg/coroutines/torture/pr95615-01.C: Move to...
+ 	* g++.dg/coroutines/torture/pr95615-03-initial-suspend-throws.C: ...here.
+ 	* g++.dg/coroutines/torture/pr95615-04.C: Move to...
+ 	* g++.dg/coroutines/torture/pr95615-04-initial-await-ready-throws.C: ...here.
+ 	* g++.dg/coroutines/torture/pr95615-05.C: Move to...
+ 	* g++.dg/coroutines/torture/pr95615-05-initial-await-suspend-throws.C: ...here.
+ 	* g++.dg/coroutines/torture/pr95615.inc: Add more cases and ensure that the
+ 	code completes properly when no exceptions are thrown.
+ 	* g++.dg/coroutines/torture/pr95615-00-nothing-throws.C: New test.
+ 	* g++.dg/coroutines/torture/pr95615-06-initial-await-resume-throws.C: New test.
+ 	* g++.dg/coroutines/torture/pr95615-07-body-throws.C: New test.
+ 	* g++.dg/coroutines/torture/pr95615-08-initial-suspend-throws-uhe-throws.C: New test.
+ 	* g++.dg/coroutines/torture/pr95615-09-body-throws-uhe-throws.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/coroutines/assume.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/coroutines/unevaluated.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/120273
+ 	* g++.dg/coroutines/pr120273.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/coroutines/coro1-missing-await-method.C: Adjust for
+ 	improved diagnostics.
+ 	* g++.dg/coroutines/coro-missing-final-suspend.C: Likewise.
+ 	* g++.dg/coroutines/pr104051.C: Move to...
+ 	* g++.dg/coroutines/pr104051-0.C: ...here.
+ 	* g++.dg/coroutines/pr104051-1.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/116775
+ 	* g++.dg/coroutines/pr116775.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/120495
+ 	PR c++/115605
+ 	* g++.dg/coroutines/pr120495.C: New test.
+ 	* g++.dg/pr115605.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-06-02  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/118903
+ 	* g++.dg/coroutines/pr118903.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/109283
+ 	* g++.dg/coroutines/pr109283.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/coroutines/pr115908.C: Count promise construction
+ 	and destruction. Run the test and XFAIL it.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/119916
+ 	* g++.dg/coroutines/torture/special-termination-00-sync-completion.C:
+ 	Amend for CWG2563 expected behaviour.
+ 	* g++.dg/coroutines/torture/special-termination-01-self-destruct.C:
+ 	Likewise.
+ 	* g++.dg/coroutines/torture/pr119916.C: New test.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/120453
+ 	* g++.dg/coroutines/pr120453.C: New test.
+ 
+ 2025-07-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2025-07-23  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/119085
+ 	* gcc.dg/tree-ssa/pr119085.c: New test.
+ 
+ 2025-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121159
+ 	* c-c++-common/pr121159.c: New test.
+ 	* gcc.dg/plugin/must-tail-call-2.c (test_5): Don't expect an error.
+ 
+ 2025-07-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-06-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/120427
+ 	* gcc.target/i386/cold-attribute-4.c: Compile with -Oz.
+ 	* gcc.target/i386/pr120427-1.c: New test.
+ 	* gcc.target/i386/pr120427-2.c: Likewise.
+ 	* gcc.target/i386/pr120427-3.c: Likewise.
+ 	* gcc.target/i386/pr120427-4.c: Likewise.
+ 
+ 2025-07-28  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-21  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/119106
+ 	* gfortran.dg/array_constructor_58.f90: New test.
+ 
+ 2025-07-28  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2025-07-17  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/121064
+ 	* gcc.target/loongarch/pr121064.c: New test.
+ 
+ 2025-07-27  Alexey Merzlyakov  <alexey.merzlyakov@samsung.com>
+ 
+ 	Backported from master:
+ 	2025-06-30  Alexey Merzlyakov  <alexey.merzlyakov@samsung.com>
+ 
+ 	PR target/120714
+ 	* gcc.target/riscv/pr120714.c: New test.
+ 
+ 2025-07-26  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-07-23  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR target/120119
+ 	* g++.dg/torture/pr120119-1.C: New test.
+ 
+ 2025-07-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-07-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121203
+ 	* gfortran.dg/function_charlen_4.f90: New test.
+ 
+ 2025-07-26  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-07-23  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/121164
+ 	* gm2/switches/pedantic-params/fail/arrayofchar.def: New test.
+ 	* gm2/switches/pedantic-params/fail/arrayofchar.mod: New test.
+ 
  2025-07-25  Jason Merrill  <jason@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/gcc/testsuite/c-c++-common/asan/pr121389-1.c gcc-15-20250809/gcc/testsuite/c-c++-common/asan/pr121389-1.c
*** gcc-15-20250726/gcc/testsuite/c-c++-common/asan/pr121389-1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/c-c++-common/asan/pr121389-1.c	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,23 ----
+ // PR middle-end/121389
+ // { dg-do compile { target musttail } }
+ // { dg-options "-fsanitize=address" }
+ 
+ int foo (void);
+ int bar (void);
+ int baz (unsigned *);
+ 
+ int
+ bar (void)
+ {
+   do
+     {
+       unsigned t;
+       int u = baz (&t);
+       if (u == 42)
+ 	[[gnu::musttail]] return foo ();
+       if (u == -42)
+ 	break;
+     }
+   while (1);
+   return 42;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/c-c++-common/asan/pr121389-2.c gcc-15-20250809/gcc/testsuite/c-c++-common/asan/pr121389-2.c
*** gcc-15-20250726/gcc/testsuite/c-c++-common/asan/pr121389-2.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/c-c++-common/asan/pr121389-2.c	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,37 ----
+ // PR middle-end/121389
+ // { dg-do compile { target musttail } }
+ // { dg-options "-fsanitize=address" }
+ 
+ int foo (void);
+ int bar (void);
+ int baz (unsigned *);
+ 
+ int
+ bar (void)
+ {
+   for (int a = 0; a < 420; ++a)
+     {
+       for (int b = 0; b < 420; ++b)
+ 	{
+ 	  for (int c = 0; c < 420; ++c)
+ 	    {
+ 	      unsigned t;
+ 	      int u = baz (&t);
+ 	      if (u == 42)
+ 		[[gnu::musttail]] return foo ();
+ 	      if (u == -42)
+ 		break;
+ 	      if (u == 16)
+ 		goto l1;
+ 	      if (u == 18)
+ 		goto l2;
+ 	      if (u == 20)
+ 		goto l3;
+ 	    }
+ 	  l3:;
+ 	}
+       l2:;
+     }
+   l1:;
+   return 42;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/c-c++-common/asan/pr121389-3.c gcc-15-20250809/gcc/testsuite/c-c++-common/asan/pr121389-3.c
*** gcc-15-20250726/gcc/testsuite/c-c++-common/asan/pr121389-3.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/c-c++-common/asan/pr121389-3.c	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,130 ----
+ // PR middle-end/121389
+ // { dg-do compile { target musttail } }
+ // { dg-options "-fsanitize=address" }
+ 
+ int foo (void);
+ int bar (void);
+ int baz (unsigned *);
+ 
+ int
+ bar (void)
+ {
+   for (int a = 0; a < 420; ++a)
+     {
+       for (int b = 0; b < 420; ++b)
+ 	{
+ 	  for (int c = 0; c < 420; ++c)
+ 	    {
+ 	      unsigned t;
+ 	      int u = baz (&t);
+ 	      if (u == 42)
+ 		[[gnu::musttail]] return foo ();
+ 	      if (u == -42)
+ 		break;
+ 	      if (u == 16)
+ 		goto l1;
+ 	      if (u == 18)
+ 		goto l2;
+ 	      if (u == 20)
+ 		goto l3;
+ 	      switch (u)
+ 		{
+ 		case 100: goto l100;
+ 		case 101: goto l101;
+ 		case 102: goto l102;
+ 		case 103: goto l103;
+ 		case 104: goto l104;
+ 		case 105: goto l105;
+ 		case 106: goto l106;
+ 		case 107: goto l107;
+ 		case 108: goto l108;
+ 		case 109: goto l109;
+ 		case 110: goto l110;
+ 		case 111: goto l111;
+ 		case 112: goto l112;
+ 		case 113: goto l113;
+ 		case 114: goto l114;
+ 		case 115: goto l115;
+ 		case 116: goto l116;
+ 		case 117: goto l117;
+ 		case 118: goto l118;
+ 		case 119: goto l119;
+ 		case 120: goto l120;
+ 		case 121: goto l121;
+ 		case 122: goto l122;
+ 		case 123: goto l123;
+ 		case 124: goto l124;
+ 		case 125: goto l125;
+ 		case 126: goto l126;
+ 		case 127: goto l127;
+ 		case 128: goto l128;
+ 		case 129: goto l129;
+ 		}
+ 	    }
+ 	  l3:;
+ 	  foo ();
+ 	  l100:
+ 	  foo ();
+ 	  l101:
+ 	  foo ();
+ 	  l102:
+ 	  foo ();
+ 	  l103:
+ 	  foo ();
+ 	  l104:
+ 	  foo ();
+ 	  l105:
+ 	  foo ();
+ 	  l106:
+ 	  foo ();
+ 	  l107:
+ 	  foo ();
+ 	  l108:
+ 	  foo ();
+ 	  l109:;
+ 	}
+       l2:;
+       foo ();
+       l110:
+       foo ();
+       l111:
+       foo ();
+       l112:
+       foo ();
+       l113:
+       foo ();
+       l114:
+       foo ();
+       l115:
+       foo ();
+       l116:
+       foo ();
+       l117:
+       foo ();
+       l118:
+       foo ();
+       l119:;
+     }
+   l1:;
+   foo ();
+   l120:
+   foo ();
+   l121:
+   foo ();
+   l122:
+   foo ();
+   l123:
+   foo ();
+   l124:
+   foo ();
+   l125:
+   foo ();
+   l126:
+   foo ();
+   l127:
+   foo ();
+   l128:
+   foo ();
+   l129:;
+   return 42;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/c-c++-common/asan/pr121389-4.c gcc-15-20250809/gcc/testsuite/c-c++-common/asan/pr121389-4.c
*** gcc-15-20250726/gcc/testsuite/c-c++-common/asan/pr121389-4.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/c-c++-common/asan/pr121389-4.c	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,6 ----
+ // PR middle-end/121389
+ // { dg-do compile { target musttail } }
+ // { dg-options "-fsanitize=address -fdisable-tree-switchlower_O0" }
+ // { dg-skip-if "" { *-*-* } { "*" } { "-O0" } }
+ 
+ #include "pr121389-3.c"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/c-c++-common/pr121159.c gcc-15-20250809/gcc/testsuite/c-c++-common/pr121159.c
*** gcc-15-20250726/gcc/testsuite/c-c++-common/pr121159.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/c-c++-common/pr121159.c	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,17 ----
+ /* PR middle-end/121159 */
+ /* { dg-do compile { target musttail } } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-times "foo \\\(\[^\n\r]*\\\); \\\[tail call\\\] \\\[must tail call\\\]" 1 "optimized" } } */
+ 		
+ [[noreturn, gnu::noipa]] void
+ foo (void)
+ {
+   for (;;)
+     ;
+ }
+ 
+ void
+ bar (void)
+ {
+   [[gnu::musttail]] return foo ();
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group1/check_88.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group1/check_88.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group1/check_88.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group1/check_88.cob	Sat Aug  9 22:32:40 2025
***************
*** 3,27 ****
  *> { dg-output {\->   <\-(\n|\r\n|\r)} }
  *> { dg-output {\->"""<\-(\n|\r\n|\r)} }
  *> { dg-output {\->000<\-(\n|\r\n|\r)} }
! *> { dg-output {\->ÿÿÿ<\-(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {\-><\-(\n|\r\n|\r)} }
  *> { dg-output {\->    <\-(\n|\r\n|\r)} }
  *> { dg-output {\->""""<\-(\n|\r\n|\r)} }
  *> { dg-output {\->0000<\-(\n|\r\n|\r)} }
! *> { dg-output {\->ÿÿÿÿ<\-(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {There should be no garbage after character 32(\n|\r\n|\r)} }
  *> { dg-output {\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-(\n|\r\n|\r)} }
! *> { dg-output {üüüüüüüüüüüüüüüüüüü Bundesstraße                                (\n|\r\n|\r)} }
! *> { dg-output {üüüüüüüüüüüüüüüüüüü Bundesstraße                                (\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {There should be no spaces before the final quote(\n|\r\n|\r)} }
! *> { dg-output {"üüüüüüüüüüüüüüüüüüü Bundesstraße"(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {   IsLow   ""(\n|\r\n|\r)} }
  *> { dg-output {   IsZero  "000"(\n|\r\n|\r)} }
! *> { dg-output {   IsHi    "ÿÿÿ"(\n|\r\n|\r)} }
  *> { dg-output {   IsBob   "bob"(\n|\r\n|\r)} }
  *> { dg-output {   IsQuote """""(\n|\r\n|\r)} }
  *> { dg-output {   IsSpace "   "(\n|\r\n|\r)} }
--- 3,27 ----
  *> { dg-output {\->   <\-(\n|\r\n|\r)} }
  *> { dg-output {\->"""<\-(\n|\r\n|\r)} }
  *> { dg-output {\->000<\-(\n|\r\n|\r)} }
! *> { dg-output {\->.*<\-(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {\-><\-(\n|\r\n|\r)} }
  *> { dg-output {\->    <\-(\n|\r\n|\r)} }
  *> { dg-output {\->""""<\-(\n|\r\n|\r)} }
  *> { dg-output {\->0000<\-(\n|\r\n|\r)} }
! *> { dg-output {\->.*<\-(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {There should be no garbage after character 32(\n|\r\n|\r)} }
  *> { dg-output {\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\*\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-(\n|\r\n|\r)} }
! *> { dg-output {.* Bundesstra.e                                (\n|\r\n|\r)} }
! *> { dg-output {.* Bundesstra.e                                (\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {There should be no spaces before the final quote(\n|\r\n|\r)} }
! *> { dg-output {".* Bundesstra.e"(\n|\r\n|\r)} }
  *> { dg-output { (\n|\r\n|\r)} }
  *> { dg-output {   IsLow   ""(\n|\r\n|\r)} }
  *> { dg-output {   IsZero  "000"(\n|\r\n|\r)} }
! *> { dg-output {   IsHi    ".*"(\n|\r\n|\r)} }
  *> { dg-output {   IsBob   "bob"(\n|\r\n|\r)} }
  *> { dg-output {   IsQuote """""(\n|\r\n|\r)} }
  *> { dg-output {   IsSpace "   "(\n|\r\n|\r)} }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group1/simple-if.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group1/simple-if.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group1/simple-if.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group1/simple-if.cob	Sat Aug  9 22:32:40 2025
***************
*** 19,25 ****
  *> { dg-output {CORRECTLY_TRUE: A_4 NOT  = B_4(\n|\r\n|\r)} }
  *> { dg-output {CORRECTLY_ELSE: A_4 NOT  > B_4(\n|\r\n|\r)} }
  *> { dg-output { } }
! * Not strictly Reference Format
          IDENTIFICATION DIVISION.
          PROGRAM-ID. test.
          DATA DIVISION.
--- 19,25 ----
  *> { dg-output {CORRECTLY_TRUE: A_4 NOT  = B_4(\n|\r\n|\r)} }
  *> { dg-output {CORRECTLY_ELSE: A_4 NOT  > B_4(\n|\r\n|\r)} }
  *> { dg-output { } }
!         >>SOURCE FREE
          IDENTIFICATION DIVISION.
          PROGRAM-ID. test.
          DATA DIVISION.
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/258_Nested_PERFORM.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        PROCEDURE        DIVISION.
+            PERFORM 2 TIMES
+              DISPLAY "X" NO ADVANCING
+              END-DISPLAY
+              PERFORM 2 TIMES
+                DISPLAY "Y" NO ADVANCING
+                END-DISPLAY
+              END-PERFORM
+            END-PERFORM.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/258_Nested_PERFORM.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ XYYXYY
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,19 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/259_PERFORM_VARYING_BY_-0.2.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+           77 X             PIC 9v9.
+        PROCEDURE        DIVISION.
+            PERFORM VARYING X FROM 0.8 BY -0.2
+                    UNTIL   X < 0.4
+              DISPLAY "X" NO ADVANCING
+              END-DISPLAY
+            END-PERFORM.
+        IF X NOT = 0.2
+          DISPLAY "WRONG X: " X END-DISPLAY
+        END-IF
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ XXX
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,75 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/338_Default_Arithmetic__1_.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01 NUM-A   PIC 9(3) VALUE 399.
+        01 NUM-B   PIC 9(3) VALUE 211.
+        01 NUM-C   PIC 9(3)V99 VALUE 212.34.
+        01 NUMV1   PIC 9(3)V9.
+        01 PICX    PIC X VALUE 'A'.
+        01 RSLT    PIC 9(3).
+        01 RSLTV1  PIC 9(3).9.
+        01 RSLTV2  PIC 9(3).99.
+       *
+        PROCEDURE DIVISION.
+        MAIN.
+            COMPUTE RSLT = NUM-A + 1.1.
+            DISPLAY 'Simple Compute  RSLT IS ' RSLT
+            COMPUTE RSLT = ((NUM-A / 100) - (NUM-B / 100)) * 100
+            DISPLAY 'Single Variable RSLT IS ' RSLT
+            COMPUTE RSLTV2, RSLT = ((NUM-A / 100) - (NUM-B / 100)) * 100
+            DISPLAY 'Compute  RSLT    IS ' RSLT
+            DISPLAY 'Compute  RSLTv99 IS ' RSLTV2
+            COMPUTE RSLTV1, RSLT = ((NUM-A / 100) - (NUM-B / 100)) * 100
+            DISPLAY 'Compute  RSLT    IS ' RSLT
+            DISPLAY 'Compute  RSLTv9  IS ' RSLTV1
+            MOVE 0 TO RSLT
+            ADD NUM-C TO RSLT.
+            DISPLAY 'Add      RSLT    IS ' RSLT.
+            MOVE 0 TO RSLT
+            ADD NUM-A NUM-C 10 TO RSLT.
+            DISPLAY 'Add      RSLT    IS ' RSLT.
+            SUBTRACT NUM-C FROM RSLT.
+            DISPLAY 'Subtract RSLT    IS ' RSLT.
+            SUBTRACT NUM-A -10 FROM RSLT.
+            DISPLAY 'Subtract RSLT    IS ' RSLT.
+            MOVE 0 TO RSLT
+            ADD NUM-A NUM-C TO RSLT GIVING RSLTV1.
+            DISPLAY 'Add      RSLTv9  IS ' RSLTV1
+            MULTIPLY NUM-A BY NUM-C GIVING RSLT.
+            DISPLAY 'Multiply RSLT    IS ' RSLT.
+            MULTIPLY RSLT BY NUM-C.
+            DISPLAY 'Multiply RSLT    IS ' RSLT.
+            DIVIDE NUM-A BY 10 GIVING RSLT.
+            DISPLAY 'Divide   RSLT    IS ' RSLT.
+            DIVIDE RSLT BY 4 GIVING RSLTV1.
+            DISPLAY 'Divide   RSLTv9  IS ' RSLTV1.
+            DIVIDE RSLT BY 4 GIVING RSLT.
+            DISPLAY 'Divide   RSLT    IS ' RSLT.
+ 
+            COMPUTE RSLTV1, RSLT = ((NUM-A / 100) - (NUM-B / 100)) * 100
+            DISPLAY 'Simple   RSLT    IS ' RSLT
+                            ' RSLTv9  IS ' RSLTV1.
+ 
+            COMPUTE RSLTV1, RSLT = ((NUM-A / (100.55 + -0.550))
+                                 -  (NUM-B / (10.11 * 10 - 1.1)))
+                                   * (220 / 2.2)
+            DISPLAY 'Complex  RSLT    IS ' RSLT
+                            ' RSLTv9  IS ' RSLTV1.
+ 
+            COMPUTE RSLTV1, RSLT = ((NUM-A / (101 - 1))
+                                 -  (NUM-B / (10 * 10))) * (200 / 2)
+            DISPLAY 'Reduced  RSLT    IS ' RSLT
+                            ' RSLTv9  IS ' RSLTV1.
+            MOVE NUM-A TO NUMV1.
+            IF ((NUMV1 / (101 - 1))
+               -  (NUM-B / (10 * 10))) * (200 / 2) EQUAL 188
+               DISPLAY "Not Using ARITHMETIC-OSVS"
+            ELSE
+               DISPLAY "Using ARITHMETIC-OSVS"
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,21 ----
+ Simple Compute  RSLT IS 400
+ Single Variable RSLT IS 188
+ Compute  RSLT    IS 188
+ Compute  RSLTv99 IS 188.00
+ Compute  RSLT    IS 188
+ Compute  RSLTv9  IS 188.0
+ Add      RSLT    IS 212
+ Add      RSLT    IS 621
+ Subtract RSLT    IS 408
+ Subtract RSLT    IS 019
+ Add      RSLTv9  IS 611.3
+ Multiply RSLT    IS 723
+ Multiply RSLT    IS 723
+ Divide   RSLT    IS 039
+ Divide   RSLTv9  IS 009.7
+ Divide   RSLT    IS 009
+ Simple   RSLT    IS 188 RSLTv9  IS 188.0
+ Complex  RSLT    IS 188 RSLTv9  IS 188.0
+ Reduced  RSLT    IS 188 RSLTv9  IS 188.0
+ Not Using ARITHMETIC-OSVS
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/88_level_with_FALSE_IS_clause.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/88_level_with_FALSE_IS_clause.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/88_level_with_FALSE_IS_clause.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/88_level_with_FALSE_IS_clause.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,19 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  MYFLD        PIC X(6) VALUE "ABCDEF".
+            88  MYFLD88  VALUE "ABCDEF"
+                FALSE IS "OKOKOK".
+        PROCEDURE        DIVISION.
+        ASTART SECTION.
+        A01.
+            SET MYFLD88 TO FALSE
+            IF MYFLD NOT = "OKOKOK"
+               DISPLAY MYFLD
+               END-DISPLAY
+            END-IF
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/88_level_with_FILLER.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/88_level_with_FILLER.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/88_level_with_FILLER.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/88_level_with_FILLER.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,20 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  FILLER       PIC X VALUE SPACE.
+            88 X         VALUE "X".
+        PROCEDURE        DIVISION.
+            IF X
+                DISPLAY "NOT OK"
+                END-DISPLAY
+            END-IF
+            SET X TO TRUE.
+            IF NOT X
+                DISPLAY "NOT OK"
+                END-DISPLAY
+            END-IF
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/88_level_with_THRU.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/88_level_with_THRU.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/88_level_with_THRU.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/88_level_with_THRU.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,86 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  VAR-X        PIC X VALUE SPACE.
+            88 X         VALUE "X".
+            88 T-Y       VALUE "T" THRU "Y".
+        01  VAR-9        PIC 9 VALUE ZERO.
+            88 V9        VALUE 9.
+            88 V2-4      VALUE 2 THRU 4.
+        PROCEDURE        DIVISION.
+            IF X
+                DISPLAY "NOT OK '" VAR-X "' IS X"
+                END-DISPLAY
+            END-IF
+            SET X TO TRUE
+            IF NOT X
+                DISPLAY "NOT OK '" VAR-X "' IS NOT X"
+                END-DISPLAY
+            END-IF
+            IF NOT T-Y
+                DISPLAY "NOT OK '" VAR-X "' IS NOT T-Y"
+                END-DISPLAY
+            END-IF
+            SET T-Y TO TRUE
+            IF NOT T-Y
+                DISPLAY "NOT OK '" VAR-X "' IS NOT T-Y"
+                END-DISPLAY
+            END-IF
+            MOVE 'Y' TO VAR-X
+            IF NOT T-Y
+                DISPLAY "NOT OK '" VAR-X "' IS NOT T-Y"
+                END-DISPLAY
+            END-IF
+            MOVE 'Z' TO VAR-X
+            IF T-Y
+                DISPLAY "NOT OK '" VAR-X "' IS T-Y"
+                END-DISPLAY
+            END-IF
+            MOVE 'A' TO VAR-X
+            IF T-Y
+                DISPLAY "NOT OK '" VAR-X "' IS T-Y"
+                END-DISPLAY
+            END-IF
+            IF V9
+                DISPLAY "NOT OK '" VAR-9 "' IS V9"
+                END-DISPLAY
+            END-IF
+            SET V9 TO TRUE
+            IF NOT V9
+                DISPLAY "NOT OK '" VAR-9 "' IS NOT V9"
+                END-DISPLAY
+            END-IF
+            SET V2-4 TO TRUE
+            IF V9
+                DISPLAY "NOT OK '" VAR-9 "' IS V9"
+                END-DISPLAY
+            END-IF
+            IF NOT V2-4
+                DISPLAY "NOT OK '" VAR-9 "' IS NOT V2-4"
+                END-DISPLAY
+            END-IF
+            MOVE 3 TO VAR-9
+            IF NOT V2-4
+                DISPLAY "NOT OK '" VAR-9 "' IS NOT V2-4"
+                END-DISPLAY
+            END-IF
+            MOVE 4 TO VAR-9
+            IF NOT V2-4
+                DISPLAY "NOT OK '" VAR-9 "' IS NOT V2-4"
+                END-DISPLAY
+            END-IF
+            MOVE 5 TO VAR-9
+            IF V2-4
+                DISPLAY "NOT OK '" VAR-9 "' IS V2-4"
+                END-DISPLAY
+            END-IF
+            MOVE 1 TO VAR-9
+            IF V2-4
+                DISPLAY "NOT OK '" VAR-9 "' IS V2-4"
+                END-DISPLAY
+            END-IF
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ADD_CORRESPONDING.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ADD_CORRESPONDING.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ADD_CORRESPONDING.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ADD_CORRESPONDING.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,39 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 GROUP-1.
+           05 FIELD-A           PIC 9 VALUE 1.
+           05 FIELD-B           USAGE BINARY-CHAR VALUE 2.
+           05 INNER-GROUP.
+              10 FIELD-C        USAGE COMP-1 VALUE 3.
+           05 FIELD-D           PIC X VALUE "A".
+        01 GROUP-2.
+           05 FIELD-A           PIC 9.
+           05 FIELD-B           USAGE BINARY-LONG.
+           05 INNER-GROUP.
+              10 FIELD-C        PIC 9.
+           05 FIELD-D           PIC 9.
+ 
+        PROCEDURE DIVISION.
+        ADD CORRESPONDING GROUP-1 TO GROUP-2.
+        IF FIELD-A IN GROUP-2 NOT EQUAL 1 THEN
+            DISPLAY "BAD FIELD-A " FIELD-A IN GROUP-2
+            END-DISPLAY
+        END-IF.
+        IF FIELD-B IN GROUP-2 NOT EQUAL 2 THEN
+            DISPLAY "BAD FIELD-B " FIELD-B IN GROUP-2
+            END-DISPLAY
+        END-IF.
+        IF FIELD-C IN GROUP-2 NOT EQUAL 3 THEN
+            DISPLAY "BAD FIELD-C " FIELD-C IN GROUP-2
+            END-DISPLAY
+        END-IF.
+        IF FIELD-D IN GROUP-2 NOT EQUAL 0 THEN
+            DISPLAY "BAD FIELD-D " FIELD-D IN GROUP-2
+            END-DISPLAY
+        END-IF.
+        STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,33 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ADD_SUBTRACT_CORR_mixed_fix___float.out" }
+ 
+         IDENTIFICATION DIVISION.
+         PROGRAM-ID. prog.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         01 GROUP1.
+             05 VAR1 PIC 9999    VALUE 1.
+             05 VAR2 PIC 9999    VALUE 2.
+             05 VAR3     COMP-2  VALUE 3.
+             05 VAR4     COMP-2  VALUE 4.
+         01 GROUP2.
+             05 VAR1 PIC 9999    VALUE 1000.
+             05 VAR2     COMP-2  VALUE 2000.
+             05 VAR3 PIC 9999    VALUE 3000.
+             05 VAR4     COMP-2  VALUE 4000.
+         PROCEDURE DIVISION.
+             PERFORM DISP2
+             ADD CORRESPONDING GROUP1 TO GROUP2
+             PERFORM DISP2
+             SUBTRACT CORRESPONDING GROUP1 FROM GROUP2
+             PERFORM DISP2.
+             GOBACK.
+         DISP2.
+             DISPLAY
+                     VAR1 OF GROUP2 SPACE
+                     VAR2 OF GROUP2 SPACE
+                     VAR3 OF GROUP2 SPACE
+                     VAR4 OF GROUP2.
+         END PROGRAM prog.
+ 
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ADD_SUBTRACT_CORR_mixed_fix___float.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ 1000 2000 3000 4000
+ 1001 2002 3003 4004
+ 1000 2000 3000 4000
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,114 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out" }
+ 
+         identification          division.
+         program-id.             prog.
+         procedure               division.
+         display "initialize zeroes"
+             call                    "prog-zeroes"
+         display "initialize low-value"
+             call                    "prog-low"
+         display "initialize spaces"
+             call                    "prog-space"
+         display "initialize high-value"
+             call                    "prog-high"
+         continue.
+         end program             prog.
+ 
+         identification          division.
+         program-id.             prog-space.
+         options. initialize working-storage spaces.
+         data                    division.
+         working-storage         section.
+         01   based-var          based.
+          02  based-x            pic x(24) value "I am I, Don Quixote".
+          02  based-9            pic 999   value 123.
+          02  based-p            pointer   value NULL.
+         01   allocated-pointer  pointer.
+         procedure division.
+         display     "allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)"
+         allocate 35 characters returning allocated-pointer
+         set address of based-var to allocated-pointer
+         call        "reporter" using based-var
+         free        allocated-pointer
+         goback.
+         end program             prog-space.
+ 
+         identification          division.
+         program-id.             prog-low.
+         options. initialize working-storage low-values.
+         data                    division.
+         working-storage         section.
+         01   based-var          based.
+          02  based-x            pic x(24) value "I am I, Don Quixote".
+          02  based-9            pic 999   value 123.
+          02  based-p            pointer   value NULL.
+         01   allocated-pointer  pointer.
+         procedure division.
+         display     "allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)"
+         allocate 35 characters returning allocated-pointer
+         set address of based-var to allocated-pointer
+         call        "reporter" using based-var
+         free        allocated-pointer
+         goback.
+         end program             prog-low.
+ 
+         identification          division.
+         program-id.             prog-zeroes.
+         options. initialize working-storage binary zeroes.
+         data                    division.
+         working-storage         section.
+         01   based-var          based.
+          02  based-x            pic x(24) value "I am I, Don Quixote".
+          02  based-9            pic 999   value 123.
+          02  based-p            pointer   value NULL.
+         01   allocated-pointer  pointer.
+         procedure division.
+         display     "allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)"
+         allocate 35 characters returning allocated-pointer
+         set address of based-var to allocated-pointer
+         call        "reporter" using based-var
+         free        allocated-pointer
+         goback.
+         end program             prog-zeroes.
+ 
+         identification          division.
+         program-id.             prog-high.
+         options. initialize working-storage high-values.
+         data                    division.
+         working-storage         section.
+         01   based-var          based.
+          02  based-x            pic x(24) value "I am I, Don Quixote".
+          02  based-9            pic 999   value 123.
+          02  based-p            pointer   value NULL.
+         01 pval redefines based-var pointer.
+         01   allocated-pointer  pointer.
+         procedure division.
+         display     "allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)"
+         allocate 35 characters returning allocated-pointer
+         set address of based-var to allocated-pointer
+         display pval
+         free        allocated-pointer
+         goback.
+         end program             prog-high.
+ 
+         identification          division.
+         program-id.             reporter.
+         data                    division.
+         linkage                 section.
+         01   based-var          based.
+          02  based-x            pic x(24).
+          02  based-9            pic 999  .
+          02  based-p            pointer  .
+         procedure division      using based-var.
+         reportt.
+             display "   (1) as allocated"
+             perform reportt2
+             goback.
+         reportt2.
+             display "       " """" based-x """" with no advancing
+             display space     """" based-9 """" with no advancing
+             display space       based-p.
+             continue.
+         end program             reporter.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE_Rule_8_OPTION_INITIALIZE_with_figconst.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+ initialize zeroes
+ allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)
+    (1) as allocated
+        "" "" 0x0000000000000000
+ initialize low-value
+ allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)
+    (1) as allocated
+        "" "" 0x0000000000000000
+ initialize spaces
+ allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)
+    (1) as allocated
+        "                        " "   " 0x2020202020202020
+ initialize high-value
+ allocate characters  (ISO 2023 Rule 8: OPT_INIT if specified, otherwise defaultbyte, otherwise zero)
+ 0xffffffffffffffff
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,73 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ALLOCATE___FREE_basic_default_versions.out" }
+ 
+         program-id.         prog.
+         data                division.
+         working-storage     section.
+         01 based-var        pic x(100) based.
+         01 mem-pointer      pointer.
+         01 mem-size         pic 999 value 100.
+         01 counter          pic 99 value zero.
+         procedure division.
+         allocate 100        characters returning mem-pointer.
+             if mem-pointer equal NULL
+                 display "allocate 100 should not be NULL (1)"
+             else
+                 add 1 to counter.
+         free mem-pointer
+             if mem-pointer not equal NULL
+                 display "mem-pointer should be NULL again (1)"
+             else
+                 add 1 to counter.
+ 
+         allocate mem-size   characters returning mem-pointer.
+             if mem-pointer equal null
+                 display "allocate mem-size should not be NULL (2)"
+             else
+                 add 1 to counter.
+         free mem-pointer
+             if mem-pointer not equal null
+                 display "mem-pointer should be NULL again (2)"
+             else
+                 add 1 to counter.
+ 
+         allocate based-var
+             if address of based-var equal NULL
+                 display "address of based-var should not be NULL (1)"
+             else
+                 add 1 to counter
+         free based-var
+             if address of based-var not equal NULL
+                 display "address of based-var be NULL (1)"
+             else
+                 add 1 to counter.
+ 
+         allocate based-var
+             if address of based-var equal NULL
+                 display "address of based-var should not be NULL (2)"
+             else
+                 add 1 to counter.
+         free address of based-var
+             if address of based-var not equal NULL
+                 display "address of based-var be NULL (2)"
+             else
+                 add 1 to counter.
+ 
+         allocate based-var returning mem-pointer.
+         if address of based-var equal NULL
+             display "address of based-var should not be NULL (3)"
+         else
+             add 1 to counter.
+         if mem-pointer equal NULL
+             display "address of mem-pointer should not be NULL (3)"
+         else
+             add 1 to counter.
+         if address of based-var not equal mem-pointer
+             display "address of mem-pointer should be equal to mem-pointer (3)"
+         else
+             add 1 to counter.
+ 
+         display "There were " counter " successful tests; should be 11."
+         goback.
+         end program prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_basic_default_versions.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ There were 11 successful tests; should be 11.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,18 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        LINKAGE          SECTION.
+        01  MYFLD        PIC X(6) BASED VALUE "ABCDEF".
+        PROCEDURE        DIVISION.
+        ASTART SECTION.
+        A01.
+            ALLOCATE MYFLD INITIALIZED.
+            IF MYFLD NOT = "ABCDEF"
+               DISPLAY MYFLD
+               END-DISPLAY
+            END-IF.
+            FREE ADDRESS OF MYFLD.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALLOCATE___FREE_with_BASED_item__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,35 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 MYFLD         BASED.
+              03 MYFLDX  PIC X.
+              03 MYFLD9  PIC 9.
+        PROCEDURE        DIVISION.
+            IF ADDRESS OF MYFLD NOT = NULL
+               DISPLAY "BASED ITEM WITH ADDRESS ON START"
+               END-DISPLAY
+            END-IF.
+            FREE MYFLD.
+            ALLOCATE MYFLD.
+            IF ADDRESS OF MYFLD = NULL
+               DISPLAY "BASED ITEM WITHOUT ADDRESS AFTER ALLOCATE"
+               END-DISPLAY
+            END-IF.
+            INITIALIZE MYFLD.
+            IF MYFLD NOT = " 0"
+               DISPLAY "BASED ITEM INITIALIZED WRONG: "
+                  WITH NO ADVANCING
+               END-DISPLAY
+               DISPLAY MYFLD
+               END-DISPLAY
+            END-IF.
+ 
+            FREE ADDRESS OF MYFLD.
+            IF ADDRESS OF MYFLD NOT = NULL
+               DISPLAY "BASED ITEM WITH ADDRESS AFTER FREE"
+               END-DISPLAY
+            END-IF.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALPHABETIC-LOWER_test.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALPHABETIC-LOWER_test.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALPHABETIC-LOWER_test.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALPHABETIC-LOWER_test.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,23 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC X(04) VALUE "aaaa".
+        01  FILLER REDEFINES X.
+            03  XBYTE    PIC X.
+            03  FILLER   PIC XXX.
+        PROCEDURE        DIVISION.
+            MOVE X"0D"   TO XBYTE.
+            IF X ALPHABETIC-LOWER
+               DISPLAY "Fail - Not alphabetic lower"
+               END-DISPLAY
+            END-IF.
+            MOVE "a"     TO XBYTE.
+            IF X NOT ALPHABETIC-LOWER
+               DISPLAY "Fail - Alphabetic lower"
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALPHABETIC-UPPER_test.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALPHABETIC-UPPER_test.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALPHABETIC-UPPER_test.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALPHABETIC-UPPER_test.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,23 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC X(04) VALUE "AAAA".
+        01  FILLER REDEFINES X.
+            03  XBYTE    PIC X.
+            03  FILLER   PIC XXX.
+        PROCEDURE        DIVISION.
+            MOVE X"0D"   TO XBYTE.
+            IF X ALPHABETIC-UPPER
+               DISPLAY "Fail - Not alphabetic upper"
+               END-DISPLAY
+            END-IF.
+            MOVE "A"     TO XBYTE.
+            IF X NOT ALPHABETIC-UPPER
+               DISPLAY "Fail - Alphabetic upper"
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALPHABETIC_test.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALPHABETIC_test.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ALPHABETIC_test.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ALPHABETIC_test.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,23 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC X(04) VALUE "AAAA".
+        01  FILLER REDEFINES X.
+            03  XBYTE    PIC X.
+            03  FILLER   PIC XXX.
+        PROCEDURE        DIVISION.
+            MOVE X"0D"   TO XBYTE.
+            IF X ALPHABETIC
+               DISPLAY "Fail - Alphabetic"
+               END-DISPLAY
+            END-IF.
+            MOVE "A"     TO XBYTE.
+            IF X NOT ALPHABETIC
+               DISPLAY "Fail - Not Alphabetic"
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,27 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ANY_LENGTH__1_.out" }
+ 
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      caller.
+         DATA             DIVISION.
+         WORKING-STORAGE  SECTION.
+         01 P1            PIC X(6) VALUE "OKOKOK".
+         PROCEDURE        DIVISION.
+             CALL "callee" USING P1
+             END-CALL.
+             STOP RUN.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      callee.
+         DATA             DIVISION.
+         WORKING-STORAGE  SECTION.
+         01 P2            PIC 99.
+         LINKAGE          SECTION.
+         01 P1            PIC X ANY LENGTH.
+         PROCEDURE        DIVISION USING P1.
+             MOVE FUNCTION LENGTH (P1) TO P2.
+             DISPLAY "The incoming ANY LENGTH is " P2
+             DISPLAY "The incoming ANY LENGTH variable is " """" P1 """"
+             EXIT PROGRAM.
+         END PROGRAM callee.
+         END PROGRAM caller.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__1_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,3 ----
+ The incoming ANY LENGTH is 06
+ The incoming ANY LENGTH variable is "OKOKOK"
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,33 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ANY_LENGTH__2_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      caller.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 P1            PIC X(2) VALUE "OK".
+        PROCEDURE        DIVISION.
+            CALL "callee" USING P1
+            END-CALL.
+            DISPLAY "On return, P1 is " """" P1 """"
+            STOP RUN.
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      callee.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 P2            PIC XXX.
+        LINKAGE          SECTION.
+        01 P1            PIC X ANY LENGTH.
+        PROCEDURE        DIVISION USING P1.
+            MOVE P1 TO P2.
+            DISPLAY "P1 is " """" P1 """"
+            DISPLAY "P2 is " """" P2 """"
+            IF P2 NOT = "OK "
+               DISPLAY P2
+               END-DISPLAY
+            END-IF.
+            MOVE SPACE TO P1.
+            EXIT PROGRAM.
+        END PROGRAM callee.
+        END PROGRAM caller.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__2_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ P1 is "OK"
+ P2 is "OK "
+ On return, P1 is "  "
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,25 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ANY_LENGTH__3_.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01 str PIC X(20) VALUE ALL "X".
+        PROCEDURE DIVISION.
+            CALL "subprog" USING str.
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. subprog.
+        DATA DIVISION.
+        LINKAGE SECTION.
+        01 str PIC X ANY LENGTH.
+        PROCEDURE DIVISION USING str.
+            MOVE "abcd" TO str
+            DISPLAY FUNCTION TRIM (str)
+            MOVE "abcd" TO str (5:)
+            DISPLAY FUNCTION TRIM (str)
+            MOVE ALL "a" TO str
+            DISPLAY FUNCTION TRIM (str).
+        END PROGRAM subprog.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__3_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ abcd
+ abcdabcd
+ aaaaaaaaaaaaaaaaaaaa
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__4_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__4_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__4_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__4_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,33 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+ 
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01 str PIC X(20) VALUE ALL "X".
+ 
+        PROCEDURE DIVISION.
+            CALL "subprog" USING str
+            move '   45'   to str
+            CALL "subprog" USING str
+            .
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. subprog.
+ 
+        DATA DIVISION.
+        LINKAGE SECTION.
+        01 str PIC X ANY LENGTH.
+ 
+        PROCEDURE DIVISION USING str.
+            IF str = 'X'
+              DISPLAY 'X is X'
+            END-IF
+            IF str = space
+              DISPLAY 'X is space'
+            END-IF
+            .
+        END PROGRAM subprog.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,19 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ANY_LENGTH__5_.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        PROCEDURE DIVISION.
+        CALL "subprog"
+        GOBACK.
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. subprog.
+        DATA DIVISION.
+        LINKAGE SECTION.
+        01 str1 PIC X ANY LENGTH.
+        01 str2 PIC X ANY LENGTH.
+        PROCEDURE DIVISION USING optional str1 optional str2.
+        DISPLAY 'IN' WITH NO ADVANCING.
+        END PROGRAM subprog.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ANY_LENGTH__5_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ IN
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,45 ----
+        *> { dg-do run }
+        *> { dg-options "-Wno-truncate" }
+        *> { dg-output-file "group2/Alphanumeric_MOVE_with_truncation.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  x-left  PIC X(03).
+        01  x-right PIC X(03) JUSTIFIED RIGHT.
+        PROCEDURE DIVISION.
+            MOVE '1234' TO x-left, x-right
+            DISPLAY """" x-left """" space """" x-right """"
+            IF x-left  not = '123'
+            OR x-right not = '234'
+               DISPLAY 'error with "1234":'
+               END-DISPLAY
+               DISPLAY x-left
+               END-DISPLAY
+               DISPLAY x-right
+               END-DISPLAY
+            END-IF
+            MOVE '   3' TO x-left, x-right
+            DISPLAY """" x-left """" space """" x-right """"
+            IF x-left  not = spaces
+            OR x-right not = '  3'
+               DISPLAY 'error with "   3":'
+               END-DISPLAY
+               DISPLAY x-left
+               END-DISPLAY
+               DISPLAY x-right
+               END-DISPLAY
+            END-IF
+            MOVE '3   ' TO x-left, x-right
+            DISPLAY """" x-left """" space """" x-right """"
+            IF x-left  not = '3'
+            OR x-right not = spaces
+               DISPLAY 'error with "3   ":'
+               END-DISPLAY
+               DISPLAY x-left
+               END-DISPLAY
+               DISPLAY x-right
+               END-DISPLAY
+            END-IF.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Alphanumeric_MOVE_with_truncation.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ "123" "234"
+ "   " "  3"
+ "3  " "   "
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Alphanumeric_and_binary_numeric.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Alphanumeric_and_binary_numeric.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Alphanumeric_and_binary_numeric.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Alphanumeric_and_binary_numeric.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X-X           PIC XXXX VALUE "0001".
+        01 X-9           PIC 9999 COMP VALUE 1.
+        PROCEDURE        DIVISION.
+          IF X-X = X-9
+             STOP RUN
+          END-IF.
+          DISPLAY "NG" NO ADVANCING
+          END-DISPLAY
+          STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/BLANK_WHEN_ZERO.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  x            PIC 9, BLANK WHEN ZERO, VALUE 1.
+        PROCEDURE        DIVISION.
+            DISPLAY "X should be 1: " """" x """"
+            MOVE 0 TO x
+            DISPLAY "X should be blank: " """" FUNCTION TRIM(x) """"
+            MOVE ZERO TO x
+            DISPLAY "X should be blank: " """" FUNCTION TRIM(x) """"
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ X should be 1: "1"
+ X should be blank: ""
+ X should be blank: ""
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,38 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/CALL_with_OMITTED_parameter.out" }
+ 
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      caller.
+         DATA             DIVISION.
+         WORKING-STORAGE  SECTION.
+         01 P1            PIC X    VALUE "A".
+         01 P2            PIC X    VALUE "B".
+         PROCEDURE        DIVISION.
+             DISPLAY "Should see AB"
+             CALL "callee" USING P1 P2
+             DISPLAY "Should see A"
+             CALL "callee" USING P1
+             END-CALL.
+             DISPLAY "Should see A"
+             CALL "callee" USING P1 OMITTED
+             END-CALL.
+             STOP RUN.
+         END PROGRAM caller.
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      callee.
+        DATA             DIVISION.
+        LINKAGE          SECTION.
+        01 P1            PIC X.
+        01 P2            PIC X.
+        PROCEDURE        DIVISION USING P1 OPTIONAL P2.
+            DISPLAY """" P1 WITH NO ADVANCING
+            IF P2 NOT OMITTED
+               DISPLAY P2 """"
+               END-DISPLAY
+            ELSE
+               DISPLAY """"
+               END-DISPLAY
+            END-IF.
+            EXIT PROGRAM.
+         END PROGRAM callee.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,7 ----
+ Should see AB
+ "AB"
+ Should see A
+ "A"
+ Should see A
+ "A"
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,28 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/CONTINUE_AFTER_1_SECONDS.out" }
+ 
+         program-id. prog.
+         data division.
+         working-storage section.
+         01 tod pic x(64).
+         01 tstart pic 9999.
+         01 tend   pic 9999.
+         01 tspan  pic 9999.
+         procedure division.
+         accept tod from time
+         move tod(5:) to tstart
+         continue after 1.0 seconds.
+         accept tod from time
+         move tod(5:) to tend
+         if tend < tstart 
+             compute tend = tend + 6000
+         end-if
+         compute tspan = tend - tstart
+         if tspan >= 75 and tspan <= 125
+             display "Looks good"
+         else
+             display "Looks bad! " tstart space tend space tspan
+         end-if
+         goback.
+         end program prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CONTINUE_AFTER_1_SECONDS.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ Looks good
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,22 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/CURRENCY_SIGN.out" }
+ 
+        PROGRAM-ID.   prog.
+ 
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+        SPECIAL-NAMES.
+            CURRENCY SIGN IS "Y".
+ 
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        77  amount    pic Y(6)9.99.
+ 
+        PROCEDURE DIVISION.
+            Move 1512.34 to Amount
+            Display "Amount is #" Amount '#' with no advancing.
+ 
+            GOBACK
+            .
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ Amount is #  Y1512.34#
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,32 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out" }
+ 
+        PROGRAM-ID.   prog.
+ 
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+        SPECIAL-NAMES.
+            *> note the space after EUR / before ct.
+            CURRENCY SIGN IS "EUR "      WITH PICTURE SYMBOL "U",
+            CURRENCY SIGN IS " ct (EUR)" WITH PICTURE SYMBOL "c",
+            Currency Sign is "$US" with Picture Symbol "$".
+ 
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        77  EUROS    PIC U99v99.
+        77  cents    PIC 9,999c.
+        77  DOLLARS  Pic $$,$$9.99.
+ 
+        PROCEDURE DIVISION.
+            MOVE 12.34 TO EUROS
+            MULTIPLY euros BY 100 GIVING cents.
+            DISPLAY "#" EUROS "# equal #" cents '#'.
+            Move 1500 to DOLLARS
+            Display "Invoice amount #1 is " DOLLARS '.'.
+            Move 12.34 to DOLLARS
+            Display "Invoice amount #2 is " DOLLARS '.'.
+ 
+            GOBACK
+            .
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ #EUR 12.34# equal #1,234 ct (EUR)#
+ Invoice amount #1 is $US1,500.00.
+ Invoice amount #2 is    $US12.34.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,106 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  SRC1          COMP-2 VALUE 11.55.
+        01  DST1          COMP-1.
+        01  SRC2          COMP-1 VALUE 11.55.
+        01  DST2          COMP-2.
+ 
+        PROCEDURE        DIVISION.
+            MOVE SRC1 TO DST1.
+            IF DST1 not = 11.55
+                DISPLAY 'error: move/compare FLOAT-LONG to FLOAT-SHORT failed ' DST1
+                END-DISPLAY
+            END-IF.
+ 
+            MOVE SRC1 TO DST2.
+            IF DST1 not = 11.55
+                DISPLAY 'error: move/compare FLOAT-LONG to FLOAT-LONG failed ' DST2
+                END-DISPLAY
+            END-IF.
+ 
+            MOVE ZERO TO DST1.
+            MOVE ZERO TO DST2.
+ 
+            MOVE SRC2 TO DST1.
+            IF DST1 not = 11.55
+                DISPLAY 'error: move/compare FLOAT-SHORT to FLOAT-SHORT failed: ' DST1
+                END-DISPLAY
+            END-IF.
+ 
+            MOVE SRC2 TO DST2.
+            IF DST2 not = 11.5500001907348633
+                DISPLAY 'error: move/compare COMP-2 to literal failed: ' DST2
+                END-DISPLAY
+            END-IF.
+ 
+            MOVE ZERO TO DST1.
+            IF not (DST1 = 0 AND 0.0)
+                DISPLAY "Zero compare failed: " DST1 END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.0 TO DST1.
+            IF not (DST1 = 0 AND 0.0)
+                DISPLAY "Negative Zero compare failed: " DST1
+                END-DISPLAY
+            END-IF.
+ 
+            MOVE 1.1234567 TO DST1.
+            MOVE DST1 TO DST2.
+            IF DST2 not = 1.12345671653747559
+                DISPLAY "move/compare number to FLOAT to DOUBLE failed: "
+                        DST1 " - " DST2
+                END-DISPLAY
+            END-IF.
+ 
+       * Check for Tolerance
+            MOVE 1.1234567 TO DST1.
+            MOVE 1.1234568 TO DST2.
+            IF DST1 = DST2 THEN
+                DISPLAY 'move/compare of very near numbers failed (not identical): ' DST1 " - " DST2
+                END-DISPLAY
+            END-IF.
+ 
+       * Within tolerance by definition, therefore not checked
+       *     MULTIPLY 10000000000 BY DST1 DST2 END-MULTIPLY.
+       *     IF DST1 = DST2 THEN
+       *         DISPLAY "compare of very near numbers computed failed (id
+       *-                "entical): " DST1 " - " DST2
+       *         END-DISPLAY
+       *     END-IF.
+ 
+            MOVE 1.1234567 TO DST1.
+            MOVE 1.1234569 TO DST2.
+            IF DST1 = DST2 THEN
+                DISPLAY 'move/compare of near equal numbers failed (identical): ' DST1 " - " DST2
+                END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.0001 TO DST1.
+            MOVE 0.0000 TO DST2.
+            IF DST1 = DST2 THEN
+                DISPLAY 'move/compare of nearly equal very small numbers failed  (identical): ' DST1 " - " DST2
+                END-DISPLAY
+            END-IF.
+ 
+            MOVE 1000001.0 TO DST1.
+            MOVE 1000000.0 TO DST2.
+            IF DST1 = DST2 THEN
+                DISPLAY 'move/compare of nearly equal big numbers failed (identical): ' DST1 " - " DST2
+                END-DISPLAY
+            END-IF.
+ 
+       * Within tolerance by definition, therefore not checked
+       *     MOVE 1000000000.0 TO DST1.
+       *     MOVE 1000000001.0 TO DST2.
+       *     IF DST1 = DST2 THEN
+       *         DISPLAY 'move/compare of nearly equal very big numbers fa
+       *-                'iled (identical): ' DST1 " - " DST2
+       *         END-DISPLAY
+       *     END-IF.
+ 
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Class_check_with_reference_modification.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Class_check_with_reference_modification.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Class_check_with_reference_modification.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Class_check_with_reference_modification.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X             PIC X(6) VALUE "123   ".
+        PROCEDURE        DIVISION.
+            IF X(1:3) NUMERIC
+               STOP RUN
+            END-IF.
+            DISPLAY "NG" NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,43 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  VAR          COMP-2 VALUE 0.0.
+ 
+        PROCEDURE        DIVISION.
+            MOVE 9.899999999999E+304 TO VAR
+            IF VAR < 0
+                DISPLAY "error: compare " VAR " < " 0 " failed!"
+                END-DISPLAY
+            END-IF.
+            IF VAR < 9.799999999999E+304
+                DISPLAY 'error: compare ' VAR ' < ' 9.799999999999E+304
+                        ' failed!'
+                END-DISPLAY
+            END-IF.
+            IF VAR > 9.999999999999E+304
+                DISPLAY 'error: compare ' VAR ' > ' 9.999999999999E+304
+                        ' failed!'
+                END-DISPLAY
+            END-IF.
+            MOVE -9.899999999999E+304 TO VAR
+            IF VAR > 0
+                DISPLAY 'error: compare ' VAR ' > ' 0
+                        ' failed!'
+                END-DISPLAY
+            END-IF.
+            IF VAR < -9.999999999999E+304
+                DISPLAY 'error: compare ' VAR ' < ' -9.999999999999E+304
+                        ' failed!'
+                END-DISPLAY
+            END-IF.
+            IF VAR > -9.799999999999E+304
+                DISPLAY 'error: compare ' VAR ' > ' -9.799999999999E+304
+                        ' failed!'
+                END-DISPLAY
+            END-IF.
+ 
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,76 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Complex_HEX__VALUE_and_MOVE.out" }
+ 
+         identification division.
+         program-id. hex-init.
+         data division.
+         working-storage section.
+         01  var-01020304.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  X'01020304'.
+                 10 filler3      pic x(2) VALUE "33".
+             05 as-pointer redefines filler1 usage pointer.
+ 
+         01  var-low.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  LOW-VALUES.
+                 10 filler3      pic x(2) VALUE "33".
+             05 as-pointer redefines filler1 usage pointer.
+         01  var-space.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  SPACE.
+                 10 filler3      pic x(2) VALUE "33".
+             05 as-pointer redefines filler1 usage pointer.
+         01  var-quote.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  QUOTE.
+                 10 filler3      pic x(2) VALUE "33".
+             05 as-pointer redefines filler1 usage pointer.
+         01  var-zero.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  ZERO.
+                 10 filler3      pic x(2) VALUE "33".
+             05 as-pointer redefines filler1 usage pointer.
+         01  var-high.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  HIGH-VALUES.
+                 10 filler3      pic x(2) VALUE "33".
+             05 as-pointer redefines filler1 usage pointer.
+         01  move-target.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE "3333".
+                 10 filler3      pic x(2) VALUE "33".
+             05 as-pointer redefines filler1 usage pointer.
+         procedure division.
+         display "the value is    " as-pointer of var-01020304.
+         display "should be       0x3333040302013333"
+         display "var-low  :      " as-pointer of var-low
+         display "var-space:      " as-pointer of var-space
+         display "var-quote:      " as-pointer of var-quote
+         display "var-zero :      " as-pointer of var-zero
+         display "var-high :      " as-pointer of var-high
+         display "initial         " as-pointer of move-target
+         move low-value to as-value of move-target
+         display "low-value       " as-pointer of move-target
+         move space to as-value of move-target
+         display "space           " as-pointer of move-target
+         move quote to as-value of move-target
+         display "quote           " as-pointer of move-target
+         move zeroes to as-value of move-target
+         display "zeroes          " as-pointer of move-target
+         move high-value to as-value of move-target
+         display "high-value      " as-pointer of move-target
+         move X'01020304' to as-value of move-target
+         display "01020304        " as-pointer of move-target
+         move "33333333" to move-target
+         move X'00' to filler3 of move-target(1:1)
+         display "ref-mod         " as-pointer of move-target
+         stop run.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+ the value is    0x3333040302013333
+ should be       0x3333040302013333
+ var-low  :      0x3333000000003333
+ var-space:      0x3333202020203333
+ var-quote:      0x3333222222223333
+ var-zero :      0x3333303030303333
+ var-high :      0x3333ffffffff3333
+ initial         0x3333333333333333
+ low-value       0x3333000000003333
+ space           0x3333202020203333
+ quote           0x3333222222223333
+ zeroes          0x3333303030303333
+ high-value      0x3333ffffffff3333
+ 01020304        0x3333040302013333
+ ref-mod         0x3300333333333333
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Complex_IF.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Complex_IF.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Complex_IF.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Complex_IF.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,23 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Complex_IF.out" }
+         identification division.
+         program-id. phonebook.
+         data division.
+         working-storage section.
+         01 name1 pic x(10) value "one".
+         01 name2 pic x(10) value "two".
+         01 flag  pic x     value 'a'.
+         procedure division.
+         move 'l' to flag
+         perform checkit
+         goback.
+         checkit.
+             if (name1 = name2 and flag = "F" or "f" )
+                 or flag = "L" or "l"
+             then
+                display "the test is TRUE"
+             else
+                display "the test is FALSE"
+             end-if.
+         end program phonebook.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Complex_IF.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Complex_IF.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Complex_IF.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Complex_IF.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ the test is TRUE
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Concatenation_operator.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Concatenation_operator.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Concatenation_operator.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Concatenation_operator.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Concatenation_operator.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        77 STR           PIC X(05).
+        PROCEDURE        DIVISION.
+            MOVE "OK" & " "
+             & "OK"
+              TO STR
+            DISPLAY STR NO ADVANCING
+            END-DISPLAY
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Concatenation_operator.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Concatenation_operator.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Concatenation_operator.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Concatenation_operator.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ OK OK
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__3_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__3_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__3_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__3_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,42 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  X   PIC X(5) GLOBAL  VALUE "prog1".
+        PROCEDURE        DIVISION.
+            IF X NOT = "prog1"
+               DISPLAY X
+               END-DISPLAY
+            END-IF.
+            CALL "prog2"
+            END-CALL.
+            STOP RUN.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog2.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         01  X   PIC X(5) GLOBAL  VALUE "prog2".
+         PROCEDURE        DIVISION.
+             IF X NOT = "prog2"
+                DISPLAY X
+                END-DISPLAY
+             END-IF.
+             CALL "prog3"
+             END-CALL.
+             EXIT PROGRAM.
+         END PROGRAM prog2.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog3 COMMON.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         PROCEDURE        DIVISION.
+             IF X NOT = "prog1"
+                DISPLAY X
+                END-DISPLAY
+             END-IF.
+             EXIT PROGRAM.
+         END PROGRAM prog3.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,46 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Contained_program_visibility__4_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        PROCEDURE        DIVISION.
+            DISPLAY "P1" NO ADVANCING
+            END-DISPLAY.
+            CALL "prog2"
+            END-CALL
+            CALL "prog3"
+            END-CALL
+            STOP RUN.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog2.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         PROCEDURE        DIVISION.
+             DISPLAY "P2" NO ADVANCING
+             END-DISPLAY.
+             EXIT PROGRAM.
+         END PROGRAM prog2.
+        END PROGRAM prog.
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog3.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        PROCEDURE        DIVISION.
+            DISPLAY "P3" NO ADVANCING
+            END-DISPLAY.
+            CALL "prog2"
+            END-CALL.
+            EXIT PROGRAM.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog2.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         PROCEDURE        DIVISION.
+             DISPLAY "P4" NO ADVANCING
+             END-DISPLAY.
+             EXIT PROGRAM.
+         END PROGRAM prog2.
+        END PROGRAM prog3.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Contained_program_visibility__4_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ P1P2P3P4
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Context_sensitive_words__1_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  BYTE-LENGTH  PIC 9.
+        01  X            CONSTANT AS BYTE-LENGTH OF BYTE-LENGTH.
+        PROCEDURE        DIVISION.
+            MOVE X TO BYTE-LENGTH.
+            DISPLAY BYTE-LENGTH NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__1_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ 1
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Context_sensitive_words__2_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  YYYYMMDD     PIC 9 VALUE 0.
+        01  X            PIC X(16).
+        PROCEDURE        DIVISION.
+            ACCEPT X FROM DATE YYYYMMDD
+            END-ACCEPT.
+            DISPLAY YYYYMMDD NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__2_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ 0
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Context_sensitive_words__3_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  YYYYDDD      PIC 9 VALUE 0.
+        01  X            PIC X(16).
+        PROCEDURE        DIVISION.
+            ACCEPT X FROM DAY YYYYDDD
+            END-ACCEPT.
+            DISPLAY YYYYDDD NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__3_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ 0
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,17 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Context_sensitive_words__4_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        REPOSITORY.
+            FUNCTION ALL INTRINSIC.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  INTRINSIC    PIC 9 VALUE 0.
+        PROCEDURE        DIVISION.
+            DISPLAY INTRINSIC NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__4_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ 0
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Context_sensitive_words__5_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog RECURSIVE.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  RECURSIVE    PIC 9 VALUE 0.
+        PROCEDURE        DIVISION.
+            DISPLAY RECURSIVE NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__5_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ 0
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,14 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Context_sensitive_words__6_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  NORMAL       PIC 9 VALUE 0.
+        PROCEDURE        DIVISION.
+            DISPLAY NORMAL NO ADVANCING *> Intentionally no period or END-DISPLAY
+            STOP RUN NORMAL.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__6_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ 0
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,19 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Context_sensitive_words__7_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X               PIC 9 VALUE 0.
+        01  AWAY-FROM-ZERO  PIC 9 VALUE 0.
+        PROCEDURE        DIVISION.
+            COMPUTE X ROUNDED MODE AWAY-FROM-ZERO
+                    AWAY-FROM-ZERO = 1.1
+            END-COMPUTE
+            DISPLAY X AWAY-FROM-ZERO NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__7_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ 21
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,19 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Context_sensitive_words__8_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  UNBNDED.
+            03 ATTRIBUTES  PIC 9 VALUE 0.
+        01  LOC.
+            03 NAMESPACE   PIC 9 VALUE 1.
+        PROCEDURE        DIVISION.
+            DISPLAY UNBNDED ATTRIBUTES
+                    NAMESPACE IN LOC
+                    NO ADVANCING.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Context_sensitive_words__8_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ 001
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DEBUG_Line.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DEBUG_Line.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DEBUG_Line.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DEBUG_Line.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DEBUG_Line.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+        SOURCE-COMPUTER.
+            Linux WITH DEBUGGING MODE.
+        PROCEDURE DIVISION.
+       *> Success is printing this message. If nothing comes out, the
+       *> test fails.
+       D    DISPLAY "DEBUG MESSAGE" NO ADVANCING.
+        EXIT PROGRAM.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DEBUG_Line.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DEBUG_Line.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DEBUG_Line.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DEBUG_Line.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ DEBUG MESSAGE
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,18 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DECIMAL-POINT_is_COMMA__1_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        SPECIAL-NAMES.
+            DECIMAL-POINT    IS COMMA.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC 99V99.
+        PROCEDURE        DIVISION.
+            MOVE FUNCTION MIN (3,,,,,,5) TO X.
+            DISPLAY X
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__1_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ 00,50
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,18 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DECIMAL-POINT_is_COMMA__2_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        SPECIAL-NAMES.
+            DECIMAL-POINT    IS COMMA.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC 99V99.
+        PROCEDURE        DIVISION.
+            MOVE FUNCTION MIN (3,,,,,, 5) TO X.
+            DISPLAY X
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__2_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ 03,00
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,18 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DECIMAL-POINT_is_COMMA__3_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        SPECIAL-NAMES.
+            DECIMAL-POINT    IS COMMA.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC 99V99.
+        PROCEDURE        DIVISION.
+            MOVE FUNCTION MIN (3,,,,,, 1,5) TO X.
+            DISPLAY X
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__3_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ 01,50
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,18 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DECIMAL-POINT_is_COMMA__4_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        SPECIAL-NAMES.
+            DECIMAL-POINT    IS COMMA.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC 99V99.
+        PROCEDURE        DIVISION.
+            MOVE FUNCTION MIN (3, 1,5) TO X.
+            DISPLAY X
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ 01,50
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,23 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DECIMAL-POINT_is_COMMA__5_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        SPECIAL-NAMES.
+            DECIMAL-POINT    IS COMMA.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC 99V99.
+        PROCEDURE        DIVISION.
+            COMPUTE X=1 + ,1
+            END-COMPUTE
+            DISPLAY X
+            END-DISPLAY.
+            COMPUTE X=1*,1
+            END-COMPUTE
+            DISPLAY X
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,3 ----
+ 01,10
+ 00,10
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,82 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DISPLAY_and_assignment_NumericDisplay.out" }
+         identification      division.
+         program-id.         prog.
+         data                division.
+         working-storage     section.
+         01  vars.
+          05 vars-display-1.
+           10 var01a         pic  99v999                     display       value   54.321    .
+           10 var01b         pic s99v999                     display       value   54.321    .
+           10 var01c         pic s99v999  leading            display       value  -54.321    .
+           10 var01d         pic s99v999  trailing           display       value   54.321    .
+           10 var01e         pic s99v999  leading  separate  display       value  -54.321    .
+           10 var01f         pic s99v999  trailing separate  display       value   54.321    .
+          05 vars-display-2.
+           10 var01g         pic  9999ppp                    display       value   4321000   .
+           10 var01h         pic s9999ppp                    display       value   4321000   .
+           10 var01i         pic s9999ppp  leading           display       value  -4321000   .
+           10 var01j         pic s9999ppp  trailing          display       value   4321000   .
+           10 var01k         pic s9999ppp  leading  separate display       value  -4321000   .
+           10 var01l         pic s9999ppp  trailing separate display       value   4321000   .
+          05 vars-display-3.
+           10 var01m         pic  ppp9999                    display       value   .0001234  .
+           10 var01n         pic sppp9999                    display       value   .0001234  .
+           10 var01o         pic sppp9999  leading           display       value  -.0001234  .
+           10 var01p         pic sppp9999  trailing          display       value   .0001234  .
+           10 var01q         pic sppp9999  leading  separate display       value  -.0001234  .
+           10 var01r         pic sppp9999  trailing separate display       value   .0001234  .
+         procedure           division.
+         display var01a
+         display var01b
+         display var01c
+         display var01d
+         display var01e
+         display var01f
+         display var01g
+         display var01h
+         display var01i
+         display var01j
+         display var01k
+         display var01l
+         display var01m
+         display var01n
+         display var01o
+         display var01p
+         display var01q
+         display var01r
+ 
+         move  12.345 to var01a var01c var01e
+         move -12.345 to var01b var01d var01f
+ 
+         move  9876000 to var01g var01i var01k
+         move -9876000 to var01h var01j var01l
+ 
+         move  .0006789 to var01m var01o var01q
+         move -.0006789 to var01n var01p var01r
+ 
+         display var01a
+         display var01b
+         display var01c
+         display var01d
+         display var01e
+         display var01f
+         display var01g
+         display var01h
+         display var01i
+         display var01j
+         display var01k
+         display var01l
+         display var01m
+         display var01n
+         display var01o
+         display var01p
+         display var01q
+         display var01r
+ 
+         continue.
+         quit.
+         goback.
+         end program         prog.
+ 
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_and_assignment_NumericDisplay.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,37 ----
+ 54.321
+ +54.321
+ -54.321
+ +54.321
+ -54.321
+ 54.321+
+ 4321000
+ +4321000
+ -4321000
+ +4321000
+ -4321000
+ 4321000+
+ .0001234
+ +.0001234
+ -.0001234
+ +.0001234
+ -.0001234
+ .0001234+
+ 12.345
+ -12.345
+ +12.345
+ -12.345
+ +12.345
+ 12.345-
+ 9876000
+ -9876000
+ +9876000
+ -9876000
+ +9876000
+ 9876000-
+ .0006789
+ -.0006789
+ +.0006789
+ -.0006789
+ +.0006789
+ .0006789-
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,38 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DISPLAY_data_items_with_MOVE_statement.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X-ABC         PIC XXX   VALUE "abc".
+        01 X-123         PIC 999   VALUE  123.
+        01 X-P123        PIC S999  VALUE +123.
+        01 X-N123        PIC S999  VALUE -123.
+        01 X-12-3        PIC 99V9  VALUE  12.3.
+        01 X-P12-3       PIC S99V9 VALUE +12.3.
+        01 X-N12-3       PIC S99V9 VALUE -12.3.
+        PROCEDURE        DIVISION.
+            MOVE "abc" TO X-ABC.
+            DISPLAY X-ABC
+            END-DISPLAY.
+            MOVE  123  TO X-123.
+            DISPLAY X-123
+            END-DISPLAY.
+            MOVE +123  TO X-P123.
+            DISPLAY X-P123
+            END-DISPLAY.
+            MOVE -123  TO X-N123.
+            DISPLAY X-N123
+            END-DISPLAY.
+            MOVE  12.3 TO X-12-3.
+            DISPLAY X-12-3
+            END-DISPLAY.
+            MOVE +12.3 TO X-P12-3.
+            DISPLAY X-P12-3
+            END-DISPLAY.
+            MOVE -12.3 TO X-N12-3.
+            DISPLAY X-N12-3
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_MOVE_statement.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,8 ----
+ abc
+ 123
+ +123
+ -123
+ 12.3
+ +12.3
+ -12.3
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,31 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DISPLAY_data_items_with_VALUE_clause.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X-ABC         PIC XXX   VALUE "abc".
+        01 X-123         PIC 999   VALUE  123.
+        01 X-P123        PIC S999  VALUE +123.
+        01 X-N123        PIC S999  VALUE -123.
+        01 X-12-3        PIC 99V9  VALUE  12.3.
+        01 X-P12-3       PIC S99V9 VALUE +12.3.
+        01 X-N12-3       PIC S99V9 VALUE -12.3.
+        PROCEDURE        DIVISION.
+            DISPLAY X-ABC
+            END-DISPLAY.
+            DISPLAY X-123
+            END-DISPLAY.
+            DISPLAY X-P123
+            END-DISPLAY.
+            DISPLAY X-N123
+            END-DISPLAY.
+            DISPLAY X-12-3
+            END-DISPLAY.
+            DISPLAY X-P12-3
+            END-DISPLAY.
+            DISPLAY X-N12-3
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_data_items_with_VALUE_clause.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,8 ----
+ abc
+ 123
+ +123
+ -123
+ 12.3
+ +12.3
+ -12.3
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,24 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        CONFIGURATION    SECTION.
+        SPECIAL-NAMES.
+            DECIMAL-POINT    IS COMMA.
+        PROCEDURE        DIVISION.
+            DISPLAY  12,3
+            END-DISPLAY.
+            DISPLAY +12,3
+            END-DISPLAY.
+            DISPLAY -12,3
+            END-DISPLAY.
+            DISPLAY 1,23E0
+            END-DISPLAY.
+            DISPLAY +1,23E0
+            END-DISPLAY.
+            DISPLAY -1,23E0
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/DISPLAY_literals__DECIMAL-POINT_is_COMMA.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,7 ----
+ 12,3
+ 12,3
+ -12,3
+ 1,23
+ 1,23
+ -1,23
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,30 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  x PIC 9 VALUE 1.
+        01  y PIC 9.
+        01  a     COMP-1 VALUE 1.E20.
+        01  b     COMP-1 VALUE 1.E20.
+        PROCEDURE DIVISION.
+            DIVIDE x BY 0.1 GIVING y
+            DISPLAY FUNCTION TRIM(FUNCTION EXCEPTION-STATUS)
+            IF FUNCTION TRIM(FUNCTION EXCEPTION-STATUS)
+            NOT = 'EC-SIZE-TRUNCATION'
+               DISPLAY 'Wrong/missing exception: '
+                       FUNCTION EXCEPTION-STATUS
+               END-DISPLAY
+            END-IF.
+         SET LAST EXCEPTION TO OFF
+            MULTIPLY a BY b GIVING b
+            DISPLAY FUNCTION TRIM(FUNCTION EXCEPTION-STATUS)
+            IF FUNCTION TRIM(FUNCTION EXCEPTION-STATUS)
+            NOT = 'EC-SIZE-OVERFLOW'
+               DISPLAY 'Wrong/missing exception: '
+                       FUNCTION EXCEPTION-STATUS
+               END-DISPLAY
+            END-IF.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EC-SIZE-TRUNCATION_EC-SIZE-OVERFLOW.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,3 ----
+ EC-SIZE-TRUNCATION
+ EC-SIZE-OVERFLOW
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,64 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  x PIC 9 VALUE 0.
+        01  y PIC 9 VALUE 0.
+        01  fx comp-2 VALUE 0.
+        01  fy comp-2 VALUE 0.
+        PROCEDURE DIVISION.
+            DISPLAY "Fixed-point divide by zero:"
+            DIVIDE x BY y GIVING y
+            DISPLAY "1 - """ FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """"
+            IF FUNCTION TRIM(FUNCTION EXCEPTION-STATUS)
+            NOT = 'EC-SIZE-ZERO-DIVIDE'
+               DISPLAY '1 Wrong/missing exception: '
+                       FUNCTION EXCEPTION-STATUS
+               END-DISPLAY
+            END-IF
+            SET LAST EXCEPTION TO OFF
+            DISPLAY "2 - """ FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """"
+            IF FUNCTION EXCEPTION-STATUS NOT = SPACES
+               DISPLAY '2 Exception is not empty after reset: '
+                       FUNCTION EXCEPTION-STATUS
+               END-DISPLAY
+            END-IF
+            MOVE 0 TO y
+            COMPUTE y = x - 1 / y + 6.5
+            DISPLAY "3 - """ FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """"
+            IF FUNCTION TRIM(FUNCTION EXCEPTION-STATUS)
+            NOT = 'EC-SIZE-ZERO-DIVIDE'
+               DISPLAY '3 Wrong/missing exception: '
+                       FUNCTION EXCEPTION-STATUS
+               END-DISPLAY
+            END-IF.
+            SET LAST EXCEPTION TO OFF
+            DISPLAY "Floating-point divide by zero:"
+            DIVIDE fx BY fy GIVING fy
+            DISPLAY "4 - """ FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """"
+            IF FUNCTION TRIM(FUNCTION EXCEPTION-STATUS)
+            NOT = 'EC-SIZE-ZERO-DIVIDE'
+               DISPLAY '4 Wrong/missing exception: '
+                       FUNCTION EXCEPTION-STATUS
+               END-DISPLAY
+            END-IF
+            SET LAST EXCEPTION TO OFF
+            DISPLAY "5 - """ FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """"
+            IF FUNCTION EXCEPTION-STATUS NOT = SPACES
+               DISPLAY '5 Exception is not empty after reset: '
+                       FUNCTION EXCEPTION-STATUS
+               END-DISPLAY
+            END-IF
+            MOVE 0 TO fy
+            COMPUTE fy = fx - 1 / fy + 6.5
+            DISPLAY "6 - """ FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """"
+            IF FUNCTION TRIM(FUNCTION EXCEPTION-STATUS)
+            NOT = 'EC-SIZE-ZERO-DIVIDE'
+               DISPLAY '6 Wrong/missing exception: '
+                       FUNCTION EXCEPTION-STATUS
+               END-DISPLAY
+            END-IF.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EC-SIZE-ZERO-DIVIDE__fixed_and_float.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,9 ----
+ Fixed-point divide by zero:
+ 1 - "EC-SIZE-ZERO-DIVIDE"
+ 2 - ""
+ 3 - "EC-SIZE-ZERO-DIVIDE"
+ Floating-point divide by zero:
+ 4 - "EC-SIZE-ZERO-DIVIDE"
+ 5 - ""
+ 6 - "EC-SIZE-ZERO-DIVIDE"
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PARAGRAPH.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PARAGRAPH.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PARAGRAPH.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PARAGRAPH.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,21 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 INDVAL        PIC 9(4).
+        PROCEDURE        DIVISION.
+        A01.
+            PERFORM VARYING INDVAL FROM 1 BY 1 UNTIL INDVAL > 10
+             IF INDVAL > 2
+                EXIT PARAGRAPH
+             END-IF
+            END-PERFORM.
+        A02.
+            IF INDVAL NOT = 3
+               DISPLAY INDVAL NO ADVANCING
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/EXIT_PERFORM.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        PROCEDURE        DIVISION.
+            PERFORM 2 TIMES
+              DISPLAY "OK" NO ADVANCING
+              END-DISPLAY
+              EXIT PERFORM
+              DISPLAY "NOT OK"
+              END-DISPLAY
+            END-PERFORM
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ OK
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/EXIT_PERFORM_CYCLE.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        PROCEDURE        DIVISION.
+            PERFORM 2 TIMES
+              DISPLAY "OK" NO ADVANCING
+              END-DISPLAY
+              EXIT PERFORM CYCLE
+              DISPLAY "NOT OK"
+              END-DISPLAY
+            END-PERFORM
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_PERFORM_CYCLE.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ OKOK
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_SECTION.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_SECTION.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/EXIT_SECTION.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/EXIT_SECTION.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,25 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 INDVAL        PIC 9(4).
+        PROCEDURE        DIVISION.
+        A01 SECTION.
+        A011.
+            PERFORM VARYING INDVAL FROM 1 BY 1 UNTIL INDVAL > 10
+             IF INDVAL > 2
+                EXIT SECTION
+             END-IF
+            END-PERFORM.
+        A012.
+            DISPLAY INDVAL NO ADVANCING
+            END-DISPLAY.
+        A02 SECTION.
+            IF INDVAL NOT = 3
+               DISPLAY INDVAL NO ADVANCING
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,43 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/FLOAT-LONG_with_SIZE_ERROR.out" }
+ 
+        identification division.
+        program-id. prog.
+        data division.
+        working-storage section.
+       *------------------------
+        77 counter             pic s9(4) binary value zero.
+       * FLOAT-LONG
+        77 doubleValue         COMP-2 value 2.
+        77 lastDoubleValue     COMP-2.
+       ******************************************************************
+        procedure division.
+        main section.
+            perform varying counter from 1 by 1 until
+                            counter > 1060
+       *>      display 'counter: ' counter ', value: ' doubleValue
+               compute doubleValue = doubleValue * 2
+                    ON SIZE ERROR
+                       display 'SIZE ERROR raised'
+                       end-display
+                       display 'SIZE ERROR, last value = ' doubleValue
+                       end-display
+                       exit perform
+                not ON SIZE ERROR
+                       if doubleValue > lastdoubleValue
+                          move doubleValue to lastdoubleValue
+                       else
+                          display 'math ERROR, last value > current: '
+                                  lastdoubleValue ' > ' doubleValue
+                          end-display
+                          exit perform
+                       end-if
+               end-compute
+            end-perform
+            display "counter is " counter
+            if not (counter >= 1023 and <=1025)
+               display ' '
+               display 'counter is ' counter
+            end-if
+            goback.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-LONG_with_SIZE_ERROR.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ SIZE ERROR raised
+ SIZE ERROR, last value = 8.98846567431157954E+307
+ counter is +1023
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,164 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+ 
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  CMP1                        COMP-1.
+        01  SV1                         COMP-1.
+        01  CMP2                        COMP-2.
+        01  SV2                         COMP-2.
+ 
+        PROCEDURE DIVISION.
+        CND-000.
+ 
+            DISPLAY "--- COMP-1 ---"
+            COMPUTE CMP1 = (((1.0E7 / 2.1E0) / 3.1E0) - 5.0E-1) * 6.0E0
+            DISPLAY "A: " CMP1
+            COMPUTE CMP1 = (((1.0E7 / 2.9E0) / 3.9E0) - 5.0E-1) * 6.0E0
+            DISPLAY "B: " CMP1
+            MOVE ZERO TO CMP1.
+            COMPUTE CMP1 = 1.0E3 / 2.1E0
+                    ON SIZE ERROR DISPLAY "Z: " CMP1 " SIZE ERROR"
+                NOT ON SIZE ERROR DISPLAY "Z: " CMP1 " IS OK"
+            END-COMPUTE.
+ 
+            DISPLAY "    ..."
+            DISPLAY "--- COMP-2 ---"
+            COMPUTE CMP2 = (((1.0E7 / 2.1E0) / 3.1E0) - 5.0E-1) * 6.0E0
+       *>   because of possible rounding of intermediates and different
+       *>   precision depending on math library / version: plain DISPLAY
+            IF CMP2 >= 9216586.86175114 AND <= 9216586.86175116
+              DISPLAY "A ~ 9216586.86175115"
+            ELSE
+              DISPLAY "A: " CMP2
+            END-IF
+            COMPUTE CMP2 = (((1.0E7 / 2.9E0) / 3.9E0) - 5.0E-1) * 6.0E0
+            IF CMP2 >= 5305036.7877983 AND <= 5305036.7877985
+              DISPLAY "B ~ 5305036.787798408"
+            ELSE
+              DISPLAY "B: " CMP2
+            END-IF
+            MOVE ZERO TO CMP2.
+            COMPUTE CMP2 = 1.0E3 / 2.1E0
+                    ON SIZE ERROR DISPLAY "Z: " CMP2 " SIZE ERROR"
+                NOT ON SIZE ERROR
+       *>        see note above
+                 IF CMP2 >= 476.1904761904760 AND <= 476.1904761904763
+                   DISPLAY "Z ~ 476.1904761904761 IS OK"
+                 ELSE
+                   DISPLAY "Z: " CMP2 " IS OK"
+                 END-IF
+            END-COMPUTE.
+ 
+            DISPLAY "    ..."
+            DISPLAY "--- 99 + 1 / 3 ---"
+            MOVE -1 TO CMP1, CMP2.
+            COMPUTE CMP1 = 99 + 1 / 3
+                    ON SIZE ERROR DISPLAY "CMP1: " CMP1 " SIZE ERROR"
+                NOT ON SIZE ERROR DISPLAY "CMP1: " CMP1 " IS OK"
+            END-COMPUTE.
+            COMPUTE CMP2 = 99 + 1 / 3
+                    ON SIZE ERROR DISPLAY "CMP2: " CMP2 " SIZE ERROR"
+                NOT ON SIZE ERROR DISPLAY "CMP2: " CMP2 " IS OK"
+            END-COMPUTE.
+ 
+            DISPLAY "    ..."
+            DISPLAY "--- 99 ---"
+            MOVE -1 TO CMP1, CMP2.
+            COMPUTE CMP1 = 99
+                    ON SIZE ERROR DISPLAY "CMP1: " CMP1 " SIZE ERROR"
+                NOT ON SIZE ERROR DISPLAY "CMP1: " CMP1 " IS OK"
+            END-COMPUTE.
+            COMPUTE CMP2 = 99
+                    ON SIZE ERROR DISPLAY "CMP2: " CMP2 " SIZE ERROR"
+                NOT ON SIZE ERROR DISPLAY "CMP2: " CMP2 " IS OK"
+            END-COMPUTE.
+ 
+        CND-100-OK.
+            DISPLAY "    ..."
+            DISPLAY "--- Test overflow ---"
+ 
+            MOVE 990000 TO CMP1.
+            PERFORM 6500 TIMES
+              MOVE CMP1 TO SV1
+              COMPUTE CMP1 = CMP1 * 10
+                     ON SIZE ERROR GO TO CND-350-ERR
+              END-COMPUTE
+              IF CMP1 < 9.0
+                GO TO CND-350-ERR
+              END-IF
+            END-PERFORM.
+            DISPLAY "CMP1: " CMP1 " IS OK".
+            GO TO CND-350-OK.
+        CND-350-ERR.
+            DISPLAY "CMP1: after " SV1 " SIZE ERROR".
+ 
+        CND-350-OK.
+            MOVE 9900000000 TO CMP2.
+            PERFORM 6500 TIMES
+              MOVE CMP2 TO SV2
+              COMPUTE CMP2 = CMP2 * 10
+                     ON SIZE ERROR GO TO CND-380-ERR
+              END-COMPUTE
+              IF CMP2 < 9.0
+                GO TO CND-380-ERR
+              END-IF
+            END-PERFORM.
+            DISPLAY "CMP2: " CMP2 " IS OK".
+            GO TO CND-500-OK.
+        CND-380-ERR.
+       *>   because of possible rounding of intermediates and different
+       *>   precision depending on math library / version: plain DISPLAY
+            IF SV2 >= 9.899999999999E+307 AND
+                   <= 9.900000000001E+307
+              DISPLAY "CMP2: after ~ 9.899999999999781E+307 SIZE ERROR"
+            ELSE
+              DISPLAY "CMP2: after " SV2 " SIZE ERROR"
+            END-IF
+            .
+ 
+        CND-500-OK.
+            MOVE 0.000000099 TO CMP1.
+            PERFORM 350 TIMES
+              MOVE CMP1 TO SV1
+              COMPUTE CMP1 = CMP1 / 10.0
+                     ON SIZE ERROR GO TO CND-500-ERR
+              END-COMPUTE
+              IF CMP1 = 0.0
+                GO TO CND-500-ERR
+              END-IF
+            END-PERFORM.
+            DISPLAY "CMP1: " CMP1 " IS OK".
+            GO TO CND-600-OK.
+        CND-500-ERR.
+            DISPLAY "CMP1: after " SV1 " SIZE ERROR".
+ 
+        CND-600-OK.
+            MOVE 0.000000099 TO CMP2.
+            PERFORM 350 TIMES
+              MOVE CMP2 TO SV2
+              COMPUTE CMP2 = CMP2 / 10.0
+                     ON SIZE ERROR GO TO CND-600-ERR
+              END-COMPUTE
+              IF CMP2 = 0.0
+                GO TO CND-600-ERR
+              END-IF
+            END-PERFORM.
+            DISPLAY "CMP2: " CMP2 " IS OK".
+            GO TO CND-600-XIT.
+        CND-600-ERR.
+            IF SV2 >= 9.8813129168249E-324 AND <= 9.881312916825E-324
+              DISPLAY "CMP2: after ~ 9.881312916824931E-324 SIZE ERROR"
+            ELSE
+              DISPLAY "CMP2: after " SV2 " SIZE ERROR"
+            END-IF
+            .
+        CND-600-XIT.
+ 
+        CND-999.
+            STOP RUN.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT___FLOAT-LONG_w_o_SIZE_ERROR.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,24 ----
+ --- COMP-1 ---
+ A: 9.216587E+06
+ B: 5.305037E+06
+ Z: 476.1904907 IS OK
+     ...
+ --- COMP-2 ---
+ A ~ 9216586.86175115
+ B ~ 5305036.787798408
+ Z ~ 476.1904761904761 IS OK
+     ...
+ --- 99 + 1 / 3 ---
+ CMP1: 99.33333588 IS OK
+ CMP2: 99.3333333333333286 IS OK
+     ...
+ --- 99 ---
+ CMP1: 99 IS OK
+ CMP2: 99 IS OK
+     ...
+ --- Test overflow ---
+ CMP1: after 9.899998274E+37 SIZE ERROR
+ CMP2: after ~ 9.899999999999781E+307 SIZE ERROR
+ CMP1: after 1.401298464E-45 SIZE ERROR
+ CMP2: after ~ 9.881312916824931E-324 SIZE ERROR
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,40 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/FLOAT-SHORT_with_SIZE_ERROR.out" }
+ 
+        identification division.
+        program-id. prog.
+ 
+        data division.
+        working-storage section.
+       *------------------------
+        77 counter             pic s9(4) binary value zero.
+       * FLOAT-SHORT (if binary-comp-1 is not active)
+        77 floatValue          COMP-1  value 2.
+        77 lastFloatValue      COMP-1.
+ 
+       ******************************************************************
+        procedure division.
+        main section.
+            perform varying counter from 1 by 1 until
+                            counter > 130
+       *>      display 'counter: ' counter ', value: ' floatValue
+               compute floatValue = floatValue * 2
+                    ON SIZE ERROR
+                       display 'SIZE ERROR, last value = ' floatValue
+                       exit perform
+                not ON SIZE ERROR
+                       if floatValue > lastFloatValue
+                          move floatValue to lastFloatValue
+                       else
+                          display 'math ERROR, last value > current: '
+                                  lastFloatValue ' > ' floatValue
+                          exit perform
+                       end-if
+               end-compute
+            end-perform
+            if counter not = 127
+               display 'counter is ' counter
+            end-if
+ 
+            goback.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FLOAT-SHORT_with_SIZE_ERROR.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ SIZE ERROR, last value = 1.701411835E+38
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,13 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/FUNCTION_SQRT__2_.out" }
+         program-id. sqbug.
+         procedure division.
+         if function sqrt (0) = 0    *>    if4034.2
+             display 'ok' else display 'bad'.
+         display "sqrt(0) " """" function trim (function exception-status) """"
+         set last exception to off
+         if function sqrt (-0.1) = 0    *>    if4034.2
+             display 'ok' else display 'bad'.
+         display "sqrt(-0.1) " """" function trim (function exception-status) """"
+         goback.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/FUNCTION_SQRT__2_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ ok
+ sqrt(0) ""
+ bad
+ sqrt(-0.1) "EC-ARGUMENT-FUNCTION"
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,33 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Fixed_continuation_indicator.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X             PIC X(333) VALUE
+            '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX
+       -    'YZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV
+       -    'WXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST
+       -    'UVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR
+       -    'STUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP
+       -             'QRSTUVWXYZ'.
+        PROCEDURE        DIVISION.
+            DISPLAY X NO ADVANCING
+            END-DISPLAY.
+            DISPLAY '_'
+            END-DISPLAY.
+            MOVE
+            "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567
+       -    "89abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345
+       -    "6789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123
+       -    "456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01
+       -     "23456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY
+       -                                                               "Z
+       -             "0123456789" TO X.
+            DISPLAY X NO ADVANCING
+            END-DISPLAY.
+            DISPLAY '_'
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Fixed_continuation_indicator.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,3 ----
+ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ                       _
+ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789                       _
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,42 ----
+       *> { dg-do compile }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        INPUT-OUTPUT     SECTION.
+        FILE-CONTROL.
+        SELECT TEST-FILE
+               ASSIGN      "TESTFILE"
+               ACCESS       DYNAMIC
+               ORGANIZATION RELATIVE
+               STATUS       TESTSTAT
+               RELATIVE KEY TESTKEY
+        .
+        DATA             DIVISION.
+        FILE             SECTION.
+        FD  TEST-FILE    GLOBAL.
+        01  TEST-REC     PIC X(4).
+        WORKING-STORAGE  SECTION.
+        01  GLOBVALS.
+            03  TESTKEY  PIC 9(4).
+            03  TESTSTAT PIC XX.
+        PROCEDURE        DIVISION.
+            OPEN  INPUT TEST-FILE.
+            CALL  "prog2"
+            END-CALL.
+            CLOSE TEST-FILE.
+            STOP RUN.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog2.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         PROCEDURE        DIVISION.
+             READ TEST-FILE
+                  INVALID KEY
+                  DISPLAY "NOK"
+                  END-DISPLAY
+             END-READ.
+             EXIT PROGRAM.
+         END PROGRAM prog2.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,42 ----
+       *> { dg-do compile }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        INPUT-OUTPUT     SECTION.
+        FILE-CONTROL.
+        SELECT TEST-FILE
+               ASSIGN      "TESTFILE"
+               ACCESS       DYNAMIC
+               ORGANIZATION INDEXED
+               STATUS       TESTSTAT
+               RECORD KEY   TESTKEY
+        .
+        DATA             DIVISION.
+        FILE             SECTION.
+        FD  TEST-FILE    GLOBAL.
+        01  TEST-REC.
+            03  TESTKEY  PIC X(4).
+        WORKING-STORAGE  SECTION.
+        01  GLOBVALS.
+            03  TESTSTAT PIC XX.
+        PROCEDURE        DIVISION.
+            OPEN  INPUT TEST-FILE.
+            CALL  "prog2"
+            END-CALL.
+            CLOSE TEST-FILE.
+            STOP RUN.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog2.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         PROCEDURE        DIVISION.
+             READ TEST-FILE
+                  INVALID KEY
+                  DISPLAY "NOK"
+                  END-DISPLAY
+             END-READ.
+             EXIT PROGRAM.
+         END PROGRAM prog2.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__3_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__3_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__3_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__3_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,41 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        INPUT-OUTPUT     SECTION.
+        FILE-CONTROL.
+        SELECT TEST-FILE
+               ASSIGN      "TESTFILE"
+               ACCESS       DYNAMIC
+               ORGANIZATION RELATIVE
+               STATUS       TESTSTAT
+               RELATIVE KEY TESTKEY
+        .
+        DATA             DIVISION.
+        FILE             SECTION.
+        FD  TEST-FILE    GLOBAL.
+        01  TEST-REC     PIC X(4).
+        WORKING-STORAGE  SECTION.
+        01  GLOBVALS.
+            03  TESTKEY  PIC 9(4).
+            03  TESTSTAT PIC XX.
+        PROCEDURE        DIVISION.
+            MOVE "00"    TO TESTSTAT.
+            CALL  "prog2"
+            END-CALL.
+            IF TESTSTAT = "00"
+               DISPLAY "Not OK"
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog2.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         PROCEDURE        DIVISION.
+             OPEN  INPUT TEST-FILE.
+             EXIT PROGRAM.
+         END PROGRAM prog2.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__4_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__4_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__4_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_FD__4_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,41 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        INPUT-OUTPUT     SECTION.
+        FILE-CONTROL.
+        SELECT TEST-FILE
+               ASSIGN      "TESTFILE"
+               ACCESS       DYNAMIC
+               ORGANIZATION INDEXED
+               STATUS       TESTSTAT
+               RECORD KEY   TESTKEY
+        .
+        DATA             DIVISION.
+        FILE             SECTION.
+        FD  TEST-FILE    GLOBAL.
+        01  TEST-REC.
+            03  TESTKEY  PIC X(4).
+        WORKING-STORAGE  SECTION.
+        01  GLOBVALS.
+            03  TESTSTAT PIC XX.
+        PROCEDURE        DIVISION.
+            MOVE "00"    TO TESTSTAT.
+            CALL  "prog2"
+            END-CALL.
+            IF TESTSTAT = "00"
+               DISPLAY "Not OK"
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog2.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         PROCEDURE        DIVISION.
+             OPEN  INPUT TEST-FILE.
+             EXIT PROGRAM.
+         END PROGRAM prog2.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,37 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/GLOBAL_at_lower_level.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  X   PIC X(5) GLOBAL  VALUE "prog1".
+        PROCEDURE        DIVISION.
+            DISPLAY X
+            END-DISPLAY.
+            CALL "prog2"
+            END-CALL
+            STOP RUN.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog2.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         01  X   PIC X(5) GLOBAL  VALUE "prog2".
+         PROCEDURE        DIVISION.
+             DISPLAY X
+             END-DISPLAY.
+             CALL "prog3"
+             END-CALL
+             EXIT PROGRAM.
+          IDENTIFICATION   DIVISION.
+          PROGRAM-ID.      prog3.
+          DATA DIVISION.
+          WORKING-STORAGE SECTION.
+          PROCEDURE        DIVISION.
+              DISPLAY X
+              END-DISPLAY.
+              EXIT PROGRAM.
+          END PROGRAM prog3.
+         END PROGRAM prog2.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_at_lower_level.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ prog1
+ prog2
+ prog2
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,37 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/GLOBAL_at_same_level.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  X   PIC X(5) GLOBAL  VALUE "prog1".
+        PROCEDURE        DIVISION.
+            DISPLAY X
+            END-DISPLAY.
+            CALL "prog2"
+            END-CALL
+            CALL "prog3"
+            END-CALL
+            STOP RUN.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog2.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         01  X   PIC X(5) GLOBAL  VALUE "prog2".
+         PROCEDURE        DIVISION.
+             DISPLAY X
+             END-DISPLAY.
+             EXIT PROGRAM.
+         END PROGRAM prog2.
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      prog3.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         PROCEDURE        DIVISION.
+             DISPLAY X
+             END-DISPLAY.
+             EXIT PROGRAM.
+         END PROGRAM prog3.
+        END PROGRAM prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/GLOBAL_at_same_level.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ prog1
+ prog2
+ prog1
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Hexadecimal_literal.out" }
+ 
+         >>DEFINE CHARSET AS 'ASCII'
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        PROCEDURE        DIVISION.
+        >>IF CHARSET = 'EBCDIC'
+            DISPLAY X"F1F2F3"
+        >>ELSE
+            DISPLAY X"313233"
+        >>END-IF
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Hexadecimal_literal.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ 123
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.cob	Sat Aug  9 22:32:40 2025
***************
*** 1,27 ****
         *> { dg-do run }
         *> { dg-output-file "group2/INSPECT_CONVERTING_TO_figurative_constants.out" }
- 
          identification division.
          program-id. clouseau.
          data division.
          working-storage section.
          01 item pic x(12).
          procedure division.
          move all "abcd" to item
          inspect item converting "abcd" to low-values
!         display "low-values " space """" item """"
          move all "abcd" to item
          inspect item converting "abcd" to spaces
!         display "spaces     " space """" item """"
          move all "abcd" to item
          inspect item converting "abcd" to zeros
!         display "zeros      " space """" item """"
          move all "abcd" to item
          inspect item converting "abcd" to quotes
!         display "quotes     " space """" item """"
          move all "abcd" to item
          inspect item converting "abcd" to high-values
!         display "high-values" space """" item """"
          goback.
          end program clouseau.
  
--- 1,27 ----
         *> { dg-do run }
         *> { dg-output-file "group2/INSPECT_CONVERTING_TO_figurative_constants.out" }
          identification division.
          program-id. clouseau.
          data division.
          working-storage section.
          01 item pic x(12).
+         01 pitem redefines item pointer.
          procedure division.
          move all "abcd" to item
          inspect item converting "abcd" to low-values
!         display "low-values " space """" pitem """"
          move all "abcd" to item
          inspect item converting "abcd" to spaces
!         display "spaces     " space """" pitem """"
          move all "abcd" to item
          inspect item converting "abcd" to zeros
!         display "zeros      " space """" pitem """"
          move all "abcd" to item
          inspect item converting "abcd" to quotes
!         display "quotes     " space """" pitem """"
          move all "abcd" to item
          inspect item converting "abcd" to high-values
!         display "high-values" space """" pitem """"
          goback.
          end program clouseau.
  
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_CONVERTING_TO_figurative_constants.out	Sat Aug  9 22:32:40 2025
***************
*** 1,6 ****
! low-values  ""
! spaces      "            "
! zeros       "000000000000"
! quotes      """"""""""""""
! high-values "ÿÿÿÿÿÿÿÿÿÿÿÿ"
  
--- 1,6 ----
! low-values  "0x0000000000000000"
! spaces      "0x2020202020202020"
! zeros       "0x3030303030303030"
! quotes      "0x2222222222222222"
! high-values "0xffffffffffffffff"
  
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_1.cob	Sat Aug  9 22:32:40 2025
***************
*** 25,31 ****
          Move ' EFABDBCGABEFGG      0301010005TUXYXVWRXYZZPZ' to row(1).
          Move ' BABABC              0200000101SXYXYZ'         to row(3).
          Move ' BBBC                0001000200SSVW'           to row(5).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 C2 C3 C4 OUTPUT'
--- 25,31 ----
          Move ' EFABDBCGABEFGG      0301010005TUXYXVWRXYZZPZ' to row(1).
          Move ' BABABC              0200000101SXYXYZ'         to row(3).
          Move ' BBBC                0001000200SSVW'           to row(5).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 C2 C3 C4 OUTPUT'
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_2.cob	Sat Aug  9 22:32:40 2025
***************
*** 25,31 ****
          *> the observed outputs
          Move ' BBB                 0300ZZZ' to row(1).
          Move ' ABA                 0300ZZZ' to row(3).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 OUTPUT'
--- 25,31 ----
          *> the observed outputs
          Move ' BBB                 0300ZZZ' to row(1).
          Move ' ABA                 0300ZZZ' to row(3).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 OUTPUT'
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_3.cob	Sat Aug  9 22:32:40 2025
***************
*** 19,25 ****
          Move ' ADDDDA              000005AZZZZZ'  to row(5).
          Move ' CDDDDC              000000CDDDDC'  to row(7).
          Move ' BDBBBDB             000300BDWWWDB' to row(9).
! `
          Display '  INPUT                C0 C1 C2 OUTPUT'
          Display '  -------------------- -- -- -- --------------------'
          Perform Example-3 with test after
--- 19,25 ----
          Move ' ADDDDA              000005AZZZZZ'  to row(5).
          Move ' CDDDDC              000000CDDDDC'  to row(7).
          Move ' BDBBBDB             000300BDWWWDB' to row(9).
! 
          Display '  INPUT                C0 C1 C2 OUTPUT'
          Display '  -------------------- -- -- -- --------------------'
          Perform Example-3 with test after
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_4.cob	Sat Aug  9 22:32:40 2025
***************
*** 24,30 ****
          *> Even-numbered rows are modified by the INSPECT statements and contain
          *> the observed outputs
          Move ' ABABABABC           01ABABXYABC' to row(1).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 OUTPUT'
--- 24,30 ----
          *> Even-numbered rows are modified by the INSPECT statements and contain
          *> the observed outputs
          Move ' ABABABABC           01ABABXYABC' to row(1).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 OUTPUT'
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_5-f.cob	Sat Aug  9 22:32:40 2025
***************
*** 30,36 ****
          Move ' ABABBCAB            000106ABABBCXY' to row(1).
          Move ' ABDBABC             000001AVDBABC'  to row(3).
          Move ' BCABCABD            010000BCABCAVD' to row(5).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 C2 OUTPUT'
--- 30,36 ----
          Move ' ABABBCAB            000106ABABBCXY' to row(1).
          Move ' ABDBABC             000001AVDBABC'  to row(3).
          Move ' BCABCABD            010000BCABCAVD' to row(5).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                C0 C1 C2 OUTPUT'
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_6.cob	Sat Aug  9 22:32:40 2025
***************
*** 22,28 ****
          *> Even-numbered rows are modified by the INSPECT statements and contain
          *> the observed outputs
          Move ' AC"AEBDFBCD#AB"D    AC"XEYXFYZX#AB"D' to row(1).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                OUTPUT'
--- 22,28 ----
          *> Even-numbered rows are modified by the INSPECT statements and contain
          *> the observed outputs
          Move ' AC"AEBDFBCD#AB"D    AC"XEYXFYZX#AB"D' to row(1).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                OUTPUT'
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/INSPECT_ISO_Example_7.cob	Sat Aug  9 22:32:40 2025
***************
*** 27,33 ****
          Move ' 415-245-1212        415-245-1212' to row(1).
          Move ' 415-CH5-1212        415-??5-1212' to row(3).
          Move ' 20%Numeric          20%???????' to row(5).
! `
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                OUTPUT'
--- 27,33 ----
          Move ' 415-245-1212        415-245-1212' to row(1).
          Move ' 415-CH5-1212        415-??5-1212' to row(3).
          Move ' 20%Numeric          20%???????' to row(5).
! 
          compute rowlim = 2*rows - 1
  
          Display '  INPUT                OUTPUT'
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Index_and_parenthesized_expression.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 G.
+          02 X           PIC X OCCURS 1 INDEXED BY I.
+        PROCEDURE        DIVISION.
+          IF I < (I + 2)
+            DISPLAY "OK" NO ADVANCING
+            END-DISPLAY
+          END-IF.
+          STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Index_and_parenthesized_expression.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ OK
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__2_.cob	Sat Jul 26 22:32:18 2025
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 5,12 ****
         ENVIRONMENT      DIVISION.
         CONFIGURATION    SECTION.
         REPOSITORY.
!            FUNCTION     PI
!            FUNCTION     E.
         DATA             DIVISION.
         WORKING-STORAGE  SECTION.
         01  Z            PIC 99V99.
--- 5,12 ----
         ENVIRONMENT      DIVISION.
         CONFIGURATION    SECTION.
         REPOSITORY.
!            FUNCTION     PI INTRINSIC
!            FUNCTION     E  INTRINSIC.
         DATA             DIVISION.
         WORKING-STORAGE  SECTION.
         01  Z            PIC 99V99.
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,107 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect ibm" }
+        *> { dg-output-file "group2/LENGTH_OF_omnibus.out" }
+ 
+         program-id. prog.
+         data division.
+         working-storage section.
+         01      desc1.
+          05     desc1-entry pic x(5) occurs 10.
+ 
+         01      desc2.
+          05     desc2-table occurs 10 times.
+           10    desc2-entry pic x(5).
+ 
+         01      desc3.
+          05     desc3-outer occurs 1 to 5 times depending on desc3-lim.
+           10    desc3-outer-txt   pic x(7).
+           10    desc3-inner occurs 11 times.
+            15   desc3-inner-text  pic x(13).
+         77 desc3-lim binary-long.
+ 
+         77      msg pic x(64).
+         77      should-be pic zzzz9.
+         77      but-is    pic zzzz9.
+ 
+         procedure division.
+ 
+         display "using LENGTH OF"
+ 
+         move    "Length of desc1" to msg
+         move    50 to should-be
+         move    length of desc1 to but-is
+         perform result-is
+ 
+         move    "Length of desc1-entry" to msg
+         move    5 to should-be
+         move    length of desc1-entry to but-is
+         perform result-is
+ 
+         move    "Length of desc1-entry(1)" to msg
+         move    5 to should-be
+         move    length of desc1-entry(1) to but-is
+         perform result-is
+ 
+         move    "Length of desc2" to msg
+         move    50 to should-be
+         move    length of desc2 to but-is
+         perform result-is
+ 
+         move    "Length of desc2-table" to msg
+         move    5 to should-be
+         move    length of desc2-table to but-is
+         perform result-is
+ 
+         move    "Length of desc2-entry" to msg
+         move    5 to should-be
+         move    length of desc2-entry to but-is
+         perform result-is
+ 
+         move    "Length of desc2-entry(1)" to msg
+         move    5 to should-be
+         move    length of desc2-entry(1) to but-is
+         perform result-is
+ 
+         move    5 to desc3-lim
+ 
+         move    "Length of desc3" to msg
+         move    750 to should-be
+         move    length of desc3 to but-is
+         perform result-is
+ 
+         move    "Length of desc3-outer" to msg
+         move    150 to should-be
+         move    length of desc3-outer to but-is
+         perform result-is
+ 
+         move    "Length of desc3-outer(1)" to msg
+         move    150 to should-be
+         move    length of desc3-outer(1) to but-is
+         perform result-is
+ 
+         move    "Length of desc3-outer-txt" to msg
+         move    7 to should-be
+         move    length of desc3-outer-txt to but-is
+         perform result-is
+ 
+         move    "Length of desc3-inner" to msg
+         move    13 to should-be
+         move    length of desc3-inner to but-is
+         perform result-is
+ 
+         move    "Length of desc3-inner(1)" to msg
+         move    13 to should-be
+         move    length of desc3-inner(1) to but-is
+         perform result-is
+ 
+         goback.
+         result-is.
+         display function trim(msg) ": " with no advancing
+         if but-is equal to should-be
+             display function trim(but-is)
+         else
+             display "should be " function trim(should-be)
+                     " but is "   function trim(but-is)
+         end-if.
+         end program prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LENGTH_OF_omnibus.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+ using LENGTH OF
+ Length of desc1: 50
+ Length of desc1-entry: 5
+ Length of desc1-entry(1): 5
+ Length of desc2: 50
+ Length of desc2-table: 5
+ Length of desc2-entry: 5
+ Length of desc2-entry(1): 5
+ Length of desc3: 750
+ Length of desc3-outer: 150
+ Length of desc3-outer(1): 150
+ Length of desc3-outer-txt: 7
+ Length of desc3-inner: 13
+ Length of desc3-inner(1): 13
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,28 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.out" }
+ 
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      caller.
+         PROCEDURE        DIVISION.
+            CALL "callee"
+            END-CALL.
+            STOP RUN.
+            end program caller.
+ 
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      callee.
+         DATA             DIVISION.
+         WORKING-STORAGE  SECTION.
+         01 WRK-X         PIC 999 VALUE 5.
+         LOCAL-STORAGE    SECTION.
+         01 LCL-X         PIC 999 .
+         PROCEDURE        DIVISION.
+             display "On entry: " wrk-x
+             move wrk-x to lcl-x
+             subtract 1 from wrk-x
+             if wrk-x > 0
+                 call "callee".
+             display "On exit: " lcl-x
+             goback.
+             end program callee.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__3__with_recursive_PROGRAM-ID.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,11 ----
+ On entry: 005
+ On entry: 004
+ On entry: 003
+ On entry: 002
+ On entry: 001
+ On exit: 001
+ On exit: 002
+ On exit: 003
+ On exit: 004
+ On exit: 005
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,28 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.out" }
+ 
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      caller.
+         PROCEDURE        DIVISION.
+            CALL "callee"
+            END-CALL.
+            STOP RUN.
+            end program caller.
+ 
+         IDENTIFICATION   DIVISION.
+         PROGRAM-ID.      callee.
+         DATA             DIVISION.
+         WORKING-STORAGE  SECTION.
+         01 WRK-X         PIC 999 VALUE 5.
+         LOCAL-STORAGE    SECTION.
+         01 LCL-X         PIC 999 .
+         PROCEDURE        DIVISION.
+             display "On entry: " wrk-x
+             move wrk-x to lcl-x
+             subtract 1 from wrk-x
+             if wrk-x > 0
+                 call "callee".
+             display "On exit: " lcl-x
+             goback.
+             end program callee.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/LOCAL-STORAGE__4__with_recursive_PROGRAM-ID_..._USING.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,11 ----
+ On entry: 005
+ On entry: 004
+ On entry: 003
+ On entry: 002
+ On entry: 001
+ On exit: 001
+ On exit: 002
+ On exit: 003
+ On exit: 004
+ On exit: 005
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,34 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/MOVE_Z_literal_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC XXXX.
+        01  XRED REDEFINES X.
+            03  XBYTE1   PIC X.
+            03  XBYTE2   PIC X.
+            03  XBYTE3   PIC X.
+            03  XBYTE4   PIC X.
+        PROCEDURE        DIVISION.
+            MOVE Z"012" TO X.
+            IF XBYTE1 = "0" AND
+               XBYTE2 = "1" AND
+               XBYTE3 = "2" AND
+               XBYTE4 = LOW-VALUE
+               DISPLAY "OK" NO ADVANCING
+               END-DISPLAY
+            ELSE
+               DISPLAY "X = " X (1:3) NO ADVANCING
+               END-DISPLAY
+               IF XBYTE4 = LOW-VALUE
+                  DISPLAY " WITH LOW-VALUE"
+                  END-DISPLAY
+               ELSE
+                  DISPLAY " WITHOUT LOW-VALUE BUT '" XBYTE4 "'"
+                  END-DISPLAY
+               END-IF
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ OK
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_indexes.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_indexes.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_indexes.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_indexes.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,17 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 G.
+          02 X           PIC X OCCURS 10 INDEXED I.
+        PROCEDURE        DIVISION.
+            SET I TO ZERO.
+            SET X(1) TO I
+            IF X(1) NOT = "0"
+               DISPLAY X(1) NO ADVANCING
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/MOVE_integer_literal_to_alphanumeric.out" }
+ 
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC X(04) VALUE SPACES.
+        PROCEDURE        DIVISION.
+            MOVE 0 TO X.
+            DISPLAY X NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_integer_literal_to_alphanumeric.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ 0   
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,31 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/MOVE_to_JUSTIFIED_item.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  SRC-1        PIC S9(04)          VALUE  11.
+        01  SRC-2        PIC S9(04) COMP     VALUE  22.
+        01  SRC-3        PIC S9(04) COMP-5   VALUE  33.
+        01  SRC-4        PIC S9(04)PP        VALUE  4400.
+        01  SRC-5        PIC S9(04)PPPPP     VALUE  55500000.
+        01  EDT-FLD      PIC X(07)           JUSTIFIED RIGHT.
+        PROCEDURE        DIVISION.
+            MOVE SRC-1   TO EDT-FLD.
+            DISPLAY '>' EDT-FLD '<'
+            END-DISPLAY.
+            MOVE SRC-2   TO EDT-FLD.
+            DISPLAY '>' EDT-FLD '<'
+            END-DISPLAY.
+            MOVE SRC-3   TO EDT-FLD.
+            DISPLAY '>' EDT-FLD '<'
+            END-DISPLAY.
+            MOVE SRC-4   TO EDT-FLD.
+            DISPLAY '>' EDT-FLD '<'
+            END-DISPLAY.
+            MOVE SRC-5   TO EDT-FLD.
+            DISPLAY '>' EDT-FLD '<'
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_JUSTIFIED_item.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,6 ----
+ >   0011<
+ >   0022<
+ >   0033<
+ > 004400<
+ >5500000<
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,35 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/MOVE_to_edited_item__1_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  SRC-1        PIC S99V99  VALUE   1.10.
+        01  SRC-2        PIC S99V99  VALUE   0.02.
+        01  SRC-3        PIC S99V99  VALUE  -0.03.
+        01  SRC-4        PIC S99V99  VALUE  -0.04.
+        01  SRC-5        PIC S99V99  VALUE  -0.05.
+        01  EDT-1        PIC -(04)9.
+        01  EDT-2        PIC -(04)9.
+        01  EDT-3        PIC -(04)9.
+        01  EDT-4        PIC +(04)9.
+        01  EDT-5        PIC -(05).
+        PROCEDURE        DIVISION.
+            MOVE SRC-1   TO EDT-1.
+            MOVE SRC-2   TO EDT-2.
+            MOVE SRC-3   TO EDT-3.
+            MOVE SRC-4   TO EDT-4.
+            MOVE SRC-5   TO EDT-5.
+            DISPLAY '>' EDT-1 '<'
+            END-DISPLAY.
+            DISPLAY '>' EDT-2 '<'
+            END-DISPLAY.
+            DISPLAY '>' EDT-3 '<'
+            END-DISPLAY.
+            DISPLAY '>' EDT-4 '<'
+            END-DISPLAY.
+            DISPLAY '>' EDT-5 '<'
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__1_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,6 ----
+ >    1<
+ >    0<
+ >    0<
+ >   +0<
+ >     <
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,35 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/MOVE_to_edited_item__2_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  SRC-1        PIC S99V99  VALUE  -0.06.
+        01  SRC-2        PIC S99V99  VALUE  -0.07.
+        01  SRC-3        PIC S99V99  VALUE  -0.08.
+        01  SRC-4        PIC S99V99  VALUE  -0.09.
+        01  SRC-5        PIC S99V99  VALUE  -1.10.
+        01  EDT-1        PIC 9(04)-.
+        01  EDT-2        PIC 9(04)+.
+        01  EDT-3        PIC Z(04)+.
+        01  EDT-4        PIC 9(04)DB.
+        01  EDT-5        PIC 9(04)DB.
+        PROCEDURE        DIVISION.
+            MOVE SRC-1   TO EDT-1.
+            MOVE SRC-2   TO EDT-2.
+            MOVE SRC-3   TO EDT-3.
+            MOVE SRC-4   TO EDT-4.
+            MOVE SRC-5   TO EDT-5.
+            DISPLAY '>' EDT-1 '<'
+            END-DISPLAY.
+            DISPLAY '>' EDT-2 '<'
+            END-DISPLAY.
+            DISPLAY '>' EDT-3 '<'
+            END-DISPLAY.
+            DISPLAY '>' EDT-4 '<'
+            END-DISPLAY.
+            DISPLAY '>' EDT-5 '<'
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_edited_item__2_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,6 ----
+ >0000 <
+ >0000+<
+ >     <
+ >0000  <
+ >0001DB<
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,23 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/MOVE_to_item_with_simple_and_floating_insertion.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+ 
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  num-1 PIC -*B*99.
+        01  num-2 PIC $BB**,***.**.
+        01  num-3 PIC $BB--,---.--.
+ 
+        PROCEDURE DIVISION.
+            MOVE -123 TO num-1
+            DISPLAY ">" num-1 "<"
+ 
+            MOVE 1234.56 TO num-2
+            DISPLAY ">" num-2 "<"
+ 
+            MOVE 1234.56 TO num-3
+            DISPLAY ">" num-3 "<"
+            .
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_item_with_simple_and_floating_insertion.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,4 ----
+ >-**123<
+ >$  *1,234.56<
+ >$   1,234.56<
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_itself.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_itself.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_to_itself.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_to_itself.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X             PIC 99 VALUE 12.
+        PROCEDURE        DIVISION.
+            MOVE X TO X.
+            IF X NOT = 12
+               DISPLAY X NO ADVANCING
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_with_group_refmod.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_with_group_refmod.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_with_group_refmod.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_with_group_refmod.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 G.
+          02 X           PIC 9999 VALUE 1234.
+        PROCEDURE        DIVISION.
+            MOVE "99" TO G(3:2).
+            IF G NOT = "1299"
+               DISPLAY G NO ADVANCING
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_with_refmod.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_with_refmod.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_with_refmod.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_with_refmod.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X             PIC 9(4) VALUE 0.
+        PROCEDURE        DIVISION.
+            MOVE "1" TO X(1:1).
+            IF X NOT = 1000
+               DISPLAY X NO ADVANCING
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_with_refmod__variable_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_with_refmod__variable_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MOVE_with_refmod__variable_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MOVE_with_refmod__variable_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,17 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X             PIC X(4) VALUE "1234".
+        01 Y             PIC X(4) VALUE "abcd".
+        01 I             PIC 9 VALUE 1.
+        PROCEDURE        DIVISION.
+            MOVE X(1:I) TO Y.
+            IF Y NOT = "1   "
+               DISPLAY Y NO ADVANCING
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MULTIPLY_BY_literal_in_INITIAL_program.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MULTIPLY_BY_literal_in_INITIAL_program.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/MULTIPLY_BY_literal_in_INITIAL_program.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/MULTIPLY_BY_literal_in_INITIAL_program.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,15 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog INITIAL.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  num          PIC 9(4)    VALUE 5.
+        01  result       PIC 9(4).
+        01  ws-temp      PIC 9(8)V99.
+        01  ws-temp2     PIC 9(3)V99 VALUE 10.50.
+        PROCEDURE        DIVISION.
+            MULTIPLY num BY 4 GIVING result
+            MOVE 1.10          TO WS-TEMP.
+            MULTIPLY WS-TEMP2  BY WS-TEMP GIVING WS-TEMP.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,35 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Multi-target_MOVE_with_subscript_re-evaluation.out" }
+ 
+         IDENTIFICATION DIVISION.
+         PROGRAM-ID.  mover.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         01 FILLER.
+           02 ADATA VALUE "654321".
+           02 A REDEFINES ADATA PIC 9 OCCURS 6 TIMES.
+           02 B PIC 9.
+           02 CDATA VALUE "999999".
+           02 C REDEFINES CDATA PIC 9 OCCURS 6 TIMES.
+         01 TEMP PIC 9.
+         PROCEDURE DIVISION.
+         INITIALIZE CDATA ALL TO VALUE
+         MOVE 2 TO B
+         MOVE A(B) TO B, C(B)
+       *> That should pick up 5, move it to B, and then move 5 to C(5),
+         IF CDATA NOT EQUAL TO "999959"
+             DISPLAY CDATA " Should be ""999959"", but isn't"
+         ELSE
+             DISPLAY CDATA " Should be ""999959""".
+       *> See 14.9.25.4 MOVE General Rules
+         INITIALIZE CDATA ALL TO VALUE
+         MOVE 2 TO B
+         MOVE A(B) TO TEMP
+         MOVE TEMP TO B
+         MOVE TEMP TO C(B)
+         IF CDATA NOT EQUAL TO "999959"
+             DISPLAY CDATA " Should be ""999959"", but isn't"
+         ELSE
+             DISPLAY CDATA " Should be ""999959""".
+         STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,3 ----
+ 999959 Should be "999959"
+ 999959 Should be "999959"
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,24 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Multiple_INDEXED_BY_variables_with_the_same_name.out" }
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  GROUP-1-TABLE.
+            05  TABLE-LEVEL-1 VALUE "ABCDEFGHIJKLMNO".
+                06  TABLE-ITEM PICTURE X OCCURS 15 TIMES INDEXED BY IND.
+                88  EQUALS-M   VALUE "M".
+        01  GROUP-2-TABLE.
+            05  TABLE-LEVEL-1 VALUE "abcdefghijklmno".
+                06  TABLE-ITEM PICTURE X OCCURS 15 TIMES INDEXED BY IND.
+                88  EQUALS-M   VALUE "M".
+        PROCEDURE DIVISION.
+             set IND OF GROUP-1-TABLE to 2
+             set IND OF GROUP-2-TABLE to 4
+             display "The output should be ""Db"""
+             display "The output        is " """"
+                     TABLE-ITEM of GROUP-1-TABLE(IND OF GROUP-2-TABLE)
+                     TABLE-ITEM of GROUP-2-TABLE(IND OF GROUP-1-TABLE)
+                     """"
+             goback.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,3 ----
+ The output should be "Db"
+ The output        is "Db"
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,69 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Named_conditionals_-_fixed__float__and_alphabetic.out" }
+         identification      division.
+         program-id.         prog.
+         data                division.
+         working-storage     section.
+         01  makeofcar        pic x(10).
+             88 volksgroup  value "skoda", "seat",
+                                  "audi", "volkswagen"
+                            false "boat".
+             88 germanmade  value "volkswagen", "audi",
+                                  "mercedes", "bmw",
+                                  "porsche".        
+         01  agegroup  pic 999.
+             88 child  value  0 through  12.
+             88 teen   value 13 through  19.
+             88 adult  value 20 through 999.
+         01  floats  float-long.
+             88 neg   value -1 through -.1 .
+             88 zed   value zero           .
+             88 pos   value .1 through 1.0 .
+         procedure           division.
+         move "ford" to makeofcar
+         display function trim (makeofcar)
+         if volksgroup display "  volksgroup" end-if
+         if germanmade display "  germanmade" end-if
+         move "skoda" to makeofcar
+         display function trim (makeofcar)
+         if volksgroup display "  volksgroup" end-if
+         if germanmade display "  germanmade" end-if
+         move "volkswagen" to makeofcar
+         display function trim (makeofcar)
+         if volksgroup display "  volksgroup" end-if
+         if germanmade display "  germanmade" end-if
+         move    5 to agegroup.
+         display agegroup with no advancing
+         if child display " child" end-if
+         if teen  display " teen" end-if
+         if adult display " adult" end-if
+         move    15 to agegroup.
+         display agegroup with no advancing
+         if child display " child" end-if
+         if teen  display " teen" end-if
+         if adult display " adult" end-if
+         move    75 to agegroup.
+         display agegroup with no advancing
+         if child display " child" end-if
+         if teen  display " teen" end-if
+         if adult display " adult" end-if
+         move -0.5 to floats
+         display floats with no advancing
+         if neg  display " minus" end-if
+         if zed  display " zero"  end-if
+         if pos  display " plus"  end-if
+         move zero to floats
+         display floats with no advancing
+         if neg  display " minus" end-if
+         if zed  display " zero"  end-if
+         if pos  display " plus"  end-if
+         move 0.5 to floats
+         display floats with no advancing
+         if neg  display " minus" end-if
+         if zed  display " zero"  end-if
+         if pos  display " plus"  end-if
+         continue.
+         quit.
+         goback.
+         end program         prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,13 ----
+ ford
+ skoda
+   volksgroup
+ volkswagen
+   volksgroup
+   germanmade
+ 005 child
+ 015 teen
+ 075 adult
+ -0.5 minus
+ 0 zero
+ 0.5 plus
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,27 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Non-numeric_data_in_numeric_items__1_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X.
+           03 X-NUM      PIC 9(06) VALUE 123.
+        77 NUM           PIC 9(06).
+        PROCEDURE        DIVISION.
+            MOVE x"0000" TO X (2:2)
+            IF X-NUM NUMERIC
+               DISPLAY "low-value is numeric" UPON SYSERR
+               END-DISPLAY
+            END-IF
+            MOVE x"01" TO X (3:1)
+            IF X-NUM NUMERIC
+               DISPLAY "SOH is numeric" UPON SYSERR
+               END-DISPLAY
+            END-IF
+            MOVE X-NUM TO NUM
+            DISPLAY "test over"
+            END-DISPLAY
+       *
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__1_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ test over
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,22 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Non-numeric_data_in_numeric_items__2_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog2.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 X.
+           03 X-NUM      PIC 9(06) PACKED-DECIMAL VALUE 123.
+        77 NUM           PIC 9(06).
+        PROCEDURE        DIVISION.
+            MOVE x"0A" TO X (2:1)
+            IF X-NUM NUMERIC
+               DISPLAY "bad prog"
+               END-DISPLAY
+            END-IF
+            MOVE X-NUM TO NUM
+            DISPLAY "test over"
+            END-DISPLAY
+       *
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-numeric_data_in_numeric_items__2_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ test over
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-overflow_after_overflow.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-overflow_after_overflow.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Non-overflow_after_overflow.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Non-overflow_after_overflow.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,19 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC 9(2) VALUE 0.
+        01  Y            PIC 9(2) VALUE 0.
+        PROCEDURE        DIVISION.
+            COMPUTE X = 100
+            END-COMPUTE.
+            COMPUTE Y = 99
+            END-COMPUTE.
+            IF Y NOT = 99
+               DISPLAY Y NO ADVANCING
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,35 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC S9V9.
+        01  Y            PIC S9V9 COMP-3.
+        PROCEDURE        DIVISION.
+            MOVE -0.1  TO X.
+            ADD 1      TO X.
+            IF X NOT = 0.9
+               DISPLAY X
+               END-DISPLAY
+            END-IF.
+            MOVE  0.1  TO X.
+            SUBTRACT 1 FROM X.
+            IF X NOT = -0.9
+               DISPLAY X
+               END-DISPLAY
+            END-IF.
+            MOVE -0.1 TO Y.
+            ADD 1     TO Y.
+            IF Y NOT = 0.9
+               DISPLAY Y
+               END-DISPLAY
+            END-IF.
+            MOVE  0.1  TO Y.
+            SUBTRACT 1 FROM Y.
+            IF Y NOT = -0.9
+               DISPLAY Y
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,292 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  FIELD        PIC S9(1)V9(1).
+        01  FELD2        PIC S9(5)V9(5).
+        01  FELD3        PIC 9(1)V9(1).
+        01  FELD4        PIC S9(1).
+        PROCEDURE        DIVISION.
+            MOVE 0.2 TO FIELD
+            ADD 1 TO FIELD
+            IF FIELD  NOT = 1.2
+               DISPLAY "Test  1 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            ADD -1 TO FIELD
+            IF FIELD  NOT = -0.8
+               DISPLAY "Test  2 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            ADD 1 TO FIELD
+            IF FIELD  NOT = 0.8
+               DISPLAY "Test  3 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            ADD -1 TO FIELD
+            IF FIELD  NOT = -1.2
+               DISPLAY "Test  4 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            SUBTRACT 1 FROM FIELD
+            IF FIELD  NOT = -0.8
+               DISPLAY "Test  5 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            SUBTRACT -1 FROM FIELD
+            IF FIELD  NOT = 1.2
+               DISPLAY "Test  6 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            SUBTRACT 1 FROM FIELD
+            IF FIELD  NOT = -1.2
+               DISPLAY "Test  7 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            SUBTRACT -1 FROM FIELD
+            IF FIELD  NOT = 0.8
+               DISPLAY "Test  8 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            ADD 1 TO FELD2
+            IF FELD2  NOT = 1.2
+               DISPLAY "Test  9 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            ADD -1 TO FELD2
+            IF FELD2  NOT = -0.8
+               DISPLAY "Test 10 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            ADD 1 TO FELD2
+            IF FELD2  NOT = 0.8
+               DISPLAY "Test 11 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            ADD -1 TO FELD2
+            IF FELD2  NOT = -1.2
+               DISPLAY "Test 12 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            SUBTRACT 1 FROM FELD2
+            IF FELD2  NOT = -0.8
+               DISPLAY "Test 13 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            SUBTRACT -1 FROM FELD2
+            IF FELD2  NOT = 1.2
+               DISPLAY "Test 14 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            SUBTRACT 1 FROM FELD2
+            IF FELD2  NOT = -1.2
+               DISPLAY "Test 15 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            SUBTRACT -1 FROM FELD2
+            IF FELD2  NOT = 0.8
+               DISPLAY "Test 16 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            ADD 1 TO FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 17 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            ADD -1 TO FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 18 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            ADD 1 TO FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 19 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            ADD -1 TO FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 20 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            SUBTRACT 1 FROM FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 21 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            SUBTRACT -1 FROM FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 22 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            SUBTRACT 1 FROM FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 23 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            SUBTRACT -1 FROM FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 24 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            ADD 1 TO FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 25 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            ADD -1 TO FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 26 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            ADD 1 TO FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 27 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            ADD -1 TO FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 28 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            SUBTRACT 1 FROM FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 29 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            SUBTRACT -1 FROM FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 30 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            SUBTRACT 1 FROM FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 31 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            SUBTRACT -1 FROM FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 32 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            ADD 2 TO FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 33 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            ADD -2 TO FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 34 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            ADD 2 TO FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 35 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            ADD -2 TO FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 36 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            SUBTRACT 2 FROM FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 37 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            SUBTRACT -2 FROM FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 38 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            SUBTRACT 2 FROM FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 39 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            SUBTRACT -2 FROM FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 40 " FELD4
+               END-DISPLAY
+            END-IF.
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__3_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__3_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__3_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__3_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,292 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  FIELD        PIC S9(1)V9(1) COMP-3.
+        01  FELD2        PIC S9(5)V9(5) COMP-3.
+        01  FELD3        PIC 9(1)V9(1)  COMP-3.
+        01  FELD4        PIC S9(1)      COMP-3.
+        PROCEDURE        DIVISION.
+            MOVE 0.2 TO FIELD
+            ADD 1 TO FIELD
+            IF FIELD  NOT = 1.2
+               DISPLAY "Test  1 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            ADD -1 TO FIELD
+            IF FIELD  NOT = -0.8
+               DISPLAY "Test  2 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            ADD 1 TO FIELD
+            IF FIELD  NOT = 0.8
+               DISPLAY "Test  3 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            ADD -1 TO FIELD
+            IF FIELD  NOT = -1.2
+               DISPLAY "Test  4 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            SUBTRACT 1 FROM FIELD
+            IF FIELD  NOT = -0.8
+               DISPLAY "Test  5 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            SUBTRACT -1 FROM FIELD
+            IF FIELD  NOT = 1.2
+               DISPLAY "Test  6 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            SUBTRACT 1 FROM FIELD
+            IF FIELD  NOT = -1.2
+               DISPLAY "Test  7 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            SUBTRACT -1 FROM FIELD
+            IF FIELD  NOT = 0.8
+               DISPLAY "Test  8 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            ADD 1 TO FELD2
+            IF FELD2  NOT = 1.2
+               DISPLAY "Test  9 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            ADD -1 TO FELD2
+            IF FELD2  NOT = -0.8
+               DISPLAY "Test 10 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            ADD 1 TO FELD2
+            IF FELD2  NOT = 0.8
+               DISPLAY "Test 11 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            ADD -1 TO FELD2
+            IF FELD2  NOT = -1.2
+               DISPLAY "Test 12 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            SUBTRACT 1 FROM FELD2
+            IF FELD2  NOT = -0.8
+               DISPLAY "Test 13 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            SUBTRACT -1 FROM FELD2
+            IF FELD2  NOT = 1.2
+               DISPLAY "Test 14 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            SUBTRACT 1 FROM FELD2
+            IF FELD2  NOT = -1.2
+               DISPLAY "Test 15 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            SUBTRACT -1 FROM FELD2
+            IF FELD2  NOT = 0.8
+               DISPLAY "Test 16 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            ADD 1 TO FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 17 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            ADD -1 TO FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 18 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            ADD 1 TO FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 19 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            ADD -1 TO FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 20 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            SUBTRACT 1 FROM FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 21 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            SUBTRACT -1 FROM FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 22 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            SUBTRACT 1 FROM FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 23 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            SUBTRACT -1 FROM FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 24 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            ADD 1 TO FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 25 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            ADD -1 TO FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 26 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            ADD 1 TO FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 27 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            ADD -1 TO FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 28 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            SUBTRACT 1 FROM FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 29 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            SUBTRACT -1 FROM FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 30 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            SUBTRACT 1 FROM FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 31 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            SUBTRACT -1 FROM FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 32 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            ADD 2 TO FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 33 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            ADD -2 TO FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 34 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            ADD 2 TO FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 35 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            ADD -2 TO FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 36 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            SUBTRACT 2 FROM FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 37 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            SUBTRACT -2 FROM FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 38 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            SUBTRACT 2 FROM FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 39 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            SUBTRACT -2 FROM FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 40 " FELD4
+               END-DISPLAY
+            END-IF.
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__4_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__4_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__4_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__4_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,292 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  FIELD        PIC S9(1)V9(1) COMP.
+        01  FELD2        PIC S9(5)V9(5) COMP.
+        01  FELD3        PIC 9(1)V9(1)  COMP.
+        01  FELD4        PIC S9(1)      COMP.
+        PROCEDURE        DIVISION.
+            MOVE 0.2 TO FIELD
+            ADD 1 TO FIELD
+            IF FIELD  NOT = 1.2
+               DISPLAY "Test  1 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            ADD -1 TO FIELD
+            IF FIELD  NOT = -0.8
+               DISPLAY "Test  2 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            ADD 1 TO FIELD
+            IF FIELD  NOT = 0.8
+               DISPLAY "Test  3 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            ADD -1 TO FIELD
+            IF FIELD  NOT = -1.2
+               DISPLAY "Test  4 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            SUBTRACT 1 FROM FIELD
+            IF FIELD  NOT = -0.8
+               DISPLAY "Test  5 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            SUBTRACT -1 FROM FIELD
+            IF FIELD  NOT = 1.2
+               DISPLAY "Test  6 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            SUBTRACT 1 FROM FIELD
+            IF FIELD  NOT = -1.2
+               DISPLAY "Test  7 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            SUBTRACT -1 FROM FIELD
+            IF FIELD  NOT = 0.8
+               DISPLAY "Test  8 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            ADD 1 TO FELD2
+            IF FELD2  NOT = 1.2
+               DISPLAY "Test  9 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            ADD -1 TO FELD2
+            IF FELD2  NOT = -0.8
+               DISPLAY "Test 10 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            ADD 1 TO FELD2
+            IF FELD2  NOT = 0.8
+               DISPLAY "Test 11 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            ADD -1 TO FELD2
+            IF FELD2  NOT = -1.2
+               DISPLAY "Test 12 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            SUBTRACT 1 FROM FELD2
+            IF FELD2  NOT = -0.8
+               DISPLAY "Test 13 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            SUBTRACT -1 FROM FELD2
+            IF FELD2  NOT = 1.2
+               DISPLAY "Test 14 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            SUBTRACT 1 FROM FELD2
+            IF FELD2  NOT = -1.2
+               DISPLAY "Test 15 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            SUBTRACT -1 FROM FELD2
+            IF FELD2  NOT = 0.8
+               DISPLAY "Test 16 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            ADD 1 TO FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 17 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            ADD -1 TO FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 18 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            ADD 1 TO FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 19 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            ADD -1 TO FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 20 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            SUBTRACT 1 FROM FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 21 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            SUBTRACT -1 FROM FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 22 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            SUBTRACT 1 FROM FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 23 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            SUBTRACT -1 FROM FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 24 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            ADD 1 TO FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 25 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            ADD -1 TO FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 26 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            ADD 1 TO FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 27 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            ADD -1 TO FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 28 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            SUBTRACT 1 FROM FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 29 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            SUBTRACT -1 FROM FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 30 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            SUBTRACT 1 FROM FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 31 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            SUBTRACT -1 FROM FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 32 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            ADD 2 TO FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 33 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            ADD -2 TO FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 34 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            ADD 2 TO FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 35 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            ADD -2 TO FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 36 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            SUBTRACT 2 FROM FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 37 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            SUBTRACT -2 FROM FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 38 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            SUBTRACT 2 FROM FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 39 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            SUBTRACT -2 FROM FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 40 " FELD4
+               END-DISPLAY
+            END-IF.
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__5_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__5_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__5_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__5_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,292 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  FIELD        PIC S9(1)V9(1) COMP-5.
+        01  FELD2        PIC S9(5)V9(5) COMP-5.
+        01  FELD3        PIC 9(1)V9(1)  COMP-5.
+        01  FELD4        PIC S9(1)      COMP-5.
+        PROCEDURE        DIVISION.
+            MOVE 0.2 TO FIELD
+            ADD 1 TO FIELD
+            IF FIELD  NOT = 1.2
+               DISPLAY "Test  1 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            ADD -1 TO FIELD
+            IF FIELD  NOT = -0.8
+               DISPLAY "Test  2 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            ADD 1 TO FIELD
+            IF FIELD  NOT = 0.8
+               DISPLAY "Test  3 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            ADD -1 TO FIELD
+            IF FIELD  NOT = -1.2
+               DISPLAY "Test  4 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            SUBTRACT 1 FROM FIELD
+            IF FIELD  NOT = -0.8
+               DISPLAY "Test  5 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FIELD
+            SUBTRACT -1 FROM FIELD
+            IF FIELD  NOT = 1.2
+               DISPLAY "Test  6 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            SUBTRACT 1 FROM FIELD
+            IF FIELD  NOT = -1.2
+               DISPLAY "Test  7 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FIELD
+            SUBTRACT -1 FROM FIELD
+            IF FIELD  NOT = 0.8
+               DISPLAY "Test  8 " FIELD
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            ADD 1 TO FELD2
+            IF FELD2  NOT = 1.2
+               DISPLAY "Test  9 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            ADD -1 TO FELD2
+            IF FELD2  NOT = -0.8
+               DISPLAY "Test 10 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            ADD 1 TO FELD2
+            IF FELD2  NOT = 0.8
+               DISPLAY "Test 11 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            ADD -1 TO FELD2
+            IF FELD2  NOT = -1.2
+               DISPLAY "Test 12 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            SUBTRACT 1 FROM FELD2
+            IF FELD2  NOT = -0.8
+               DISPLAY "Test 13 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD2
+            SUBTRACT -1 FROM FELD2
+            IF FELD2  NOT = 1.2
+               DISPLAY "Test 14 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            SUBTRACT 1 FROM FELD2
+            IF FELD2  NOT = -1.2
+               DISPLAY "Test 15 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD2
+            SUBTRACT -1 FROM FELD2
+            IF FELD2  NOT = 0.8
+               DISPLAY "Test 16 " FELD2
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            ADD 1 TO FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 17 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            ADD -1 TO FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 18 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            ADD 1 TO FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 19 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            ADD -1 TO FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 20 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            SUBTRACT 1 FROM FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 21 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 0.2 TO FELD3
+            SUBTRACT -1 FROM FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 22 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            SUBTRACT 1 FROM FELD3
+            IF FELD3  NOT = 0.8
+               DISPLAY "Test 23 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -0.2 TO FELD3
+            SUBTRACT -1 FROM FELD3
+            IF FELD3  NOT = 1.2
+               DISPLAY "Test 24 " FELD3
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            ADD 1 TO FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 25 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            ADD -1 TO FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 26 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            ADD 1 TO FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 27 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            ADD -1 TO FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 28 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            SUBTRACT 1 FROM FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 29 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 2 TO FELD4
+            SUBTRACT -1 FROM FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 30 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            SUBTRACT 1 FROM FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 31 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -2 TO FELD4
+            SUBTRACT -1 FROM FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 32 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            ADD 2 TO FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 33 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            ADD -2 TO FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 34 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            ADD 2 TO FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 35 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            ADD -2 TO FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 36 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            SUBTRACT 2 FROM FELD4
+            IF FELD4  NOT = -1
+               DISPLAY "Test 37 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE 1 TO FELD4
+            SUBTRACT -2 FROM FELD4
+            IF FELD4  NOT = 3
+               DISPLAY "Test 38 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            SUBTRACT 2 FROM FELD4
+            IF FELD4  NOT = -3
+               DISPLAY "Test 39 " FELD4
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO FELD4
+            SUBTRACT -2 FROM FELD4
+            IF FELD4  NOT = 1
+               DISPLAY "Test 40 " FELD4
+               END-DISPLAY
+            END-IF.
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__7_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__7_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__7_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__7_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,283 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  FIELD         PIC S9(4)V9(2) COMP-5.
+        01  FIELD-DISP    PIC S9(4)V9(2) DISPLAY.
+        PROCEDURE        DIVISION.
+            MOVE 0.2 TO FIELD.
+            ADD 1
+                2
+                3
+                4
+                5
+                6
+                7
+                8
+                9
+                10
+                11
+                12
+                13
+                14
+                15
+                16
+                17
+                18
+                19
+                20
+                21
+                22
+                23
+                24
+                25
+                26
+                27
+                28
+                29
+                30
+                31
+                32
+                33
+                34
+                35
+                36
+                37
+                38
+                39
+                40
+                41
+                42
+                43
+                44
+                45
+                46
+                47
+                48
+                49
+                50
+                51
+                52
+                53
+                54
+                55
+                56
+                57
+                58
+                59
+                60
+                61
+                62
+                63
+                64
+                65
+                66
+                67
+                68
+                69
+                70
+                71
+                72
+                73
+                74
+                75
+                76
+                77
+                78
+                79
+                80
+                81
+                82
+                83
+                84
+                85
+                86
+                87
+                88
+                89
+                90
+                91
+                92
+                93
+                94
+                95
+                96
+                97
+                98
+                99
+                100
+                101
+                102
+                103
+                104
+                105
+                106
+                107
+                108
+                109
+                110
+                111
+                112
+                113
+                114
+                115
+                116
+                117
+                118
+                119
+                120
+                121
+                122
+                123
+                124
+                125
+                126
+                127
+                128
+                129
+                TO FIELD
+            END-ADD.
+            IF FIELD NOT = 8385.2
+               MOVE FIELD TO FIELD-DISP
+               DISPLAY 'ADD with wrong result: ' FIELD-DISP
+               END-DISPLAY
+            END-IF.
+            COMPUTE FIELD = (0.2
+                          + 2
+                          + 3
+                          + 4
+                          + 5
+                          + 6
+                          + 7
+                          + 8
+                          + 9
+                          + 10
+                          + 11
+                          + 12
+                          + 13
+                          + 14
+                          + 15
+                          + 16
+                          + 17
+                          + 18
+                          + 19
+                          + 20
+                          + 21
+                          + 22
+                          + 23
+                          + 24
+                          + 25
+                          + 26
+                          + 27
+                          + 28
+                          + 29
+                          + 30
+                          + 31
+                          + 32
+                          + 33
+                          + 34
+                          + 35
+                          + 36
+                          + 37
+                          + 38
+                          + 39
+                          + 40
+                          + 41
+                          + 42
+                          + 43
+                          + 44
+                          + 45
+                          + 46
+                          + 47
+                          + 48
+                          + 49
+                          + 50
+                          + 51
+                          + 52
+                          + 53
+                          + 54
+                          + 55
+                          + 56
+                          + 57
+                          + 58
+                          - 59
+                          - 60
+                          - 61
+                          - 62
+                          - 63
+                          - 64
+                          - 65
+                          - 66
+                          - 67
+                          - 68
+                          - 69
+                          - 70
+                          - 71
+                          - 72
+                          - 73
+                          - 74
+                          - 75
+                          - 76
+                          - 77
+                          - 78
+                          - 79
+                          - 80
+                          - 81
+                          - 82
+                          - 83
+                          - 84
+                          - 85
+                          - 86
+                          - 87
+                          - 88
+                          - 89
+                          - 90
+                          - 91
+                          - 92
+                          - 93
+                          - 94
+                          - 95
+                          - 96
+                          - 97
+                          - 98
+                          - 99
+                          - 100
+                          - 101
+                          - 102
+                          - 103
+                          - 104
+                          - 105
+                          - 106
+                          - 107
+                          - 108
+                          - 109
+                          - 110
+                          - 111
+                          - 112
+                          - 113
+                          - 114
+                          - 115
+                          - 116
+                          - 117
+                          - 118
+                          - 119
+                          - 120
+                          - 121
+                          - 122
+                          - 123
+                          - 124
+                          - 125
+                          - 126
+                          - 127)
+                          * 12800000000
+                          / 12900000000
+            END-COMPUTE.
+            IF FIELD NOT = -4670.31
+               MOVE FIELD TO FIELD-DISP
+               DISPLAY 'COMPUTE with wrong result: ' FIELD-DISP
+               END-DISPLAY
+            END-IF.
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__8_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__8_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Numeric_operations__8_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Numeric_operations__8_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,37 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+           1 COMPUTE-DATA.
+            2 COMPUTE-8             PICTURE 999       VALUE ZERO.
+        PROCEDURE        DIVISION.
+            COMPUTE COMPUTE-8 = (((24.0 + 1) * (60 - 10)) / 125) ** 2
+            IF COMPUTE-8 NOT = 100
+               DISPLAY 'COMPUTE with wrong result: ' COMPUTE-8
+               END-DISPLAY
+            END-IF
+            COMPUTE COMPUTE-8 = 55 / (1 - 2 + 1)
+               NOT ON SIZE ERROR
+                  DISPLAY 'SIZE ERROR not set from divide by zero!'
+                  END-DISPLAY
+            END-COMPUTE
+            COMPUTE COMPUTE-8 = 0 ** 1
+            IF COMPUTE-8 NOT = 0
+               DISPLAY '0 ** 1 <> 0: ' COMPUTE-8
+               END-DISPLAY
+            END-IF
+            COMPUTE COMPUTE-8 = 55 ** 0
+            IF COMPUTE-8 NOT = 1
+               DISPLAY '55 ** 0 <> 1: ' COMPUTE-8
+               END-DISPLAY
+            END-IF
+            COMPUTE COMPUTE-8 = 1 ** 55
+            IF COMPUTE-8 NOT = 1
+               DISPLAY '11 ** 55 <> 1: ' COMPUTE-8
+               END-DISPLAY
+            END-IF
+ 
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/OCCURS_clause_with_1_entry.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/OCCURS_clause_with_1_entry.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/OCCURS_clause_with_1_entry.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/OCCURS_clause_with_1_entry.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,40 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  D1.
+            03  FILLER   OCCURS 1.
+                05 D1-ENTRY   PIC X(03) value '123'.
+        01  D2.
+            03  D2-ENTRY   PIC X(03)  value 'ABC'  OCCURS 1.
+        01  D1TOR.
+            03  FILLER   PIC X(03) value '456'.
+        01  D1-R         REDEFINES D1TOR.
+            03  FILLER   OCCURS 1.
+                05 D1-R-ENTRY   PIC X(03).
+        01  D2TOR.
+            03  FILLER   PIC X(03) value 'DEF'.
+        01  D2-R         REDEFINES D2TOR.
+            03  D2-R-ENTRY   PIC X(03)   OCCURS 1.
+ 
+        PROCEDURE        DIVISION.
+            IF D1-ENTRY (1) NOT = "123"
+               DISPLAY D1-ENTRY (1)
+               END-DISPLAY
+            END-IF.
+            IF D2-ENTRY (1) NOT = "ABC"
+               DISPLAY D2-ENTRY (1)
+               END-DISPLAY
+            END-IF.
+            IF D1-R-ENTRY (1) NOT = "456"
+               DISPLAY D1-R-ENTRY (1)
+               END-DISPLAY
+            END-IF.
+            IF D2-R-ENTRY (1) NOT = "DEF"
+               DISPLAY D2-R-ENTRY (1)
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,40 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/OSVS_Arithmetic_Test__2_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT      DIVISION.
+        DATA             DIVISION.
+        WORKING-STORAGE SECTION.
+        01  VAL                 PIC S9(7)V99 COMP-3 VALUE 20500.
+        01  DIV1                PIC S9(7)V99 COMP-3 VALUE 0.9.
+        01  DIV2                PIC S9(7)V99 COMP-3 VALUE 33.45.
+        01  DIV3                PIC S9(7)V99 COMP-3 VALUE 9.
+        01  MUL1                PIC S9(7)V99 COMP-3 VALUE 10.
+        01  MUL2                PIC S9(7)V99 COMP-3 VALUE 5.
+        01  MUL3                PIC S9(7)V99 COMP-3 VALUE 2.
+        01  RES                 PIC S9(7)V99 COMP-3.
+        PROCEDURE        DIVISION.
+            COMPUTE RES = VAL / DIV1 / DIV2.
+            DISPLAY 'RES = ' RES.
+            COMPUTE RES ROUNDED = VAL / DIV1 / DIV2.
+            DISPLAY 'RES ROUNDED = ' RES.
+            COMPUTE RES = VAL * MUL1 / DIV3 / DIV2.
+            DISPLAY 'RES MULT1 = ' RES.
+            COMPUTE RES = VAL * MUL2 * MUL3 / DIV3 / DIV2.
+            DISPLAY 'RES MULT2 = ' RES.
+            COMPUTE RES = VAL / DIV1.
+            DISPLAY 'RES 1 = ' RES.
+            COMPUTE RES = RES / DIV2.
+            DISPLAY 'RES F = ' RES.
+            COMPUTE RES  =
+                 VAL / DIV1 / DIV2.
+            DISPLAY 'RES NOT ROUNDED = ' RES.
+            COMPUTE RES ROUNDED MODE NEAREST-AWAY-FROM-ZERO =
+                 VAL / DIV1 / DIV2.
+            DISPLAY 'RES ROUNDED NEAREST-AWAY = ' RES.
+            COMPUTE RES ROUNDED MODE AWAY-FROM-ZERO =
+                 VAL / DIV1 / DIV2.
+            DISPLAY 'RES ROUNDED AWAY = ' RES.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/OSVS_Arithmetic_Test__2_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,10 ----
+ RES = +0000680.95
+ RES ROUNDED = +0000680.95
+ RES MULT1 = +0000680.95
+ RES MULT2 = +0000680.95
+ RES 1 = +0022777.77
+ RES F = +0000680.94
+ RES NOT ROUNDED = +0000680.95
+ RES ROUNDED NEAREST-AWAY = +0000680.95
+ RES ROUNDED AWAY = +0000680.96
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PERFORM_..._CONTINUE.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PERFORM_..._CONTINUE.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PERFORM_..._CONTINUE.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PERFORM_..._CONTINUE.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,9 ----
+       *> { dg-do compile }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        PROCEDURE        DIVISION.
+            PERFORM 2 TIMES
+              CONTINUE
+            END-PERFORM.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PERFORM_inline__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PERFORM_inline__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PERFORM_inline__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PERFORM_inline__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,19 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  INDVAL       PIC 9(4).
+        PROCEDURE        DIVISION.
+            PERFORM VARYING INDVAL FROM 1
+             BY 1 UNTIL INDVAL > 2
+            CONTINUE
+            END-PERFORM
+            IF INDVAL NOT = 3
+               DISPLAY INDVAL NO ADVANCING
+               END-DISPLAY
+            END-IF
+            STOP RUN
+            .
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PERFORM_inline__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PERFORM_inline__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PERFORM_inline__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PERFORM_inline__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,18 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  INDVAL       PIC 9(4).
+        PROCEDURE        DIVISION.
+            PERFORM VARYING INDVAL FROM 1
+             BY 1 UNTIL INDVAL > 2
+             CONTINUE
+             END-PERFORM
+            IF INDVAL NOT = 3
+               DISPLAY INDVAL NO ADVANCING
+               END-DISPLAY
+            END-IF
+            .
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PERFORM_type_OSVS.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PERFORM_type_OSVS.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PERFORM_type_OSVS.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PERFORM_type_OSVS.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,28 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  MYOCC        PIC 9(8) COMP VALUE 0.
+        PROCEDURE        DIVISION.
+        ASTART SECTION.
+        A01.
+            PERFORM BTEST.
+            IF MYOCC NOT = 2
+               DISPLAY MYOCC
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+        BTEST SECTION.
+        B01.
+            PERFORM B02 VARYING MYOCC FROM 1 BY 1
+                    UNTIL MYOCC > 5.
+            GO TO B99.
+        B02.
+            IF MYOCC > 1
+               GO TO B99
+            END-IF.
+        B99.
+            EXIT.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PIC_ZZZ-__ZZZ_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PIC_ZZZ-__ZZZ_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/PIC_ZZZ-__ZZZ_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/PIC_ZZZ-__ZZZ_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,44 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X-ZZZN                    PIC ZZZ-.
+        01  XZN-RED REDEFINES X-ZZZN  PIC X(4).
+        01  X-ZZZP                    PIC ZZZ+.
+        01  XZP-RED REDEFINES X-ZZZP  PIC X(4).
+        PROCEDURE        DIVISION.
+            MOVE -1 TO X-ZZZN.
+            IF XZN-RED NOT = "  1-"
+               DISPLAY "(" X-ZZZN ")"
+               END-DISPLAY
+            END-IF.
+            MOVE  0 TO X-ZZZN.
+            IF XZN-RED NOT = "    "
+               DISPLAY "(" X-ZZZN ")"
+               END-DISPLAY
+            END-IF.
+            MOVE +1 TO X-ZZZN.
+            IF XZN-RED NOT = "  1 "
+               DISPLAY "(" X-ZZZN ")"
+               END-DISPLAY
+            END-IF.
+ 
+            MOVE -1 TO X-ZZZP.
+            IF XZP-RED NOT = "  1-"
+               DISPLAY "(" X-ZZZP ")"
+               END-DISPLAY
+            END-IF.
+            MOVE  0 TO X-ZZZP.
+            IF XZP-RED NOT = "    "
+               DISPLAY "(" X-ZZZP ")"
+               END-DISPLAY
+            END-IF.
+            MOVE +1 TO X-ZZZP.
+            IF XZP-RED NOT = "  1+"
+               DISPLAY "(" X-ZZZP ")"
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,17 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+        *> { dg-output-file "group2/Quick_check_of_PIC_XX_COMP-5.out" }
+          identification division.
+         program-id. wrapper.
+         data division.
+         working-storage section.
+         01 memx pic x(2) comp-5.
+         77 ptr pointer.
+         procedure division.
+         Initialize ptr.display "LENGTH OF X(2) is " length of memx
+         move 12345 to memx
+         display memx
+         IF ptr <> NULL then display 'bad pointer'.
+         goback.
+         end program wrapper.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Quick_check_of_PIC_XX_COMP-5.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,3 ----
+ LENGTH OF X(2) is 2
+ 12345
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,11 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Quote_marks_in_comment_paragraphs.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID.    prog.
+        DATE-written.  hello'".
+       *> Written is intentionally lowercase.
+       *> extra " to fix syntax highlighting
+        PROCEDURE      DIVISION.
+            DISPLAY "Hello, world!".
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Quote_marks_in_comment_paragraphs.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,2 ----
+ Hello, world!
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,38 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/REDEFINES_values_on_FILLER_and_INITIALIZE.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA  DIVISION.
+        WORKING-STORAGE SECTION.
+        01  TSRDF.
+            05  WS-ASK-ID-DATE                PIC X(10).
+            05  WS-ASK-ID-DATE-R              REDEFINES WS-ASK-ID-DATE.
+                10  WS-ASK-ID-DATE-YYYY       PIC 9(4) VALUE 2017.
+                10  FILLER                    PIC X VALUE '-'.
+                10  WS-ASK-ID-DATE-MM         PIC 9(2).
+                10  FILLER                    PIC X VALUE '-'.
+                10  WS-ASK-ID-DATE-DD         PIC 9(2).
+        PROCEDURE DIVISION.
+            MOVE ALL '*' TO WS-ASK-ID-DATE
+            MOVE 2015 TO WS-ASK-ID-DATE-YYYY
+            MOVE 08 TO WS-ASK-ID-DATE-MM
+            MOVE 21 TO WS-ASK-ID-DATE-DD
+            DISPLAY "The date is " WS-ASK-ID-DATE " Compiled".
+ 
+            INITIALIZE WS-ASK-ID-DATE-R.
+            MOVE 08 TO WS-ASK-ID-DATE-MM
+            MOVE 21 TO WS-ASK-ID-DATE-DD
+            DISPLAY "The date is " WS-ASK-ID-DATE " INITIALIZE".
+ 
+            INITIALIZE WS-ASK-ID-DATE-R WITH FILLER.
+            MOVE 08 TO WS-ASK-ID-DATE-MM
+            MOVE 21 TO WS-ASK-ID-DATE-DD
+            DISPLAY "The date is " WS-ASK-ID-DATE " WITH FILLER".
+ 
+            INITIALIZE WS-ASK-ID-DATE-R WITH FILLER ALL TO VALUE.
+            MOVE 08 TO WS-ASK-ID-DATE-MM
+            MOVE 21 TO WS-ASK-ID-DATE-DD
+            DISPLAY "The date is " WS-ASK-ID-DATE " ALL TO VALUE".
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/REDEFINES_values_on_FILLER_and_INITIALIZE.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ The date is 2015*08*21 Compiled
+ The date is 0000*08*21 INITIALIZE
+ The date is 0000 08 21 WITH FILLER
+ The date is 2017-08-21 ALL TO VALUE
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,55 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ROUNDED_AWAY-FROM-ZERO.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  M                PIC S9.
+        01  N                PIC S9.
+        01  O                PIC S9.
+        01  P                PIC S9.
+        01  Q                PIC S9.
+        01  R                PIC S9.
+        01  S                PIC S9.
+        01  T                PIC S9.
+        01  U                PIC S9.
+        01  V                PIC S9.
+        PROCEDURE DIVISION.
+            COMPUTE M ROUNDED MODE AWAY-FROM-ZERO
+                    = 2.49
+            END-COMPUTE
+            COMPUTE N ROUNDED MODE AWAY-FROM-ZERO
+                    = -2.49
+            END-COMPUTE
+            COMPUTE O ROUNDED MODE AWAY-FROM-ZERO
+                    = 2.50
+            END-COMPUTE
+            COMPUTE P ROUNDED MODE AWAY-FROM-ZERO
+                    = -2.50
+            END-COMPUTE
+            COMPUTE Q ROUNDED MODE AWAY-FROM-ZERO
+                    = 3.49
+            END-COMPUTE
+            COMPUTE R ROUNDED MODE AWAY-FROM-ZERO
+                    = -3.49
+            END-COMPUTE
+            COMPUTE S ROUNDED MODE AWAY-FROM-ZERO
+                    = 3.50
+            END-COMPUTE
+            COMPUTE T ROUNDED MODE AWAY-FROM-ZERO
+                    = -3.50
+            END-COMPUTE
+            COMPUTE U ROUNDED MODE AWAY-FROM-ZERO
+                    = 3.510
+            END-COMPUTE
+            COMPUTE V ROUNDED MODE AWAY-FROM-ZERO
+                    = -3.510
+            END-COMPUTE
+            DISPLAY M " " N " " O " " P " " Q " " R " " S " " T
+                    " " U " " V
+                NO ADVANCING
+            END-DISPLAY
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_AWAY-FROM-ZERO.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ +3 -3 +3 -3 +4 -4 +4 -4 +4 -4
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,55 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  M                PIC S9.
+        01  N                PIC S9.
+        01  O                PIC S9.
+        01  P                PIC S9.
+        01  Q                PIC S9.
+        01  R                PIC S9.
+        01  S                PIC S9.
+        01  T                PIC S9.
+        01  U                PIC S9.
+        01  V                PIC S9.
+        PROCEDURE DIVISION.
+            COMPUTE M ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = 2.49
+            END-COMPUTE
+            COMPUTE N ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = -2.49
+            END-COMPUTE
+            COMPUTE O ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = 2.50
+            END-COMPUTE
+            COMPUTE P ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = -2.50
+            END-COMPUTE
+            COMPUTE Q ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = 3.49
+            END-COMPUTE
+            COMPUTE R ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = -3.49
+            END-COMPUTE
+            COMPUTE S ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = 3.50
+            END-COMPUTE
+            COMPUTE T ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = -3.50
+            END-COMPUTE
+            COMPUTE U ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = 3.510
+            END-COMPUTE
+            COMPUTE V ROUNDED MODE NEAREST-AWAY-FROM-ZERO
+                    = -3.510
+            END-COMPUTE
+            DISPLAY M " " N " " O " " P " " Q " " R " " S " " T
+                    " " U " " V
+                NO ADVANCING
+            END-DISPLAY
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-AWAY-FROM-ZERO.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ +2 -2 +3 -3 +3 -3 +4 -4 +4 -4
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,55 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ROUNDED_NEAREST-EVEN.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  M                PIC S9.
+        01  N                PIC S9.
+        01  O                PIC S9.
+        01  P                PIC S9.
+        01  Q                PIC S9.
+        01  R                PIC S9.
+        01  S                PIC S9.
+        01  T                PIC S9.
+        01  U                PIC S9.
+        01  V                PIC S9.
+        PROCEDURE DIVISION.
+            COMPUTE M ROUNDED MODE NEAREST-EVEN
+                    = 2.49
+            END-COMPUTE
+            COMPUTE N ROUNDED MODE NEAREST-EVEN
+                    = -2.49
+            END-COMPUTE
+            COMPUTE O ROUNDED MODE NEAREST-EVEN
+                    = 2.50
+            END-COMPUTE
+            COMPUTE P ROUNDED MODE NEAREST-EVEN
+                    = -2.50
+            END-COMPUTE
+            COMPUTE Q ROUNDED MODE NEAREST-EVEN
+                    = 3.49
+            END-COMPUTE
+            COMPUTE R ROUNDED MODE NEAREST-EVEN
+                    = -3.49
+            END-COMPUTE
+            COMPUTE S ROUNDED MODE NEAREST-EVEN
+                    = 3.50
+            END-COMPUTE
+            COMPUTE T ROUNDED MODE NEAREST-EVEN
+                    = -3.50
+            END-COMPUTE
+            COMPUTE U ROUNDED MODE NEAREST-EVEN
+                    = 3.510
+            END-COMPUTE
+            COMPUTE V ROUNDED MODE NEAREST-EVEN
+                    = -3.510
+            END-COMPUTE
+            DISPLAY M " " N " " O " " P " " Q " " R " " S " " T
+                    " " U " " V
+                NO ADVANCING
+            END-DISPLAY
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-EVEN.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ +2 -2 +2 -2 +3 -3 +4 -4 +4 -4
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,55 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ROUNDED_NEAREST-TOWARD-ZERO.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  M                PIC S9.
+        01  N                PIC S9.
+        01  O                PIC S9.
+        01  P                PIC S9.
+        01  Q                PIC S9.
+        01  R                PIC S9.
+        01  S                PIC S9.
+        01  T                PIC S9.
+        01  U                PIC S9.
+        01  V                PIC S9.
+        PROCEDURE DIVISION.
+            COMPUTE M ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = 2.49
+            END-COMPUTE
+            COMPUTE N ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = -2.49
+            END-COMPUTE
+            COMPUTE O ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = 2.50
+            END-COMPUTE
+            COMPUTE P ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = -2.50
+            END-COMPUTE
+            COMPUTE Q ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = 3.49
+            END-COMPUTE
+            COMPUTE R ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = -3.49
+            END-COMPUTE
+            COMPUTE S ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = 3.50
+            END-COMPUTE
+            COMPUTE T ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = -3.50
+            END-COMPUTE
+            COMPUTE U ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = 3.510
+            END-COMPUTE
+            COMPUTE V ROUNDED MODE NEAREST-TOWARD-ZERO
+                    = -3.510
+            END-COMPUTE
+            DISPLAY M " " N " " O " " P " " Q " " R " " S " " T
+                    " " U " " V
+                NO ADVANCING
+            END-DISPLAY
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_NEAREST-TOWARD-ZERO.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ +2 -2 +2 -2 +3 -3 +3 -3 +4 -4
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,55 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ROUNDED_TOWARD-GREATER.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  M                PIC S9.
+        01  N                PIC S9.
+        01  O                PIC S9.
+        01  P                PIC S9.
+        01  Q                PIC S9.
+        01  R                PIC S9.
+        01  S                PIC S9.
+        01  T                PIC S9.
+        01  U                PIC S9.
+        01  V                PIC S9.
+        PROCEDURE DIVISION.
+            COMPUTE M ROUNDED MODE TOWARD-GREATER
+                    = 2.49
+            END-COMPUTE
+            COMPUTE N ROUNDED MODE TOWARD-GREATER
+                    = -2.49
+            END-COMPUTE
+            COMPUTE O ROUNDED MODE TOWARD-GREATER
+                    = 2.50
+            END-COMPUTE
+            COMPUTE P ROUNDED MODE TOWARD-GREATER
+                    = -2.50
+            END-COMPUTE
+            COMPUTE Q ROUNDED MODE TOWARD-GREATER
+                    = 3.49
+            END-COMPUTE
+            COMPUTE R ROUNDED MODE TOWARD-GREATER
+                    = -3.49
+            END-COMPUTE
+            COMPUTE S ROUNDED MODE TOWARD-GREATER
+                    = 3.50
+            END-COMPUTE
+            COMPUTE T ROUNDED MODE TOWARD-GREATER
+                    = -3.50
+            END-COMPUTE
+            COMPUTE U ROUNDED MODE TOWARD-GREATER
+                    = 3.510
+            END-COMPUTE
+            COMPUTE V ROUNDED MODE TOWARD-GREATER
+                    = -3.510
+            END-COMPUTE
+            DISPLAY M " " N " " O " " P " " Q " " R " " S " " T
+                    " " U " " V
+                NO ADVANCING
+            END-DISPLAY
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-GREATER.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ +3 -2 +3 -2 +4 -3 +4 -3 +4 -3
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,55 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ROUNDED_TOWARD-LESSER.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  M                PIC S9.
+        01  N                PIC S9.
+        01  O                PIC S9.
+        01  P                PIC S9.
+        01  Q                PIC S9.
+        01  R                PIC S9.
+        01  S                PIC S9.
+        01  T                PIC S9.
+        01  U                PIC S9.
+        01  V                PIC S9.
+        PROCEDURE DIVISION.
+            COMPUTE M ROUNDED MODE TOWARD-LESSER
+                    = 2.49
+            END-COMPUTE
+            COMPUTE N ROUNDED MODE TOWARD-LESSER
+                    = -2.49
+            END-COMPUTE
+            COMPUTE O ROUNDED MODE TOWARD-LESSER
+                    = 2.50
+            END-COMPUTE
+            COMPUTE P ROUNDED MODE TOWARD-LESSER
+                    = -2.50
+            END-COMPUTE
+            COMPUTE Q ROUNDED MODE TOWARD-LESSER
+                    = 3.49
+            END-COMPUTE
+            COMPUTE R ROUNDED MODE TOWARD-LESSER
+                    = -3.49
+            END-COMPUTE
+            COMPUTE S ROUNDED MODE TOWARD-LESSER
+                    = 3.50
+            END-COMPUTE
+            COMPUTE T ROUNDED MODE TOWARD-LESSER
+                    = -3.50
+            END-COMPUTE
+            COMPUTE U ROUNDED MODE TOWARD-LESSER
+                    = 3.510
+            END-COMPUTE
+            COMPUTE V ROUNDED MODE TOWARD-LESSER
+                    = -3.510
+            END-COMPUTE
+            DISPLAY M " " N " " O " " P " " Q " " R " " S " " T
+                    " " U " " V
+                NO ADVANCING
+            END-DISPLAY
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TOWARD-LESSER.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ +2 -3 +2 -3 +3 -4 +3 -4 +3 -4
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,55 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ROUNDED_TRUNCATION.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  M                PIC S9.
+        01  N                PIC S9.
+        01  O                PIC S9.
+        01  P                PIC S9.
+        01  Q                PIC S9.
+        01  R                PIC S9.
+        01  S                PIC S9.
+        01  T                PIC S9.
+        01  U                PIC S9.
+        01  V                PIC S9.
+        PROCEDURE DIVISION.
+            COMPUTE M ROUNDED MODE TRUNCATION
+                    = 2.49
+            END-COMPUTE
+            COMPUTE N ROUNDED MODE TRUNCATION
+                    = -2.49
+            END-COMPUTE
+            COMPUTE O ROUNDED MODE TRUNCATION
+                    = 2.50
+            END-COMPUTE
+            COMPUTE P ROUNDED MODE TRUNCATION
+                    = -2.50
+            END-COMPUTE
+            COMPUTE Q ROUNDED MODE TRUNCATION
+                    = 3.49
+            END-COMPUTE
+            COMPUTE R ROUNDED MODE TRUNCATION
+                    = -3.49
+            END-COMPUTE
+            COMPUTE S ROUNDED MODE TRUNCATION
+                    = 3.50
+            END-COMPUTE
+            COMPUTE T ROUNDED MODE TRUNCATION
+                    = -3.50
+            END-COMPUTE
+            COMPUTE U ROUNDED MODE TRUNCATION
+                    = 3.510
+            END-COMPUTE
+            COMPUTE V ROUNDED MODE TRUNCATION
+                    = -3.510
+            END-COMPUTE
+            DISPLAY M " " N " " O " " P " " Q " " R " " S " " T
+                    " " U " " V
+                NO ADVANCING
+            END-DISPLAY
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDED_TRUNCATION.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ +2 -2 +2 -2 +3 -3 +3 -3 +3 -3
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,427 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.out" }
+         IDENTIFICATION DIVISION.
+         PROGRAM-ID. prog.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         01 VAR1                     COMP-2.
+         01 VAR2             PICTURE        S999.
+         01 SHOULD_BE        PICTURE        S999.
+         01 RMODE            PICTURE        X(64).
+         01 EMPTY            PIC X VALUE " ".
+         01 FLAG             PIC X.
+         PROCEDURE DIVISION.
+ 
+         DISPLAY "ROUNDING from COMP-2 after COMPUTE."
+ 
+         PERFORM truncation-e.
+         PERFORM truncation-m.
+         PERFORM nearest-away-from-zero-e.
+         PERFORM nearest-away-from-zero-m.
+         PERFORM away-from-zero-e.
+         PERFORM away-from-zero-m.
+         PERFORM nearest-even-e.
+         PERFORM nearest-even-m.
+         PERFORM nearest-toward-zero-e.
+         PERFORM nearest-toward-zero-m.
+         PERFORM toward-greater-e.
+         PERFORM toward-greater-m.
+         PERFORM toward-lesser-e.
+         PERFORM toward-lesser-m.
+         PERFORM prohibited-e.
+         GOBACK.
+ 
+         truncation-e.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         truncation-m.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-away-from-zero-e.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-away-from-zero-m.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         away-from-zero-e.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         away-from-zero-m.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-even-e.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 110.0        TO VAR1
+             MOVE 110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 110.1        TO VAR1
+             MOVE 110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 110.5        TO VAR1
+             MOVE 110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 110.9        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-even-m.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -110.0        TO VAR1
+             MOVE -110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -110.1        TO VAR1
+             MOVE -110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -110.5        TO VAR1
+             MOVE -110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -110.9        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-toward-zero-e.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-toward-zero-m.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         toward-greater-e.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         toward-greater-m.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         toward-lesser-e.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         toward-lesser-m.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         prohibited-e.
+             MOVE "PROHIBITED - fits" TO RMODE
+             SET LAST EXCEPTION TO OFF
+             MOVE 123          TO VAR2
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE PROHIBITED = VAR1
+             PERFORM SHOW_RESULTS
+             DISPLAY "     EXCEPTION STATUS IS "
+                         """" FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """".
+ 
+             MOVE "PROHIBITED - doesn't fit; no ON ERROR phrase" TO RMODE
+             SET LAST EXCEPTION TO OFF
+             MOVE 123          TO VAR2
+             MOVE 111.5        TO VAR1
+             MOVE 123          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE PROHIBITED = VAR1
+             PERFORM SHOW_RESULTS
+             DISPLAY "     EXCEPTION STATUS IS "
+                         """" FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """".
+ 
+             MOVE "PROHIBITED - doesn't fit; ON ERROR phrase" TO RMODE
+             SET LAST EXCEPTION TO OFF
+             MOVE SPACE TO FLAG
+             MOVE 123          TO VAR2
+             MOVE 111.5        TO VAR1
+             MOVE 123          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE PROHIBITED = VAR1
+                 ON SIZE ERROR MOVE 'X' TO FLAG
+                 END-COMPUTE
+             PERFORM SHOW_RESULTS
+             IF FLAG EQUAL 'X'
+                 DISPLAY "     COMPUTE had an ON SIZE error"
+                 END-IF.
+             DISPLAY "     EXCEPTION STATUS IS "
+                         """" FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """".
+ 
+         SHOW_RESULTS.
+             DISPLAY "Rounding mode " FUNCTION TRIM(RMODE)
+                     " " VAR1 " becomes " VAR2
+                     WITH NO ADVANCING
+             END-DISPLAY
+             IF VAR2 EQUALS SHOULD_BE
+                 DISPLAY FUNCTION TRIM(EMPTY)
+             ELSE
+                 DISPLAY " but it should be " SHOULD_BE
+             END-IF.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_Floating-Point_from_COMPUTE.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,71 ----
+ ROUNDING from COMP-2 after COMPUTE.
+ Rounding mode TRUNCATION 111 becomes +111
+ Rounding mode TRUNCATION 111.099999999999994 becomes +111
+ Rounding mode TRUNCATION 111.5 becomes +111
+ Rounding mode TRUNCATION 111.900000000000006 becomes +111
+ Rounding mode TRUNCATION -111 becomes -111
+ Rounding mode TRUNCATION -111.099999999999994 becomes -111
+ Rounding mode TRUNCATION -111.5 becomes -111
+ Rounding mode TRUNCATION -111.900000000000006 becomes -111
+ Rounding mode NEAREST-AWAY-FROM-ZERO 111 becomes +111
+ Rounding mode NEAREST-AWAY-FROM-ZERO 111.099999999999994 becomes +111
+ Rounding mode NEAREST-AWAY-FROM-ZERO 111.5 becomes +112
+ Rounding mode NEAREST-AWAY-FROM-ZERO 111.900000000000006 becomes +112
+ Rounding mode NEAREST-AWAY-FROM-ZERO -111 becomes -111
+ Rounding mode NEAREST-AWAY-FROM-ZERO -111.099999999999994 becomes -111
+ Rounding mode NEAREST-AWAY-FROM-ZERO -111.5 becomes -112
+ Rounding mode NEAREST-AWAY-FROM-ZERO -111.900000000000006 becomes -112
+ Rounding mode AWAY-FROM-ZERO 111 becomes +111
+ Rounding mode AWAY-FROM-ZERO 111.099999999999994 becomes +112
+ Rounding mode AWAY-FROM-ZERO 111.5 becomes +112
+ Rounding mode AWAY-FROM-ZERO 111.900000000000006 becomes +112
+ Rounding mode AWAY-FROM-ZERO -111 becomes -111
+ Rounding mode AWAY-FROM-ZERO -111.099999999999994 becomes -112
+ Rounding mode AWAY-FROM-ZERO -111.5 becomes -112
+ Rounding mode AWAY-FROM-ZERO -111.900000000000006 becomes -112
+ Rounding mode NEAREST-EVEN 110 becomes +110
+ Rounding mode NEAREST-EVEN 110.099999999999994 becomes +110
+ Rounding mode NEAREST-EVEN 110.5 becomes +110
+ Rounding mode NEAREST-EVEN 111 becomes +111
+ Rounding mode NEAREST-EVEN 111.099999999999994 becomes +111
+ Rounding mode NEAREST-EVEN 111.5 becomes +112
+ Rounding mode NEAREST-EVEN 111.900000000000006 becomes +112
+ Rounding mode NEAREST-EVEN -110 becomes -110
+ Rounding mode NEAREST-EVEN -110.099999999999994 becomes -110
+ Rounding mode NEAREST-EVEN -110.5 becomes -110
+ Rounding mode NEAREST-EVEN -111 becomes -111
+ Rounding mode NEAREST-EVEN -111.099999999999994 becomes -111
+ Rounding mode NEAREST-EVEN -111.5 becomes -112
+ Rounding mode NEAREST-EVEN -111.900000000000006 becomes -112
+ Rounding mode NEAREST-TOWARD-ZERO 111 becomes +111
+ Rounding mode NEAREST-TOWARD-ZERO 111.099999999999994 becomes +111
+ Rounding mode NEAREST-TOWARD-ZERO 111.5 becomes +111
+ Rounding mode NEAREST-TOWARD-ZERO 111.900000000000006 becomes +112
+ Rounding mode NEAREST-TOWARD-ZERO -111 becomes -111
+ Rounding mode NEAREST-TOWARD-ZERO -111.099999999999994 becomes -111
+ Rounding mode NEAREST-TOWARD-ZERO -111.5 becomes -111
+ Rounding mode NEAREST-TOWARD-ZERO -111.900000000000006 becomes -112
+ Rounding mode TOWARD-GREATER 111 becomes +111
+ Rounding mode TOWARD-GREATER 111.099999999999994 becomes +112
+ Rounding mode TOWARD-GREATER 111.5 becomes +112
+ Rounding mode TOWARD-GREATER 111.900000000000006 becomes +112
+ Rounding mode TOWARD-GREATER -111 becomes -111
+ Rounding mode TOWARD-GREATER -111.099999999999994 becomes -111
+ Rounding mode TOWARD-GREATER -111.5 becomes -111
+ Rounding mode TOWARD-GREATER -111.900000000000006 becomes -111
+ Rounding mode TOWARD-LESSER 111 becomes +111
+ Rounding mode TOWARD-LESSER 111.099999999999994 becomes +111
+ Rounding mode TOWARD-LESSER 111.5 becomes +111
+ Rounding mode TOWARD-LESSER 111.900000000000006 becomes +111
+ Rounding mode TOWARD-LESSER -111 becomes -111
+ Rounding mode TOWARD-LESSER -111.099999999999994 becomes -112
+ Rounding mode TOWARD-LESSER -111.5 becomes -112
+ Rounding mode TOWARD-LESSER -111.900000000000006 becomes -112
+ Rounding mode PROHIBITED - fits 111 becomes +111
+      EXCEPTION STATUS IS ""
+ Rounding mode PROHIBITED - doesn't fit; no ON ERROR phrase 111.5 becomes +123
+      EXCEPTION STATUS IS "EC-SIZE-TRUNCATION"
+ Rounding mode PROHIBITED - doesn't fit; ON ERROR phrase 111.5 becomes +123
+      COMPUTE had an ON SIZE error
+      EXCEPTION STATUS IS "EC-SIZE-TRUNCATION"
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,428 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.out" }
+         IDENTIFICATION DIVISION.
+         PROGRAM-ID. prog.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         01 VAR1             PICTURE        S999V9.
+         01 VAR2             PICTURE        S999.
+         01 SHOULD_BE        PICTURE        S999.
+         01 RMODE            PICTURE        X(64).
+         01 EMPTY            PIC X VALUE " ".
+         01 FLAG             PIC X.
+         PROCEDURE DIVISION.
+ 
+         DISPLAY "ROUNDING from NumericDisplay after COMPUTE."
+ 
+         PERFORM truncation-e.
+         PERFORM truncation-m.
+         PERFORM nearest-away-from-zero-e.
+         PERFORM nearest-away-from-zero-m.
+         PERFORM away-from-zero-e.
+         PERFORM away-from-zero-m.
+         PERFORM nearest-even-e.
+         PERFORM nearest-even-m.
+         PERFORM nearest-toward-zero-e.
+         PERFORM nearest-toward-zero-m.
+         PERFORM toward-greater-e.
+         PERFORM toward-greater-m.
+         PERFORM toward-lesser-e.
+         PERFORM toward-lesser-m.
+         PERFORM prohibited-e.
+         GOBACK.
+ 
+         truncation-e.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         truncation-m.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TRUNCATION" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TRUNCATION = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-away-from-zero-e.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-away-from-zero-m.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         away-from-zero-e.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         away-from-zero-m.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "AWAY-FROM-ZERO" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE AWAY-FROM-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-even-e.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 110.0        TO VAR1
+             MOVE 110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 110.1        TO VAR1
+             MOVE 110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 110.5        TO VAR1
+             MOVE 110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 110.9        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-even-m.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -110.0        TO VAR1
+             MOVE -110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -110.1        TO VAR1
+             MOVE -110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -110.5        TO VAR1
+             MOVE -110          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -110.9        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-EVEN" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-EVEN = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-toward-zero-e.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         nearest-toward-zero-m.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "NEAREST-TOWARD-ZERO" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE NEAREST-TOWARD-ZERO = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         toward-greater-e.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         toward-greater-m.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-GREATER" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-GREATER = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         toward-lesser-e.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE 111.1        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE 111.5        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE 111.9        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         toward-lesser-m.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE -111.0        TO VAR1
+             MOVE -111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE -111.1        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE -111.5        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+             MOVE "TOWARD-LESSER" TO RMODE
+             MOVE -111.9        TO VAR1
+             MOVE -112          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE TOWARD-LESSER = VAR1
+             PERFORM SHOW_RESULTS.
+ 
+         prohibited-e.
+             MOVE "PROHIBITED - fits" TO RMODE
+             SET LAST EXCEPTION TO OFF
+             MOVE 123          TO VAR2
+             MOVE 111.0        TO VAR1
+             MOVE 111          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE PROHIBITED = VAR1
+             PERFORM SHOW_RESULTS
+             DISPLAY "     EXCEPTION STATUS IS "
+                         """" FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """".
+ 
+             MOVE "PROHIBITED - doesn't fit; no ON ERROR phrase" TO RMODE
+             SET LAST EXCEPTION TO OFF
+             MOVE 123          TO VAR2
+             MOVE 111.5        TO VAR1
+             MOVE 123          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE PROHIBITED = VAR1
+             PERFORM SHOW_RESULTS
+             DISPLAY "     EXCEPTION STATUS IS "
+                         """" FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """".
+ 
+             MOVE "PROHIBITED - doesn't fit; ON ERROR phrase" TO RMODE
+             SET LAST EXCEPTION TO OFF
+             MOVE SPACE TO FLAG
+             MOVE 123          TO VAR2
+             MOVE 111.5        TO VAR1
+             MOVE 123          TO SHOULD_BE
+             COMPUTE VAR2 ROUNDED MODE PROHIBITED = VAR1
+                 ON SIZE ERROR MOVE 'X' TO FLAG
+                 END-COMPUTE
+             PERFORM SHOW_RESULTS
+             IF FLAG EQUAL 'X'
+                 DISPLAY "     COMPUTE had an ON SIZE error"
+                 END-IF.
+             DISPLAY "     EXCEPTION STATUS IS "
+                         """" FUNCTION TRIM(FUNCTION EXCEPTION-STATUS) """".
+ 
+         SHOW_RESULTS.
+             DISPLAY "Rounding mode " FUNCTION TRIM(RMODE)
+                     " " VAR1 " becomes " VAR2
+                     WITH NO ADVANCING
+             END-DISPLAY
+             IF VAR2 EQUALS SHOULD_BE
+                 DISPLAY FUNCTION TRIM(EMPTY)
+             ELSE
+                 DISPLAY " but it should be " SHOULD_BE
+             END-IF.
+ 
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/ROUNDING_omnibus_NumericDisplay_from_COMPUTE.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,71 ----
+ ROUNDING from NumericDisplay after COMPUTE.
+ Rounding mode TRUNCATION +111.0 becomes +111
+ Rounding mode TRUNCATION +111.1 becomes +111
+ Rounding mode TRUNCATION +111.5 becomes +111
+ Rounding mode TRUNCATION +111.9 becomes +111
+ Rounding mode TRUNCATION -111.0 becomes -111
+ Rounding mode TRUNCATION -111.1 becomes -111
+ Rounding mode TRUNCATION -111.5 becomes -111
+ Rounding mode TRUNCATION -111.9 becomes -111
+ Rounding mode NEAREST-AWAY-FROM-ZERO +111.0 becomes +111
+ Rounding mode NEAREST-AWAY-FROM-ZERO +111.1 becomes +111
+ Rounding mode NEAREST-AWAY-FROM-ZERO +111.5 becomes +112
+ Rounding mode NEAREST-AWAY-FROM-ZERO +111.9 becomes +112
+ Rounding mode NEAREST-AWAY-FROM-ZERO -111.0 becomes -111
+ Rounding mode NEAREST-AWAY-FROM-ZERO -111.1 becomes -111
+ Rounding mode NEAREST-AWAY-FROM-ZERO -111.5 becomes -112
+ Rounding mode NEAREST-AWAY-FROM-ZERO -111.9 becomes -112
+ Rounding mode AWAY-FROM-ZERO +111.0 becomes +111
+ Rounding mode AWAY-FROM-ZERO +111.1 becomes +112
+ Rounding mode AWAY-FROM-ZERO +111.5 becomes +112
+ Rounding mode AWAY-FROM-ZERO +111.9 becomes +112
+ Rounding mode AWAY-FROM-ZERO -111.0 becomes -111
+ Rounding mode AWAY-FROM-ZERO -111.1 becomes -112
+ Rounding mode AWAY-FROM-ZERO -111.5 becomes -112
+ Rounding mode AWAY-FROM-ZERO -111.9 becomes -112
+ Rounding mode NEAREST-EVEN +110.0 becomes +110
+ Rounding mode NEAREST-EVEN +110.1 becomes +110
+ Rounding mode NEAREST-EVEN +110.5 becomes +110
+ Rounding mode NEAREST-EVEN +111.0 becomes +111
+ Rounding mode NEAREST-EVEN +111.1 becomes +111
+ Rounding mode NEAREST-EVEN +111.5 becomes +112
+ Rounding mode NEAREST-EVEN +111.9 becomes +112
+ Rounding mode NEAREST-EVEN -110.0 becomes -110
+ Rounding mode NEAREST-EVEN -110.1 becomes -110
+ Rounding mode NEAREST-EVEN -110.5 becomes -110
+ Rounding mode NEAREST-EVEN -111.0 becomes -111
+ Rounding mode NEAREST-EVEN -111.1 becomes -111
+ Rounding mode NEAREST-EVEN -111.5 becomes -112
+ Rounding mode NEAREST-EVEN -111.9 becomes -112
+ Rounding mode NEAREST-TOWARD-ZERO +111.0 becomes +111
+ Rounding mode NEAREST-TOWARD-ZERO +111.1 becomes +111
+ Rounding mode NEAREST-TOWARD-ZERO +111.5 becomes +111
+ Rounding mode NEAREST-TOWARD-ZERO +111.9 becomes +112
+ Rounding mode NEAREST-TOWARD-ZERO -111.0 becomes -111
+ Rounding mode NEAREST-TOWARD-ZERO -111.1 becomes -111
+ Rounding mode NEAREST-TOWARD-ZERO -111.5 becomes -111
+ Rounding mode NEAREST-TOWARD-ZERO -111.9 becomes -112
+ Rounding mode TOWARD-GREATER +111.0 becomes +111
+ Rounding mode TOWARD-GREATER +111.1 becomes +112
+ Rounding mode TOWARD-GREATER +111.5 becomes +112
+ Rounding mode TOWARD-GREATER +111.9 becomes +112
+ Rounding mode TOWARD-GREATER -111.0 becomes -111
+ Rounding mode TOWARD-GREATER -111.1 becomes -111
+ Rounding mode TOWARD-GREATER -111.5 becomes -111
+ Rounding mode TOWARD-GREATER -111.9 becomes -111
+ Rounding mode TOWARD-LESSER +111.0 becomes +111
+ Rounding mode TOWARD-LESSER +111.1 becomes +111
+ Rounding mode TOWARD-LESSER +111.5 becomes +111
+ Rounding mode TOWARD-LESSER +111.9 becomes +111
+ Rounding mode TOWARD-LESSER -111.0 becomes -111
+ Rounding mode TOWARD-LESSER -111.1 becomes -112
+ Rounding mode TOWARD-LESSER -111.5 becomes -112
+ Rounding mode TOWARD-LESSER -111.9 becomes -112
+ Rounding mode PROHIBITED - fits +111.0 becomes +111
+      EXCEPTION STATUS IS ""
+ Rounding mode PROHIBITED - doesn't fit; no ON ERROR phrase +111.5 becomes +123
+      EXCEPTION STATUS IS "EC-SIZE-TRUNCATION"
+ Rounding mode PROHIBITED - doesn't fit; ON ERROR phrase +111.5 becomes +123
+      COMPUTE had an ON SIZE error
+      EXCEPTION STATUS IS "EC-SIZE-TRUNCATION"
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,22 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Recursive_PERFORM_paragraph.out" }
+         identification      division.
+         program-id.         prog.
+         data                division.
+         working-storage     section.
+         77 n binary-double unsigned.
+         77 f binary-double unsigned.
+         procedure           division.
+         move 20 to n
+         move 1 to f
+         display "compute " n " factorial".
+         fact.
+             compute f = f * n
+             subtract 1 from n
+             if n not equal to zero then 
+                 perform fact
+             end-if.
+         end-fact.
+         display f.
+         end program         prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Recursive_PERFORM_paragraph.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,3 ----
+ compute 0000000000000000020 factorial
+ 2432902008176640000
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,29 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+        SPECIAL-NAMES.
+            ALPHABET ALPHA IS EBCDIC.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 Z  PIC X(10)  VALUE "d4b2e1a3c5".
+        01 G.
+          02 TBL         OCCURS 10.
+            03 X         PIC X.
+        PROCEDURE        DIVISION.
+            MOVE Z TO G.
+            SORT TBL ASCENDING KEY X SEQUENCE ALPHA.
+            IF G NOT = "abcde12345"
+               DISPLAY G
+               END-DISPLAY
+            END-IF.
+            MOVE Z TO G.
+            SORT TBL DESCENDING KEY X SEQUENCE ALPHA.
+            IF G NOT = "54321edcba"
+               DISPLAY G
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__EBCDIC_table_sort__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,27 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+            OBJECT-COMPUTER.
+              x86 PROGRAM COLLATING SEQUENCE IS EBCDIC-CODE.
+        SPECIAL-NAMES.
+            ALPHABET EBCDIC-CODE IS EBCDIC.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 Z  PIC X(10)  VALUE "d4b2e1a3c5".
+        01 G.
+          02 TBL         OCCURS 10.
+            03 X         PIC X.
+        PROCEDURE        DIVISION.
+            MOVE Z TO G.
+            SORT TBL ASCENDING KEY X.
+            IF G NOT = "abcde12345"
+               DISPLAY G.
+            MOVE Z TO G.
+            SORT TBL DESCENDING KEY X.
+            IF G NOT = "54321edcba"
+               DISPLAY G.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,33 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01 G             VALUE "d4b2e1a3c5".
+          02 TBL         OCCURS 5.
+            03 X         PIC X.
+            03 Y         PIC 9.
+        PROCEDURE        DIVISION.
+            SORT TBL ASCENDING KEY X.
+            IF G NOT = "a3b2c5d4e1"
+               DISPLAY G
+               END-DISPLAY
+            END-IF.
+            SORT TBL DESCENDING KEY Y.
+            IF G NOT = "c5d4a3b2e1"
+               DISPLAY G
+               END-DISPLAY
+            END-IF.
+            SORT TBL ASCENDING KEY TBL.
+            IF G NOT = "a3b2c5d4e1"
+               DISPLAY G
+               END-DISPLAY
+            END-IF.
+            SORT TBL DESCENDING KEY.
+            IF G NOT = "e1d4c5b2a3"
+               DISPLAY G
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,96 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/SORT__table_sort__2_.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01 K                 PIC 9(2).
+ 
+        01 CNT1              PIC 9(9) COMP-5 VALUE 4.
+        01 TAB1.
+           05 ROW1 OCCURS 1 TO 4 DEPENDING CNT1
+                                  DESCENDING TAB1-NR.
+              10 TAB1-NR     PIC 99.
+ 
+        01 TAB2.
+           05 CNT2           PIC 9(9) COMP-5 VALUE 4.
+           05 ROW2 OCCURS 1 TO 4 DEPENDING CNT2
+                                  DESCENDING TAB2-NR.
+              10 TAB2-NR PIC 99.
+ 
+        01 TAB3.
+           05 CNT3           PIC 9(9) COMP-5 VALUE 10.
+           05 ROW3 OCCURS 1 TO 10 DEPENDING CNT3
+                                   DESCENDING TAB3-NR
+                                   ASCENDING TAB3-DATA.
+              10 TAB3-NR     PIC 99.
+              10 FILLER      PIC X(2).
+              10 TAB3-DATA   PIC X(5).
+              10 FILLER      PIC X(2).
+              10 TAB3-DATA2  PIC X(5).
+ 
+ 
+        PROCEDURE DIVISION.
+        A.
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
+              MOVE K TO TAB1-NR(K), TAB2-NR(K)
+            END-PERFORM
+ 
+            MOVE 1 TO TAB3-NR(1).
+            MOVE 1 TO TAB3-NR(8).
+            MOVE 1 TO TAB3-NR(4).
+            MOVE 6 TO TAB3-NR(2).
+            MOVE 5 TO TAB3-NR(3).
+            MOVE 5 TO TAB3-NR(9).
+            MOVE 2 TO TAB3-NR(5).
+            MOVE 2 TO TAB3-NR(10).
+            MOVE 4 TO TAB3-NR(6).
+            MOVE 3 TO TAB3-NR(7).
+ 
+            MOVE "abcde" TO TAB3-DATA(1).
+            MOVE "AbCde" TO TAB3-DATA(2).
+            MOVE "abcde" TO TAB3-DATA(3).
+            MOVE "zyx" TO TAB3-DATA(4).
+            MOVE "12345" TO TAB3-DATA(5).
+            MOVE "zyx" TO TAB3-DATA(6).
+            MOVE "abcde" TO TAB3-DATA(7).
+            MOVE "AbCde" TO TAB3-DATA(8).
+            MOVE "abc" TO TAB3-DATA(9).
+            MOVE "12346" TO TAB3-DATA(10).
+ 
+            MOVE "day" TO TAB3-DATA2(1).
+            MOVE "The" TO TAB3-DATA2(2).
+            MOVE "eats" TO TAB3-DATA2(3).
+            MOVE "." TO TAB3-DATA2(4).
+            MOVE "mooos" TO TAB3-DATA2(5).
+            MOVE "grass" TO TAB3-DATA2(6).
+            MOVE "and" TO TAB3-DATA2(7).
+            MOVE "whole" TO TAB3-DATA2(8).
+            MOVE "cow" TO TAB3-DATA2(9).
+            MOVE "the" TO TAB3-DATA2(10).
+ 
+            SORT ROW1 DESCENDING TAB1-NR
+            SORT ROW2 DESCENDING TAB2-NR
+ 
+            DISPLAY "SINGLE TABLE" END-DISPLAY
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
+              DISPLAY TAB1-NR(K) END-DISPLAY
+            END-PERFORM
+ 
+            DISPLAY "LOWER LEVEL TABLE" END-DISPLAY
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
+              DISPLAY  TAB2-NR(K) END-DISPLAY
+            END-PERFORM
+ 
+            SORT ROW3 DESCENDING TAB3-NR ASCENDING TAB3-DATA
+ 
+            DISPLAY "MULTY KEY SORT" END-DISPLAY
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 10
+              DISPLAY  FUNCTION TRIM(ROW3(K))
+              END-DISPLAY
+            END-PERFORM
+ 
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__2_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,22 ----
+ SINGLE TABLE
+ 04
+ 03
+ 02
+ 01
+ LOWER LEVEL TABLE
+ 04
+ 03
+ 02
+ 01
+ MULTY KEY SORT
+ 06  AbCde  The
+ 05  abc    cow
+ 05  abcde  eats
+ 04  zyx    grass
+ 03  abcde  and
+ 02  12345  mooos
+ 02  12346  the
+ 01  AbCde  whole
+ 01  abcde  day
+ 01  zyx    .
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,48 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/SORT__table_sort__3A_.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01 K                 PIC 9(2).
+ 
+        01 CNT1              PIC 9(9) COMP-5 VALUE 4.
+        01 TAB1.
+           05 ROW1 OCCURS 1 TO 4 DEPENDING CNT1
+                                   DESCENDING TAB1-NR.
+              10 TAB1-NR     PIC 99.
+              10 TAB-DATA    PIC X(5).
+        01 TAB2.
+           05 ROW2 OCCURS 1 TO 4 DEPENDING CNT1
+                                   ASCENDING ROW2.
+              10 TAB2-NR     PIC 99.
+              10 TAB2-DATA   PIC X(5).
+ 
+        PROCEDURE DIVISION.
+        A.
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
+              MOVE K     TO TAB1-NR (K)
+              MOVE 'BLA' TO TAB-DATA(K)
+            END-PERFORM
+ 
+            SORT ROW1
+ 
+            DISPLAY "After SORT [DESCENDING] ROW1"
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
+              DISPLAY TAB1-NR(K) NO ADVANCING END-DISPLAY
+            END-PERFORM
+            DISPLAY ""
+ 
+            MOVE TAB1 TO TAB2
+            SORT ROW2
+ 
+            DISPLAY "After SORT [ASCENDING] ROW2"
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
+              DISPLAY TAB2-NR(K) NO ADVANCING END-DISPLAY
+            END-PERFORM
+            DISPLAY ""
+ 
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3A_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ After SORT [DESCENDING] ROW1
+ 04030201
+ After SORT [ASCENDING] ROW2
+ 01020304
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,44 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/SORT__table_sort__3B_.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog2.
+        ENVIRONMENT DIVISION.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01 K                 PIC 9(2).
+ 
+        01 CNT1              PIC 9(9) COMP-5 VALUE 4.
+        01 TAB1.
+           05 ROW1 OCCURS 5        DESCENDING TAB1-NR.
+              10 TAB1-NR     PIC 99 VALUE ZERO.
+              10 TAB-DATA    PIC X(5).
+        01 TAB2.
+           05 ROW1 OCCURS 1 TO 4 DEPENDING CNT1
+                                   DESCENDING TAB1-NR.
+              10 TAB1-NR     PIC 99.
+              10 TAB-DATA    PIC X(5).
+ 
+        PROCEDURE DIVISION.
+        A.
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
+              MOVE K     TO TAB1-NR  OF TAB2(K)
+              MOVE 'BLA' TO TAB-DATA OF TAB2(K)
+            END-PERFORM
+ 
+            DISPLAY "Before sort"
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
+              DISPLAY TAB1-NR OF TAB2(K) NO ADVANCING END-DISPLAY
+            END-PERFORM
+            DISPLAY ""
+ 
+            SORT ROW1 OF TAB2.
+ 
+            DISPLAY "After descending sort"
+            PERFORM VARYING K FROM 1 BY 1 UNTIL K > 4
+              DISPLAY TAB1-NR OF TAB2(K) NO ADVANCING END-DISPLAY
+            END-PERFORM
+            DISPLAY ""
+ 
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SORT__table_sort__3B_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ Before sort
+ 01020304
+ After descending sort
+ 04030201
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,27 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/SOURCE_FIXED_FREE_directives.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        >>SOURCE FREE
+    DATA             DIVISION.
+    WORKING-STORAGE  SECTION.
+    >>SOURCE FIXED
+        PROCEDURE        DIVISION.                                       FIXED
+              DISPLAY "OK" NO ADVANCING
+              END-DISPLAY.
+        >>SOURCE FREE
+                                                                         DISPLAY
+    "OK"
+  NO ADVANCING
+    END-DISPLAY.
+       >>SOURCE FORMAT FIXED
+              DISPLAY "OK" NO ADVANCING                                  FIXED
+              END-DISPLAY.
+        >>SOURCE FORMAT IS FREE
+                                                                         DISPLAY
+    "OK"
+  NO ADVANCING
+    END-DISPLAY.
+              STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/SOURCE_FIXED_FREE_directives.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ OKOKOKOK
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_ERROR_STATUS.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_ERROR_STATUS.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_ERROR_STATUS.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_ERROR_STATUS.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,10 ----
+        *> { dg-do run }
+        *> { dg-xfail-run-if "" { *-*-* }  }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        PROCEDURE        DIVISION.
+            STOP RUN WITH ERROR STATUS.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_NORMAL_STATUS.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_NORMAL_STATUS.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_NORMAL_STATUS.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STOP_RUN_WITH_NORMAL_STATUS.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,9 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        PROCEDURE        DIVISION.
+            STOP RUN WITH NORMAL STATUS.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,104 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/STRING___UNSTRING__NOT__ON_OVERFLOW.out" }
+ 
+        identification division.
+        program-id. prog.
+        data division.
+        working-storage section.
+        77 simple-str     pic x(20).
+        77 err-str        pic x(50).
+       *-----------------------------------------------------------------
+        procedure division.
+       *    STRING test
+            move spaces to simple-str
+            string 'data'
+              delimited by size
+              into simple-str
+              on overflow
+                move spaces to err-str
+                string 'STRING OVERFLOW'
+                   delimited by size
+                   into err-str
+                end-string
+                display err-str upon syserr
+                end-display
+                display '1 failed'
+                end-display
+              not on overflow
+                display '1 passed'
+                end-display
+            end-string
+            if simple-str not = 'data'
+              display 'STRING ERROR (1): "' simple-str '"'
+              end-display
+            end-if
+       *
+            move spaces to simple-str
+            string 'data is too big here...'
+              delimited by size
+              into simple-str
+              on overflow
+                display '2 passed'
+                end-display
+              not on overflow
+                display '2 failed'
+                end-display
+                move spaces to err-str
+                string 'missing OVERFLOW'
+                   delimited by size
+                   into err-str
+                end-string
+                display err-str upon syserr
+                end-display
+            end-string
+            if simple-str not = 'data is too big here'
+              display 'STRING ERROR (2): "' simple-str '"'
+              end-display
+            end-if
+       *
+       *    UNSTRING test
+            move spaces to simple-str
+            unstring 'data'
+              into simple-str
+              on overflow
+                move spaces to err-str
+                unstring 'UNSTRING OVERFLOW'
+                   into err-str
+                end-unstring
+                display err-str upon syserr
+                end-display
+                display '3 failed'
+                end-display
+              not on overflow
+                display '3 passed'
+                end-display
+            end-unstring
+            if simple-str not = 'data'
+              display 'UNSTRING ERROR (1): "' simple-str '"'
+              end-display
+            end-if
+       *
+            move spaces to simple-str
+            unstring 'data is too big here...'
+              into simple-str
+              on overflow
+                display '4 passed'
+                end-display
+              not on overflow
+                display '4 failed'
+                end-display
+                move spaces to err-str
+                string 'missing OVERFLOW'
+                   delimited by size
+                   into err-str
+                end-string
+                display err-str upon syserr
+                end-display
+            end-unstring
+            if simple-str not = 'data is too big here'
+              display 'UNSTRING ERROR (2): "' simple-str '"'
+              end-display
+            end-if
+       *
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STRING___UNSTRING__NOT__ON_OVERFLOW.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ 1 passed
+ 2 passed
+ 3 passed
+ 4 passed
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STRING_with_subscript_reference.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STRING_with_subscript_reference.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/STRING_with_subscript_reference.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/STRING_with_subscript_reference.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,18 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  G.
+            02 X         PIC X(3) OCCURS 3.
+        PROCEDURE        DIVISION.
+            MOVE   SPACES TO G.
+            STRING "abc" INTO X(2)
+            END-STRING.
+            IF G NOT = "   abc   "
+               DISPLAY X(1) NO ADVANCING
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Separate_sign_positions__1_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC S9 VALUE -1 SIGN LEADING SEPARATE.
+        01  Y            PIC S9 VALUE -1 SIGN TRAILING SEPARATE.
+        PROCEDURE        DIVISION.
+            DISPLAY X(1:1) X(2:1) NO ADVANCING
+            END-DISPLAY.
+            DISPLAY Y(1:1) Y(2:1) NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__1_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ -11-
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,24 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Separate_sign_positions__2_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  X            PIC S9 SIGN LEADING SEPARATE.
+        01  Y            PIC S9 SIGN TRAILING SEPARATE.
+        PROCEDURE        DIVISION.
+            MOVE 0 TO X.
+            DISPLAY X NO ADVANCING
+            END-DISPLAY.
+            MOVE ZERO TO X.
+            DISPLAY X NO ADVANCING
+            END-DISPLAY.
+            MOVE 0 TO Y.
+            DISPLAY Y NO ADVANCING
+            END-DISPLAY.
+            MOVE ZERO TO Y.
+            DISPLAY Y NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Separate_sign_positions__2_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ +0+00+0+
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Simple_TYPEDEF.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Simple_TYPEDEF.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Simple_TYPEDEF.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Simple_TYPEDEF.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,16 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+ 
+         identification division.
+         program-id. wrapper.
+         data division.
+         working-storage section.
+         77  UNS-CHAR      PIC  9(02)  COMP-5 IS TYPEDEF.
+         01  Z-H3          PIC  X(017) .
+         01  I-H3A         USAGE UNS-CHAR.
+         01  I-H3B         USAGE UNS-CHAR.
+         78  I-H3-max      VALUE LENGTH OF Z-H3.
+         procedure division.
+         goback.
+         end program wrapper.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,33 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Simple_p-scaling.out" }
+ 
+         identification      division.
+         program-id.         prog.
+         data                division.
+         working-storage     section.
+         01  vars.
+          05 vars01    picture 99ppp   DISPLAY        value 78000 .
+          05 vars02    picture 99ppp   BINARY         value 78000 .
+          05 vars03    picture 99ppp   COMP-3         value 78000 .
+          05 vars04    picture 99ppp   COMP-5         value 78000 .
+          05 vars05    picture 99ppp   PACKED-DECIMAL value 78000 .
+         01  vary.
+          05 vary01    picture ppp99   DISPLAY        value 0.00078 .
+          05 vary02    picture ppp99   BINARY         value 0.00078 .
+          05 vary03    picture ppp99   COMP-3         value 0.00078 .
+          05 vary04    picture ppp99   COMP-5         value 0.00078 .
+          05 vary05    picture ppp99   PACKED-DECIMAL value 0.00078 .
+         procedure           division.
+         display vars01 
+         display vars02 
+         display vars03 
+         display vars04 
+         display vars05 
+         display vary01 
+         display vary02 
+         display vary03 
+         display vary04 
+         display vary05 
+         goback.
+         end program         prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,11 ----
+ 78000
+ 78000
+ 78000
+ 78000
+ 78000
+ .00078
+ .00078
+ .00078
+ .00078
+ .00078
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,20 ----
+        *> { dg-do run }
+        *> { dg-options "-fno-static-call -rdynamic" }
+        *> { dg-output-file "group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      caller.
+        PROCEDURE        DIVISION.
+            CALL "callee1" ON EXCEPTION
+               CALL "callee2" ON EXCEPTION
+                   DISPLAY "neither callee1 nor callee2 found"
+               END-CALL
+            END-CALL
+            GOBACK.
+        END PROGRAM caller.
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      callee2.
+        PROCEDURE        DIVISION.
+            DISPLAY "this is callee2" NO ADVANCING
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ this is callee2
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_LOW-VALUE.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_LOW-VALUE.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_LOW-VALUE.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_LOW-VALUE.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,26 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        01  G.
+            03 FILLER    PIC XXX VALUE "ABC".
+            03 FILLER    PIC XX  VALUE LOW-VALUE.
+            03 FILLER    PIC XXX VALUE "DEF".
+        01  A            PIC XXX.
+        01  B            PIC XXX.
+        PROCEDURE        DIVISION.
+            UNSTRING G DELIMITED BY ALL LOW-VALUE
+                       INTO A B
+            END-UNSTRING.
+            IF A NOT = "ABC"
+               DISPLAY "A is " """" A """"
+               END-DISPLAY
+            END-IF.
+            IF B NOT = "DEF"
+               DISPLAY "B is " """" B """"
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_SPACE-2.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_SPACE-2.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_SPACE-2.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_ALL_SPACE-2.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,56 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION  DIVISION.
+        PROGRAM-ID.     prog.
+        ENVIRONMENT     DIVISION.
+        DATA            DIVISION.
+        WORKING-STORAGE SECTION.
+        01  WS-RECORD.
+            02 VALUE SPACE           PIC X(04).
+            02 VALUE "ABC AND DE"    PIC X(10).
+            02 VALUE SPACE           PIC X(07).
+            02 VALUE "FG AND HIJ"    PIC X(10).
+            02 VALUE SPACE           PIC X(08).
+        01  SPACE-2                  PIC X(02) VALUE SPACE.
+        01  WS-DUMMY                 PIC X(15).
+        01  WS-POINTER               PIC 99.
+        PROCEDURE       DIVISION.
+            MOVE 1 TO WS-POINTER.
+       *
+            PERFORM 0001-SUB.
+            IF WS-DUMMY NOT = SPACE
+               DISPLAY "Expected space - Got " WS-DUMMY
+               END-DISPLAY
+            END-IF.
+            IF WS-POINTER NOT = 5
+               DISPLAY "Expected 5 - Got " WS-POINTER
+               END-DISPLAY
+            END-IF.
+       *
+            PERFORM 0001-SUB.
+            IF WS-DUMMY NOT = "ABC AND DE"
+               DISPLAY "Expected ABC AND DE - Got " WS-DUMMY
+               END-DISPLAY
+            END-IF.
+            IF WS-POINTER NOT = 21
+               DISPLAY "Expected 21 - Got " WS-POINTER
+               END-DISPLAY
+            END-IF.
+       *
+            PERFORM 0001-SUB.
+            IF WS-DUMMY NOT = " FG AND HIJ"
+               DISPLAY "Expected  FG AND HIJ - Got " WS-DUMMY
+               END-DISPLAY
+            END-IF.
+            IF WS-POINTER NOT = 40
+               DISPLAY "Expected 40 - Got " WS-POINTER
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+        0001-SUB.
+            UNSTRING WS-RECORD
+                     DELIMITED BY ALL SPACE-2
+               INTO WS-DUMMY
+               POINTER WS-POINTER
+            END-UNSTRING.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_POINTER.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_POINTER.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_POINTER.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITED_POINTER.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,45 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION  DIVISION.
+        PROGRAM-ID.     prog.
+        ENVIRONMENT     DIVISION.
+        DATA            DIVISION.
+        WORKING-STORAGE SECTION.
+        01  WS-LAY-RECORD            PIC X(66).
+        01  WS-DUMMY                 PIC X(50).
+        01  WS-KEYWORD               PIC X(32).
+        01  WS-POINTER               PIC 99.
+        PROCEDURE       DIVISION.
+            MOVE
+        '        10  AF-RECORD-TYPE-SEQUENCE-04     PIC   9(05) COMP-3.'
+                   TO WS-LAY-RECORD.
+            MOVE 1 TO WS-POINTER.
+            PERFORM 0001-SUB.
+            IF WS-POINTER NOT = 48
+               DISPLAY "Expected 48 - Got " WS-POINTER
+               END-DISPLAY
+            END-IF.
+            ADD 7  TO WS-POINTER
+            END-ADD.
+            PERFORM 0001-SUB.
+            IF WS-POINTER NOT = 62
+               DISPLAY "Expected 62 - Got " WS-POINTER
+               END-DISPLAY
+            END-IF.
+            PERFORM 0001-SUB.
+            IF WS-POINTER NOT = 63
+               DISPLAY "Expected 63 - Got " WS-POINTER
+               END-DISPLAY
+            END-IF.
+            STOP RUN.
+        0001-SUB.
+            UNSTRING WS-LAY-RECORD
+                     DELIMITED
+                     BY ' PIC '
+                     OR ' COMP-3'
+                     OR '.'
+               INTO WS-DUMMY
+               DELIMITER WS-KEYWORD
+               POINTER WS-POINTER
+            END-UNSTRING.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITER_IN.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITER_IN.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITER_IN.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_DELIMITER_IN.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,35 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT      DIVISION.
+        DATA             DIVISION.
+        WORKING-STORAGE SECTION.
+        01  WK-CMD       PIC X(8) VALUE "WWADDBCC".
+        01  WK-SIGNS     PIC XX   VALUE "AB".
+        01  WKS REDEFINES WK-SIGNS.
+            03 WK-SIGN   PIC X OCCURS 2.
+        01  .
+          02 WK-DELIM     PIC X OCCURS 2.
+        01  .
+          02 WK-DATA      PIC X(2) OCCURS 3.
+        PROCEDURE        DIVISION.
+            UNSTRING WK-CMD DELIMITED BY WK-SIGN(1) OR WK-SIGN(2)
+            INTO WK-DATA(1) DELIMITER IN WK-DELIM(1)
+                 WK-DATA(2) DELIMITER IN WK-DELIM(2)
+                 WK-DATA(3)
+            END-UNSTRING
+            IF  WK-DATA(1)   NOT = "WW"
+             OR WK-DATA(2)   NOT = "DD"
+             OR WK-DATA(3)   NOT = "CC"
+             OR WK-DELIM(1)  NOT = "A"
+             OR WK-DELIM(2)  NOT = "B"
+                DISPLAY """" WK-DATA(1)
+                        WK-DATA(2)
+                        WK-DATA(3)
+                        WK-DELIM(1)
+                        WK-DELIM(2) """"
+                END-DISPLAY
+            END-IF.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,42 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/UNSTRING_with_FUNCTION___literal.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA  DIVISION.
+        WORKING-STORAGE SECTION.
+        01  FILLER.
+          05  TSTUNS PIC X(479).
+          05  PRM    PIC X(16) OCCURS 4 TIMES.
+        PROCEDURE DIVISION.
+            MOVE "The,Quick,Brown,Fox" TO TSTUNS.
+            UNSTRING TSTUNS DELIMITED BY ','
+               INTO  PRM(1), PRM(2), PRM(3), PRM(4).
+            DISPLAY "PRM(1) is " PRM(1) ":".
+            DISPLAY "PRM(2) is " PRM(2) ":".
+            DISPLAY "PRM(3) is " PRM(3) ":".
+            DISPLAY "PRM(4) is " PRM(4) ":".
+            UNSTRING FUNCTION UPPER-CASE(TSTUNS) DELIMITED BY ','
+               INTO  PRM(1), PRM(2), PRM(3), PRM(4).
+            DISPLAY "Now using UPPER-CASE"
+            DISPLAY "PRM(1) is " PRM(1) ":".
+            DISPLAY "PRM(2) is " PRM(2) ":".
+            DISPLAY "PRM(3) is " PRM(3) ":".
+            DISPLAY "PRM(4) is " PRM(4) ":".
+            UNSTRING "Daddy,was,a,Rolling stone" DELIMITED BY ','
+               INTO  PRM(1), PRM(2), PRM(3), PRM(4).
+            DISPLAY "Now using Literal"
+            DISPLAY "PRM(1) is " PRM(1) ":".
+            DISPLAY "PRM(2) is " PRM(2) ":".
+            DISPLAY "PRM(3) is " PRM(3) ":".
+            DISPLAY "PRM(4) is " PRM(4) ":".
+            UNSTRING FUNCTION LOWER-CASE("Daddy,was,a,Rolling stone")
+                 DELIMITED BY ','
+               INTO  PRM(1), PRM(2), PRM(3), PRM(4).
+            DISPLAY "Now using Literal + LOWER-CASE"
+            DISPLAY "PRM(1) is " PRM(1) ":".
+            DISPLAY "PRM(2) is " PRM(2) ":".
+            DISPLAY "PRM(3) is " PRM(3) ":".
+            DISPLAY "PRM(4) is " PRM(4) ":".
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/UNSTRING_with_FUNCTION___literal.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,20 ----
+ PRM(1) is The             :
+ PRM(2) is Quick           :
+ PRM(3) is Brown           :
+ PRM(4) is Fox             :
+ Now using UPPER-CASE
+ PRM(1) is THE             :
+ PRM(2) is QUICK           :
+ PRM(3) is BROWN           :
+ PRM(4) is FOX             :
+ Now using Literal
+ PRM(1) is Daddy           :
+ PRM(2) is was             :
+ PRM(3) is a               :
+ PRM(4) is Rolling stone   :
+ Now using Literal + LOWER-CASE
+ PRM(1) is daddy           :
+ PRM(2) is was             :
+ PRM(3) is a               :
+ PRM(4) is rolling stone   :
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/_-static__compilation.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/_-static__compilation.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/_-static__compilation.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/_-static__compilation.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,10 ----
+        *> { dg-do run }
+        *> { dg-options "-static" }
+        *> { dg-prune-output {warning} }
+        *> { dg-output {hello, world} }
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        PROCEDURE DIVISION.
+        DISPLAY "hello, world".
+        end program prog.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,34 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out" }
+ 
+         identification   division.
+         program-id.      caller.
+         data             division.
+         working-storage  section.
+         01 x             pic x(4) value '9876'.
+         procedure        division.
+            call 'callee' using x
+            end-call
+            call 'callee' using omitted
+            end-call
+            stop run.
+            end program caller.
+ 
+         identification   division.
+         program-id.      callee.
+         data             division.
+         working-storage  section.
+         01 py pointer.
+         linkage          section.
+         01 x.
+           05 y          pic x(4).
+         procedure        division using optional x.
+         set py to address of x.
+         if py is not equal to zero
+             display y
+         else
+             display "parameter omitted"
+         end-if.
+         goback.
+         end program callee.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,3 ----
+ 9876
+ parameter omitted
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,21 ----
+        *> { dg-do run }
+        *> { dg-options "-ffixed-form" }
+        *> { dg-output-file "group2/debugging_lines__WITH_DEBUGGING_MODE_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+            SOURCE-COMPUTER. mine WITH DEBUGGING MODE.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        PROCEDURE        DIVISION.
+       *    Original "incorrect ordered lines"
+       *    DISPLAY "KO" NO ADVANCING UPON STDOUT
+       *    END-DISPLAY.
+       D    DISPLAY "KO" UPON STDOUT NO ADVANCING
+       D    END-DISPLAY.
+            DISPLAY "OK" UPON STDOUT NO ADVANCING
+            END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ KOOK
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,14 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/debugging_lines__not_active_.out" }
+ 
+        IDENTIFICATION   DIVISION.
+        PROGRAM-ID.      prog.
+        DATA             DIVISION.
+        WORKING-STORAGE  SECTION.
+        PROCEDURE        DIVISION.
+            DISPLAY "OK" NO ADVANCING
+            END-DISPLAY.
+       D    DISPLAY "KO" NO ADVANCING
+       D    END-DISPLAY.
+            STOP RUN.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.out gcc-15-20250809/gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.out
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.out	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/debugging_lines__not_active_.out	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1 ----
+ OK
diff -Nrcpad gcc-15-20250726/gcc/testsuite/cobol.dg/group2/integer_arithmetic_on_floating-point_var.cob gcc-15-20250809/gcc/testsuite/cobol.dg/group2/integer_arithmetic_on_floating-point_var.cob
*** gcc-15-20250726/gcc/testsuite/cobol.dg/group2/integer_arithmetic_on_floating-point_var.cob	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/cobol.dg/group2/integer_arithmetic_on_floating-point_var.cob	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,29 ----
+        *> { dg-do run }
+ 
+        IDENTIFICATION  DIVISION.
+        PROGRAM-ID.     prog.
+        DATA            DIVISION.
+        WORKING-STORAGE SECTION.
+        01  x           USAGE COMP-1 VALUE 123.456.
+        PROCEDURE       DIVISION.
+            ADD 360 TO x
+            IF x >  483.457 OR x <  483.455
+                DISPLAY "ADD wrong: " x
+                MOVE 483.456 TO x
+            END-IF
+            SUBTRACT 360 FROM x
+            IF x >  123.457 OR x <  123.455
+                DISPLAY "SUBTRACT wrong: " x
+                MOVE 123.456 TO x
+            END-IF
+            DIVIDE 2 INTO x
+            IF x >  61.729 OR x <  61.727
+                DISPLAY "DIVIDE wrong: " x
+                MOVE 61.728 TO x
+            END-IF
+            MULTIPLY 2 BY x
+            IF x >  123.457 OR x <  123.455
+                DISPLAY "MULTIPLY wrong: " x
+            END-IF
+            GOBACK.
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/assume.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/assume.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/assume.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/assume.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,40 ----
+ // { dg-additional-options "-fsyntax-only -Wattributes" }
+ 
+ #include <coroutine>
+ 
+ struct awaitable {
+     awaitable (int n) : delay{n} {}
+ 
+     constexpr bool await_ready () const noexcept { return false; }
+     auto await_suspend (std::coroutine_handle<> h) const {
+         __builtin_abort ();
+         return false;
+     }
+     int await_resume() const noexcept {
+         return delay;
+     }
+ 
+     int delay;
+ };
+ 
+ struct Task {
+     struct promise_type {
+         promise_type() = default;
+         Task get_return_object() { return {}; }
+         std::suspend_never initial_suspend() { return {}; }
+         std::suspend_always final_suspend() noexcept { return {}; }
+         void unhandled_exception() {}
+         void return_void () {}
+         awaitable yield_value (int v) { return {v}; }
+     };
+ };
+ 
+ int h () { return 5; }
+ 
+ Task foo() noexcept {
+     int x = 5;
+     [[assume (x == 5)]];
+     [[assume (co_await awaitable{10})]]; // { dg-warning {assumption ignored because it contains an await-expression} }
+     [[assume ((h(),co_await awaitable{11}))]]; // { dg-warning {assumption ignored because it contains an await-expression} }
+     co_return;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C	Sat Aug  9 22:32:40 2025
***************
*** 7,16 ****
  #include "coro1-ret-int-yield-int.h"
  
  coro1
! my_coro () // { dg-error {no member named 'final_suspend' in} }
  {
    co_return 0;
! }
  
  // check we have not messed up continuation of the compilation.
  template <class... Args>
--- 7,16 ----
  #include "coro1-ret-int-yield-int.h"
  
  coro1
! my_coro ()
  {
    co_return 0;
! } // { dg-error {no member named 'final_suspend' in} }
  
  // check we have not messed up continuation of the compilation.
  template <class... Args>
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C	Sat Aug  9 22:32:40 2025
***************
*** 7,13 ****
  #include "coro1-ret-int-yield-int.h"
  
  coro1
! bar0 () // { dg-error {no member named 'await_suspend' in 'coro1::suspend_always_prt'} }
  {
    co_await coro1::suspend_never_prt{}; // { dg-error {no member named 'await_ready' in 'coro1::suspend_never_prt'} }
    co_yield 5; // { dg-error {no member named 'await_suspend' in 'coro1::suspend_always_prt'} }
--- 7,13 ----
  #include "coro1-ret-int-yield-int.h"
  
  coro1
! bar0 ()
  {
    co_await coro1::suspend_never_prt{}; // { dg-error {no member named 'await_ready' in 'coro1::suspend_never_prt'} }
    co_yield 5; // { dg-error {no member named 'await_suspend' in 'coro1::suspend_always_prt'} }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr104051-0.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr104051-0.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr104051-0.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr104051-0.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,30 ----
+ // { dg-additional-options "-fsyntax-only" }
+ // { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
+ #include <coroutine>
+ #include <vector>
+ template <typename> struct promise {
+   struct final_awaitable {
+     bool await_ready() noexcept;
+     template <typename Promise>
+     std::coroutine_handle<>
+         await_suspend(std::coroutine_handle<Promise>) noexcept;
+     void await_resume() noexcept;
+   };
+   auto get_return_object() {
+     return std::coroutine_handle<promise>::from_promise(*this);
+   }
+   auto initial_suspend() { return std::suspend_always(); }
+   auto final_suspend() noexcept { return true; }
+   void unhandled_exception();
+ };
+ template <typename T> struct task {
+   using promise_type = promise<T>;
+   task(std::coroutine_handle<promise<T>>);
+   bool await_ready();
+   std::coroutine_handle<> await_suspend(std::coroutine_handle<>);
+   T await_resume();
+ };
+ task<std::vector<int>> foo() {
+   while ((co_await foo()).empty())
+     ;
+ } // { dg-error {'final_suspend\(\)' awaitable type 'bool' is not a structure} }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr104051-1.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr104051-1.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr104051-1.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr104051-1.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,23 ----
+ // { dg-additional-options "-fsyntax-only" }
+ // { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
+ #include <coroutine>
+ template <typename>
+ struct promise {
+   auto get_return_object() {
+     return std::coroutine_handle<promise>::from_promise(*this);
+   }
+   auto initial_suspend() { return 42.0; }
+   auto final_suspend() noexcept { return true; }
+   void unhandled_exception();
+   void return_void ();
+ };
+ template <typename T> struct task {
+   using promise_type = promise<T>;
+   task(std::coroutine_handle<promise<T>>);
+   bool await_ready();
+   std::coroutine_handle<> await_suspend(std::coroutine_handle<>);
+   T await_resume();
+ };
+ task<double> foo() { // { dg-error {'initial_suspend\(\)' awaitable type 'double' is not a structure} }
+   co_return;
+ } 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr104051.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr104051.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr104051.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr104051.C	Thu Jan  1 00:00:00 1970
***************
*** 1,30 ****
- // { dg-additional-options "-fsyntax-only" }
- // { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
- #include <coroutine>
- #include <vector>
- template <typename> struct promise {
-   struct final_awaitable {
-     bool await_ready() noexcept;
-     template <typename Promise>
-     std::coroutine_handle<>
-         await_suspend(std::coroutine_handle<Promise>) noexcept;
-     void await_resume() noexcept;
-   };
-   auto get_return_object() {
-     return std::coroutine_handle<promise>::from_promise(*this);
-   }
-   auto initial_suspend() { return std::suspend_always(); }
-   auto final_suspend() noexcept { return true; }
-   void unhandled_exception();
- };
- template <typename T> struct task {
-   using promise_type = promise<T>;
-   task(std::coroutine_handle<promise<T>>);
-   bool await_ready();
-   std::coroutine_handle<> await_suspend(std::coroutine_handle<>);
-   T await_resume();
- };
- task<std::vector<int>> foo() { // { dg-error {awaitable type 'bool' is not a structure} }
-   while ((co_await foo()).empty())
-     ;
- }
--- 0 ----
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr109283.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr109283.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr109283.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr109283.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,23 ----
+ // PR 109283.
+ // This used to ICE from a check set too widely.
+ #include <coroutine>
+ 
+ struct foo
+ { ~foo(); };
+ 
+ struct task
+ {
+    struct promise_type
+    {
+        std::suspend_never initial_suspend();
+        std::suspend_never final_suspend() noexcept;
+        std::suspend_never yield_value(foo);
+        void return_void();
+        void unhandled_exception(); 
+        task get_return_object();
+    };
+ };
+ 
+ task source(int b) {
+    co_yield b ? foo{} : foo{};
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr115908.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr115908.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr115908.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr115908.C	Thu Jan  1 00:00:00 1970
***************
*** 1,75 ****
- #include <coroutine>
- 
- #ifdef OUTPUT
- #include <iostream>
- #endif
- 
- struct Promise;
- 
- bool promise_live = false;
- 
- struct Handle : std::coroutine_handle<Promise> {
-     Handle(Promise &p) : std::coroutine_handle<Promise>(Handle::from_promise(p)) {
-         if (!promise_live)
-           __builtin_abort ();
- #ifdef OUTPUT
-         std::cout << "Handle(Promise &)\n";
- #endif
-     }
-     Handle(Promise &&p) : std::coroutine_handle<Promise>(Handle::from_promise(p)) {
-         if (!promise_live)
-           __builtin_abort ();
- #ifdef OUTPUT
-         std::cout << "Handle(Promise &&)\n";
- #endif
-     }
- 
-     using promise_type = Promise;
- };
- 
- struct Promise {
-     Promise() {
- #ifdef OUTPUT
-         std::cout << "Promise()\n";
- #endif
-         promise_live = true;
-     }
-     ~Promise() {
- #ifdef OUTPUT
-         std::cout << "~Promise()\n";
- #endif
-         if (!promise_live)
-           __builtin_abort ();
-         promise_live = false;
-     }
-     Promise& get_return_object() noexcept {
- #ifdef OUTPUT
-         std::cout << "get_return_object()\n";
- #endif
-         if (!promise_live)
-           __builtin_abort ();
-         return *this;
-     }
-     std::suspend_never initial_suspend() const noexcept { return {}; }
-     std::suspend_never final_suspend() const noexcept { return {}; }
-     void return_void() const noexcept {
-         if (!promise_live)
-           __builtin_abort ();
- #ifdef OUTPUT
-         std::cout << "return_void()\n";
- #endif
-     }
-     void unhandled_exception() const noexcept {}
- };
- 
- Handle Coro() {
-     co_return;
- }
- 
- int main() {
-   Coro();
- 
-   if (promise_live)
-     __builtin_abort ();
-   return 0;
- }
--- 0 ----
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr116775.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr116775.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr116775.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr116775.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,68 ----
+ // { dg-additional-options "-fsyntax-only" }
+ // PR116775
+ #include <coroutine>
+ #ifndef OUTPUT
+ #  define PRINT(X)
+ #  define PRINTF(...)
+ #else
+ #include <cstdio>
+ #  define PRINT(X) puts(X)
+ #  define PRINTF(...) printf(__VA_ARGS__)
+ #endif
+ 
+ struct awaitable {
+     awaitable(int n) : delay{n} {}
+ 
+     constexpr bool await_ready() const noexcept { return false; }
+     auto await_suspend(std::coroutine_handle<> h) const {
+         __builtin_trap ();
+         return false;
+     }
+     int await_resume() const noexcept {
+         return delay;
+     }
+ 
+     int delay;
+ };
+ 
+ struct Task {
+     struct promise_type {
+         promise_type() = default;
+         Task get_return_object() { return {}; }
+         std::suspend_never initial_suspend() { return {}; }
+         std::suspend_always final_suspend() noexcept { return {}; }
+         void unhandled_exception() {}
+         void return_void () {}
+         awaitable yield_value (int v) { return {v}; }
+     };
+ };
+ 
+ Task foo() noexcept {
+     if (__builtin_constant_p (true ? 1 : co_await awaitable{10}))
+       PRINT ("const OK");
+     else
+       {
+         PRINT ("failed : should be const");
+         __builtin_abort ();
+       }
+     if (__builtin_constant_p (false ? 1 : co_await awaitable{15}))
+       {
+         PRINT ("failed : should not be const");
+         __builtin_abort ();
+       }
+     else
+       PRINT ("not const, OK");
+     if (__builtin_constant_p (5 == (co_yield 42)))
+       {
+         PRINT ("failed : should not be const");
+         __builtin_abort ();
+       }
+     else
+       PRINT ("not const, OK");
+     co_return;
+ }
+ 
+ //call foo
+ int main() {
+     foo();
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr118903.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr118903.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr118903.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr118903.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,40 ----
+ // { dg-additional-options "-fsyntax-only" }
+ 
+ #include <coroutine>
+ 
+ struct awaitable {
+     constexpr bool await_ready() {
+         return true;
+     }
+     void await_suspend(std::coroutine_handle<void>) {
+ 
+     }
+     constexpr int await_resume() {
+         return 42;
+     }
+ };
+ 
+ struct super_simple_coroutine {
+     struct promise_type {
+         constexpr auto initial_suspend() {
+             return std::suspend_never();
+         }
+         constexpr auto final_suspend() const noexcept {
+             return std::suspend_never();
+         }
+         constexpr void unhandled_exception() {
+             // do nothing
+         }
+         constexpr auto get_return_object() {
+             return super_simple_coroutine{};
+         }
+         constexpr void return_void() {
+         }
+     };
+ };
+ 
+ auto fib (float f) -> super_simple_coroutine {
+     // if `co_await` is part of BodyStatement of a function
+     // it makes it coroutine
+     constexpr int x = co_await awaitable{}; // { dg-error {'co_await awaitable..' is not a constant expression} }
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr120273.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr120273.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr120273.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr120273.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,58 ----
+ // PR120273
+ // { dg-additional-options "-Wno-literal-suffix" }
+ namespace std {
+ void declval();
+ template < typename > struct invoke_result;
+ template < typename _Fn > using invoke_result_t = invoke_result< _Fn >;
+ template < typename _Derived, typename _Base >
+ concept derived_from = __is_base_of(_Base, _Derived);
+ template < typename, typename >
+ concept convertible_to = requires { declval; };
+ template < char... > int operator""ms();
+ template < typename _Result, typename > struct coroutine_traits : _Result {};
+ template < typename = void > struct coroutine_handle {
+   static coroutine_handle from_address(void *);
+   operator coroutine_handle<>();
+   void *address();
+ };
+ }
+ 
+ using namespace std;
+ 
+ template < class > using CoroutineHandle = coroutine_handle<>;
+ 
+ template < class Callable >
+   requires(derived_from< invoke_result_t< Callable >, int >)
+ Callable operator co_await(Callable);
+ 
+ struct FinalSuspendProxy {
+   bool await_ready() noexcept;
+   void await_suspend(CoroutineHandle< void >) noexcept ;
+   void await_resume() noexcept;
+ };
+ 
+ struct Task {
+   struct Promise;
+   using promise_type = Promise;
+ 
+   struct Promise {
+     auto initial_suspend() { return FinalSuspendProxy(); }
+     auto final_suspend () noexcept  { return FinalSuspendProxy(); }
+     void unhandled_exception () {}
+     Task get_return_object () { return {}; }
+   };
+ } ;
+ 
+ struct TestEventLoop {
+   struct Sleep {
+     Sleep(TestEventLoop, int);
+     bool await_ready();
+     void await_suspend(CoroutineHandle< void >);
+     void await_resume();
+   };
+   auto sleep(int tm) { return Sleep(*this, tm); }
+ };
+ 
+ Task test_body_11(TestEventLoop t) {
+   co_await t.sleep(5ms);
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr120453.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr120453.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr120453.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr120453.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,95 ----
+ // PR120453 - reduced testcase amended to add a TaskBase move constructor
+ // and a LazyTask destructor, to more closely match the original code.
+ // { dg-additional-options "-w" }
+ namespace std {
+ template <typename> struct __coroutine_traits_impl;
+ template <typename _Result>
+   requires requires { typename _Result; }
+ struct __coroutine_traits_impl<_Result>;
+ template <typename _Result, typename> struct coroutine_traits : _Result {};
+ template <typename = void> struct coroutine_handle {
+   static coroutine_handle from_address(void *);
+   operator coroutine_handle<>();
+   void *address();
+ };
+ struct suspend_never {
+   bool await_ready();
+   void await_suspend(coroutine_handle<>);
+   void await_resume();
+ };
+ } // namespace std
+ 
+ namespace QCoro {
+ namespace detail {
+ template <typename T>
+ concept has_await_methods = requires(T t) { t; };
+ } // namespace detail
+ 
+ template <typename T>
+ concept Awaitable = detail::has_await_methods<T>;
+ namespace detail {
+ struct TaskFinalSuspend {
+   bool await_ready() noexcept;
+   template <typename Promise>
+   void await_suspend(std::coroutine_handle<Promise>) noexcept;
+   void await_resume() noexcept;
+ };
+ struct TaskPromiseBase {
+   std::suspend_never initial_suspend();
+   auto final_suspend() noexcept { return TaskFinalSuspend{}; }
+   template <Awaitable T> auto &&await_transform(T &&);
+ };
+ struct TaskPromise : TaskPromiseBase {
+   void unhandled_exception();
+ };
+ template <typename> struct TaskAwaiterBase {
+   bool await_ready();
+   void await_suspend(std::coroutine_handle<>);
+ };
+ template <typename, template <typename> class, typename> struct TaskBase {
+   TaskBase() = default;
+   TaskBase(TaskBase &&) = default;
+   void operator=(TaskBase &&);
+   auto operator co_await() const;
+   std::coroutine_handle<> mCoroutine;
+ };
+ } // namespace detail
+ template <typename> struct Task : detail::TaskBase<int, Task, int> {};
+ } // namespace QCoro
+ 
+ namespace QCoro::detail {
+ template <Awaitable T> auto &&TaskPromiseBase::await_transform(T &&awaitable) {
+   return awaitable;
+ }
+ 
+ template <typename T, template <typename> class TaskImpl, typename PromiseType>
+ auto TaskBase<T, TaskImpl, PromiseType>::operator co_await() const {
+   class TaskAwaiter : public TaskAwaiterBase<PromiseType> {
+   public:
+     TaskAwaiter(std::coroutine_handle<>);
+     auto await_resume() {}
+   };
+   return TaskAwaiter{mCoroutine};
+ }
+ 
+ } // namespace QCoro::detail
+ 
+ namespace QCoro {
+ template <typename T> class LazyTask ;
+ namespace detail {
+ struct LazyTaskPromise : TaskPromise {
+   LazyTask<int> get_return_object();
+ };
+ } // namespace detail
+ 
+ template <typename T> struct LazyTask : detail::TaskBase<int, LazyTask, int> {
+   typedef detail::LazyTaskPromise promise_type;
+   ~LazyTask();
+ };
+ 
+ auto coro = [] -> LazyTask<int>
+ {
+   co_await [] -> Task<int> { return {}; }();
+ };
+ 
+ } // namespace QCoro
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr120495.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr120495.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/pr120495.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/pr120495.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,55 ----
+ // { dg-additional-options "-fsyntax-only" }
+ 
+ #include <coroutine>
+ #include <exception>
+ 
+ struct fire_and_forget {
+ };
+ 
+ template <typename... Args>
+ struct std::coroutine_traits<fire_and_forget, Args...>
+ {
+     struct promise_type
+     {
+         fire_and_forget get_return_object() const noexcept
+         {
+             return{};
+         }
+ 
+         void return_void() const noexcept
+         {
+         }
+ 
+         suspend_never initial_suspend() const noexcept
+         {
+             return{};
+         }
+ 
+         suspend_never final_suspend() const noexcept
+         {
+             return{};
+         }
+ 
+         void unhandled_exception() const noexcept
+         {
+             std::terminate();
+         }
+     };
+ };
+ 
+ struct foo
+ {
+     fire_and_forget bar()
+     {
+         co_await std::suspend_always{ };
+     }
+ 
+ private:
+     // The line below triggered the error.
+     using coroutine_handle = std::coroutine_handle<>;
+ };
+ 
+ int main()
+ {
+     foo{}.bar();
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr115908.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr115908.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr115908.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr115908.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,112 ----
+ // { dg-do run }
+ 
+ // With the changes to deal with CWG2563 (and PR119916) we now use the
+ // referenced promise in the return expression.  It is quite reasonable
+ // for a body implementation to complete before control is returned to
+ // the ramp - so we need to ensure that the promise lifetime is extended
+ // in that case, tested here.
+ 
+ #include <coroutine>
+ 
+ #ifdef OUTPUT
+ #include <iostream>
+ #endif
+ 
+ struct Promise;
+ 
+ int promise_life = 0;
+ 
+ struct Handle : std::coroutine_handle<Promise> {
+ 
+     Handle(Promise &p) : std::coroutine_handle<Promise>(Handle::from_promise(p)) {
+ #ifdef OUTPUT
+         std::cout << "Handle(Promise &) " << promise_life << std::endl;
+ #endif
+          if (promise_life <= 0)
+           __builtin_abort ();
+    }
+ 
+     Handle(Promise &&p) : std::coroutine_handle<Promise>(Handle::from_promise(p)) {
+ #ifdef OUTPUT
+         std::cout << "Handle(Promise &&) "  << promise_life  << std::endl;
+ #endif
+          if (promise_life <= 0)
+           __builtin_abort ();
+    }
+ 
+     using promise_type = Promise;
+ };
+ 
+ struct Promise {
+     Promise() {
+ #ifdef OUTPUT
+         std::cout << "Promise()" << std::endl;
+ #endif
+         promise_life++;
+     }
+ 
+     Promise(Promise& p){
+ #ifdef OUTPUT
+         std::cout << "Promise(Promise&)" << std::endl;
+ #endif
+         promise_life++;
+     }
+ 
+     ~Promise() {
+ #ifdef OUTPUT
+         std::cout << "~Promise()" << std::endl;
+ #endif
+         if (promise_life <= 0)
+           __builtin_abort ();
+         promise_life--;
+     }
+ 
+     Promise& get_return_object() noexcept {
+ #ifdef OUTPUT
+         std::cout << "get_return_object() " << promise_life << std::endl;
+ #endif
+         if (promise_life <= 0)
+           __builtin_abort ();
+         return *this;
+     }
+ 
+     std::suspend_never initial_suspend() const noexcept {
+ #ifdef OUTPUT
+         std::cout << "initial_suspend()" << std::endl;
+ #endif
+      return {}; 
+     }
+     std::suspend_never final_suspend() const noexcept {
+ #ifdef OUTPUT
+         std::cout << "final_suspend()" << std::endl;
+ #endif
+     return {};
+     }
+     void return_void() const noexcept {
+         if (!promise_life)
+           __builtin_abort ();
+ #ifdef OUTPUT
+         std::cout << "return_void()" << std::endl;
+ #endif
+     }
+     void unhandled_exception() const noexcept {}
+ };
+ 
+ Handle Coro() {
+ 
+ #ifdef OUTPUT
+         std::cout << "Coro()" << std::endl;
+ #endif
+     co_return;
+ }
+ 
+ int main() {
+ 
+   Coro();
+ #ifdef OUTPUT
+         std::cout << "done Coro()" << std::endl;
+ #endif
+   if (promise_life)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr119916.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr119916.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr119916.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr119916.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,66 ----
+ // PR c++/119916
+ // { dg-do run }
+ // { dg-additional-options "-std=c++23" }
+ 
+ namespace folly {
+ struct OptionalPromise;
+ struct Optional {
+   typedef OptionalPromise promise_type;
+   Optional() { hasValue = 0; }
+   Optional(int) { hasValue = 1; }
+   bool has_value() { return hasValue; }
+   int emptyState;
+   int value;
+   bool hasValue;
+ };
+ } // namespace folly
+ namespace std {
+ template <typename _Result, typename> struct coroutine_traits : _Result {};
+ template <typename = void> struct coroutine_handle;
+ template <> struct coroutine_handle<> {
+   void *address();
+ };
+ template <typename> struct coroutine_handle {
+   static coroutine_handle from_address(void *) {
+     coroutine_handle __self;
+     return __self;
+   }
+   coroutine_handle<> __trans_tmp_1;
+   operator coroutine_handle<>() { return __trans_tmp_1; }
+ };
+ struct suspend_never {
+   bool await_ready() noexcept { return true; }
+   void await_suspend(coroutine_handle<>) noexcept {}
+   void await_resume() noexcept {}
+ };
+ } // namespace std
+ namespace folly {
+ struct OptionalPromiseReturn;
+ struct OptionalPromise {
+   Optional *value_;
+   OptionalPromiseReturn get_return_object();
+   std::suspend_never initial_suspend() { return {}; }
+   std::suspend_never final_suspend() noexcept { return {}; }
+   template <typename U> void return_value(U u) { *value_ = u; }
+   void unhandled_exception() {}
+ };
+ struct OptionalPromiseReturn {
+   Optional storage_;
+   Optional *&pointer_;
+   OptionalPromiseReturn(OptionalPromise &p) : pointer_{p.value_} {
+     pointer_ = &storage_;
+   }
+   operator Optional() { return storage_; }
+ };
+ OptionalPromiseReturn OptionalPromise::get_return_object() {
+     return *this;
+ }
+ } // namespace folly
+ folly::Optional main_r0 = [] -> folly::Optional {
+   auto z(0);
+   co_return z;
+ }();
+ int main() {
+   if (!main_r0.has_value())
+     __builtin_abort();
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-1.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-1.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-1.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-1.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,33 ----
+ // PR c++/120243
+ // { dg-do run }
+ 
+ #include <coroutine>
+ 
+ struct coro {
+      struct promise_type {
+         promise_type() = default;
+ 
+         std::suspend_never initial_suspend() const noexcept { return {}; }
+         std::suspend_never final_suspend() const noexcept { return {}; }
+ 
+         void unhandled_exception() { throw; }
+ 
+         coro get_return_object() { return {}; }
+         void return_void() {}
+ 
+     };
+ };
+ 
+ int main() {
+     auto c = []() -> coro {
+         throw "hello";
+         __builtin_abort();
+         co_return;
+     };
+     try {
+         c();
+     }
+     catch(...) {
+         __builtin_printf("Caught!\n");
+     }
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-2.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-2.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-2.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr120243-unhandled-2.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,34 ----
+ // PR c++/120243
+ // { dg-do run }
+ 
+ #include <coroutine>
+ 
+ struct coro {
+      struct promise_type {
+         promise_type() = default;
+ 
+         std::suspend_always initial_suspend() const noexcept { return {}; }
+         std::suspend_always final_suspend() const noexcept { return {}; }
+ 
+         void unhandled_exception() { throw; }
+ 
+         coro get_return_object() { return {std::coroutine_handle<promise_type>::from_promise(*this)}; }
+         void return_void() {}
+     };
+ 
+     std::coroutine_handle<promise_type> h;
+ };
+ 
+ int main() {
+     auto c = []() -> coro {
+         throw "hello";
+         __builtin_abort();
+         co_return;
+     };
+     try {
+         c().h.resume();
+     }
+     catch(...) {
+         __builtin_printf("Caught!\n");
+     }
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr121219.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr121219.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr121219.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr121219.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,149 ----
+ // PR c++/121219
+ // { dg-do run }
+ 
+ #include <coroutine>
+ #ifdef OUTPUT
+ #include <iostream>
+ #endif
+ #include <stdexcept>
+ 
+ struct Task {
+     struct promise_type;
+     using handle_type = std::coroutine_handle<promise_type>;
+ 
+     struct promise_type {
+         Task* task_;
+         int result_;
+ 
+         static void* operator new(std::size_t size) noexcept {
+             void* p = ::operator new(size, std::nothrow);
+ #ifdef OUTPUT
+             std::cerr << "operator new (no arg) " << size << " -> " << p << std::endl;  
+ #endif
+             return p;
+         }
+         static void operator delete(void* ptr) noexcept {
+             return ::operator delete(ptr, std::nothrow);
+         }
+ #if 1 // change to 0 to fix crash
+         static Task get_return_object_on_allocation_failure() noexcept {
+ #ifdef OUTPUT
+             std::cerr << "get_return_object_on_allocation_failure" << std::endl;
+ #endif
+             return Task(nullptr);
+         }
+ #endif
+ 
+         auto get_return_object() { 
+ #ifdef OUTPUT
+             std::cerr << "get_return_object" << std::endl;
+ #endif
+             return Task{handle_type::from_promise(*this)}; 
+         }
+ 
+         auto initial_suspend() { 
+ #ifdef OUTPUT
+             std::cerr << "initial_suspend" << std::endl;
+ #endif
+             return std::suspend_always{}; 
+         }
+ 
+         auto final_suspend() noexcept { 
+ #ifdef OUTPUT
+             std::cerr << "final_suspend" << std::endl;
+ #endif
+             return std::suspend_never{};  // Coroutine auto-destructs
+         }
+ 
+         ~promise_type() {
+             if (task_) {
+ #ifdef OUTPUT
+                 std::cerr << "promise_type destructor: Clearing Task handle" << std::endl;
+ #endif
+                 task_->h_ = nullptr;
+             }
+         }
+ 
+         void unhandled_exception() { 
+ #ifdef OUTPUT
+             std::cerr << "unhandled_exception" << std::endl;
+ #endif
+             std::terminate(); 
+         }
+ 
+         void return_value(int value) { 
+ #ifdef OUTPUT
+             std::cerr << "return_value: " << value << std::endl;
+ #endif
+             result_ = value;
+             if (task_) {
+                 task_->result_ = value;
+                 task_->completed_ = true;
+             }
+         }
+     };
+ 
+     handle_type h_;
+     int result_;
+     bool completed_ = false;
+ 
+     Task(handle_type h) : h_(h) {
+ #ifdef OUTPUT
+         std::cerr << "Task constructor" << std::endl;
+ #endif
+         if (h_) {
+             h_.promise().task_ = this;  // Link promise to Task
+         }
+     }
+ 
+     ~Task() { 
+ #ifdef OUTPUT
+         std::cerr << "~Task destructor" << std::endl;
+ #endif
+         // Only destroy handle if still valid (coroutine not completed)
+         if (h_) {
+ #ifdef OUTPUT
+             std::cerr << "Destroying coroutine handle" << std::endl;
+ #endif
+             h_.destroy(); 
+         }
+     }
+ 
+     bool done() const { 
+         return completed_ || !h_ || h_.done(); 
+     }
+ 
+     void resume() { 
+ #ifdef OUTPUT
+         std::cerr << "Resuming task" << std::endl;
+ #endif
+         if (h_) h_.resume(); 
+     }
+ 
+     int result() const {
+         if (!done()) throw std::runtime_error("Result not available");
+         return result_;
+     }
+ };
+ 
+ Task my_coroutine() {
+ #ifdef OUTPUT
+     std::cerr << "Inside my_coroutine" << std::endl;
+ #endif
+    co_return 42;
+ }
+ 
+ int main() {
+     auto task = my_coroutine();
+     while (!task.done()) {
+ #ifdef OUTPUT
+         std::cerr << "Resuming task in main" << std::endl;
+ #endif
+         task.resume();
+     }
+ #ifdef OUTPUT
+     std::cerr << "Task completed in main, printing result" << std::endl;
+ #endif
+     if (task.result() != 42)
+       __builtin_abort ();
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-00-nothing-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-00-nothing-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-00-nothing-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-00-nothing-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ // Check that this completes correctly if nothing throws.
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01-promise-ctor-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01-promise-ctor-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01-promise-ctor-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01-promise-ctor-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ #define PROMISE_CTOR_THROWS 1
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C	Thu Jan  1 00:00:00 1970
***************
*** 1,5 ****
- //  { dg-do run }
- //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
- 
- #define INITIAL_SUSPEND_THROWS 1
- #include "pr95615.inc"
--- 0 ----
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02-get-return-object-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02-get-return-object-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02-get-return-object-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02-get-return-object-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ #define GET_RETURN_OBJECT_THROWS 1
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C	Thu Jan  1 00:00:00 1970
***************
*** 1,5 ****
- //  { dg-do run }
- //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
- 
- #define PROMISE_CTOR_THROWS 1
- #include "pr95615.inc"
--- 0 ----
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03-initial-suspend-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03-initial-suspend-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03-initial-suspend-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03-initial-suspend-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ #define INITIAL_SUSPEND_THROWS 1
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C	Thu Jan  1 00:00:00 1970
***************
*** 1,5 ****
- //  { dg-do run }
- //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
- 
- #define GET_RETURN_OBJECT_THROWS 1
- #include "pr95615.inc"
--- 0 ----
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04-initial-await-ready-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04-initial-await-ready-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04-initial-await-ready-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04-initial-await-ready-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ #define INITIAL_AWAIT_READY_THROWS 1
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C	Thu Jan  1 00:00:00 1970
***************
*** 1,5 ****
- //  { dg-do run }
- //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
- 
- #define INITIAL_AWAIT_READY_THROWS 1
- #include "pr95615.inc"
--- 0 ----
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05-initial-await-suspend-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05-initial-await-suspend-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05-initial-await-suspend-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05-initial-await-suspend-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,5 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ #define INITIAL_AWAIT_SUSPEND_THROWS 1
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C	Thu Jan  1 00:00:00 1970
***************
*** 1,5 ****
- //  { dg-do run }
- //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
- 
- #define INITIAL_AWAIT_SUSPEND_THROWS 1
- #include "pr95615.inc"
--- 0 ----
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-06-initial-await-resume-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-06-initial-await-resume-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-06-initial-await-resume-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-06-initial-await-resume-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,7 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ #define INITIAL_AWAIT_RESUME_THROWS 1
+ // This should reach unhandled_exception
+ #define SHOULD_CALL_UNHANDLED_EXCEPTION 1
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-07-body-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-07-body-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-07-body-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-07-body-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,7 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ #define BODY_THROWS 1
+ // This should reach unhandled_exception
+ #define SHOULD_CALL_UNHANDLED_EXCEPTION 1
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-08-initial-suspend-throws-uhe-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-08-initial-suspend-throws-uhe-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-08-initial-suspend-throws-uhe-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-08-initial-suspend-throws-uhe-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,8 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ #define INITIAL_SUSPEND_THROWS 1
+ // It should be irrelevant that unhandled_exception might throw, so we should
+ // not call it.
+ #define UNHANDLED_EXCEPTION_THROWS 1
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-09-body-throws-uhe-throws.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-09-body-throws-uhe-throws.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615-09-body-throws-uhe-throws.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615-09-body-throws-uhe-throws.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,10 ----
+ //  { dg-do run }
+ //  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
+ 
+ #define BODY_THROWS 1
+ // This should reach unhandled_exception...
+ #define SHOULD_CALL_UNHANDLED_EXCEPTION 1
+ // ... which will throw 
+ #define UNHANDLED_EXCEPTION_THROWS 1
+ // and we should cleanup by calling destroy.
+ #include "pr95615.inc"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615.inc gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615.inc
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/pr95615.inc	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/pr95615.inc	Sat Aug  9 22:32:40 2025
***************
*** 1,127 ****
- #if __has_include(<coroutine>)
  #include <coroutine>
! #else
! #include <experimental/coroutine>
! namespace std {
!     using namespace std::experimental;
! }
! #endif
! #include <cassert>
  #include <cstdio>
  #include <cstdlib>
  
! bool frame_live = false;
! bool promise_live = false;
! 
! struct X {};
  
  int Y_live = 0;
  int task_live = 0;
  
  struct Y
  {
!   Y () { std::puts("Y ()"); Y_live++; } 
!   Y (const Y&) { std::puts("Y (const Y&)"); Y_live++; } 
!   ~Y () { std::puts("~Y ()"); Y_live--; }
  };
  
  struct task {
      struct promise_type {
          void* operator new(size_t sz) {
!             std::puts("operator new()");
!             frame_live = true;
              return ::operator new(sz);
          }
  
!         void operator delete(void* p, size_t sz) {
!             std::puts("operator delete");
!             frame_live = false;
!             return ::operator delete(p, sz);
          }
  
          promise_type() {
!             std::puts("promise_type()");
! #if PROMISE_CTOR_THROWS
               throw X{};
  #endif
              promise_live = true;
          }
  
          ~promise_type() {
!             std::puts("~promise_type()");
!             promise_live = false;
          }
  
          struct awaiter {
              bool await_ready() {
! #if INITIAL_AWAIT_READY_THROWS
                 throw X{};
  #endif
                 return false;
              }
              void await_suspend(std::coroutine_handle<>) {
! #if INITIAL_AWAIT_SUSPEND_THROWS
                  throw X{};
  #endif
              }
              void await_resume() {
! #if INITIAL_AWAIT_RESUME_THROWS
! // this would be caught by unhandled_exception () which is tested
! // elsewhere.
                  throw X{};
  #endif
              }
          };
  
          awaiter initial_suspend() {
! #if INITIAL_SUSPEND_THROWS
              throw X{};
  #endif
              return {};
          }
  
          task get_return_object() {
!             std::puts("get_return_object()");
! #if GET_RETURN_OBJECT_THROWS
              throw X{};
  #endif
              return task{};
          }
  
!         std::suspend_never final_suspend() noexcept { return {}; }
!         void return_void() noexcept {}
!         void unhandled_exception() noexcept {
!             std::puts("unhandled_exception()");
          }
      };
  
-     task() { std::puts("task()");  task_live++; }
-     ~task() { std::puts("~task()"); task_live--; }
-     task(task&&) { std::puts("task(task&&)"); task_live++;  }
  };
  
  task f(Y Val __attribute__((__unused__))) {
!     co_return;
  }
  
  int main() {
!     bool failed = false;
!     Y Val;
!     try {
!         f(Val);
!     } catch (X) {
!         std::puts("caught X");
!         if (task_live)
!           std::puts("task live"), failed = true;
!         if (promise_live)
!           std::puts("promise live"), failed = true;
!         if (frame_live)
!           std::puts("frame live"), failed = true;
!     }
  
    if (Y_live != 1)
!     std::printf("Y live %d\n", Y_live), failed = true;
  
    if (failed)
!     abort() ;
  }
--- 1,209 ----
  #include <coroutine>
! #include <exception>
  #include <cstdio>
  #include <cstdlib>
  
! #ifndef OUTPUT
! #  define PRINT(X)
! #  define PRINTF(...)
! #else
! //#include <iostream>
! #  define PRINT(X) puts(X)
! //#  define PRINT(X) std::cout << (X) << std::endl
! #  define PRINTF(...) printf(__VA_ARGS__)
! #endif
  
+ int frame_live = 0;
+ int promise_live = 0;
  int Y_live = 0;
  int task_live = 0;
+ int unhandled_exception_called = 0;
+ 
+ struct X {};
  
  struct Y
  {
!   Y () {
!     PRINT("Y ()");
!     Y_live++;
!   } 
!   Y (const Y&) {
!     PRINT("Y (const Y&)");
!     Y_live++;
!   } 
!   ~Y () {
!     PRINT("~Y ()");
!     --Y_live;
!   }
  };
  
  struct task {
+     struct promise_type;
+     using coro_handle = std::coroutine_handle<promise_type>;
+     struct Z {
+       std::exception_ptr eptr;
+       coro_handle h;
+     };
      struct promise_type {
          void* operator new(size_t sz) {
!             PRINT("operator new()");
!             frame_live++;
              return ::operator new(sz);
          }
  
!         static void operator delete(void* p, size_t sz)  {
!             PRINT("operator delete");
!             --frame_live;
!             ::operator delete(p, sz);
          }
  
          promise_type() {
!             PRINT("promise_type()");
! #ifdef PROMISE_CTOR_THROWS
               throw X{};
  #endif
              promise_live = true;
          }
  
          ~promise_type() {
!             PRINT("~promise_type()");
!             --promise_live;
          }
  
          struct awaiter {
              bool await_ready() {
!              PRINT("initial await_ready()");
! #ifdef INITIAL_AWAIT_READY_THROWS
                 throw X{};
  #endif
+ // If we are testing the suspend infra, then suspend, otherwise continue
+ // so that we can test later paths (effectively, suspend_never).
+ #ifdef INITIAL_AWAIT_SUSPEND_THROWS
                 return false;
+ #else
+                return true;
+ #endif
              }
              void await_suspend(std::coroutine_handle<>) {
! #ifdef INITIAL_AWAIT_SUSPEND_THROWS
                  throw X{};
  #endif
              }
              void await_resume() {
!              PRINT("initial await_resume()");
! #ifdef INITIAL_AWAIT_RESUME_THROWS
! // This should be caught by unhandled_exception ()
                  throw X{};
  #endif
              }
          };
  
          awaiter initial_suspend() {
!            PRINT("initial_suspend()");
! #ifdef INITIAL_SUSPEND_THROWS
              throw X{};
  #endif
              return {};
          }
  
          task get_return_object() {
!             PRINT("get_return_object()");
! #ifdef GET_RETURN_OBJECT_THROWS
              throw X{};
  #endif
              return task{};
          }
  
!         std::suspend_never final_suspend() noexcept { 
!            PRINT("final_suspend()");
!            return {};
!         }
!         void return_void() {
!           PRINT("return_void()");
!         }
!         void unhandled_exception()  {
!             PRINT("unhandled_exception()");
!             unhandled_exception_called++;
! #ifdef UNHANDLED_EXCEPTION_THROWS
! 	    Z z{std::current_exception(),coro_handle::from_promise(*this)};
! 	    throw z;
!             //throw coro_handle::from_promise(*this);
! #endif
          }
      };
+    
+     task() noexcept {
+      PRINT("task()");
+      task_live++;
+     }
+     task(task&& t) noexcept {
+       PRINT("task(task&&)");
+       task_live++;
+     }
+     ~task() noexcept {
+       PRINT("~task()");
+       task_live--;
+     }
  
  };
  
  task f(Y Val __attribute__((__unused__))) {
!   PRINT("f()");
! #ifdef BODY_THROWS
!   throw X{};
! #endif
!   co_return;
  }
  
  int main() {
!   bool failed = false;
!   Y Val;
!   try {
!     PRINT("try-block-s");
!     task tsk = f(Val);
!     PRINT("try-block-e");
!   } catch (X) {
!     PRINT("caught X");
!   } catch (task::Z& z) {
!     PRINTF("caught Z : %d\n",(bool)z.eptr);
!     if (z.h.done())
!       {
!         PRINT("done, cleaning up");
!         z.h.destroy ();
!       }
!     else
!       PRINT("not done?");
!   } catch (std::coroutine_handle<task::promise_type>& h) {
!     PRINT("caught handle");
!     if (h.done())
!       {
!         PRINT("done, cleaning up");
!         h.destroy ();
!       }
!     else
!       PRINT("not done?");
!   }
  
+   if (task_live)
+     failed = true, __builtin_printf("task still live\n") ;
+   if (promise_live)
+     failed = true, __builtin_printf("promise still live\n");
+   if (frame_live)
+     failed = true, __builtin_printf("frame still live : %d\n", frame_live);
    if (Y_live != 1)
!     failed = true, __builtin_printf("Y live count : %d\n", Y_live);
! #ifdef SHOULD_CALL_UNHANDLED_EXCEPTION
!   if (unhandled_exception_called != 1)
!     failed = true, __builtin_printf("unhandled exception : %d\n", unhandled_exception_called);
! #else
!   if (unhandled_exception_called != 0)
!     failed = true, __builtin_printf("unhandled exception : %d\n", unhandled_exception_called);
! #endif
! 
!   __builtin_printf("checking result : %s \n",(failed?"bad":"good"));
! 
!   fflush(stdout);
  
    if (failed)
!    __builtin_abort();
  }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/special-termination-00-sync-completion.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/special-termination-00-sync-completion.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/special-termination-00-sync-completion.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/special-termination-00-sync-completion.C	Sat Aug  9 22:32:40 2025
*************** struct coro1 {
*** 87,93 ****
    // The coro1 ramp return object will be constructed from this.
    auto get_return_object () {
      PRINT ("get_return_object: handle from promise");
!     return handle_type::from_promise (*this);
    }
  
    auto initial_suspend () { return suspend_never_prt{}; }
--- 87,93 ----
    // The coro1 ramp return object will be constructed from this.
    auto get_return_object () {
      PRINT ("get_return_object: handle from promise");
!     return coro1 (handle_type::from_promise (*this));
    }
  
    auto initial_suspend () { return suspend_never_prt{}; }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/special-termination-01-self-destruct.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/special-termination-01-self-destruct.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/torture/special-termination-01-self-destruct.C	Sat Jul 26 22:32:19 2025
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/torture/special-termination-01-self-destruct.C	Sat Aug  9 22:32:40 2025
*************** struct coro1 {
*** 90,96 ****
    // The coro1 ramp return object will be constructed from this.
    auto get_return_object () {
      PRINT ("get_return_object: handle from promise");
!     return handle_type::from_promise (*this);
    }
  
    auto initial_suspend () { return suspend_always_self_destr_prt{}; }
--- 90,96 ----
    // The coro1 ramp return object will be constructed from this.
    auto get_return_object () {
      PRINT ("get_return_object: handle from promise");
!     return coro1(handle_type::from_promise (*this));
    }
  
    auto initial_suspend () { return suspend_always_self_destr_prt{}; }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/unevaluated.C gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/unevaluated.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/coroutines/unevaluated.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/coroutines/unevaluated.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,25 ----
+ // { dg-additional-options "-fsyntax-only" }
+ #include <typeinfo>
+ #include <coroutine>
+ 
+ struct Task {
+     struct promise_type {
+         promise_type() = default;
+         Task get_return_object() { return {}; }
+         std::suspend_never initial_suspend() { return {}; }
+         std::suspend_always final_suspend() noexcept { return {}; }
+         void unhandled_exception() {}
+         void return_void () {}
+         std::suspend_never yield_value (int) { return {}; }
+     };
+ };
+ 
+ // We do not permit co_await, co_yield outside a function, and so uses in
+ // noexcept or requirements are covered by that.
+ Task foo()  {
+     /* This one will currently fail - see PR68604.  */
+     const std::type_info& ti1 = typeid (co_await std::suspend_never{}); // { dg-error {'co_await' cannot be used in an unevaluated context} "" { xfail *-*-* } }
+     std::size_t x = sizeof (co_yield (19)); // { dg-error {'co_yield' cannot be used in an unevaluated context} }
+     decltype (co_await std::suspend_never{}) A; // { dg-error {'co_await' cannot be used in an unevaluated context} }
+     co_return;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/cpp0x/alias-decl-80.C gcc-15-20250809/gcc/testsuite/g++.dg/cpp0x/alias-decl-80.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/cpp0x/alias-decl-80.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/cpp0x/alias-decl-80.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/120224
+ // { dg-do compile { target c++11 } }
+ 
+ template<class> using void_t = void;
+ 
+ template<class T>
+ void f(void*); // #1
+ 
+ template<class T>
+ void f(void_t<typename T::type>*) { } // { dg-error "not a class" } defn of #1
+ 
+ template<class T>
+ void g(int, void*); // #2
+ 
+ template<class T>
+ void g(int, void_t<typename T::type>*) { } // { dg-error "not a class" } defn of #2
+ 
+ int main() {
+   f<int>(0); // { dg-error "no match" }
+   g<int>(0, 0); // { dg-error "no match" }
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/cpp0x/constexpr-array30.C gcc-15-20250809/gcc/testsuite/g++.dg/cpp0x/constexpr-array30.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/cpp0x/constexpr-array30.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/cpp0x/constexpr-array30.C	Sat Aug  9 22:32:40 2025
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/120800
+ // { dg-do compile { target c++11 } }
+ 
+ template<typename T>
+ struct Container
+ {
+  T m_data[1] {};
+ };
+ 
+ class Element
+ {
+ private:
+  Element() = default;
+ 
+ private:
+  bool m_bool1 { false };
+  bool m_bool2;
+ 
+  friend struct Container<Element>;
+ };
+ 
+ Container<Element> element;
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/concepts-using5.C gcc-15-20250809/gcc/testsuite/g++.dg/cpp2a/concepts-using5.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/concepts-using5.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/cpp2a/concepts-using5.C	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/121351
+ // { dg-do compile { target c++20 } }
+ 
+ template<class T> concept C = true;
+ 
+ template<class T>
+ struct A {
+   template<class U> void f(U) requires C<T> = delete; // #1
+ };
+ 
+ struct B : A<int> {
+   using A::f;
+   template<class U> void f(U) requires C<int>; // #2
+ };
+ 
+ int main() {
+   B b;
+   b.f(42); // OK, #2 corresponds to and therefore hides #1
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/concepts-using5a.C gcc-15-20250809/gcc/testsuite/g++.dg/cpp2a/concepts-using5a.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/concepts-using5a.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/cpp2a/concepts-using5a.C	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/121351
+ // { dg-do compile { target c++20 } }
+ // A version of concepts-using5a.C where B instead of A is a template.
+ 
+ template<class T> concept C = true;
+ 
+ struct A {
+   template<class U> void f(U) requires C<int> = delete; // #1
+ };
+ 
+ template<class T>
+ struct B : A {
+   using A::f;
+   template<class U> void f(U) requires C<T>; // #2
+ };
+ 
+ int main() {
+   B<int> b;
+   b.f(42); // OK, #2 corresponds to and therefore hides #1
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic19.C gcc-15-20250809/gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic19.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic19.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic19.C	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/120620
+ // { dg-do compile }
+ 
+ #include <cxxabi.h>
+ 
+ struct A* a;
+ 
+ void f() {
+   void* const p = abi::__dynamic_cast(&a, 0, 0, 42);
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic1a.C gcc-15-20250809/gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic1a.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic1a.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/cpp2a/constexpr-dynamic1a.C	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,6 ----
+ // Test that including <cxxabi.h>, whence the actual abi:__dynamic_cast
+ // is declared, doesn't affect our constexpr dynamic_cast handling.
+ // { dg-do compile { target c++20 } }
+ 
+ #include <cxxabi.h>
+ #include "constexpr-dynamic1.C"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/lto/pr114790_0.C gcc-15-20250809/gcc/testsuite/g++.dg/lto/pr114790_0.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/lto/pr114790_0.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/lto/pr114790_0.C	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-lto-do link }
+ // { dg-lto-options { { -w -flto -g -flto-partition=1to1 -O2 -shared -fPIC -fvisibility=hidden} } }
+ // { dg-require-effective-target fpic }
+ // { dg-require-effective-target shared }
+ struct APITracerContext {
+   virtual ~APITracerContext() = default;
+   virtual void releaseActivetracersList() = 0;
+ };
+ struct APITracerContextImp : APITracerContext {
+   ~APITracerContextImp() override;
+   void releaseActivetracersList() override;
+ };
+ struct APITracerContextImp globalAPITracerContextImp;
+ struct APITracerContextImp *pGlobalAPITracerContextImp = &globalAPITracerContextImp;
+ APITracerContextImp::~APITracerContextImp() {}
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/lto/pr114790_1.C gcc-15-20250809/gcc/testsuite/g++.dg/lto/pr114790_1.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/lto/pr114790_1.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/lto/pr114790_1.C	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,15 ----
+ struct APITracerContext {
+   virtual void releaseActivetracersList() = 0;
+ };
+ extern struct APITracerContextImp *pGlobalAPITracerContextImp;
+ struct APITracerContextImp : APITracerContext { void releaseActivetracersList();};
+ int g();
+ inline int
+ apiTracerWrapperImp(  ) {
+   for (int i = 0; i < g(); i++) 
+   pGlobalAPITracerContextImp->releaseActivetracersList();
+ }
+ __attribute__((visibility("default"))) int
+ zeCommandListAppendMemoryCopyTracing() {
+   return apiTracerWrapperImp(      );
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/modules/cpp-21.C gcc-15-20250809/gcc/testsuite/g++.dg/modules/cpp-21.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/modules/cpp-21.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/modules/cpp-21.C	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/120845
+ // { dg-do compile }
+ // { dg-additional-options "-fmodules" }
+ 
+ export module pr120485
+     [[foobarbaz]];
+ // { dg-error "expected ';' before end of line" "" { target *-*-* } .-2 }
+ // { dg-warning "attribute ignored" "" { target *-*-* } .-2 }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/modules/merge-19.h gcc-15-20250809/gcc/testsuite/g++.dg/modules/merge-19.h
*** gcc-15-20250726/gcc/testsuite/g++.dg/modules/merge-19.h	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/modules/merge-19.h	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/121238
+ 
+ inline void inc(const char*& __first) {
+   ++__first;
+ }
+ 
+ template <typename = void>
+ bool parse_integer(const char *first) {
+   const char *start = first;
+   inc(first);
+   return first != start;
+ }
+ template bool parse_integer<void>(const char*);
+ 
+ 
+ struct S { ~S() {} int x; };
+ template <typename = void>
+ bool take_by_invisiref(S s) {
+   return s.x == 5;
+ }
+ template bool take_by_invisiref<void>(S);
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/modules/merge-19_a.H gcc-15-20250809/gcc/testsuite/g++.dg/modules/merge-19_a.H
*** gcc-15-20250726/gcc/testsuite/g++.dg/modules/merge-19_a.H	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/modules/merge-19_a.H	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/121238
+ // { dg-additional-options "-fmodule-header" }
+ // { dg-module-cmi {} }
+ 
+ #include "merge-19.h"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/modules/merge-19_b.C gcc-15-20250809/gcc/testsuite/g++.dg/modules/merge-19_b.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/modules/merge-19_b.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/modules/merge-19_b.C	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/121238
+ // { dg-module-do run }
+ // { dg-additional-options "-fmodules -fno-module-lazy" }
+ 
+ #include "merge-19.h"
+ import "merge-19_a.H";
+ 
+ int main() {
+   const char fmt[] = "5";
+   if (!parse_integer<void>(fmt))
+     __builtin_abort();
+ 
+   S s{ 5 };
+   if (!take_by_invisiref(s))
+     __builtin_abort();
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/modules/pr108080.H gcc-15-20250809/gcc/testsuite/g++.dg/modules/pr108080.H
*** gcc-15-20250726/gcc/testsuite/g++.dg/modules/pr108080.H	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/modules/pr108080.H	Sat Aug  9 22:32:41 2025
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/108080
+ // { dg-additional-options "-fmodules" }
+ // Give a diagnostic message rather than a crash for unsupported features.
+ 
+ [[gnu::optimize("-O3")]] void foo();  // { dg-warning "optimize" }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/pr115605.C gcc-15-20250809/gcc/testsuite/g++.dg/pr115605.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/pr115605.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/pr115605.C	Sat Aug  9 22:32:42 2025
***************
*** 0 ****
--- 1,10 ----
+ // { dg-do compile { target c++20 } }
+ 
+ #include <array>
+ 
+ int foo() {
+     int const tuple_size = 5;
+     std::array<int, 3> array {1, 2, 3};
+     auto [a, b, c] = array;
+     return c;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/warn/deprecated-22.C gcc-15-20250809/gcc/testsuite/g++.dg/warn/deprecated-22.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/warn/deprecated-22.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/warn/deprecated-22.C	Sat Aug  9 22:32:43 2025
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/120756
+ // { dg-do compile { target c++11 } }
+ 
+ struct A {
+     template <long> [[deprecated]] void foo ();
+ };
+ 
+ template <long t> [[deprecated]] auto bar () -> decltype (&A::foo<t>);
+ 
+ void foo ()
+ {
+   bar<0> ();  // { dg-warning "deprecated" }
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/warn/pr121133-1.C gcc-15-20250809/gcc/testsuite/g++.dg/warn/pr121133-1.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/warn/pr121133-1.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/warn/pr121133-1.C	Sat Aug  9 22:32:43 2025
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/121133
+ // { dg-do compile }
+ // { dg-options "-std=c++98 -Wno-long-long -pedantic-errors" }
+ 
+ __extension__ typedef long long L;
+ __extension__ long long a;
+ struct S {
+   __extension__ long long b;
+ };
+ 
+ void
+ foo ()
+ {
+   __extension__ long long c;
+   c = c + (__extension__ (long long) 1);
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/warn/pr121133-2.C gcc-15-20250809/gcc/testsuite/g++.dg/warn/pr121133-2.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/warn/pr121133-2.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/warn/pr121133-2.C	Sat Aug  9 22:32:43 2025
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/121133
+ // { dg-do compile }
+ // { dg-options "-std=c++98 -pedantic-errors" }
+ 
+ #include "pr121133-1.C"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/warn/pr121133-3.C gcc-15-20250809/gcc/testsuite/g++.dg/warn/pr121133-3.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/warn/pr121133-3.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/warn/pr121133-3.C	Sat Aug  9 22:32:43 2025
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/121133
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-pedantic-errors" }
+ 
+ #include "pr121133-1.C"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/g++.dg/warn/pr121133-4.C gcc-15-20250809/gcc/testsuite/g++.dg/warn/pr121133-4.C
*** gcc-15-20250726/gcc/testsuite/g++.dg/warn/pr121133-4.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/g++.dg/warn/pr121133-4.C	Sat Aug  9 22:32:43 2025
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/121133
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-pedantic-errors -Wlong-long" }
+ 
+ #include "pr121133-1.C"
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-5.c gcc-15-20250809/gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-5.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-5.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-5.c	Sat Aug  9 22:32:44 2025
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Wdeprecated-non-prototype" } */
+ 
+ static inline
+ int f (int x)
+ {
+   return __builtin_constant_p (x);
+ }
+ 
+ static inline
+ int g (double x)
+ {
+   return __builtin_isfinite (x);
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-6.c gcc-15-20250809/gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-6.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-6.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/Wdeprecated-non-prototype-6.c	Sat Aug  9 22:32:44 2025
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-std=gnu17 -Wdeprecated-non-prototype" } */
+ 
+ void (*f1) ();
+ void (*f2) ();
+ void (*f3) (...);
+ 
+ void
+ g ()
+ {
+   f1 ();
+   f2 (1); /* { dg-warning "does not allow arguments for function" } */
+   f3 (1);
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/bitint-125.c gcc-15-20250809/gcc/testsuite/gcc.dg/bitint-125.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/bitint-125.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/bitint-125.c	Sat Aug  9 22:32:44 2025
***************
*** 0 ****
--- 1,15 ----
+ /* PR tree-optimization/121127 */
+ /* { dg-do compile { target bitint } } */
+ /* { dg-options "-O2 -w" } */
+ 
+ #if __BITINT_MAXWIDTH__ >= 576
+ _BitInt(575)
+ foo (void)
+ {
+   _BitInt(576) d;
+   _BitInt(575) e = d * 42wb;
+   return e;
+ }
+ #else
+ int i;
+ #endif
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/darwin-minversion-link.c gcc-15-20250809/gcc/testsuite/gcc.dg/darwin-minversion-link.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/darwin-minversion-link.c	Sat Jul 26 22:32:44 2025
--- gcc-15-20250809/gcc/testsuite/gcc.dg/darwin-minversion-link.c	Sat Aug  9 22:32:44 2025
***************
*** 20,25 ****
--- 20,26 ----
  /* { dg-additional-options "-mmacosx-version-min=013.000.00 -DCHECK=130000" { target *-*-darwin22* } } */
  /* { dg-additional-options "-mmacosx-version-min=014.000.00 -DCHECK=140000" { target *-*-darwin23* } } */
  /* { dg-additional-options "-mmacosx-version-min=015.000.00 -DCHECK=150000" { target *-*-darwin24* } } */
+ /* { dg-additional-options "-mmacosx-version-min=026.000.00 -DCHECK=260000" { target *-*-darwin25* } } */
  
  int
  main ()
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/plugin/must-tail-call-2.c gcc-15-20250809/gcc/testsuite/gcc.dg/plugin/must-tail-call-2.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/plugin/must-tail-call-2.c	Sat Jul 26 22:32:46 2025
--- gcc-15-20250809/gcc/testsuite/gcc.dg/plugin/must-tail-call-2.c	Sat Aug  9 22:32:45 2025
*************** volatile fn_ptr_t fn_ptr;
*** 55,59 ****
  void
  test_5 (void)
  {
!   fn_ptr (); /* { dg-error "cannot tail-call: " } */
  }
--- 55,59 ----
  void
  test_5 (void)
  {
!   fn_ptr ();
  }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/pr120353.c gcc-15-20250809/gcc/testsuite/gcc.dg/pr120353.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/pr120353.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/pr120353.c	Sat Aug  9 22:32:45 2025
***************
*** 0 ****
--- 1,11 ----
+ /* PR120353: Test for -Wflex-array-member-not-at-end on structure with 
+    typedef.  */ 
+ /* { dg-do compile } */
+ /* { dg-options "-Wflex-array-member-not-at-end" } */
+ 
+ typedef struct flex flex_t;
+ struct flex { int n; int data[]; };
+ struct out_flex_mid {flex_t flex_data;  int m; }; /* { dg-warning "structure containing a flexible array member is not at the end of another structure" } */
+ 
+ typedef struct flex flex_t1;
+ struct out_flex_mid1 {flex_t1 flex_data1; int n; }; /* { dg-warning "structure containing a flexible array member is not at the end of another structure" } */ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/pr120354.c gcc-15-20250809/gcc/testsuite/gcc.dg/pr120354.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/pr120354.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/pr120354.c	Sat Aug  9 22:32:45 2025
***************
*** 0 ****
--- 1,33 ----
+ /* PR120354: Test for -Wflex-array-member-not-at-end on union with 
+    flexible array members.  */ 
+ /* { dg-do compile } */
+ /* { dg-options "-Wflex-array-member-not-at-end" } */
+ 
+ struct P {};
+ union L {};
+ 
+ union X {
+     int x[];
+     struct P y;
+ };
+ 
+ struct T {
+     union X x;	/* { dg-warning "structure containing a flexible array member is not at the end of another structure" } */
+     int plug;
+ };
+ 
+ struct Q {
+     int len;
+     int data[];
+ };
+ 
+ union Y {
+     struct Q q;
+     union L y;
+ };
+ 
+ struct S {
+     union Y y;  /* { dg-warning "structure containing a flexible array member is not at the end of another structure" } */
+     int plug;
+ };
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/pr121322.c gcc-15-20250809/gcc/testsuite/gcc.dg/pr121322.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/pr121322.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/pr121322.c	Sat Aug  9 22:32:45 2025
***************
*** 0 ****
--- 1,14 ----
+ /* PR middle-end/121322 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ unsigned long long
+ foo (unsigned long long *p)
+ {
+   unsigned long long a = *p;
+   unsigned long long b = __builtin_bswap64 (a);
+   return ((b << 32)
+ 	  | ((b >> 8) & 0xff000000ULL)
+ 	  | ((b >> 24) & 0xff0000ULL)
+ 	  | ((b >> 40) & 0xff00ULL));
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/torture/bitint-85.c gcc-15-20250809/gcc/testsuite/gcc.dg/torture/bitint-85.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/torture/bitint-85.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/torture/bitint-85.c	Sat Aug  9 22:32:45 2025
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do run { target bitint } } */
+ /* { dg-options "-std=c23 -pedantic-errors" } */
+ /* { dg-skip-if "" { ! run_expensive_tests }  { "*" } { "-O0" "-O2" } } */
+ /* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
+ 
+ #if __BITINT_MAXWIDTH__ >= 1024
+ constexpr _BitInt(1024) d = -541140097068598424394740839221562143161511518875518765552323978870598341733206554363735813878577506997168480201818027232521wb;
+ int c;
+ 
+ static inline void
+ foo (_BitInt(1024) b, _BitInt(1024) *r)
+ {
+   if (c)
+     b = 0;
+   *r = b;
+ }
+ 
+ [[gnu::noipa]] void
+ bar (_BitInt(1024) y)
+ {
+   if (y != d)
+     __builtin_abort ();
+ }
+ #endif
+ 
+ int
+ main ()
+ {
+ #if __BITINT_MAXWIDTH__ >= 1024
+   _BitInt(1024) x;
+   foo (d, &x);
+   bar (x);
+ #endif
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/tree-ssa/pr119085.c gcc-15-20250809/gcc/testsuite/gcc.dg/tree-ssa/pr119085.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/tree-ssa/pr119085.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/tree-ssa/pr119085.c	Sat Aug  9 22:32:46 2025
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do run } */
+ /* { dg-options "-O1" } */
+ 
+ struct with_hole {
+   int x;
+   long y;
+ };
+ struct without_hole {
+   int x;
+   int y;
+ };
+ union u {
+   struct with_hole with_hole;
+   struct without_hole without_hole;
+ };
+ 
+ void __attribute__((noinline))
+ test (union u *up, union u u)
+ {
+   union u u2;
+   volatile int f = 0;
+   u2 = u;
+   if (f)
+     u2.with_hole = u.with_hole;
+   *up = u2;
+ }
+ 
+ int main(void)
+ {
+   union u u;
+   union u u2;
+   u2.without_hole.y = -1;
+   test (&u, u2);
+   if (u.without_hole.y != -1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/tree-ssa/pr121264.c gcc-15-20250809/gcc/testsuite/gcc.dg/tree-ssa/pr121264.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/tree-ssa/pr121264.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/tree-ssa/pr121264.c	Sat Aug  9 22:32:46 2025
***************
*** 0 ****
--- 1,12 ----
+ /* PR tree-optimization/121264 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump " \\\| " "optimized" } } */
+ 
+ struct A { char b; char c[0x20000010]; } a;
+ 
+ int
+ foo ()
+ {
+   return a.c[0x20000000] || a.c[1];
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/vect/pr112325.c gcc-15-20250809/gcc/testsuite/gcc.dg/vect/pr112325.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/vect/pr112325.c	Sat Jul 26 22:32:52 2025
--- gcc-15-20250809/gcc/testsuite/gcc.dg/vect/pr112325.c	Sat Aug  9 22:32:46 2025
***************
*** 5,10 ****
--- 5,11 ----
  /* { dg-additional-options "-mavx2" { target x86_64-*-* i?86-*-* } } */
  /* { dg-additional-options "--param max-completely-peeled-insns=200" { target powerpc64*-*-* } } */
  /* { dg-additional-options "-mlsx" { target loongarch64-*-* } } */
+ /* { dg-additional-options "--param max-completely-peeled-insns=200 --param min-vect-loop-bound=0" { target s390*-*-* } } */
  
  typedef unsigned short ggml_fp16_t;
  static float table_f32_f16[1 << 16];
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/vect/pr117888-1.c gcc-15-20250809/gcc/testsuite/gcc.dg/vect/pr117888-1.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/vect/pr117888-1.c	Sat Jul 26 22:32:53 2025
--- gcc-15-20250809/gcc/testsuite/gcc.dg/vect/pr117888-1.c	Sat Aug  9 22:32:46 2025
***************
*** 5,10 ****
--- 5,11 ----
  /* { dg-additional-options "-mavx2" { target x86_64-*-* i?86-*-* } } */
  /* { dg-additional-options "--param max-completely-peeled-insns=200" { target powerpc64*-*-* } } */
  /* { dg-additional-options "-mlsx" { target loongarch64-*-* } } */
+ /* { dg-additional-options "--param max-completely-peeled-insns=200 --param min-vect-loop-bound=0" { target s390*-*-* } } */
  
  typedef unsigned short ggml_fp16_t;
  static float table_f32_f16[1 << 16];
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c	Sat Aug  9 22:32:46 2025
***************
*** 0 ****
--- 1,62 ----
+ /* PR tree-optimization/121190 */
+ /* { dg-options "-O3" } */
+ /* { dg-additional-options "-march=znver2" { target x86_64-*-* i?86-*-* } } */
+ /* { dg-require-effective-target mmap } */
+ /* { dg-require-effective-target vect_early_break } */
+ 
+ #include <stdint.h>
+ #include <string.h>
+ #include <stdio.h>
+ #include <sys/mman.h>
+ #include <unistd.h>
+ #include "tree-vect.h"
+ 
+ #define MAX_COMPARE 5000
+ 
+ __attribute__((noipa))
+ int diff (uint64_t *restrict p, uint64_t *restrict q)
+ {
+   int i = 0;
+   while (i < MAX_COMPARE) {
+     if (*(p + i) != *(q + i))
+       return i;
+     i++;
+   }
+   return -1;
+ }
+ 
+ int main ()
+ {
+   check_vect ();
+ 
+   long pgsz = sysconf (_SC_PAGESIZE);
+   if (pgsz == -1) {
+     fprintf (stderr, "sysconf failed\n");
+     return 0;
+   }
+ 
+   /* Allocate 2 consecutive pages of memory and let p1 and p2 point to the
+      beginning of each.  */
+   void *mem = mmap (NULL, pgsz * 2, PROT_READ | PROT_WRITE,
+ 		    MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+   if (mem == MAP_FAILED) {
+     fprintf (stderr, "mmap failed\n");
+     return 0;
+   }
+   uint64_t *p1 = (uint64_t *) mem;
+   uint64_t *p2 = (uint64_t *) mem + pgsz / sizeof (uint64_t);
+ 
+   /* Fill the first page with zeros, except for its last 64 bits.  */
+   memset (p1, 0, pgsz);
+   *(p2 - 1) = -1;
+ 
+   /* Make the 2nd page not accessable.  */
+   mprotect (p2, pgsz, PROT_NONE);
+ 
+   /* Calls to diff should not read the 2nd page.  */
+   for (int i = 1; i <= 20; i++) {
+     if (diff (p2 - i, p1) != i - 1)
+       __builtin_abort ();
+   }
+ }
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-early-break_52.c gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-early-break_52.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-early-break_52.c	Sat Jul 26 22:32:53 2025
--- gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-early-break_52.c	Sat Aug  9 22:32:46 2025
*************** int main1 (short X)
*** 18,21 ****
      }
  }
  
! /* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" { target { ! "x86_64-*-* i?86-*-*" } } } } */
--- 18,21 ----
      }
  }
  
! /* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" { target { ! "x86_64-*-* i?86-*-* arm*-*-*" } } } } */
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256-2.c gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256-2.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256-2.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256-2.c	Sat Aug  9 22:32:46 2025
***************
*** 0 ****
--- 1,49 ----
+ /* { dg-additional-options "-mavx2" { target avx2_runtime } } */
+ 
+ #include "tree-vect.h"
+ 
+ #define B 0
+ #define G 1
+ #define R 2
+ 
+ int red = 153;
+ int green = 66;
+ int blue = 187;
+ 
+ static void __attribute__((noipa))
+ sub_left_prediction_bgr32(int *restrict dst, int *restrict src)
+ {
+   for (int i = 0; i < 8; i++) {
+     int rt = src[i * 3 + R];
+     int gt = src[i * 3 + G];
+     int bt = src[i * 3 + B];
+ 
+     dst[i * 3 + R] = rt - red;
+     dst[i * 3 + G] = gt - green;
+     dst[i * 3 + B] = bt - blue;
+ 
+     red = rt;
+     green = gt;
+     blue = bt;
+   }
+ }
+ 
+ int main()
+ {
+   int dst[8*3];
+   int src[8*3] = { 160, 73, 194, 17, 33, 99, 0, 12, 283, 87, 73, 11,
+ 		   9, 7, 1, 23, 19, 13, 77, 233, 97, 78, 2, 5 };
+   int dst2[8*3] = {-27, 7, 41, -143, -40, -95, -17, -21, 184, 87, 61,
+       -272, -78, -66, -10, 14, 12, 12, 54, 214, 84, 1, -231, -92};
+ 
+   check_vect ();
+ 
+   sub_left_prediction_bgr32(dst, src);
+ 
+ #pragma GCC novector
+   for (int i = 0; i < 8*3; ++i)
+     if (dst[i] != dst2[i])
+       __builtin_abort();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256.c gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-recurr-pr121256.c	Sat Aug  9 22:32:46 2025
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-additional-options "-mavx2" { target avx2_runtime } } */
+ 
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include "tree-vect.h"
+ 
+ #define B 0
+ #define G 1
+ #define R 2
+ #define A 3
+ 
+ int red = 153;
+ int green = 66;
+ int blue = 187;
+ int alpha = 255;
+ 
+ static void __attribute__((noipa))
+ sub_left_prediction_bgr32(uint8_t *restrict dst, uint8_t *restrict src, int w)
+ {
+   for (int i = 0; i < 8; i++) {
+     int rt = src[i * 4 + R];
+     int gt = src[i * 4 + G];
+     int bt = src[i * 4 + B];
+     int at = src[i * 4 + A];
+ 
+     dst[i * 4 + R] = rt - red;
+     dst[i * 4 + G] = gt - green;
+     dst[i * 4 + B] = bt - blue;
+     dst[i * 4 + A] = at - alpha;
+ 
+     red = rt;
+     green = gt;
+     blue = bt;
+     alpha = at;
+   }
+ }
+ 
+ int main()
+ {
+   check_vect ();
+ 
+   uint8_t *dst = calloc(36, sizeof(uint8_t));
+   uint8_t *src = calloc(36, sizeof(uint8_t));
+ 
+   src[R] = 160;
+   src[G] = 73;
+   src[B] = 194;
+   src[A] = 255;
+ 
+   sub_left_prediction_bgr32(dst, src, 33);
+   if (dst[R] != 7 || dst[B] != 7 || dst[A] != 0)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-simd-pr121130.c gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-simd-pr121130.c
*** gcc-15-20250726/gcc/testsuite/gcc.dg/vect/vect-simd-pr121130.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.dg/vect/vect-simd-pr121130.c	Sat Aug  9 22:32:46 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ 
+ int n2;
+ 
+ __attribute__((simd)) char
+ w7(void)
+ {
+   short int xb = n2;
+     xb = w7() < 1;
+   return xb;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_1.c gcc-15-20250809/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_1.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_1.c	Sat Jul 26 22:32:56 2025
--- gcc-15-20250809/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_1.c	Sat Aug  9 22:32:47 2025
***************
*** 1,5 ****
  // { dg-options "-O -fomit-frame-pointer -fno-optimize-sibling-calls -funwind-tables" }
! // { dg-final { check-function-bodies "**" "" } }
  
  void ns_callee ();
   void s_callee () [[arm::streaming]];
--- 1,5 ----
  // { dg-options "-O -fomit-frame-pointer -fno-optimize-sibling-calls -funwind-tables" }
! // { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {\t\.inst} } }
  
  void ns_callee ();
   void s_callee () [[arm::streaming]];
*************** sc_caller_x1 (int *ptr, int a) [[arm::st
*** 218,224 ****
  **	bl	ns_callee_stack
  **	ldr	x16, \[x29, #?16\]
  **	tbz	x16, 0, .*
! **	smstart	sm
  **	...
  */
  void
--- 218,224 ----
  **	bl	ns_callee_stack
  **	ldr	x16, \[x29, #?16\]
  **	tbz	x16, 0, .*
! **	.inst 0xd503437f // smstart sm
  **	...
  */
  void
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_11.c gcc-15-20250809/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_11.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_11.c	Sat Jul 26 22:32:56 2025
--- gcc-15-20250809/gcc/testsuite/gcc.target/aarch64/sme/call_sm_switch_11.c	Sat Aug  9 22:32:47 2025
***************
*** 1,5 ****
  // { dg-options "-O -fomit-frame-pointer -fno-optimize-sibling-calls -funwind-tables -mtrack-speculation" }
! // { dg-final { check-function-bodies "**" "" } }
  
  void ns_callee ();
   void s_callee () [[arm::streaming]];
--- 1,6 ----
  // { dg-options "-O -fomit-frame-pointer -fno-optimize-sibling-calls -funwind-tables -mtrack-speculation" }
! // { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {\t\.inst} } }
! 
  
  void ns_callee ();
   void s_callee () [[arm::streaming]];
*************** sc_caller_x1 (int *ptr, int a) [[arm::st
*** 196,202 ****
  **	tst	x16, #?1
  **	beq	[^\n]*
  **	csel	x15, x15, xzr, ne
! **	smstart	sm
  **	...
  */
  void
--- 197,203 ----
  **	tst	x16, #?1
  **	beq	[^\n]*
  **	csel	x15, x15, xzr, ne
! **	.inst 0xd503437f // smstart sm
  **	...
  */
  void
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sme/pr121028.c gcc-15-20250809/gcc/testsuite/gcc.target/aarch64/sme/pr121028.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sme/pr121028.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/aarch64/sme/pr121028.c	Sat Aug  9 22:32:47 2025
***************
*** 0 ****
--- 1,46 ----
+ // PR121028
+ // { dg-do assemble { target aarch64_asm_sme_ok } }
+ // { dg-options "-O --save-temps" }
+ // { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {\t\.inst} } }
+ 
+ void ns_callee ();
+ 
+ /*
+ ** sc_caller_sme:
+ **	...
+ **	mrs	x16, svcr
+ **	str	x16, \[x29, #?16\]
+ **	ldr	x16, \[x29, #?16\]
+ **	tbz	x16, 0, .*
+ **	smstop	sm
+ **	bl	ns_callee
+ **	ldr	x16, \[x29, #?16\]
+ **	tbz	x16, 0, .*
+ **	smstart	sm
+ **	...
+ */
+ void sc_caller_sme() __arm_streaming_compatible
+ {
+     ns_callee ();
+ }
+ 
+ #pragma GCC target "+nosme"
+ 
+ /*
+ ** sc_caller_nosme:
+ **	...
+ **	bl	__arm_sme_state
+ **	str	x0, \[x29, #?16\]
+ **	ldr	x16, \[x29, #?16\]
+ **	tbz	x16, 0, .*
+ **	.inst 0xd503427f // smstop sm
+ **	bl	ns_callee
+ **	ldr	x16, \[x29, #?16\]
+ **	tbz	x16, 0, .*
+ **	.inst 0xd503437f // smstart sm
+ **	...
+ */
+ void sc_caller_nosme() __arm_streaming_compatible
+ {
+     ns_callee ();
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c gcc-15-20250809/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c	Sat Jul 26 22:32:58 2025
--- gcc-15-20250809/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c	Sat Aug  9 22:32:47 2025
***************
*** 212,233 ****
      type init4 = svld1_ ## su ## sz (cmp ## sz, mem); \
  	\
      type res_init1 = func_ ## type ## _init1 (); \
!     svbool_t cmp = svcmpne_ ## su ## sz (all_true, init1, res_init1); \
      if (svptest_any (all_true, cmp)) \
        __builtin_abort (); \
  	\
      type res_init2 = func_ ## type ## _init2 (); \
!     cmp = svcmpne_ ## su ## sz (all_true, init2, res_init2); \
      if (svptest_any (all_true, cmp)) \
        __builtin_abort (); \
  	\
      type res_init3 = func_ ## type ## _init3 (); \
!     cmp = svcmpne_ ## su ## sz (all_true, init3, res_init3); \
      if (svptest_any (all_true, cmp)) \
        __builtin_abort (); \
  	\
      type res_init4 = func_ ## type ## _init4 (); \
!     cmp = svcmpne_ ## su ## sz (all_true, init4, res_init4); \
      if (svptest_any (all_true, cmp)) \
        __builtin_abort (); \
    }
--- 212,233 ----
      type init4 = svld1_ ## su ## sz (cmp ## sz, mem); \
  	\
      type res_init1 = func_ ## type ## _init1 (); \
!     svbool_t cmp = svcmpne_ ## su ## sz (cmp ## sz, init1, res_init1); \
      if (svptest_any (all_true, cmp)) \
        __builtin_abort (); \
  	\
      type res_init2 = func_ ## type ## _init2 (); \
!     cmp = svcmpne_ ## su ## sz (cmp ## sz, init2, res_init2); \
      if (svptest_any (all_true, cmp)) \
        __builtin_abort (); \
  	\
      type res_init3 = func_ ## type ## _init3 (); \
!     cmp = svcmpne_ ## su ## sz (cmp ## sz, init3, res_init3); \
      if (svptest_any (all_true, cmp)) \
        __builtin_abort (); \
  	\
      type res_init4 = func_ ## type ## _init4 (); \
!     cmp = svcmpne_ ## su ## sz (cmp ## sz, init4, res_init4); \
      if (svptest_any (all_true, cmp)) \
        __builtin_abort (); \
    }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/arm/pr120351.c gcc-15-20250809/gcc/testsuite/gcc.target/arm/pr120351.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/arm/pr120351.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/arm/pr120351.c	Sat Aug  9 22:32:48 2025
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do assemble } */
+ /* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-add-options arm_neon } */
+ /* { dg-additional-options "-O2" } */
+ 
+ 
+ typedef struct A
+ {
+   int f1;
+ } A;
+ 
+ __inline void ref (A* x)
+ {
+   __atomic_fetch_add(&x->f1, 1, 0);
+ }
+ 
+ typedef struct B
+ {
+   A *d;
+   int *ptr;
+ } B;
+ 
+ void insertOne (B*, B*);
+ 
+ void init (B *);
+ __inline void copy (B *p, B *q)
+ {
+   p->d  = q->d;
+   p->ptr = q->ptr;
+   ref (p->d);
+ }
+ 
+ __inline void emplace(B* x)
+ {
+   B dummy;
+   B _tmp;
+   init (&dummy);
+   copy (&_tmp, &dummy);
+   insertOne(x, &_tmp);
+ }
+ 
+ void testing ()
+ {
+   B test;
+   init (&test);
+   emplace(&test);
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/i386/cold-attribute-4.c gcc-15-20250809/gcc/testsuite/gcc.target/i386/cold-attribute-4.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/i386/cold-attribute-4.c	Sat Jul 26 22:33:04 2025
--- gcc-15-20250809/gcc/testsuite/gcc.target/i386/cold-attribute-4.c	Sat Aug  9 22:32:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" } */
  #include <string.h>
  
  int
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-Oz" } */
  #include <string.h>
  
  int
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-1.c gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-1.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-1.c	Sat Aug  9 22:32:49 2025
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mtune=sapphirerapids" } */
+ /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]+\\\$0, \[0-9\]*\\(" } } */
+ 
+ struct __pthread_mutex_s
+ {
+   int __lock;
+   unsigned int __count;
+   int __owner;
+   unsigned int __nusers;
+   int __kind;
+   short __spins;
+   short __elision;
+   void *p[2];
+ };
+ typedef union
+ {
+   struct __pthread_mutex_s __data;
+   char __size[40];
+   long int __align;
+ } pthread_mutex_t;
+ typedef struct { pthread_mutex_t mutex; } __rtld_lock_recursive_t;
+ void
+ foo (__rtld_lock_recursive_t *lock, int i)
+ {
+   lock[i] = (__rtld_lock_recursive_t) {{ { 0, 0, 0, 0, 1,
+       0, 0, { ((void *)0) , ((void *)0) } } }};
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-2.c gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-2.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-2.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-2.c	Sat Aug  9 22:32:49 2025
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mtune=sapphirerapids" } */
+ /* { dg-final { scan-assembler-not "or\[lq\]?\[\\t \]+\\\$-1, \[0-9\]*\\(" } } */
+ 
+ struct __pthread_mutex_s
+ {
+   int __lock;
+   unsigned int __count;
+   int __owner;
+   unsigned int __nusers;
+   int __kind;
+   short __spins;
+   short __elision;
+   void *p[2];
+ };
+ typedef union
+ {
+   struct __pthread_mutex_s __data;
+   char __size[40];
+   long int __align;
+ } pthread_mutex_t;
+ typedef struct { pthread_mutex_t mutex; } __rtld_lock_recursive_t;
+ void
+ foo (__rtld_lock_recursive_t *lock, int i)
+ {
+   lock[i] = (__rtld_lock_recursive_t) {{ { -1, -1, -1, -1, 1,
+       -1, -1, { ((void *)-1) , ((void *)-1) } } }};
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-3.c gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-3.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-3.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-3.c	Sat Aug  9 22:32:49 2025
***************
*** 0 ****
--- 1,45 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ typedef int SItype __attribute__ ((mode (SI)));
+ typedef unsigned int USItype __attribute__ ((mode (SI)));
+ typedef unsigned int UDItype __attribute__ ((mode (DI)));
+ typedef UDItype __attribute__ ((__may_alias__)) bar_t;
+ 
+ static inline __attribute__((__always_inline__)) SItype
+ bar (const bar_t **p, SItype prec)
+ {
+   bar_t mslimb = 0;
+   SItype i = 20;
+   SItype n = ((USItype) prec) % 4;
+   if (n)
+     {
+       prec -= n;
+       if (prec == 0)
+ 	return 1;
+       mslimb = (*p)[i];
+     }
+   while (mslimb == 0)
+     {
+       prec -= 4;
+       if (prec == 0)
+ 	return 1;
+       --i;
+       mslimb = (*p)[i];
+     }
+   return prec;
+ }
+ UDItype
+ foo (const bar_t *i, SItype iprec)
+ {
+   iprec = bar (&i, iprec);
+   USItype aiprec = iprec < 0 ? -iprec : iprec;
+   bar_t msb = *i;
+   UDItype mantissa = 0;
+   if (aiprec % 4)
+     msb &= ((bar_t) 1 << aiprec) - 1;
+   if (aiprec >= 54)
+     mantissa = (UDItype) msb << 32;
+ 
+   return (mantissa ^ (UDItype) 0x20000000000000);
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-4.c gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-4.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-4.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-4.c	Sat Aug  9 22:32:49 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ #include "cold-attribute-4.c"
+ 
+ /* { dg-final { scan-assembler "movl" } } */
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-5.c gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-5.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr120427-5.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr120427-5.c	Sat Aug  9 22:32:49 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-Oz" } */
+ 
+ long long
+ func1 (void)
+ {
+   return -1;
+ }
+ /* { dg-final { scan-assembler-times "pushq\[ \\t\]+\\\$-1" 1 } } */
+ /* { dg-final { scan-assembler-times "popq\[ \\t\]+%rax" 1 } } */
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr121274.c gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr121274.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/i386/pr121274.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/i386/pr121274.c	Sat Aug  9 22:32:49 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-march=x86-64-v4 -O2" } */
+ /* { dg-final { scan-assembler-not "vpextrq" } } */
+ /* { dg-final { scan-assembler-not "vpinsrq" } } */
+ 
+ typedef int v16si __attribute__((vector_size(64)));
+ typedef int v4si __attribute__((vector_size(16)));
+ 
+ v4si f(v16si x)
+ {
+   return __builtin_shufflevector(x, x, 0, 1, 2, 3);
+ }
+ 
+ v4si g(v16si x)
+ {
+ return __builtin_shufflevector(x, x, 4, 5, 6, 7);
+ }
+ 
+ v4si f1(__int128 *x)
+ {
+   __int128 t = *x;
+   asm("":"+x"(t));
+   return (v4si)t;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/loongarch/pr121064.c gcc-15-20250809/gcc/testsuite/gcc.target/loongarch/pr121064.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/loongarch/pr121064.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/loongarch/pr121064.c	Sat Aug  9 22:32:49 2025
***************
*** 0 ****
--- 1,38 ----
+ /* { dg-require-effective-target loongarch_sx_hw } */
+ /* { dg-do run } */
+ /* { dg-options "-march=loongarch64 -mfpu=64 -mlsx -O3" } */
+ 
+ typedef __INT32_TYPE__ int32_t;
+ typedef unsigned __INT32_TYPE__ uint32_t;
+ 
+ __attribute__ ((noipa)) static int32_t
+ long_filter_ehigh_3830_1 (int32_t *buffer, int length)
+ {
+   int i, j;
+   int32_t dotprod = 0;
+   int32_t delay[4] = { 0 };
+   uint32_t coeffs[4] = { 0 };
+ 
+   for (i = 0; i < length; i++)
+     {
+       dotprod = 0;
+       for (j = 3; j >= 0; j--)
+         {
+           dotprod += delay[j] * coeffs[j];
+           coeffs[j] += ((delay[j] >> 31) | 1);
+         }
+       for (j = 3; j > 0; j--)
+         delay[j] = delay[j - 1];
+       delay[0] = buffer[i];
+     }
+ 
+   return dotprod;
+ }
+ 
+ int
+ main ()
+ {
+   int32_t buffer[] = { -1, 1 };
+   if (long_filter_ehigh_3830_1 (buffer, 2) != -1)
+     __builtin_trap ();
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c gcc-15-20250809/gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c	Sat Jul 26 22:33:29 2025
--- gcc-15-20250809/gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c	Sat Aug  9 22:32:50 2025
***************
*** 1,8 ****
  /* { dg-do compile { target { powerpc*-*-* } } } */
  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
! /* { dg-options "-O2 -mdejagnu-cpu=power7 -fno-inline-functions" } */
  /* { dg-require-effective-target powerpc_vsx } */
  
  /* Test simple extract/insert/slat operations.  Make sure all types are
     supported with various options.  */
  
--- 1,16 ----
  /* { dg-do compile { target { powerpc*-*-* } } } */
  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
! /* { dg-options "-O2 -mdejagnu-cpu=power7 -fno-inline-functions -fno-ipa-icf" } */
  /* { dg-require-effective-target powerpc_vsx } */
  
+ /* PR testsuite/119382
+    Note: Added -fno-ipa-icf to disable Interprocedural Identical Code
+    Folding (ICF). Without this, insert_di_0_v2 is merged with insert_di_0
+    due to improved alias analysis introduced in commit r15-7961-gdc47161c1f32c3.
+    This results in the compiler replacing insert_di_0_v2 with a tail call to
+    insert_di_0, altering expected test behavior. Disabling ICF ensures correct
+    execution of the test.  */
+ 
  /* Test simple extract/insert/slat operations.  Make sure all types are
     supported with various options.  */
  
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gcc.target/riscv/pr120714.c gcc-15-20250809/gcc/testsuite/gcc.target/riscv/pr120714.c
*** gcc-15-20250726/gcc/testsuite/gcc.target/riscv/pr120714.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gcc.target/riscv/pr120714.c	Sat Aug  9 22:32:50 2025
***************
*** 0 ****
--- 1,40 ----
+ /* Test checking that the backtrace on large frame size with additional
+    SP shift in the prologue won't broken when compiled with the
+    -fstack-clash-protection option.  */
+ /* { dg-do run { target { *-*-linux* } } } */
+ /* -O0 does not have enough optimizations.
+    -O2/-O3 does inline and reduces number of addresses in the backtrace.  */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-O2" "-O3" } } */
+ /* { dg-options "-g -fstack-clash-protection" } */
+ 
+ #include <execinfo.h>
+ 
+ #define MAX 4000
+ 
+ void goo ()
+ {
+   int addresses;
+   void *buffer[10];
+ 
+   addresses = backtrace (buffer, 10);
+   if (addresses != 6)
+     __builtin_abort ();
+ }
+ 
+ int foo (int a)
+ {
+   long long A[MAX];
+   for (int i = 0; i < MAX; i++)
+     A[i] = i;
+ 
+   goo ();
+ 
+   return A[a % MAX];
+ }
+ 
+ int main ()
+ {
+   if (foo (20) != 20)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-15-20250726/gcc/testsuite/gfortran.dg/array_constructor_58.f90 gcc-15-20250809/gcc/testsuite/gfortran.dg/array_constructor_58.f90
*** gcc-15-20250726/gcc/testsuite/gfortran.dg/array_constructor_58.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/gcc/testsuite/gfortran.dg/array_constructor_58.f90	Sat Aug  9 22:32:55 2025
***************
*** 0 ****
--- 1,17 ----
+ !{ dg-do run }
+ 
+ ! Contributed by  Federico Perini <federico.perini@gmail.com>
+ ! Check that PR fortran/119106 is fixed.
+ 
+ program char_param_array
+ implicit none
+ character, parameter :: p(5) = ['1','2','3','4','5']
+ character, save      :: n(5) = ['1','2','3','4','5']
+ integer :: i(10), j
+ 
+ i = 4
+ if (any([(n(i(j)),j=1,10)] /= '4')) stop 1 ! OK
+ if (any([(p(i(j)),j=1,10)] /= '4')) stop 2 ! used to runtime out-of-bounds error
+ 
+ end program char_param_array
+ 
diff -Nrcpad gcc-15-20250726/gcc/testsuite/lib/target-supports.exp gcc-15-20250809/gcc/testsuite/lib/target-supports.exp
*** gcc-15-20250726/gcc/testsuite/lib/target-supports.exp	Sat Jul 26 22:33:45 2025
--- gcc-15-20250809/gcc/testsuite/lib/target-supports.exp	Sat Aug  9 22:32:58 2025
*************** proc check_effective_target_aarch64_tiny
*** 12367,12378 ****
  # Create functions to check that the AArch64 assembler supports the
  # various architecture extensions via the .arch_extension pseudo-op.
  
! foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse" "dotprod" "sve"
! 			  "i8mm" "f32mm" "f64mm" "bf16" "sb" "sve2" "ls64"
! 			  "lut" "sme" "sme-i16i64" "sme2" "sve-b16b16"
! 			  "sme-b16b16" "sme-f16f16" "sme2p1" "fp8" "fp8fma"
! 			  "ssve-fp8fma" "fp8dot2" "ssve-fp8dot2" "fp8dot4"
! 			  "ssve-fp8dot4"} {
      eval [string map [list FUNC $aarch64_ext] {
  	proc check_effective_target_aarch64_asm_FUNC_ok { } {
  	  if { [istarget aarch64*-*-*] } {
--- 12367,12386 ----
  # Create functions to check that the AArch64 assembler supports the
  # various architecture extensions via the .arch_extension pseudo-op.
  
! set exts {
!     "bf16" "crc" "crypto" "dotprod" "f32mm" "f64mm" "fp" "fp8"
!     "fp8dot2" "fp8dot4" "fp8fma" "i8mm" "ls64" "lse" "lut" "sb" "simd"
!     "sve-b16b16" "sve" "sve2"
! }
! 
! # We don't support SME without SVE2, so we'll use armv9 as the base
! # archiecture for SME and the features that require it.
! set exts_sve2 {
!     "sme-b16b16" "sme-f16f16" "sme-i16i64" "sme" "sme2" "sme2p1"
!     "ssve-fp8dot2" "ssve-fp8dot4" "ssve-fp8fma"
! }
! 
! foreach { aarch64_ext } $exts {
      eval [string map [list FUNC $aarch64_ext] {
  	proc check_effective_target_aarch64_asm_FUNC_ok { } {
  	  if { [istarget aarch64*-*-*] } {
*************** foreach { aarch64_ext } { "fp" "simd" "c
*** 12382,12387 ****
--- 12390,12409 ----
  	  } else {
  		return 0
  	  }
+ 	}
+     }]
+ }
+ 
+ foreach { aarch64_ext } $exts_sve2 {
+     eval [string map [list FUNC $aarch64_ext] {
+ 	proc check_effective_target_aarch64_asm_FUNC_ok { } {
+ 	  if { [istarget aarch64*-*-*] } {
+ 		return [check_no_compiler_messages aarch64_FUNC_assembler object {
+ 			__asm__ (".arch_extension FUNC");
+ 		} "-march=armv9-a+FUNC"]
+ 	  } else {
+ 		return 0
+ 	  }
  	}
      }]
  }
diff -Nrcpad gcc-15-20250726/gcc/tree-sra.cc gcc-15-20250809/gcc/tree-sra.cc
*** gcc-15-20250726/gcc/tree-sra.cc	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/gcc/tree-sra.cc	Sat Aug  9 22:32:59 2025
*************** sort_and_splice_var_accesses (tree var)
*** 2504,2509 ****
--- 2504,2515 ----
  		}
  	      unscalarizable_region = true;
  	    }
+ 	  /* If there the same place is accessed with two incompatible
+ 	     aggregate types, trying to base total scalarization on either of
+ 	     them can be wrong.  */
+ 	  if (!first_scalar && !types_compatible_p (access->type, ac2->type))
+ 	    bitmap_set_bit (cannot_scalarize_away_bitmap,
+ 			    DECL_UID (access->base));
  
  	  if (grp_same_access_path
  	      && (!ac2->grp_same_access_path
diff -Nrcpad gcc-15-20250726/gcc/tree-ssa-alias.cc gcc-15-20250809/gcc/tree-ssa-alias.cc
*** gcc-15-20250726/gcc/tree-ssa-alias.cc	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/gcc/tree-ssa-alias.cc	Sat Aug  9 22:32:59 2025
*************** ao_ref_init_from_ptr_and_range (ao_ref *
*** 901,907 ****
    if (TREE_CODE (ptr) == ADDR_EXPR)
      {
        ref->base = get_addr_base_and_unit_offset (TREE_OPERAND (ptr, 0), &t);
!       if (ref->base)
  	ref->offset = BITS_PER_UNIT * t;
        else
  	{
--- 901,909 ----
    if (TREE_CODE (ptr) == ADDR_EXPR)
      {
        ref->base = get_addr_base_and_unit_offset (TREE_OPERAND (ptr, 0), &t);
!       if (ref->base
! 	  && coeffs_in_range_p (t, -HOST_WIDE_INT_MAX / BITS_PER_UNIT,
! 				HOST_WIDE_INT_MAX / BITS_PER_UNIT))
  	ref->offset = BITS_PER_UNIT * t;
        else
  	{
diff -Nrcpad gcc-15-20250726/gcc/tree-ssa-sccvn.cc gcc-15-20250809/gcc/tree-ssa-sccvn.cc
*** gcc-15-20250726/gcc/tree-ssa-sccvn.cc	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/gcc/tree-ssa-sccvn.cc	Sat Aug  9 22:32:59 2025
*************** ao_ref_init_from_vn_reference (ao_ref *r
*** 1219,1225 ****
  		  offset = 0;
  		}
  	      else
! 		offset += pop->off * BITS_PER_UNIT;
  	      op0_p = NULL;
  	      break;
  	    }
--- 1219,1225 ----
  		  offset = 0;
  		}
  	      else
! 		offset += poly_offset_int (pop->off) * BITS_PER_UNIT;
  	      op0_p = NULL;
  	      break;
  	    }
*************** ao_ref_init_from_vn_reference (ao_ref *r
*** 1270,1276 ****
  	  if (maybe_eq (op->off, -1))
  	    max_size = -1;
  	  else
! 	    offset += op->off * BITS_PER_UNIT;
  	  break;
  
  	case REALPART_EXPR:
--- 1270,1276 ----
  	  if (maybe_eq (op->off, -1))
  	    max_size = -1;
  	  else
! 	    offset += poly_offset_int (op->off) * BITS_PER_UNIT;
  	  break;
  
  	case REALPART_EXPR:
diff -Nrcpad gcc-15-20250726/gcc/tree-tailcall.cc gcc-15-20250809/gcc/tree-tailcall.cc
*** gcc-15-20250726/gcc/tree-tailcall.cc	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/gcc/tree-tailcall.cc	Sat Aug  9 22:32:59 2025
*************** find_tail_calls (basic_block bb, edge es
*** 605,610 ****
--- 605,616 ----
  	  && (stmt = last_nondebug_stmt (bb))
  	  && gimple_code (stmt) == GIMPLE_COND)
  	;
+       else if (esucc
+ 	       && cfun->has_musttail
+ 	       && diag_musttail
+ 	       && (stmt = last_nondebug_stmt (bb))
+ 	       && gimple_code (stmt) == GIMPLE_SWITCH)
+ 	;
        /* If there is an abnormal edge assume it's the only extra one.
  	 Tolerate that case so that we can give better error messages
  	 for musttail later.  */
*************** find_tail_calls (basic_block bb, edge es
*** 668,674 ****
  	   else
  	     goto <bb 6>; [INV]
  	 When walking backwards, ESUCC is the edge we are coming from,
! 	 depending on its EDGE_TRUE_FLAG, == vs. != for the comparison
  	 and value compared against try to find out through which edge
  	 we need to go and which edge should be ignored.  The code handles
  	 both INTEGER_CST PHI arguments and SSA_NAMEs set to constants
--- 674,680 ----
  	   else
  	     goto <bb 6>; [INV]
  	 When walking backwards, ESUCC is the edge we are coming from,
! 	 depending on its EDGE_TRUE_FLAG, comparison code
  	 and value compared against try to find out through which edge
  	 we need to go and which edge should be ignored.  The code handles
  	 both INTEGER_CST PHI arguments and SSA_NAMEs set to constants
*************** find_tail_calls (basic_block bb, edge es
*** 677,695 ****
  	  && diag_musttail
  	  && esucc
  	  && gimple_code (stmt) == GIMPLE_COND
- 	  && (gimple_cond_code (stmt) == EQ_EXPR
- 	      || gimple_cond_code (stmt) == NE_EXPR)
  	  && TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME
  	  && TREE_CODE (gimple_cond_rhs (stmt)) == INTEGER_CST
  	  && INTEGRAL_TYPE_P (TREE_TYPE (gimple_cond_lhs (stmt)))
! 	  && (integer_zerop (gimple_cond_rhs (stmt))
! 	      || integer_onep (gimple_cond_rhs (stmt))))
  	{
  	  tree lhs = gimple_cond_lhs (stmt);
! 	  bool rhsv = integer_onep (gimple_cond_rhs (stmt));
! 	  if (((esucc->flags & EDGE_TRUE_VALUE) != 0)
! 	      ^ (gimple_cond_code (stmt) == EQ_EXPR))
! 	    rhsv = !rhsv;
  	  if (!ignored_edges)
  	    {
  	      ignored_edges = new hash_set<edge>;
--- 683,698 ----
  	  && diag_musttail
  	  && esucc
  	  && gimple_code (stmt) == GIMPLE_COND
  	  && TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME
  	  && TREE_CODE (gimple_cond_rhs (stmt)) == INTEGER_CST
  	  && INTEGRAL_TYPE_P (TREE_TYPE (gimple_cond_lhs (stmt)))
! 	  && tree_int_cst_sgn (gimple_cond_rhs (stmt)) >= 0)
  	{
  	  tree lhs = gimple_cond_lhs (stmt);
! 	  tree_code ccode = gimple_cond_code (stmt);
! 	  tree rhsv = gimple_cond_rhs (stmt);
! 	  if ((esucc->flags & EDGE_FALSE_VALUE) != 0)
! 	    ccode = invert_tree_comparison (ccode, false);
  	  if (!ignored_edges)
  	    {
  	      ignored_edges = new hash_set<edge>;
*************** find_tail_calls (basic_block bb, edge es
*** 700,707 ****
  	      && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (lhs))
  		  == INTEGER_CST))
  	    {
! 	      tree rhs = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (lhs));
! 	      if (rhsv ? integer_onep (rhs) : integer_zerop (rhs))
  		continue;
  	    }
  	  else if (gimple_code (SSA_NAME_DEF_STMT (lhs)) == GIMPLE_PHI)
--- 703,712 ----
  	      && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (lhs))
  		  == INTEGER_CST))
  	    {
! 	      tree lhsv = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (lhs));
! 
! 	      if (const_binop (ccode, boolean_type_node, lhsv, rhsv)
! 		  == boolean_true_node)
  		continue;
  	    }
  	  else if (gimple_code (SSA_NAME_DEF_STMT (lhs)) == GIMPLE_PHI)
*************** find_tail_calls (basic_block bb, edge es
*** 712,726 ****
  	      edge_iterator ei;
  	      FOR_EACH_EDGE (e, ei, pbb->preds)
  		{
! 		  tree rhs = gimple_phi_arg_def_from_edge (phi, e);
! 		  if (TREE_CODE (rhs) == SSA_NAME
! 		      && is_gimple_assign (SSA_NAME_DEF_STMT (rhs))
! 		      && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (rhs))
  			  == INTEGER_CST))
! 		    rhs = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (rhs));
! 		  if (!(rhsv ? integer_onep (rhs) : integer_zerop (rhs)))
  		    ignored_edges->add (e);
  		}
  	    }
  	}
  
--- 717,778 ----
  	      edge_iterator ei;
  	      FOR_EACH_EDGE (e, ei, pbb->preds)
  		{
! 		  tree lhsv = gimple_phi_arg_def_from_edge (phi, e);
! 		  if (TREE_CODE (lhsv) == SSA_NAME
! 		      && is_gimple_assign (SSA_NAME_DEF_STMT (lhsv))
! 		      && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (lhsv))
  			  == INTEGER_CST))
! 		    lhsv = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (lhsv));
! 		  if (TREE_CODE (lhsv) != INTEGER_CST
! 		      || const_binop (ccode, boolean_type_node,
! 				      lhsv, rhsv) != boolean_true_node)
! 		    ignored_edges->add (e);
! 		}
! 	      continue;
! 	    }
! 	}
!       if (cfun->has_musttail
! 	  && diag_musttail
! 	  && esucc
! 	  && gimple_code (stmt) == GIMPLE_SWITCH
! 	  && (TREE_CODE (gimple_switch_index (as_a <gswitch *> (stmt)))
! 	      == SSA_NAME))
! 	{
! 	  gswitch *swtch = as_a <gswitch *> (stmt);
! 	  tree idx = gimple_switch_index (swtch);
! 	  if (!ignored_edges)
! 	    {
! 	      ignored_edges = new hash_set<edge>;
! 	      must_see_bbs = new hash_set<basic_block>;
! 	      delete_ignored_edges = true;
! 	    }
! 	  if (is_gimple_assign (SSA_NAME_DEF_STMT (idx))
! 	      && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (idx))
! 		  == INTEGER_CST))
! 	    {
! 	      tree val = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (idx));
! 	      if (find_taken_edge_switch_expr (swtch, val) == esucc)
! 		continue;
! 	    }
! 	  else if (gimple_code (SSA_NAME_DEF_STMT (idx)) == GIMPLE_PHI)
! 	    {
! 	      gimple *phi = SSA_NAME_DEF_STMT (idx);
! 	      basic_block pbb = gimple_bb (phi);
! 	      must_see_bbs->add (pbb);
! 	      edge_iterator ei;
! 	      FOR_EACH_EDGE (e, ei, pbb->preds)
! 		{
! 		  tree val = gimple_phi_arg_def_from_edge (phi, e);
! 		  if (TREE_CODE (val) == SSA_NAME
! 		      && is_gimple_assign (SSA_NAME_DEF_STMT (val))
! 		      && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (val))
! 			  == INTEGER_CST))
! 		    val = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (val));
! 		  if (TREE_CODE (val) != INTEGER_CST
! 		      || find_taken_edge_switch_expr (swtch, val) != esucc)
  		    ignored_edges->add (e);
  		}
+ 	      continue;
  	    }
  	}
  
*************** find_tail_calls (basic_block bb, edge es
*** 1139,1185 ****
        if (ignored_edges)
  	{
  	  if (is_gimple_assign (stmt)
! 	      && gimple_assign_rhs_code (stmt) == INTEGER_CST)
  	    {
  	      use_operand_p use_p;
! 	      gimple *use_stmt;
! 	      if ((integer_zerop (gimple_assign_rhs1 (stmt))
! 		   || integer_onep (gimple_assign_rhs1 (stmt)))
! 		  && single_imm_use (gimple_assign_lhs (stmt), &use_p,
! 				     &use_stmt))
  		{
! 		  if (gimple_code (use_stmt) == GIMPLE_COND)
! 		    continue;
! 		  if (gimple_code (use_stmt) == GIMPLE_PHI
! 		      && single_imm_use (gimple_phi_result (use_stmt),
! 					 &use_p, &use_stmt)
! 		      && gimple_code (use_stmt) == GIMPLE_COND)
  		    continue;
  		}
  	    }
  	  if (gimple_code (stmt) == GIMPLE_COND
- 	      && (gimple_cond_code (stmt) == EQ_EXPR
- 		  || gimple_cond_code (stmt) == NE_EXPR)
  	      && TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME
  	      && TREE_CODE (gimple_cond_rhs (stmt)) == INTEGER_CST
  	      && INTEGRAL_TYPE_P (TREE_TYPE (gimple_cond_lhs (stmt)))
! 	      && (integer_zerop (gimple_cond_rhs (stmt))
! 		  || integer_onep (gimple_cond_rhs (stmt))))
  	    {
  	      edge e = NULL, et, ef;
  	      tree lhs = gimple_cond_lhs (stmt);
! 	      bool rhsv = integer_onep (gimple_cond_rhs (stmt));
! 	      if (gimple_cond_code (stmt) == NE_EXPR)
! 		rhsv = !rhsv;
  	      extract_true_false_edges_from_block (gimple_bb (stmt), &et, &ef);
  	      if (is_gimple_assign (SSA_NAME_DEF_STMT (lhs))
  		  && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (lhs))
  		      == INTEGER_CST))
  		{
! 		  tree rhs = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (lhs));
! 		  if (rhsv ? integer_onep (rhs) : integer_zerop (rhs))
  		    e = et;
! 		  else if (rhsv ? integer_zerop (rhs) : integer_onep (rhs))
  		    e = ef;
  		}
  	      else if (gimple_code (SSA_NAME_DEF_STMT (lhs)) == GIMPLE_PHI)
--- 1191,1257 ----
        if (ignored_edges)
  	{
  	  if (is_gimple_assign (stmt)
! 	      && gimple_assign_rhs_code (stmt) == INTEGER_CST
! 	      && tree_int_cst_sgn (gimple_assign_rhs1 (stmt)) >= 0)
  	    {
  	      use_operand_p use_p;
! 	      imm_use_iterator imm_iter;
! 	      bool bad_p = false;
! 	      FOR_EACH_IMM_USE_FAST (use_p, imm_iter,
! 				     gimple_assign_lhs (stmt))
  		{
! 		  gimple *use_stmt = USE_STMT (use_p);
! 		  if (is_gimple_debug (use_stmt)
! 		      || gimple_code (use_stmt) == GIMPLE_COND
! 		      || gimple_code (use_stmt) == GIMPLE_SWITCH)
  		    continue;
+ 		  if (gimple_code (use_stmt) == GIMPLE_PHI)
+ 		    {
+ 		      use_operand_p use_p2;
+ 		      imm_use_iterator imm_iter2;
+ 		      FOR_EACH_IMM_USE_FAST (use_p2, imm_iter2,
+ 					     gimple_phi_result (use_stmt))
+ 			{
+ 			  gimple *use_stmt2 = USE_STMT (use_p2);
+ 			  if (is_gimple_debug (use_stmt2)
+ 			      || gimple_code (use_stmt2) == GIMPLE_COND
+ 			      || gimple_code (use_stmt2) == GIMPLE_SWITCH)
+ 			    continue;
+ 			  bad_p = true;
+ 			  break;
+ 			}
+ 		      if (bad_p)
+ 			break;
+ 		    }
+ 		  else
+ 		    {
+ 		      bad_p = true;
+ 		      break;
+ 		    }
  		}
+ 	      if (!bad_p)
+ 		continue;
  	    }
  	  if (gimple_code (stmt) == GIMPLE_COND
  	      && TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME
  	      && TREE_CODE (gimple_cond_rhs (stmt)) == INTEGER_CST
  	      && INTEGRAL_TYPE_P (TREE_TYPE (gimple_cond_lhs (stmt)))
! 	      && tree_int_cst_sgn (gimple_cond_rhs (stmt)) >= 0)
  	    {
  	      edge e = NULL, et, ef;
+ 	      enum tree_code ccode = gimple_cond_code (stmt);
  	      tree lhs = gimple_cond_lhs (stmt);
! 	      tree rhsv = gimple_cond_rhs (stmt);
  	      extract_true_false_edges_from_block (gimple_bb (stmt), &et, &ef);
  	      if (is_gimple_assign (SSA_NAME_DEF_STMT (lhs))
  		  && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (lhs))
  		      == INTEGER_CST))
  		{
! 		  tree lhsv = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (lhs));
! 		  tree r = const_binop (ccode, boolean_type_node, lhsv, rhsv);
! 		  if (r == boolean_true_node)
  		    e = et;
! 		  else if (r == boolean_false_node)
  		    e = ef;
  		}
  	      else if (gimple_code (SSA_NAME_DEF_STMT (lhs)) == GIMPLE_PHI)
*************** find_tail_calls (basic_block bb, edge es
*** 1189,1208 ****
  		  for (edge e2 : edges)
  		    if (e2->dest == pbb)
  		      {
! 			tree rhs = gimple_phi_arg_def_from_edge (phi, e2);
! 			if (TREE_CODE (rhs) == SSA_NAME)
! 			  if (gimple *g = SSA_NAME_DEF_STMT (rhs))
  			    if (is_gimple_assign (g)
  				&& gimple_assign_rhs_code (g) == INTEGER_CST)
! 			      rhs = gimple_assign_rhs1 (g);
! 			if (rhsv ? integer_onep (rhs) : integer_zerop (rhs))
  			  e = et;
! 			else if (rhsv ? integer_zerop (rhs)
! 				 : integer_onep (rhs))
  			  e = ef;
  			break;
  		      }
  		}
  	      if (e)
  		{
  		  ass_var = propagate_through_phis (ass_var, e);
--- 1261,1323 ----
  		  for (edge e2 : edges)
  		    if (e2->dest == pbb)
  		      {
! 			tree lhsv = gimple_phi_arg_def_from_edge (phi, e2);
! 			if (TREE_CODE (lhsv) == SSA_NAME)
! 			  if (gimple *g = SSA_NAME_DEF_STMT (lhsv))
  			    if (is_gimple_assign (g)
  				&& gimple_assign_rhs_code (g) == INTEGER_CST)
! 			      lhsv = gimple_assign_rhs1 (g);
! 			tree r = const_binop (ccode, boolean_type_node,
! 					      lhsv, rhsv);
! 			if (r == boolean_true_node)
  			  e = et;
! 			else if (r == boolean_false_node)
  			  e = ef;
  			break;
  		      }
  		}
+ 	      if (e)
+ 		{
+ 		  ass_var = propagate_through_phis (ass_var, e);
+ 		  if (!ass_var || ignored_edges)
+ 		    edges.safe_push (e);
+ 		  abb = e->dest;
+ 		  agsi = gsi_start_bb (abb);
+ 		  goto new_bb;
+ 		}
+ 	    }
+ 	  if (gimple_code (stmt) == GIMPLE_SWITCH
+ 	      && (TREE_CODE (gimple_switch_index (as_a <gswitch *> (stmt)))
+ 		  == SSA_NAME))
+ 	    {
+ 	      edge e = NULL;
+ 	      gswitch *swtch = as_a <gswitch *> (stmt);
+ 	      tree idx = gimple_switch_index (swtch);
+ 	      if (is_gimple_assign (SSA_NAME_DEF_STMT (idx))
+ 		  && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (idx))
+ 		      == INTEGER_CST))
+ 		{
+ 		  tree val = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (idx));
+ 		  e = find_taken_edge_switch_expr (swtch, val);
+ 		}
+ 	      else if (gimple_code (SSA_NAME_DEF_STMT (idx)) == GIMPLE_PHI)
+ 		{
+ 		  gimple *phi = SSA_NAME_DEF_STMT (idx);
+ 		  basic_block pbb = gimple_bb (phi);
+ 		  for (edge e2 : edges)
+ 		    if (e2->dest == pbb)
+ 		      {
+ 			tree val = gimple_phi_arg_def_from_edge (phi, e2);
+ 			if (TREE_CODE (val) == SSA_NAME)
+ 			  if (gimple *g = SSA_NAME_DEF_STMT (val))
+ 			    if (is_gimple_assign (g)
+ 				&& gimple_assign_rhs_code (g) == INTEGER_CST)
+ 			      val = gimple_assign_rhs1 (g);
+ 			if (TREE_CODE (val) == INTEGER_CST)
+ 			  e = find_taken_edge_switch_expr (swtch, val);
+ 			break;
+ 		      }
+ 		}
  	      if (e)
  		{
  		  ass_var = propagate_through_phis (ass_var, e);
diff -Nrcpad gcc-15-20250726/gcc/tree-vect-data-refs.cc gcc-15-20250809/gcc/tree-vect-data-refs.cc
*** gcc-15-20250726/gcc/tree-vect-data-refs.cc	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/gcc/tree-vect-data-refs.cc	Sat Aug  9 22:32:59 2025
*************** vect_enhance_data_refs_alignment (loop_v
*** 2758,2769 ****
       2) there is at least one unsupported misaligned data ref with an unknown
          misalignment, and
       3) all misaligned data refs with a known misalignment are supported, and
!      4) the number of runtime alignment checks is within reason.  */
  
    do_versioning
      = (optimize_loop_nest_for_speed_p (loop)
         && !loop->inner /* FORNOW */
!        && loop_cost_model (loop) > VECT_COST_MODEL_CHEAP);
  
    if (do_versioning)
      {
--- 2758,2771 ----
       2) there is at least one unsupported misaligned data ref with an unknown
          misalignment, and
       3) all misaligned data refs with a known misalignment are supported, and
!      4) the number of runtime alignment checks is within reason.
!      5) the vectorization factor is a constant.  */
  
    do_versioning
      = (optimize_loop_nest_for_speed_p (loop)
         && !loop->inner /* FORNOW */
!        && loop_cost_model (loop) > VECT_COST_MODEL_CHEAP)
!        && LOOP_VINFO_VECT_FACTOR (loop_vinfo).is_constant ();
  
    if (do_versioning)
      {
*************** vect_enhance_data_refs_alignment (loop_v
*** 2804,2820 ****
                    break;
                  }
  
- 	      /* At present we don't support versioning for alignment
- 		 with variable VF, since there's no guarantee that the
- 		 VF is a power of two.  We could relax this if we added
- 		 a way of enforcing a power-of-two size.  */
- 	      unsigned HOST_WIDE_INT size;
- 	      if (!GET_MODE_SIZE (TYPE_MODE (vectype)).is_constant (&size))
- 		{
- 		  do_versioning = false;
- 		  break;
- 		}
- 
  	      /* Forcing alignment in the first iteration is no good if
  		 we don't keep it across iterations.  For now, just disable
  		 versioning in this case.
--- 2806,2811 ----
*************** vect_enhance_data_refs_alignment (loop_v
*** 2833,2839 ****
                   Construct the mask needed for this test.  For example,
                   GET_MODE_SIZE for the vector mode V4SI is 16 bytes so the
                   mask must be 15 = 0xf. */
! 	      int mask = size - 1;
  
  	      /* FORNOW: use the same mask to test all potentially unaligned
  		 references in the loop.  */
--- 2824,2831 ----
                   Construct the mask needed for this test.  For example,
                   GET_MODE_SIZE for the vector mode V4SI is 16 bytes so the
                   mask must be 15 = 0xf. */
! 	      gcc_assert (DR_TARGET_ALIGNMENT (dr_info).is_constant ());
! 	      int mask = DR_TARGET_ALIGNMENT (dr_info).to_constant () - 1;
  
  	      /* FORNOW: use the same mask to test all potentially unaligned
  		 references in the loop.  */
diff -Nrcpad gcc-15-20250726/gcc/tree-vect-loop.cc gcc-15-20250809/gcc/tree-vect-loop.cc
*** gcc-15-20250726/gcc/tree-vect-loop.cc	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/gcc/tree-vect-loop.cc	Sat Aug  9 22:32:59 2025
*************** vectorizable_recurr (loop_vec_info loop_
*** 9643,9648 ****
--- 9643,9678 ----
        return false;
      }
  
+   /* We need to be able to build a { ..., a, b } init vector with
+      dist number of distinct trailing values.  Always possible
+      when dist == 1 or when nunits is constant or when the initializations
+      are uniform.  */
+   tree uniform_initval = NULL_TREE;
+   edge pe = loop_preheader_edge (LOOP_VINFO_LOOP (loop_vinfo));
+   if (slp_node)
+     for (stmt_vec_info s : SLP_TREE_SCALAR_STMTS (slp_node))
+       {
+ 	gphi *phi = as_a <gphi *> (s->stmt);
+ 	if (! uniform_initval)
+ 	  uniform_initval = PHI_ARG_DEF_FROM_EDGE (phi, pe);
+ 	else if (! operand_equal_p (uniform_initval,
+ 				    PHI_ARG_DEF_FROM_EDGE (phi, pe)))
+ 	  {
+ 	    uniform_initval = NULL_TREE;
+ 	    break;
+ 	  }
+       }
+   else
+     uniform_initval = PHI_ARG_DEF_FROM_EDGE (phi, pe);
+   if (!uniform_initval && !nunits.is_constant ())
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 			 "cannot build initialization vector for "
+ 			 "first order recurrence\n");
+       return false;
+     }
+ 
    /* First-order recurrence autovectorization needs to handle permutation
       with indices = [nunits-1, nunits, nunits+1, ...].  */
    vec_perm_builder sel (nunits, 1, 3);
*************** vectorizable_recurr (loop_vec_info loop_
*** 9714,9734 ****
        return true;
      }
  
!   edge pe = loop_preheader_edge (LOOP_VINFO_LOOP (loop_vinfo));
!   basic_block bb = gimple_bb (phi);
!   tree preheader = PHI_ARG_DEF_FROM_EDGE (phi, pe);
!   if (!useless_type_conversion_p (TREE_TYPE (vectype), TREE_TYPE (preheader)))
      {
!       gimple_seq stmts = NULL;
!       preheader = gimple_convert (&stmts, TREE_TYPE (vectype), preheader);
!       gsi_insert_seq_on_edge_immediate (pe, stmts);
      }
!   tree vec_init = build_vector_from_val (vectype, preheader);
    vec_init = vect_init_vector (loop_vinfo, stmt_info, vec_init, vectype, NULL);
  
    /* Create the vectorized first-order PHI node.  */
    tree vec_dest = vect_get_new_vect_var (vectype,
  					 vect_simple_var, "vec_recur_");
    gphi *new_phi = create_phi_node (vec_dest, bb);
    add_phi_arg (new_phi, vec_init, pe, UNKNOWN_LOCATION);
  
--- 9744,9781 ----
        return true;
      }
  
!   tree vec_init;
!   if (! uniform_initval)
      {
!       vec<constructor_elt, va_gc> *v = NULL;
!       vec_alloc (v, nunits.to_constant ());
!       for (unsigned i = 0; i < nunits.to_constant () - dist; ++i)
! 	CONSTRUCTOR_APPEND_ELT (v, NULL_TREE,
! 				build_zero_cst (TREE_TYPE (vectype)));
!       for (stmt_vec_info s : SLP_TREE_SCALAR_STMTS (slp_node))
! 	{
! 	  gphi *phi = as_a <gphi *> (s->stmt);
! 	  tree preheader = PHI_ARG_DEF_FROM_EDGE (phi, pe);
! 	  if (!useless_type_conversion_p (TREE_TYPE (vectype),
! 					  TREE_TYPE (preheader)))
! 	    {
! 	      gimple_seq stmts = NULL;
! 	      preheader = gimple_convert (&stmts,
! 					  TREE_TYPE (vectype), preheader);
! 	      gsi_insert_seq_on_edge_immediate (pe, stmts);
! 	    }
! 	  CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, preheader);
! 	}
!       vec_init = build_constructor (vectype, v);
      }
!   else
!     vec_init = uniform_initval;
    vec_init = vect_init_vector (loop_vinfo, stmt_info, vec_init, vectype, NULL);
  
    /* Create the vectorized first-order PHI node.  */
    tree vec_dest = vect_get_new_vect_var (vectype,
  					 vect_simple_var, "vec_recur_");
+   basic_block bb = gimple_bb (phi);
    gphi *new_phi = create_phi_node (vec_dest, bb);
    add_phi_arg (new_phi, vec_init, pe, UNKNOWN_LOCATION);
  
diff -Nrcpad gcc-15-20250726/gcc/tree-vect-stmts.cc gcc-15-20250809/gcc/tree-vect-stmts.cc
*** gcc-15-20250726/gcc/tree-vect-stmts.cc	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/gcc/tree-vect-stmts.cc	Sat Aug  9 22:32:59 2025
*************** vectorizable_call (vec_info *vinfo,
*** 3560,3566 ****
  
    int mask_opno = -1;
    if (internal_fn_p (cfn))
!     mask_opno = internal_fn_mask_index (as_internal_fn (cfn));
  
    for (i = 0; i < nargs; i++)
      {
--- 3560,3572 ----
  
    int mask_opno = -1;
    if (internal_fn_p (cfn))
!     {
!       /* We can only handle direct internal masked calls here,
! 	 vectorizable_simd_clone_call is for the rest.  */
!       if (cfn == CFN_MASK_CALL)
! 	return false;
!       mask_opno = internal_fn_mask_index (as_internal_fn (cfn));
!     }
  
    for (i = 0; i < nargs; i++)
      {
diff -Nrcpad gcc-15-20250726/gnattools/ChangeLog gcc-15-20250809/gnattools/ChangeLog
*** gcc-15-20250726/gnattools/ChangeLog	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/gnattools/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/gotools/ChangeLog gcc-15-20250809/gotools/ChangeLog
*** gcc-15-20250726/gotools/ChangeLog	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/gotools/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/include/ChangeLog gcc-15-20250809/include/ChangeLog
*** gcc-15-20250726/include/ChangeLog	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/include/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libada/ChangeLog gcc-15-20250809/libada/ChangeLog
*** gcc-15-20250726/libada/ChangeLog	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/libada/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libatomic/ChangeLog gcc-15-20250809/libatomic/ChangeLog
*** gcc-15-20250726/libatomic/ChangeLog	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/libatomic/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libbacktrace/ChangeLog gcc-15-20250809/libbacktrace/ChangeLog
*** gcc-15-20250726/libbacktrace/ChangeLog	Sat Jul 26 22:33:48 2025
--- gcc-15-20250809/libbacktrace/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libcc1/ChangeLog gcc-15-20250809/libcc1/ChangeLog
*** gcc-15-20250726/libcc1/ChangeLog	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libcc1/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libcody/ChangeLog gcc-15-20250809/libcody/ChangeLog
*** gcc-15-20250726/libcody/ChangeLog	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libcody/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libcpp/ChangeLog gcc-15-20250809/libcpp/ChangeLog
*** gcc-15-20250726/libcpp/ChangeLog	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libcpp/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,17 ----
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120845
+ 	* lex.cc (cpp_maybe_module_directive): Move eol variable declaration
+ 	to the start of the function, initialize to false and only set it to
+ 	peek->type == CPP_PRAGMA_EOL in the not_module case.  Formatting fix.
+ 
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-05-08  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/libcpp/lex.cc gcc-15-20250809/libcpp/lex.cc
*** gcc-15-20250726/libcpp/lex.cc	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libcpp/lex.cc	Sat Aug  9 22:32:59 2025
*************** cpp_maybe_module_directive (cpp_reader *
*** 3504,3509 ****
--- 3504,3510 ----
    cpp_token *keyword = peek;
    cpp_hashnode *(&n_modules)[spec_nodes::M_HWM][2] = pfile->spec_nodes.n_modules;
    int header_count = 0;
+   bool eol = false;
  
    /* Make sure the incoming state is as we expect it.  This way we
       can restore it using constants.  */
*************** cpp_maybe_module_directive (cpp_reader *
*** 3563,3572 ****
       tokens.  C++ keywords are not yet relevant.  */
    if (peek->type == CPP_NAME
        || peek->type == CPP_COLON
!       ||  (header_count
! 	   ? (peek->type == CPP_LESS
! 	      || (peek->type == CPP_STRING && peek->val.str.text[0] != 'R')
! 	      || peek->type == CPP_HEADER_NAME)
  	   : peek->type == CPP_SEMICOLON))
      {
        pfile->state.pragma_allow_expansion = !CPP_OPTION (pfile, preprocessed);
--- 3564,3573 ----
       tokens.  C++ keywords are not yet relevant.  */
    if (peek->type == CPP_NAME
        || peek->type == CPP_COLON
!       || (header_count
! 	  ? (peek->type == CPP_LESS
! 	     || (peek->type == CPP_STRING && peek->val.str.text[0] != 'R')
! 	     || peek->type == CPP_HEADER_NAME)
  	   : peek->type == CPP_SEMICOLON))
      {
        pfile->state.pragma_allow_expansion = !CPP_OPTION (pfile, preprocessed);
*************** cpp_maybe_module_directive (cpp_reader *
*** 3688,3709 ****
        pfile->state.in_deferred_pragma = false;
        /* Do not let this remain on.  */
        pfile->state.angled_headers = false;
      }
  
    /* In either case we want to backup the peeked tokens.  */
!   if (backup)
      {
!       /* If we saw EOL, we should drop it, because this isn't a module
! 	 control-line after all.  */
!       bool eol = peek->type == CPP_PRAGMA_EOL;
!       if (!eol || backup > 1)
! 	{
! 	  /* Put put the peeked tokens back  */
! 	  _cpp_backup_tokens_direct (pfile, backup);
! 	  /* But if the last one was an EOL, forget it.  */
! 	  if (eol)
! 	    pfile->lookaheads--;
! 	}
      }
  }
  
--- 3689,3707 ----
        pfile->state.in_deferred_pragma = false;
        /* Do not let this remain on.  */
        pfile->state.angled_headers = false;
+       /* If we saw EOL, we should drop it, because this isn't a module
+ 	 control-line after all.  */
+       eol = peek->type == CPP_PRAGMA_EOL;
      }
  
    /* In either case we want to backup the peeked tokens.  */
!   if (backup && (!eol || backup > 1))
      {
!       /* Put the peeked tokens back.  */
!       _cpp_backup_tokens_direct (pfile, backup);
!       /* But if the last one was an EOL in the not_module case, forget it.  */
!       if (eol)
! 	pfile->lookaheads--;
      }
  }
  
diff -Nrcpad gcc-15-20250726/libcpp/po/ChangeLog gcc-15-20250809/libcpp/po/ChangeLog
*** gcc-15-20250726/libcpp/po/ChangeLog	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libcpp/po/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,11 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-07-30  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* sr.po: Update.
+ 
  2025-05-16  Joseph Myers  <josmyers@redhat.com>
  
  	* es.po: Update.
diff -Nrcpad gcc-15-20250726/libcpp/po/sr.po gcc-15-20250809/libcpp/po/sr.po
*** gcc-15-20250726/libcpp/po/sr.po	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libcpp/po/sr.po	Sat Aug  9 22:32:59 2025
***************
*** 1,14 ****
  # Serbian translation of cpplib.
  # Copyright © 2020 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
! # Мирослав Николић <miroslavnikolic@rocketmail.com>, 2012-2024.
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: cpplib-14.1-b20240218\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-03-14 22:05+0000\n"
! "PO-Revision-Date: 2024-12-14 16:23+0100\n"
  "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
  "Language-Team: Serbian <(nothing)>\n"
  "Language: sr\n"
--- 1,14 ----
  # Serbian translation of cpplib.
  # Copyright © 2020 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
! # Мирослав Николић <miroslavnikolic@rocketmail.com>, 2012-2025.
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: cpplib-15.1-b20250316\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-03-14 22:05+0000\n"
! "PO-Revision-Date: 2025-07-18 09:21+0200\n"
  "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
  "Language-Team: Serbian <(nothing)>\n"
  "Language: sr\n"
*************** msgstr ""
*** 17,23 ****
  "Content-Transfer-Encoding: 8bit\n"
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
  "X-Bugs: Report translation errors to the Language-Team address.\n"
! "X-Generator: Gtranslator 42.0\n"
  
  #: charset.cc:759
  #, gcc-internal-format, gfc-internal-format
--- 17,23 ----
  "Content-Transfer-Encoding: 8bit\n"
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
  "X-Bugs: Report translation errors to the Language-Team address.\n"
! "X-Generator: Poedit 3.5\n"
  
  #: charset.cc:759
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "„ikonv“ не подржав�
*** 26,32 ****
  
  #: charset.cc:762
  msgid "iconv_open"
! msgstr "иконв_отвори"
  
  #: charset.cc:772
  #, gcc-internal-format, gfc-internal-format
--- 26,32 ----
  
  #: charset.cc:762
  msgid "iconv_open"
! msgstr "iconv_open"
  
  #: charset.cc:772
  #, gcc-internal-format, gfc-internal-format
*************** msgid "no iconv implementation, cannot c
*** 34,43 ****
  msgstr "нема иконв примене, не могу да претворим из %s у %s"
  
  #: charset.cc:870
! #, fuzzy, gcc-internal-format
! #| msgid "character 0x%lx is not in the basic source character set\n"
  msgid "character 0x%lx is not in the basic source character set"
! msgstr "знак 0x%lx није у знаковном скупу основног извора\n"
  
  #: charset.cc:887 charset.cc:2639
  msgid "converting to execution character set"
--- 34,42 ----
  msgstr "нема иконв примене, не могу да претворим из %s у %s"
  
  #: charset.cc:870
! #, gcc-internal-format
  msgid "character 0x%lx is not in the basic source character set"
! msgstr "знак 0x%lx није у знаковном скупу основног извора"
  
  #: charset.cc:887 charset.cc:2639
  msgid "converting to execution character set"
*************** msgstr "знак 0x%lx није једн
*** 50,72 ****
  
  #: charset.cc:1549
  msgid "universal character names are only valid in C++ and C99"
! msgstr "називи свеопштег знака су једино исправни у Ц++ и Ц99"
  
  #: charset.cc:1553
! #, fuzzy, gcc-internal-format
! #| msgid "C99's universal character names are incompatible with C90"
  msgid "C99%'s universal character names are incompatible with C90"
! msgstr "називи свеопштег знака Ц99 нису сагласни са Ц90"
  
  #: charset.cc:1556
! #, fuzzy, gcc-internal-format
! #| msgid "the meaning of '\\%c' is different in traditional C"
  msgid "the meaning of %<\\%c%> is different in traditional C"
! msgstr "значење „\\%c“ је другачије у уобичајеном Ц-у"
  
  #: charset.cc:1595
! #, fuzzy, gcc-internal-format
! #| msgid "'\\N' not followed by '{'"
  msgid "%<\\N%> not followed by %<{%>"
  msgstr "„\\N“ без пратеће „{“"
  
--- 49,68 ----
  
  #: charset.cc:1549
  msgid "universal character names are only valid in C++ and C99"
! msgstr "називи свеопштег знака су једино исправни у C++ и C99"
  
  #: charset.cc:1553
! #, gcc-internal-format
  msgid "C99%'s universal character names are incompatible with C90"
! msgstr "називи свеопштег знака C99%'s нису сагласни са C90"
  
  #: charset.cc:1556
! #, gcc-internal-format
  msgid "the meaning of %<\\%c%> is different in traditional C"
! msgstr "значење „\\%c“ је другачије у стандардном C-у"
  
  #: charset.cc:1595
! #, gcc-internal-format
  msgid "%<\\N%> not followed by %<{%>"
  msgstr "„\\N“ без пратеће „{“"
  
*************** msgstr "празан именован с
*** 80,122 ****
  
  #: charset.cc:1639
  msgid "named universal character escapes are only valid in C++23"
! msgstr "именоване свеопште промене знака су исправне само у Ц++23"
  
  #: charset.cc:1659
! #, fuzzy, gcc-internal-format
! #| msgid "\\N{%.*s} is not a valid universal character; treating it as separate tokens"
  msgid "%<\\N{%.*s}%> is not a valid universal character; treating it as separate tokens"
  msgstr "„\\N{%.*s}“ није исправан свеопшти знак; сматрам то одвојеним скупинама"
  
  #: charset.cc:1665
! #, fuzzy, gcc-internal-format
! #| msgid "\\N{%.*s} is not a valid universal character"
  msgid "%<\\N{%.*s}%> is not a valid universal character"
  msgstr "„\\N{%.*s}“ није исправан свеопшти знак"
  
  #: charset.cc:1675
! #, fuzzy, gcc-internal-format
! #| msgid "did you mean \\N{%s}?"
  msgid "did you mean %<\\N{%s}%>?"
  msgstr "да ли сте мислили „\\N{%s}“?"
  
  #: charset.cc:1693
! #, fuzzy, gcc-internal-format
! #| msgid "'\\N{' not terminated with '}' after %.*s; treating it as separate tokens"
  msgid "%<\\N{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "„\\N{' се не завршава са '}“ после „%.*s“; сматрам то одвојеним скупинама"
  
  #: charset.cc:1702
! #, fuzzy, gcc-internal-format
! #| msgid "'\\N{' not terminated with '}' after %.*s"
  msgid "%<\\N{%> not terminated with %<}%> after %.*s"
! msgstr "„\\N{' се не завршава са '}“ после „%.*s“"
  
  #: charset.cc:1710
! #, fuzzy, gcc-internal-format
! #| msgid "In _cpp_valid_ucn but not a UCN"
  msgid "in %<_cpp_valid_ucn%> but not a UCN"
! msgstr "У _цпп_исправан_нсз али није НСЗ"
  
  #: charset.cc:1753
  msgid "empty delimited escape sequence; treating it as separate tokens"
--- 76,112 ----
  
  #: charset.cc:1639
  msgid "named universal character escapes are only valid in C++23"
! msgstr "именоване свеопште промене знака су исправне само у C++23"
  
  #: charset.cc:1659
! #, gcc-internal-format
  msgid "%<\\N{%.*s}%> is not a valid universal character; treating it as separate tokens"
  msgstr "„\\N{%.*s}“ није исправан свеопшти знак; сматрам то одвојеним скупинама"
  
  #: charset.cc:1665
! #, gcc-internal-format
  msgid "%<\\N{%.*s}%> is not a valid universal character"
  msgstr "„\\N{%.*s}“ није исправан свеопшти знак"
  
  #: charset.cc:1675
! #, gcc-internal-format
  msgid "did you mean %<\\N{%s}%>?"
  msgstr "да ли сте мислили „\\N{%s}“?"
  
  #: charset.cc:1693
! #, gcc-internal-format
  msgid "%<\\N{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "„\\N{“ се не завршава са „}“ после „%.*s“; сматрам то одвојеним скупинама"
  
  #: charset.cc:1702
! #, gcc-internal-format
  msgid "%<\\N{%> not terminated with %<}%> after %.*s"
! msgstr "„\\N{“ се не завршава са „}“ након „%.*s“"
  
  #: charset.cc:1710
! #, gcc-internal-format
  msgid "in %<_cpp_valid_ucn%> but not a UCN"
! msgstr "у „_cpp_valid_ucn“ али није UCN"
  
  #: charset.cc:1753
  msgid "empty delimited escape sequence; treating it as separate tokens"
*************** msgstr "празан ограничен
*** 128,147 ****
  
  #: charset.cc:1769 charset.cc:2172 charset.cc:2289
  msgid "delimited escape sequences are only valid in C++23"
! msgstr "ограничени низови промене су једино исправни у Ц++23"
  
  #: charset.cc:1774 charset.cc:1779 charset.cc:2177 charset.cc:2182
  #: charset.cc:2294 charset.cc:2299
- #, fuzzy
- #| msgid "delimited escape sequences are only valid in C++23"
  msgid "delimited escape sequences are only valid in C2Y"
! msgstr "ограничени низови промене су једино исправни у Ц++23"
  
  #: charset.cc:1794
! #, fuzzy, gcc-internal-format
! #| msgid "'\\u{' not terminated with '}' after %.*s; treating it as separate tokens"
  msgid "%<\\u{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "„\\u{' се не завршава са '}“ после „%.*s“; сматрам то одвојеним токенима"
  
  #: charset.cc:1806
  #, gcc-internal-format
--- 118,134 ----
  
  #: charset.cc:1769 charset.cc:2172 charset.cc:2289
  msgid "delimited escape sequences are only valid in C++23"
! msgstr "ограничени низови промене су једино исправни у C++23"
  
  #: charset.cc:1774 charset.cc:1779 charset.cc:2177 charset.cc:2182
  #: charset.cc:2294 charset.cc:2299
  msgid "delimited escape sequences are only valid in C2Y"
! msgstr "ограничени низови промене су једино исправни у C2Y"
  
  #: charset.cc:1794
! #, gcc-internal-format
  msgid "%<\\u{%> not terminated with %<}%> after %.*s; treating it as separate tokens"
! msgstr "„\\u{“ се не завршава са „}“ после „%.*s“; сматрам то одвојеним токенима"
  
  #: charset.cc:1806
  #, gcc-internal-format
*************** msgid "incomplete universal character na
*** 149,175 ****
  msgstr "непотпун назив свеопштег знака %.*s"
  
  #: charset.cc:1810
! #, fuzzy, gcc-internal-format
! #| msgid "'\\u{' not terminated with '}' after %.*s"
  msgid "%<\\u{%> not terminated with %<}%> after %.*s"
! msgstr "„\\u{' се не завршава са '}“ после „%.*s“"
  
  #: charset.cc:1818
  #, gcc-internal-format
  msgid "%.*s is not a valid universal character"
! msgstr "%.*s није исправан свеопшти знак"
  
  #: charset.cc:1834 charset.cc:1838
! #, fuzzy, gcc-internal-format
! #| msgid "%.*s is not a valid universal character"
  msgid "%.*s is not a valid universal character name before C23"
! msgstr "%.*s није исправан свеопшти знак"
  
  #: charset.cc:1854 lex.cc:2096
! #, fuzzy, gcc-internal-format
! #| msgid "'$' in identifier or number"
  msgid "%<$%> in identifier or number"
! msgstr "„$“ у одреднику или број"
  
  #: charset.cc:1864
  #, gcc-internal-format
--- 136,159 ----
  msgstr "непотпун назив свеопштег знака %.*s"
  
  #: charset.cc:1810
! #, gcc-internal-format
  msgid "%<\\u{%> not terminated with %<}%> after %.*s"
! msgstr "„\\u{“ се не завршава са „}“ након „%.*s“"
  
  #: charset.cc:1818
  #, gcc-internal-format
  msgid "%.*s is not a valid universal character"
! msgstr "„%.*s“ није исправан свеопшти знак"
  
  #: charset.cc:1834 charset.cc:1838
! #, gcc-internal-format
  msgid "%.*s is not a valid universal character name before C23"
! msgstr "„%.*s“ није исправан назив свеопштег знака пре C23"
  
  #: charset.cc:1854 lex.cc:2096
! #, gcc-internal-format
  msgid "%<$%> in identifier or number"
! msgstr "„$“ у одреднику или броју"
  
  #: charset.cc:1864
  #, gcc-internal-format
*************** msgstr "свеопшти знак %.*s �
*** 184,198 ****
  #: charset.cc:1875
  #, gcc-internal-format
  msgid "%.*s is outside the UCS codespace"
! msgstr "„%.*s“ је ван УЦС кодног простора"
  
  #: charset.cc:1919 charset.cc:3072
  msgid "converting UCN to source character set"
! msgstr "претварам НСЗ у изворни знаковни скуп"
  
  #: charset.cc:1926
  msgid "converting UCN to execution character set"
! msgstr "претварам НСЗ у извршни знаковни скуп"
  
  #: charset.cc:1990
  #, gcc-internal-format
--- 168,182 ----
  #: charset.cc:1875
  #, gcc-internal-format
  msgid "%.*s is outside the UCS codespace"
! msgstr "„%.*s“ је ван UCS кодног простора"
  
  #: charset.cc:1919 charset.cc:3072
  msgid "converting UCN to source character set"
! msgstr "претварам UCN у изворни знаковни скуп"
  
  #: charset.cc:1926
  msgid "converting UCN to execution character set"
! msgstr "претварам UCN у извршни знаковни скуп"
  
  #: charset.cc:1990
  #, gcc-internal-format
*************** msgid "extended character %.*s is not va
*** 205,274 ****
  msgstr "проширени знак „%.*s“ није исправан на почетку одредника"
  
  #: charset.cc:2129
! #, fuzzy, gcc-internal-format
! #| msgid "the meaning of '\\x' is different in traditional C"
  msgid "the meaning of %<\\x%> is different in traditional C"
! msgstr "значење „\\x“ је другачије у уобичајеном Ц-у"
  
  #: charset.cc:2190
! #, fuzzy, gcc-internal-format
! #| msgid "\\x used with no following hex digits"
  msgid "%<\\x%> used with no following hex digits"
! msgstr "„\\x“ је коришћено са не пратећим хекса цифрама"
  
  #: charset.cc:2196
! #, fuzzy, gcc-internal-format
! #| msgid "'\\x{' not terminated with '}' after %.*s"
  msgid "%<\\x{%> not terminated with %<}%> after %.*s"
! msgstr "„\\x{' се не завршава са '}“ после „%.*s“"
  
  #: charset.cc:2204
  msgid "hex escape sequence out of range"
  msgstr "хекс низ промене је изван опсега"
  
  #: charset.cc:2247
! #, fuzzy, gcc-internal-format
! #| msgid "'\\o' not followed by '{'"
  msgid "%<\\o%> not followed by %<{%>"
  msgstr "за „\\o“ не следи „{“"
  
  #: charset.cc:2305
! #, fuzzy, gcc-internal-format
! #| msgid "'\\o{' not terminated with '}' after %.*s"
  msgid "%<\\o{%> not terminated with %<}%> after %.*s"
! msgstr "„\\o{' се не завршава са '}“ после „%.*s“"
  
  #: charset.cc:2314
  msgid "octal escape sequence out of range"
  msgstr "октални низ промене је изван опсега"
  
  #: charset.cc:2366 charset.cc:2376
! #, fuzzy, gcc-internal-format
! #| msgid "numeric escape sequence in unevaluated string: '\\%c'"
  msgid "numeric escape sequence in unevaluated string: %<\\%c%>"
  msgstr "бројевни низ промене низа у непроцењеној ниски: „\\%c“"
  
  #: charset.cc:2404
! #, fuzzy, gcc-internal-format
! #| msgid "the meaning of '\\a' is different in traditional C"
  msgid "the meaning of %<\\a%> is different in traditional C"
! msgstr "значење „\\a“ је другачије у уобичајеном Ц-у"
  
  #: charset.cc:2410
! #, fuzzy, gcc-internal-format
! #| msgid "non-ISO-standard escape sequence, '\\%c'"
  msgid "non-ISO-standard escape sequence, %<\\%c%>"
  msgstr "низ промене не-ИСО-стандарда, „\\%c“"
  
  #: charset.cc:2418
! #, fuzzy, gcc-internal-format
! #| msgid "unknown escape sequence: '\\%c'"
  msgid "unknown escape sequence: %<\\%c%>"
  msgstr "непознат низ промене: „\\%c“"
  
  #: charset.cc:2428
! #, fuzzy, gcc-internal-format
! #| msgid "unknown escape sequence: '\\%s'"
  msgid "unknown escape sequence: %<\\%s%>"
  msgstr "непознат низ промене: „\\%s“"
  
--- 189,248 ----
  msgstr "проширени знак „%.*s“ није исправан на почетку одредника"
  
  #: charset.cc:2129
! #, gcc-internal-format
  msgid "the meaning of %<\\x%> is different in traditional C"
! msgstr "значење „\\x“ је другачије у стандардном C-у"
  
  #: charset.cc:2190
! #, gcc-internal-format
  msgid "%<\\x%> used with no following hex digits"
! msgstr "„\\x“ је коришћено са не пратећим хекс цифрама"
  
  #: charset.cc:2196
! #, gcc-internal-format
  msgid "%<\\x{%> not terminated with %<}%> after %.*s"
! msgstr "„\\x{“ се не завршава са „}“ након „%.*s“"
  
  #: charset.cc:2204
  msgid "hex escape sequence out of range"
  msgstr "хекс низ промене је изван опсега"
  
  #: charset.cc:2247
! #, gcc-internal-format
  msgid "%<\\o%> not followed by %<{%>"
  msgstr "за „\\o“ не следи „{“"
  
  #: charset.cc:2305
! #, gcc-internal-format
  msgid "%<\\o{%> not terminated with %<}%> after %.*s"
! msgstr "„\\o{“ се не завршава са „}“ после „%.*s“"
  
  #: charset.cc:2314
  msgid "octal escape sequence out of range"
  msgstr "октални низ промене је изван опсега"
  
  #: charset.cc:2366 charset.cc:2376
! #, gcc-internal-format
  msgid "numeric escape sequence in unevaluated string: %<\\%c%>"
  msgstr "бројевни низ промене низа у непроцењеној ниски: „\\%c“"
  
  #: charset.cc:2404
! #, gcc-internal-format
  msgid "the meaning of %<\\a%> is different in traditional C"
! msgstr "значење „\\a“ је другачије у стандардном C-у"
  
  #: charset.cc:2410
! #, gcc-internal-format
  msgid "non-ISO-standard escape sequence, %<\\%c%>"
  msgstr "низ промене не-ИСО-стандарда, „\\%c“"
  
  #: charset.cc:2418
! #, gcc-internal-format
  msgid "unknown escape sequence: %<\\%c%>"
  msgstr "непознат низ промене: „\\%c“"
  
  #: charset.cc:2428
! #, gcc-internal-format
  msgid "unknown escape sequence: %<\\%s%>"
  msgstr "непознат низ промене: „\\%s“"
  
*************** msgid "at least one character in a multi
*** 289,296 ****
  msgstr "барем један знак у вишезнаковном литералу се не може прекодирати у једној јединици знаковног скупа извршавања"
  
  #: charset.cc:2830
! #, fuzzy, gcc-internal-format
! #| msgid "multi-character literal with %ld characters exceeds 'int' size of %ld bytes"
  msgid "multi-character literal with %ld characters exceeds %<int%> size of %ld bytes"
  msgstr "више-знаковни литерал са %ld знака премашује „int“ величину од %ld бајта"
  
--- 263,269 ----
  msgstr "барем један знак у вишезнаковном литералу се не може прекодирати у једној јединици знаковног скупа извршавања"
  
  #: charset.cc:2830
! #, gcc-internal-format
  msgid "multi-character literal with %ld characters exceeds %<int%> size of %ld bytes"
  msgstr "више-знаковни литерал са %ld знака премашује „int“ величину од %ld бајта"
  
*************** msgid "failure to convert %s to %s"
*** 316,373 ****
  msgstr "неуспех у претварању %s у %s"
  
  #: directives.cc:243
! #, fuzzy, gcc-internal-format
! #| msgid "extra tokens at end of #%s directive"
  msgid "extra tokens at end of %<#%s%> directive"
! msgstr "посебни симболи на крају #%s директиве"
  
  #: directives.cc:286
  #, gcc-internal-format, gfc-internal-format
  msgid "extra tokens at end of #%s directive"
! msgstr "посебни симболи на крају #%s директиве"
  
  #: directives.cc:396
! #, fuzzy, gcc-internal-format
! #| msgid "#%s is a GCC extension"
  msgid "%<#%s%> is a GCC extension"
! msgstr "#%s је ГЦЦ проширење"
  
  #: directives.cc:404 directives.cc:2686 directives.cc:2725
! #, fuzzy, gcc-internal-format
! #| msgid "#%s before C++23 is a GCC extension"
  msgid "%<#%s%> before C++23 is a GCC extension"
! msgstr "„#%s“ пре „C++23“ јесте GCC проширење"
  
  #: directives.cc:409 directives.cc:415 directives.cc:1374 directives.cc:2690
  #: directives.cc:2730
! #, fuzzy, gcc-internal-format
! #| msgid "#%s before C23 is a GCC extension"
  msgid "%<#%s%> before C23 is a GCC extension"
! msgstr "„#%s“ пре „C23“ јесте GCC проширење"
  
  #: directives.cc:423
! #, fuzzy, gcc-internal-format
! #| msgid "#%s is a deprecated GCC extension"
  msgid "%<#%s%> is a deprecated GCC extension"
! msgstr "#%s је превазиђено ГЦЦ проширење"
  
  #: directives.cc:436
! #, fuzzy, gcc-internal-format
! #| msgid "suggest not using #elif in traditional C"
  msgid "suggest not using %<#elif%> in traditional C"
! msgstr "саветује да се не користи „#elif“ у уобичајеном Ц-у"
  
  #: directives.cc:439
! #, fuzzy, gcc-internal-format
! #| msgid "traditional C ignores #%s with the # indented"
  msgid "traditional C ignores %<#%s%> with the %<#%> indented"
! msgstr "уобичајени Ц занемарује #%s са # увученим"
  
  #: directives.cc:443
! #, fuzzy, gcc-internal-format
! #| msgid "suggest hiding #%s from traditional C with an indented #"
  msgid "suggest hiding %<#%s%> from traditional C with an indented %<#%>"
! msgstr "саветује скривање #%s из уобичајеног Ц-а са увученим #"
  
  #: directives.cc:468
  msgid "embedding a directive within macro arguments is not portable"
--- 289,338 ----
  msgstr "неуспех у претварању %s у %s"
  
  #: directives.cc:243
! #, gcc-internal-format
  msgid "extra tokens at end of %<#%s%> directive"
! msgstr "екстра скупине на крају „#%s“ директиве"
  
  #: directives.cc:286
  #, gcc-internal-format, gfc-internal-format
  msgid "extra tokens at end of #%s directive"
! msgstr "посебни симболи на крају „#%s“ директиве"
  
  #: directives.cc:396
! #, gcc-internal-format
  msgid "%<#%s%> is a GCC extension"
! msgstr "„#%s“ је GCC проширење"
  
  #: directives.cc:404 directives.cc:2686 directives.cc:2725
! #, gcc-internal-format
  msgid "%<#%s%> before C++23 is a GCC extension"
! msgstr "„#%s“ пре C++23 је GCC проширење"
  
  #: directives.cc:409 directives.cc:415 directives.cc:1374 directives.cc:2690
  #: directives.cc:2730
! #, gcc-internal-format
  msgid "%<#%s%> before C23 is a GCC extension"
! msgstr "„#%s“ пре C23 је GCC проширење"
  
  #: directives.cc:423
! #, gcc-internal-format
  msgid "%<#%s%> is a deprecated GCC extension"
! msgstr "„#%s“ је застарело GCC проширење"
  
  #: directives.cc:436
! #, gcc-internal-format
  msgid "suggest not using %<#elif%> in traditional C"
! msgstr "саветује да се не користи „#elif“ у стандардном C-у"
  
  #: directives.cc:439
! #, gcc-internal-format
  msgid "traditional C ignores %<#%s%> with the %<#%> indented"
! msgstr "стандардни C занемарује „#%s“ са „#“ увученим"
  
  #: directives.cc:443
! #, gcc-internal-format
  msgid "suggest hiding %<#%s%> from traditional C with an indented %<#%>"
! msgstr "саветује скривање „#%s“ из стандардног C-а са увученим „#“"
  
  #: directives.cc:468
  msgid "embedding a directive within macro arguments is not portable"
*************** msgstr "угнежђивање дире�
*** 375,565 ****
  
  #: directives.cc:497
  msgid "style of line directive is a GCC extension"
! msgstr "стил директиве реда је ГЦЦ проширење"
  
  #: directives.cc:572
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid preprocessing directive #%s; did you mean #%s?"
! msgstr "неисправна директива предобраде #%s; да ли сте мислили „#%s“?"
  
  #: directives.cc:578
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid preprocessing directive #%s"
! msgstr "неисправна директива предобраде #%s"
  
  #: directives.cc:656
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" cannot be used as a macro name"
  msgid "%qs cannot be used as a macro name"
! msgstr "„%s“ не може бити коришћено као назив макроа"
  
  #: directives.cc:663
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
  msgid "%qs cannot be used as a macro name as it is an operator in C++"
! msgstr "„%s“ не може бити коришћено као назив макроа јер је то оператор у Ц++-у"
  
  #: directives.cc:666
! #, fuzzy, gcc-internal-format
! #| msgid "no macro name given in #%s directive"
  msgid "no macro name given in %<#%s%> directive"
! msgstr "није дат назив макроа у #%s директиви"
  
  #: directives.cc:669
  msgid "macro names must be identifiers"
  msgstr "називи макроа морају бити одредници"
  
  #: directives.cc:743 directives.cc:747
! #, fuzzy, gcc-internal-format
! #| msgid "undefining \"%s\""
  msgid "undefining %qs"
! msgstr "неодређујем „%s“"
  
  #: directives.cc:805
! #, fuzzy, gcc-internal-format
! #| msgid "missing terminating > character"
  msgid "missing terminating %<>%> character"
! msgstr "недостаје завршни знак >"
  
  #: directives.cc:865
! #, fuzzy, gcc-internal-format
! #| msgid "#%s expects \"FILENAME\" or <FILENAME>"
  msgid "%<#%s%> expects %<\"FILENAME\"%> or %<<FILENAME>%>"
! msgstr "#%s очекује „НАЗИВДАТОТЕКЕ“ или <НАЗИВДАТОТЕКЕ>"
  
  #: directives.cc:911 directives.cc:1391
  #, gcc-internal-format, gfc-internal-format
  msgid "empty filename in #%s"
! msgstr "празан назив датотеке у #%s"
  
  #: directives.cc:920
! #, fuzzy, gcc-internal-format
! #| msgid "#include nested depth %u exceeds maximum of %u (use -fmax-include-depth=DEPTH to increase the maximum)"
  msgid "%<#include%> nested depth %u exceeds maximum of %u (use %<-fmax-include-depth=DEPTH%> to increase the maximum)"
  msgstr "„#include“ дубоко угнеждено %u превазилази максимум од %u (користите „-fmax-include-depth=ДУБИНА“ да повећате максимум)"
  
  #: directives.cc:965
! #, fuzzy, gcc-internal-format
! #| msgid "#include_next in primary source file"
  msgid "%<#include_next%> in primary source file"
! msgstr "#include_next у примарној изворној датотеци"
  
  #: directives.cc:1037 directives.cc:1059 directives.cc:1062 directives.cc:1065
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "unbalanced stack in %s"
  msgid "unbalanced '%c'"
! msgstr "неуравнотежен стек у %s"
  
  #: directives.cc:1120 directives.cc:1311
  #, gcc-internal-format
  msgid "expected %<)%>"
! msgstr ""
  
  #: directives.cc:1126 directives.cc:1177
- #, fuzzy
- #| msgid "expected parameter name, found \"%s\""
  msgid "expected parameter name"
! msgstr "очекивах назив параметра, нађох „%s“"
  
  #: directives.cc:1137
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter conflicts with %<limit%> or %<gnu::offset%> parameters"
! msgstr ""
  
  #: directives.cc:1147
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter required in preprocessed source"
! msgstr ""
  
  #: directives.cc:1168
  #, gcc-internal-format
  msgid "expected %<:%>"
! msgstr ""
  
  #: directives.cc:1235
! #, fuzzy, gcc-internal-format
! #| msgid "duplicate macro parameter \"%s\""
  msgid "duplicate embed parameter '%.*s%s%.*s'"
! msgstr "параметар двоструког макроа „%s“"
  
  #: directives.cc:1247
  #, gcc-internal-format
  msgid "unknown embed parameter '%.*s%s%.*s'"
! msgstr ""
  
  #: directives.cc:1256
  #, gcc-internal-format
  msgid "expected %<(%>"
! msgstr ""
  
  #: directives.cc:1269
  #, gcc-internal-format
  msgid "too large %<gnu::offset%> argument"
! msgstr ""
  
  #: directives.cc:1316
- #, fuzzy
- #| msgid "null character(s) preserved in literal"
  msgid "expected character string literal"
! msgstr "ништаван знак је причуван у словности"
  
  #: directives.cc:1361
! #, fuzzy, gcc-internal-format
! #| msgid "suggest not using #elif in traditional C"
  msgid "%<#embed%> not supported in traditional C"
! msgstr "саветује да се не користи „#elif“ у уобичајеном Ц-у"
  
  #: directives.cc:1370
! #, fuzzy, gcc-internal-format
! #| msgid "#%s before C++23 is a GCC extension"
  msgid "%<#%s%> before C++26 is a GCC extension"
! msgstr "„#%s“ пре „C++23“ јесте GCC проширење"
  
  #: directives.cc:1379
! #, fuzzy, gcc-internal-format
! #| msgid "#%s is a GCC extension"
  msgid "%<#%s%> is a C23 feature"
! msgstr "#%s је ГЦЦ проширење"
  
  #: directives.cc:1436
! #, fuzzy, gcc-internal-format
! #| msgid "invalid flag \"%s\" in line directive"
  msgid "invalid flag %qs in line directive"
! msgstr "неисправна опција „%s“ у директиви реда"
  
  #: directives.cc:1504
! #, fuzzy, gcc-internal-format
! #| msgid "unexpected end of file after #line"
  msgid "unexpected end of file after %<#line%>"
  msgstr "неочекивани крај датотеке након „#line“"
  
  #: directives.cc:1507
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" after #line is not a positive integer"
  msgid "%qs after %<#line%> is not a positive integer"
! msgstr "„%s“ након „#line“ није позитиван цео број"
  
  #: directives.cc:1513 directives.cc:1516
  msgid "line number out of range"
  msgstr "број реда је ван опсега"
  
  #: directives.cc:1529 directives.cc:1610
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" is not a valid filename"
  msgid "%qs is not a valid filename"
! msgstr "„%s“ није исправан назив датотеке"
  
  #: directives.cc:1570
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" after # is not a positive integer"
  msgid "%qs after %<#%> is not a positive integer"
! msgstr "„%s“ након „#“ није позитиван цео број"
  
  #: directives.cc:1637
! #, fuzzy, gcc-internal-format
! #| msgid "file \"%s\" linemarker ignored due to incorrect nesting"
  msgid "file %qs linemarker ignored due to incorrect nesting"
! msgstr "датотека „%s“ означавач реда занемаренa због нетачног угњежђавања"
  
  #: directives.cc:1715 directives.cc:1717 directives.cc:1719 directives.cc:2326
  #, gcc-internal-format, gfc-internal-format
--- 340,507 ----
  
  #: directives.cc:497
  msgid "style of line directive is a GCC extension"
! msgstr "стил директиве реда је GCC проширење"
  
  #: directives.cc:572
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid preprocessing directive #%s; did you mean #%s?"
! msgstr "неисправна директива предобраде „#%s“; да ли сте мислили „#%s“?"
  
  #: directives.cc:578
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid preprocessing directive #%s"
! msgstr "неисправна директива предобраде „#%s“"
  
  #: directives.cc:656
! #, gcc-internal-format
  msgid "%qs cannot be used as a macro name"
! msgstr "„%qs“ не може бити коришћено као назив макроа"
  
  #: directives.cc:663
! #, gcc-internal-format
  msgid "%qs cannot be used as a macro name as it is an operator in C++"
! msgstr "„%qs“ не може бити коришћено као назив макроа јер је то оператор у C++-у"
  
  #: directives.cc:666
! #, gcc-internal-format
  msgid "no macro name given in %<#%s%> directive"
! msgstr "није дат назив макроа у „#%s“ директиви"
  
  #: directives.cc:669
  msgid "macro names must be identifiers"
  msgstr "називи макроа морају бити одредници"
  
  #: directives.cc:743 directives.cc:747
! #, gcc-internal-format
  msgid "undefining %qs"
! msgstr "неодређујем „%qs“"
  
  #: directives.cc:805
! #, gcc-internal-format
  msgid "missing terminating %<>%> character"
! msgstr "недостаје завршни знак „>“"
  
  #: directives.cc:865
! #, gcc-internal-format
  msgid "%<#%s%> expects %<\"FILENAME\"%> or %<<FILENAME>%>"
! msgstr "„#%s“ очекује „НАЗИВДАТОТЕКЕ“ или „НАЗИВДАТОТЕКЕ“"
  
  #: directives.cc:911 directives.cc:1391
  #, gcc-internal-format, gfc-internal-format
  msgid "empty filename in #%s"
! msgstr "празан назив датотеке у „#%s“"
  
  #: directives.cc:920
! #, gcc-internal-format
  msgid "%<#include%> nested depth %u exceeds maximum of %u (use %<-fmax-include-depth=DEPTH%> to increase the maximum)"
  msgstr "„#include“ дубоко угнеждено %u превазилази максимум од %u (користите „-fmax-include-depth=ДУБИНА“ да повећате максимум)"
  
  #: directives.cc:965
! #, gcc-internal-format
  msgid "%<#include_next%> in primary source file"
! msgstr "„#include_next“ у примарној изворној датотеци"
  
  #: directives.cc:1037 directives.cc:1059 directives.cc:1062 directives.cc:1065
! #, gcc-internal-format, gfc-internal-format
  msgid "unbalanced '%c'"
! msgstr "неуравнотежено „%c“"
  
  #: directives.cc:1120 directives.cc:1311
  #, gcc-internal-format
  msgid "expected %<)%>"
! msgstr "очекивах „)“"
  
  #: directives.cc:1126 directives.cc:1177
  msgid "expected parameter name"
! msgstr "очекивах назив параметра"
  
  #: directives.cc:1137
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter conflicts with %<limit%> or %<gnu::offset%> parameters"
! msgstr "„gnu::base64“ параметар се сукобљава са „limit“ или „gnu::offset“ параметром"
  
  #: directives.cc:1147
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter required in preprocessed source"
! msgstr "„gnu::base64“ параметар је захтеван у преобрађеном извору"
  
  #: directives.cc:1168
  #, gcc-internal-format
  msgid "expected %<:%>"
! msgstr "очекивах „:“"
  
  #: directives.cc:1235
! #, gcc-internal-format
  msgid "duplicate embed parameter '%.*s%s%.*s'"
! msgstr "двоструки угнеждени параметар „%.*s%s%.*s“"
  
  #: directives.cc:1247
  #, gcc-internal-format
  msgid "unknown embed parameter '%.*s%s%.*s'"
! msgstr "непознат угнеждени параметар „%.*s%s%.*s“"
  
  #: directives.cc:1256
  #, gcc-internal-format
  msgid "expected %<(%>"
! msgstr "очекивах „(“"
  
  #: directives.cc:1269
  #, gcc-internal-format
  msgid "too large %<gnu::offset%> argument"
! msgstr "превелик „gnu::offset“ аргумент"
  
  #: directives.cc:1316
  msgid "expected character string literal"
! msgstr "очекивах словност ниске знака"
  
  #: directives.cc:1361
! #, gcc-internal-format
  msgid "%<#embed%> not supported in traditional C"
! msgstr "„#embed“ није подржано у стандардном C-у"
  
  #: directives.cc:1370
! #, gcc-internal-format
  msgid "%<#%s%> before C++26 is a GCC extension"
! msgstr "„#%s“ пре C++26 је GCC проширење"
  
  #: directives.cc:1379
! #, gcc-internal-format
  msgid "%<#%s%> is a C23 feature"
! msgstr "„#%s“ је C23 функционалност"
  
  #: directives.cc:1436
! #, gcc-internal-format
  msgid "invalid flag %qs in line directive"
! msgstr "неисправна заставица „%qs“ у директиви реда"
  
  #: directives.cc:1504
! #, gcc-internal-format
  msgid "unexpected end of file after %<#line%>"
  msgstr "неочекивани крај датотеке након „#line“"
  
  #: directives.cc:1507
! #, gcc-internal-format
  msgid "%qs after %<#line%> is not a positive integer"
! msgstr "„%qs“ након „#line“ није позитиван цео број"
  
  #: directives.cc:1513 directives.cc:1516
  msgid "line number out of range"
  msgstr "број реда је ван опсега"
  
  #: directives.cc:1529 directives.cc:1610
! #, gcc-internal-format
  msgid "%qs is not a valid filename"
! msgstr "„%qs“ није исправан назив датотеке"
  
  #: directives.cc:1570
! #, gcc-internal-format
  msgid "%qs after %<#%> is not a positive integer"
! msgstr "„%qs“ након „#“ није позитиван цео број"
  
  #: directives.cc:1637
! #, gcc-internal-format
  msgid "file %qs linemarker ignored due to incorrect nesting"
! msgstr "„%qs“ означавач реда датотеке је занемарен због нетачног угнежђавања"
  
  #: directives.cc:1715 directives.cc:1717 directives.cc:1719 directives.cc:2326
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "%s"
*** 569,637 ****
  #: directives.cc:1743
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid #%s directive"
! msgstr "неисправна #%s директива"
  
  #: directives.cc:1806
! #, fuzzy, gcc-internal-format
! #| msgid "registering pragmas in namespace \"%s\" with mismatched name expansion"
  msgid "registering pragmas in namespace %qs with mismatched name expansion"
! msgstr "бележим прагме у простору назива „%s“ са неодговарајућим ширењем назива"
  
  #: directives.cc:1815
! #, fuzzy, gcc-internal-format
! #| msgid "registering pragma \"%s\" with name expansion and no namespace"
  msgid "registering pragma %qs with name expansion and no namespace"
! msgstr "бележим прагму „%s“ са ширењем назива и без простора назива"
  
  #: directives.cc:1833
! #, fuzzy, gcc-internal-format
! #| msgid "registering \"%s\" as both a pragma and a pragma namespace"
  msgid "registering %qs as both a pragma and a pragma namespace"
! msgstr "бележим „%s“ и као прагму и као простор назива прагме"
  
  #: directives.cc:1836
! #, fuzzy, gcc-internal-format
! #| msgid "#pragma %s %s is already registered"
  msgid "%<#pragma %s %s%> is already registered"
! msgstr "#pragma %s %s је већ забележено"
  
  #: directives.cc:1839
! #, fuzzy, gcc-internal-format
! #| msgid "#pragma %s is already registered"
  msgid "%<#pragma %s%> is already registered"
! msgstr "#pragma %s је већ забележено"
  
  #: directives.cc:1870
  msgid "registering pragma with NULL handler"
  msgstr "бележим прагму са НИШТАВНИМ руковаоцем"
  
  #: directives.cc:2088
! #, fuzzy, gcc-internal-format
! #| msgid "#pragma once in main file"
  msgid "%<#pragma once%> in main file"
! msgstr "#pragma једном у главној датотеци"
  
  #: directives.cc:2158
! #, fuzzy, gcc-internal-format
! #| msgid "invalid #pragma push_macro directive"
  msgid "invalid %<#pragma %s_macro%> directive"
! msgstr "неисправна „#pragma push_macro“ директива"
  
  #: directives.cc:2237
! #, fuzzy, gcc-internal-format
! #| msgid "invalid #pragma GCC poison directive"
  msgid "invalid %<#pragma GCC poison%> directive"
  msgstr "неисправна „#pragma GCC poison“ директива"
  
  #: directives.cc:2246
! #, fuzzy, gcc-internal-format
! #| msgid "poisoning existing macro \"%s\""
  msgid "poisoning existing macro %qs"
! msgstr "трујем постојећи макро „%s“"
  
  #: directives.cc:2268
! #, fuzzy, gcc-internal-format
! #| msgid "#pragma system_header ignored outside include file"
  msgid "%<#pragma system_header%> ignored outside include file"
  msgstr "„#pragma system_header“ је занемарено изван датотеке укључивања"
  
--- 511,569 ----
  #: directives.cc:1743
  #, gcc-internal-format, gfc-internal-format
  msgid "invalid #%s directive"
! msgstr "неисправна „#%s“ директива"
  
  #: directives.cc:1806
! #, gcc-internal-format
  msgid "registering pragmas in namespace %qs with mismatched name expansion"
! msgstr "бележим прагме у простору назива „%qs“ са неодговарајућим ширењем назива"
  
  #: directives.cc:1815
! #, gcc-internal-format
  msgid "registering pragma %qs with name expansion and no namespace"
! msgstr "бележим прагму „%qs“ са ширењем назива и без простора назива"
  
  #: directives.cc:1833
! #, gcc-internal-format
  msgid "registering %qs as both a pragma and a pragma namespace"
! msgstr "бележим „%qs“ и као прагму и као простор назива прагме"
  
  #: directives.cc:1836
! #, gcc-internal-format
  msgid "%<#pragma %s %s%> is already registered"
! msgstr "„#pragma %s %s“ је већ забележено"
  
  #: directives.cc:1839
! #, gcc-internal-format
  msgid "%<#pragma %s%> is already registered"
! msgstr "„#pragma %s“ је већ забележено"
  
  #: directives.cc:1870
  msgid "registering pragma with NULL handler"
  msgstr "бележим прагму са НИШТАВНИМ руковаоцем"
  
  #: directives.cc:2088
! #, gcc-internal-format
  msgid "%<#pragma once%> in main file"
! msgstr "„#pragma once“ у главној датотеци"
  
  #: directives.cc:2158
! #, gcc-internal-format
  msgid "invalid %<#pragma %s_macro%> directive"
! msgstr "неисправна „#pragma %s_macro“ директива"
  
  #: directives.cc:2237
! #, gcc-internal-format
  msgid "invalid %<#pragma GCC poison%> directive"
  msgstr "неисправна „#pragma GCC poison“ директива"
  
  #: directives.cc:2246
! #, gcc-internal-format
  msgid "poisoning existing macro %qs"
! msgstr "трујем постојећи макро „%qs“"
  
  #: directives.cc:2268
! #, gcc-internal-format
  msgid "%<#pragma system_header%> ignored outside include file"
  msgstr "„#pragma system_header“ је занемарено изван датотеке укључивања"
  
*************** msgid "current file is older than %s"
*** 646,671 ****
  msgstr "текућа датотека је старија од %s"
  
  #: directives.cc:2321
! #, fuzzy, gcc-internal-format
! #| msgid "invalid \"#pragma GCC %s\" directive"
  msgid "invalid %<#pragma GCC %s%> directive"
! msgstr "неисправна директива „#pragma GCC %s“"
  
  #: directives.cc:2541
! #, fuzzy, gcc-internal-format
! #| msgid "_Pragma takes a parenthesized string literal"
  msgid "%<_Pragma%> takes a parenthesized string literal"
! msgstr "_Прагма узима словност ниске затворене заградом"
  
  #: directives.cc:2624
! #, fuzzy, gcc-internal-format
! #| msgid "#else without #if"
  msgid "%<#else%> without %<#if%>"
  msgstr "„#else“ без „#if“"
  
  #: directives.cc:2629
! #, fuzzy, gcc-internal-format
! #| msgid "#else after #else"
  msgid "%<#else%> after %<#else%>"
  msgstr "„#else“ након „#else“"
  
--- 578,599 ----
  msgstr "текућа датотека је старија од %s"
  
  #: directives.cc:2321
! #, gcc-internal-format
  msgid "invalid %<#pragma GCC %s%> directive"
! msgstr "неисправна „#pragma GCC %s“ директива"
  
  #: directives.cc:2541
! #, gcc-internal-format
  msgid "%<_Pragma%> takes a parenthesized string literal"
! msgstr "„_Pragma“ узима словност ниске затворене заградом"
  
  #: directives.cc:2624
! #, gcc-internal-format
  msgid "%<#else%> without %<#if%>"
  msgstr "„#else“ без „#if“"
  
  #: directives.cc:2629
! #, gcc-internal-format
  msgid "%<#else%> after %<#else%>"
  msgstr "„#else“ након „#else“"
  
*************** msgid "the conditional began here"
*** 674,713 ****
  msgstr "условљеност почиње овде"
  
  #: directives.cc:2657
! #, fuzzy, gcc-internal-format
! #| msgid "#%s without #if"
  msgid "%<#%s%> without %<#if%>"
  msgstr "„#%s“ без „#if“"
  
  #: directives.cc:2663
! #, fuzzy, gcc-internal-format
! #| msgid "#%s after #else"
  msgid "%<#%s%> after %<#else%>"
  msgstr "„#%s“ након „#else“"
  
  #: directives.cc:2767
! #, fuzzy, gcc-internal-format
! #| msgid "#endif without #if"
  msgid "%<#endif%> without %<#if%>"
  msgstr "„#endif“ без „#if“"
  
  #: directives.cc:2852
! #, fuzzy, gcc-internal-format
! #| msgid "missing '(' after predicate"
  msgid "missing %<(%> after predicate"
! msgstr "недостаје ( након предиката"
  
  #: directives.cc:2870
! #, fuzzy, gcc-internal-format
! #| msgid "missing ')' to complete answer"
  msgid "missing %<)%> to complete answer"
! msgstr "недостаје ) да доврши одговор"
  
  #: directives.cc:2882
! #, fuzzy, gcc-internal-format
! #| msgid "predicate's answer is empty"
  msgid "predicate%'s answer is empty"
! msgstr "одговор предиката је празан"
  
  #: directives.cc:2912
  msgid "assertion without predicate"
--- 602,635 ----
  msgstr "условљеност почиње овде"
  
  #: directives.cc:2657
! #, gcc-internal-format
  msgid "%<#%s%> without %<#if%>"
  msgstr "„#%s“ без „#if“"
  
  #: directives.cc:2663
! #, gcc-internal-format
  msgid "%<#%s%> after %<#else%>"
  msgstr "„#%s“ након „#else“"
  
  #: directives.cc:2767
! #, gcc-internal-format
  msgid "%<#endif%> without %<#if%>"
  msgstr "„#endif“ без „#if“"
  
  #: directives.cc:2852
! #, gcc-internal-format
  msgid "missing %<(%> after predicate"
! msgstr "недостаје „(“ након предиката"
  
  #: directives.cc:2870
! #, gcc-internal-format
  msgid "missing %<)%> to complete answer"
! msgstr "недостаје „)“ да доврши одговор"
  
  #: directives.cc:2882
! #, gcc-internal-format
  msgid "predicate%'s answer is empty"
! msgstr "„predicate%'s“ одговор је празан"
  
  #: directives.cc:2912
  msgid "assertion without predicate"
*************** msgid "predicate must be an identifier"
*** 718,727 ****
  msgstr "предикат мора бити одредник"
  
  #: directives.cc:2997
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" re-asserted"
  msgid "%qs re-asserted"
! msgstr "„%s“ је поново утврђен"
  
  #: directives.cc:3305
  #, gcc-internal-format, gfc-internal-format
--- 640,648 ----
  msgstr "предикат мора бити одредник"
  
  #: directives.cc:2997
! #, gcc-internal-format
  msgid "%qs re-asserted"
! msgstr "„%qs“ је поново утврђено"
  
  #: directives.cc:3305
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "стдизлаз"
*** 739,842 ****
  
  #: expr.cc:694 expr.cc:822
  msgid "fixed-point constants are a GCC extension"
! msgstr "константе сталне тачке су ГЦЦ проширења"
  
  #: expr.cc:721
! #, fuzzy, gcc-internal-format
! #| msgid "invalid prefix \"0b\" for floating constant"
  msgid "invalid prefix %<0b%> for floating constant"
  msgstr "неисправан префикс „0b“ за покретну константу"
  
  #: expr.cc:727
! #, fuzzy, gcc-internal-format
! #| msgid "invalid prefix \"0b\" for floating constant"
  msgid "invalid prefix %<0o%> for floating constant"
! msgstr "неисправан префикс „0b“ за покретну константу"
  
  #: expr.cc:740
  msgid "use of C++17 hexadecimal floating constant"
! msgstr "употреба Ц++17 хексадецималне покретне константе"
  
  #: expr.cc:744
  msgid "use of C99 hexadecimal floating constant"
! msgstr "употреба Ц99 хексадецималне покретне константе"
  
  #: expr.cc:789
! #, fuzzy, gcc-internal-format
! #| msgid "invalid suffix \"%.*s\" on floating constant"
  msgid "invalid suffix %<%.*s%> on floating constant"
  msgstr "неисправан суфикс „%.*s“ на покретној константи"
  
  #: expr.cc:800 expr.cc:870
! #, fuzzy, gcc-internal-format
! #| msgid "traditional C rejects the \"%.*s\" suffix"
  msgid "traditional C rejects the %<%.*s%> suffix"
! msgstr "уобичајени Ц одбацује „%.*s“ суфикс"
  
  #: expr.cc:809
  msgid "suffix for double constant is a GCC extension"
! msgstr "суфикс за двоструку константу је ГЦЦ проширење"
  
  #: expr.cc:815
! #, fuzzy, gcc-internal-format
! #| msgid "invalid suffix \"%.*s\" with hexadecimal floating constant"
  msgid "invalid suffix %<%.*s%> with hexadecimal floating constant"
  msgstr "неисправан суфикс „%.*s“ са хексадецималном покретном константом"
  
  #: expr.cc:829 expr.cc:833
- #, fuzzy
- #| msgid "decimal float constants are a C23 feature"
  msgid "decimal floating constants are a C23 feature"
! msgstr "децималне покретне константе су „C23“ функције"
  
  #: expr.cc:853
! #, fuzzy, gcc-internal-format
! #| msgid "invalid suffix \"%.*s\" on integer constant"
  msgid "invalid suffix %<%.*s%> on integer constant"
  msgstr "неисправан суфикс „%.*s“ на константи целог броја"
  
  #: expr.cc:878
  msgid "use of C++11 long long integer constant"
! msgstr "употреба Ц++11 дуге дуге константе целог броја"
  
  #: expr.cc:879
  msgid "use of C99 long long integer constant"
! msgstr "употреба Ц99 дуге дуге константе целог броја"
  
  #: expr.cc:894
  #, gcc-internal-format
  msgid "use of C++23 %<size_t%> integer constant"
! msgstr "употреба Ц++23 %<size_t%> константе целог броја"
  
  #: expr.cc:895
  #, gcc-internal-format
  msgid "use of C++23 %<make_signed_t<size_t>%> integer constant"
! msgstr "употреба Ц++23 %<make_signed_t<size_t>%> константе целог броја"
  
  #: expr.cc:905 expr.cc:916
  #, gcc-internal-format
  msgid "ISO C does not support literal %<wb%> suffixes before C23"
! msgstr "ISO C не подржава префиксе %<wb%> литерала пре C23"
  
  #: expr.cc:931
  msgid "imaginary constants are a GCC extension"
! msgstr "имагинарне константе су ГЦЦ проширења"
  
  #: expr.cc:939
- #, fuzzy
- #| msgid "binary constants are a C23 feature or GCC extension"
  msgid "imaginary constants are a C2Y feature or GCC extension"
! msgstr "бинарне константе су „C23“ функције или GCC проширења"
  
  #: expr.cc:944
- #, fuzzy
- #| msgid "binary constants are a C23 feature"
  msgid "imaginary constants are a C2Y feature"
! msgstr "бинарне константе су „C23“ функције"
  
  #: expr.cc:956
  msgid "binary constants are a C++14 feature or GCC extension"
! msgstr "бинарне константе су Ц++14 функције или ГЦЦ проширења"
  
  #: expr.cc:961
  msgid "binary constants are a C23 feature or GCC extension"
--- 660,751 ----
  
  #: expr.cc:694 expr.cc:822
  msgid "fixed-point constants are a GCC extension"
! msgstr "константе сталне тачке су GCC проширења"
  
  #: expr.cc:721
! #, gcc-internal-format
  msgid "invalid prefix %<0b%> for floating constant"
  msgstr "неисправан префикс „0b“ за покретну константу"
  
  #: expr.cc:727
! #, gcc-internal-format
  msgid "invalid prefix %<0o%> for floating constant"
! msgstr "неисправан префикс „0o“ за покретну константу"
  
  #: expr.cc:740
  msgid "use of C++17 hexadecimal floating constant"
! msgstr "употреба C++17 хексадецималне покретне константе"
  
  #: expr.cc:744
  msgid "use of C99 hexadecimal floating constant"
! msgstr "употреба C99 хексадецималне покретне константе"
  
  #: expr.cc:789
! #, gcc-internal-format
  msgid "invalid suffix %<%.*s%> on floating constant"
  msgstr "неисправан суфикс „%.*s“ на покретној константи"
  
  #: expr.cc:800 expr.cc:870
! #, gcc-internal-format
  msgid "traditional C rejects the %<%.*s%> suffix"
! msgstr "стандардни C одбацује „%.*s“ суфикс"
  
  #: expr.cc:809
  msgid "suffix for double constant is a GCC extension"
! msgstr "суфикс за двоструку константу је GCC проширење"
  
  #: expr.cc:815
! #, gcc-internal-format
  msgid "invalid suffix %<%.*s%> with hexadecimal floating constant"
  msgstr "неисправан суфикс „%.*s“ са хексадецималном покретном константом"
  
  #: expr.cc:829 expr.cc:833
  msgid "decimal floating constants are a C23 feature"
! msgstr "децималне покретне константе су C23 функције"
  
  #: expr.cc:853
! #, gcc-internal-format
  msgid "invalid suffix %<%.*s%> on integer constant"
  msgstr "неисправан суфикс „%.*s“ на константи целог броја"
  
  #: expr.cc:878
  msgid "use of C++11 long long integer constant"
! msgstr "употреба C++11 дуге дуге константе целог броја"
  
  #: expr.cc:879
  msgid "use of C99 long long integer constant"
! msgstr "употреба C99 дуге дуге константе целог броја"
  
  #: expr.cc:894
  #, gcc-internal-format
  msgid "use of C++23 %<size_t%> integer constant"
! msgstr "употреба C++23 „size_t“ константе целог броја"
  
  #: expr.cc:895
  #, gcc-internal-format
  msgid "use of C++23 %<make_signed_t<size_t>%> integer constant"
! msgstr "употреба C++23 „make_signed_t<size_t>“ константе целог броја"
  
  #: expr.cc:905 expr.cc:916
  #, gcc-internal-format
  msgid "ISO C does not support literal %<wb%> suffixes before C23"
! msgstr "ISO C не подржава префиксе „wb“ литерала пре C23"
  
  #: expr.cc:931
  msgid "imaginary constants are a GCC extension"
! msgstr "имагинарне константе су GCC проширења"
  
  #: expr.cc:939
  msgid "imaginary constants are a C2Y feature or GCC extension"
! msgstr "имагинарне константе су C23 функције или GCC проширења"
  
  #: expr.cc:944
  msgid "imaginary constants are a C2Y feature"
! msgstr "имагинарне константе су C23 функције"
  
  #: expr.cc:956
  msgid "binary constants are a C++14 feature or GCC extension"
! msgstr "бинарне константе су C++14 функције или GCC проширења"
  
  #: expr.cc:961
  msgid "binary constants are a C23 feature or GCC extension"
*************** msgid "binary constants are a C23 featur
*** 847,862 ****
  msgstr "бинарне константе су „C23“ функције"
  
  #: expr.cc:974
! #, fuzzy, gcc-internal-format
! #| msgid "binary constants are a C23 feature or GCC extension"
  msgid "%<0o%> prefixed constants are a C2Y feature or GCC extension"
! msgstr "бинарне константе су „C23“ функције или GCC проширења"
  
  #: expr.cc:979
! #, fuzzy, gcc-internal-format
! #| msgid "binary constants are a C23 feature"
  msgid "%<0o%> prefixed constants are a C2Y feature"
! msgstr "бинарне константе су „C23“ функције"
  
  #: expr.cc:1077
  msgid "integer constant is too large for its type"
--- 756,769 ----
  msgstr "бинарне константе су „C23“ функције"
  
  #: expr.cc:974
! #, gcc-internal-format
  msgid "%<0o%> prefixed constants are a C2Y feature or GCC extension"
! msgstr "„0o“ префиксиране константе су C2Y функције или GCC проширење"
  
  #: expr.cc:979
! #, gcc-internal-format
  msgid "%<0o%> prefixed constants are a C2Y feature"
! msgstr "„0o“ префиксиране константе су C2Y функције"
  
  #: expr.cc:1077
  msgid "integer constant is too large for its type"
*************** msgstr "константа целог б
*** 869,897 ****
  #: expr.cc:1189
  #, gcc-internal-format
  msgid "%<defined%> in %<#embed%> parameter"
! msgstr ""
  
  #: expr.cc:1206
! #, fuzzy, gcc-internal-format
! #| msgid "missing ')' after \"defined\""
  msgid "missing %<)%> after %<defined%>"
! msgstr "недостаје ( након „defined“"
  
  #: expr.cc:1213
! #, fuzzy, gcc-internal-format
! #| msgid "operator \"defined\" requires an identifier"
  msgid "operator %<defined%> requires an identifier"
  msgstr "оператор „defined“ захтева одредника"
  
  #: expr.cc:1221
! #, fuzzy, gcc-internal-format
! #| msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
  msgid "(%qs is an alternative token for %qs in C++)"
! msgstr "(„%s“ је резервни симбол за „%s“ у Ц++-у)"
  
  #: expr.cc:1234
! #, fuzzy, gcc-internal-format
! #| msgid "this use of \"defined\" may not be portable"
  msgid "this use of %<defined%> may not be portable"
  msgstr "ова употреба „defined“ не може бити преносива"
  
--- 776,800 ----
  #: expr.cc:1189
  #, gcc-internal-format
  msgid "%<defined%> in %<#embed%> parameter"
! msgstr "„defined“ у „#embed“ параметру"
  
  #: expr.cc:1206
! #, gcc-internal-format
  msgid "missing %<)%> after %<defined%>"
! msgstr "недостаје „(“ након „defined“"
  
  #: expr.cc:1213
! #, gcc-internal-format
  msgid "operator %<defined%> requires an identifier"
  msgstr "оператор „defined“ захтева одредника"
  
  #: expr.cc:1221
! #, gcc-internal-format
  msgid "(%qs is an alternative token for %qs in C++)"
! msgstr "(„%qs“ је резервни симбол за „%qs“ у C++-)"
  
  #: expr.cc:1234
! #, gcc-internal-format
  msgid "this use of %<defined%> may not be portable"
  msgstr "ова употреба „defined“ не може бити преносива"
  
*************** msgstr "словност коју је �
*** 901,921 ****
  
  #: expr.cc:1284
  msgid "floating constant in preprocessor expression"
! msgstr "покретна константа у изразу претптоцесора"
  
  #: expr.cc:1290
  msgid "imaginary number in preprocessor expression"
! msgstr "имагинаран број у изразу претптоцесора"
  
  #: expr.cc:1339
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" is not defined, evaluates to 0"
  msgid "%qs is not defined, evaluates to %<0%>"
! msgstr "„%s“ није одређено, процењује се на 0"
  
  #: expr.cc:1351
  msgid "assertions are a GCC extension"
! msgstr "тврдње су ГЦЦ проширења"
  
  #: expr.cc:1355
  msgid "assertions are a deprecated extension"
--- 804,823 ----
  
  #: expr.cc:1284
  msgid "floating constant in preprocessor expression"
! msgstr "покретна константа у изразу претпроцесора"
  
  #: expr.cc:1290
  msgid "imaginary number in preprocessor expression"
! msgstr "имагинаран број у изразу претпроцесора"
  
  #: expr.cc:1339
! #, gcc-internal-format
  msgid "%qs is not defined, evaluates to %<0%>"
! msgstr "„%qs“ није одређено, процењује се на „0“"
  
  #: expr.cc:1351
  msgid "assertions are a GCC extension"
! msgstr "тврдње су GCC проширења"
  
  #: expr.cc:1355
  msgid "assertions are a deprecated extension"
*************** msgstr "неуравнотежен ст�
*** 928,938 ****
  
  #: expr.cc:1633
  msgid "negative embed parameter operand"
! msgstr ""
  
  #: expr.cc:1639
  msgid "too large embed parameter operand"
! msgstr ""
  
  #: expr.cc:1658
  #, gcc-internal-format, gfc-internal-format
--- 830,840 ----
  
  #: expr.cc:1633
  msgid "negative embed parameter operand"
! msgstr "негативан операнд угнежденог параметра"
  
  #: expr.cc:1639
  msgid "too large embed parameter operand"
! msgstr "превелик операнд угнежденог параметра"
  
  #: expr.cc:1658
  #, gcc-internal-format, gfc-internal-format
*************** msgid "impossible operator '%u'"
*** 940,1007 ****
  msgstr "немогућ оператор у „%u“"
  
  #: expr.cc:1759
! #, fuzzy, gcc-internal-format
! #| msgid "missing ')' in expression"
  msgid "missing %<)%> in expression"
! msgstr "недостаје ) у изразу"
  
  #: expr.cc:1788
! #, fuzzy, gcc-internal-format
! #| msgid "'?' without following ':'"
  msgid "%<?%> without following %<:%>"
! msgstr "„?“ без пратећег „:“"
  
  #: expr.cc:1798
  msgid "integer overflow in preprocessor expression"
  msgstr "прекорачење целог броја у изразу претпроцесора"
  
  #: expr.cc:1803
! #, fuzzy, gcc-internal-format
! #| msgid "missing '(' in expression"
  msgid "missing %<(%> in expression"
! msgstr "недостаје ( у изразу"
  
  #: expr.cc:1835
! #, fuzzy, gcc-internal-format
! #| msgid "the left operand of \"%s\" changes sign when promoted"
  msgid "the left operand of %qs changes sign when promoted"
! msgstr "леви операнд за „%s“ мења знак када је претворен"
  
  #: expr.cc:1840
! #, fuzzy, gcc-internal-format
! #| msgid "the right operand of \"%s\" changes sign when promoted"
  msgid "the right operand of %qs changes sign when promoted"
! msgstr "десни операнд за „%s“ мења знак када је претворен"
  
  #: expr.cc:2099
  msgid "traditional C rejects the unary plus operator"
! msgstr "уобичајени Ц одбацује унарни плус оператор"
  
  #: expr.cc:2197
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "comma operator in operand of #if"
  msgid "comma operator in operand of #%s"
! msgstr "оператор зареза у операнду „#if“"
  
  #: expr.cc:2335
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "division by zero in #if"
  msgid "division by zero in #%s"
! msgstr "дељење нулом у „#if“"
  
  #: files.cc:530
! #, fuzzy, gcc-internal-format
! #| msgid "NULL directory in find_file"
  msgid "NULL directory in %<find_file%>"
! msgstr "НИШТАВАН директоријум у пронађи_датотеку"
  
  #: files.cc:603
  msgid "one or more PCH files were found, but they were invalid"
! msgstr "једна или више ПЦХ датотека је пронађено, али су неисправне"
  
  #: files.cc:607
! #, fuzzy, gcc-internal-format
! #| msgid "use -Winvalid-pch for more information"
  msgid "use %<-Winvalid-pch%> for more information"
  msgstr "користите „-Winvalid-pch“ за више података"
  
--- 842,900 ----
  msgstr "немогућ оператор у „%u“"
  
  #: expr.cc:1759
! #, gcc-internal-format
  msgid "missing %<)%> in expression"
! msgstr "недостаје „)“ у изразу"
  
  #: expr.cc:1788
! #, gcc-internal-format
  msgid "%<?%> without following %<:%>"
! msgstr "„?“ без пратеће „:“"
  
  #: expr.cc:1798
  msgid "integer overflow in preprocessor expression"
  msgstr "прекорачење целог броја у изразу претпроцесора"
  
  #: expr.cc:1803
! #, gcc-internal-format
  msgid "missing %<(%> in expression"
! msgstr "недостаје „(“ у изразу"
  
  #: expr.cc:1835
! #, gcc-internal-format
  msgid "the left operand of %qs changes sign when promoted"
! msgstr "леви операнд за „%qs“ мења знак када је претворен"
  
  #: expr.cc:1840
! #, gcc-internal-format
  msgid "the right operand of %qs changes sign when promoted"
! msgstr "десни операнд за „%qs“ мења знак када је претворен"
  
  #: expr.cc:2099
  msgid "traditional C rejects the unary plus operator"
! msgstr "стандардни C одбацује унарни плус оператор"
  
  #: expr.cc:2197
! #, gcc-internal-format, gfc-internal-format
  msgid "comma operator in operand of #%s"
! msgstr "оператор зареза у операнду „#%s“"
  
  #: expr.cc:2335
! #, gcc-internal-format, gfc-internal-format
  msgid "division by zero in #%s"
! msgstr "дељење нулом у „#%s“"
  
  #: files.cc:530
! #, gcc-internal-format
  msgid "NULL directory in %<find_file%>"
! msgstr "НИШТА директоријум у „find_file“"
  
  #: files.cc:603
  msgid "one or more PCH files were found, but they were invalid"
! msgstr "једна или више PCH датотека је пронађено, али су неисправне"
  
  #: files.cc:607
! #, gcc-internal-format
  msgid "use %<-Winvalid-pch%> for more information"
  msgstr "користите „-Winvalid-pch“ за више података"
  
*************** msgstr "нема путање укључ
*** 1028,1039 ****
  #: files.cc:1455
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter can be only used with %<\".\"%>"
! msgstr ""
  
  #: files.cc:1472
  #, gcc-internal-format
  msgid "%<gnu::base64%> argument not valid base64 encoded string"
! msgstr ""
  
  #: files.cc:2228
  msgid "Multiple include guards may be useful for:\n"
--- 921,932 ----
  #: files.cc:1455
  #, gcc-internal-format
  msgid "%<gnu::base64%> parameter can be only used with %<\".\"%>"
! msgstr "„gnu::base64“ параметар се може користити само са „.“"
  
  #: files.cc:1472
  #, gcc-internal-format
  msgid "%<gnu::base64%> argument not valid base64 encoded string"
! msgstr "„gnu::base64“ аргумент није исправна шифрована ниска основе64"
  
  #: files.cc:2228
  msgid "Multiple include guards may be useful for:\n"
*************** msgstr "Више чувара укључ
*** 1042,1057 ****
  #: files.cc:2306
  #, gcc-internal-format
  msgid "header guard %qs followed by %<#define%> of a different macro"
! msgstr ""
  
  #: files.cc:2310
  #, gcc-internal-format
  msgid "%qs is defined here; did you mean %qs?"
! msgstr ""
  
  #: init.cc:676
! #, fuzzy, gcc-internal-format
! #| msgid "cppchar_t must be an unsigned type"
  msgid "%<cppchar_t%> must be an unsigned type"
  msgstr "„cppchar_t“ мора бити неозначена врста"
  
--- 935,949 ----
  #: files.cc:2306
  #, gcc-internal-format
  msgid "header guard %qs followed by %<#define%> of a different macro"
! msgstr "за чуварем заглавља „%qs“ следи „#define“ другог макроа"
  
  #: files.cc:2310
  #, gcc-internal-format
  msgid "%qs is defined here; did you mean %qs?"
! msgstr "„%qs“ је дефинисано овде; да ли сте мислили „%qs“?"
  
  #: init.cc:676
! #, gcc-internal-format
  msgid "%<cppchar_t%> must be an unsigned type"
  msgstr "„cppchar_t“ мора бити неозначена врста"
  
*************** msgid "preprocessor arithmetic has maxim
*** 1061,1097 ****
  msgstr "аритметика претпроцесора има највећу тачност од %lu бита; мета затева %lu бита"
  
  #: init.cc:687
! #, fuzzy, gcc-internal-format
! #| msgid "CPP arithmetic must be at least as precise as a target int"
  msgid "CPP arithmetic must be at least as precise as a target %<int%>"
! msgstr "ЦПП аритметика мора бити тачна барем колико и циљни цео број"
  
  #: init.cc:691
! #, fuzzy, gcc-internal-format
! #| msgid "target char is less than 8 bits wide"
  msgid "target %<char%> is less than 8 bits wide"
! msgstr "циљни знак је дужи мање од 8 бита"
  
  #: init.cc:695
! #, fuzzy, gcc-internal-format
! #| msgid "target wchar_t is narrower than target char"
  msgid "target %<wchar_t%> is narrower than target %<char%>"
! msgstr "циљни широки знак (wchar_t) је ужи од циљног знака"
  
  #: init.cc:699
! #, fuzzy, gcc-internal-format
! #| msgid "target int is narrower than target char"
  msgid "target %<int%> is narrower than target %<char%>"
! msgstr "циљни цео број је ужи од циљног знака"
  
  #: init.cc:704
  msgid "CPP half-integer narrower than CPP character"
! msgstr "ЦПП полуцео број је ужи од ЦПП знака"
  
  #: init.cc:708
  #, gcc-internal-format, gfc-internal-format
  msgid "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits"
! msgstr "ЦПП на овом рачунару не може да рукује дуге константе знака преко %lu бита, али мета захтева %lu бита"
  
  #: lex.cc:1104
  msgid "backslash and newline separated by space"
--- 953,985 ----
  msgstr "аритметика претпроцесора има највећу тачност од %lu бита; мета затева %lu бита"
  
  #: init.cc:687
! #, gcc-internal-format
  msgid "CPP arithmetic must be at least as precise as a target %<int%>"
! msgstr "CPP аритметика мора бити тачна барем колико и циљни „int“"
  
  #: init.cc:691
! #, gcc-internal-format
  msgid "target %<char%> is less than 8 bits wide"
! msgstr "циљни „char“ је дужи мање од 8 бита"
  
  #: init.cc:695
! #, gcc-internal-format
  msgid "target %<wchar_t%> is narrower than target %<char%>"
! msgstr "циљни „wchar_t“ је ужи од циљног „char“"
  
  #: init.cc:699
! #, gcc-internal-format
  msgid "target %<int%> is narrower than target %<char%>"
! msgstr "циљни „int“ је ужи од циљног „char“"
  
  #: init.cc:704
  msgid "CPP half-integer narrower than CPP character"
! msgstr "CPP полуцео број је ужи од CPP знака"
  
  #: init.cc:708
  #, gcc-internal-format, gfc-internal-format
  msgid "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits"
! msgstr "CPP на овом рачунару не може да рукује дуге константе знака преко %lu бита, али мета захтева %lu бита"
  
  #: lex.cc:1104
  msgid "backslash and newline separated by space"
*************** msgstr "контра коса и нов�
*** 1099,1141 ****
  
  #: lex.cc:1109 lex.cc:1145
  msgid "trailing whitespace"
! msgstr ""
  
  #: lex.cc:1116
  msgid "backslash-newline at end of file"
  msgstr "контра коса-нови ред на крају датотеке"
  
  #: lex.cc:1132
! #, fuzzy, gcc-internal-format
! #| msgid "trigraph ??%c converted to %c"
  msgid "trigraph %<??%c%> converted to %<%c%>"
! msgstr "триграф ??%c је претворен у %c"
  
  #: lex.cc:1138
! #, fuzzy, gcc-internal-format
! #| msgid "trigraph ??%c ignored, use -trigraphs to enable"
  msgid "trigraph %<??%c%> ignored, use %<-trigraphs%> to enable"
! msgstr "триграф ??%c је занемарен, користите „-trigraphs“ да укључите"
  
  #: lex.cc:1149
  msgid "too many consecutive spaces in leading whitespace"
! msgstr ""
  
  #: lex.cc:1154
  msgid "tab after space in leading whitespace"
! msgstr ""
  
  #: lex.cc:1161
  msgid "whitespace other than spaces in leading whitespace"
! msgstr ""
  
  #: lex.cc:1167
  msgid "whitespace other than tabs in leading whitespace"
! msgstr ""
  
  #: lex.cc:1173
  msgid "whitespace other than spaces and tabs in leading whitespace"
! msgstr ""
  
  #: lex.cc:1623
  msgid "end of bidirectional context"
--- 987,1027 ----
  
  #: lex.cc:1109 lex.cc:1145
  msgid "trailing whitespace"
! msgstr "пратећа празнина"
  
  #: lex.cc:1116
  msgid "backslash-newline at end of file"
  msgstr "контра коса-нови ред на крају датотеке"
  
  #: lex.cc:1132
! #, gcc-internal-format
  msgid "trigraph %<??%c%> converted to %<%c%>"
! msgstr "триграф „??%c“ је претворен у „%c“"
  
  #: lex.cc:1138
! #, gcc-internal-format
  msgid "trigraph %<??%c%> ignored, use %<-trigraphs%> to enable"
! msgstr "триграф „??%c“ је занемарен, користите „-trigraphs“ да укључите"
  
  #: lex.cc:1149
  msgid "too many consecutive spaces in leading whitespace"
! msgstr "превише узастопних размака у водећој празнини"
  
  #: lex.cc:1154
  msgid "tab after space in leading whitespace"
! msgstr "табулатор након размака у водећој празнини"
  
  #: lex.cc:1161
  msgid "whitespace other than spaces in leading whitespace"
! msgstr "празнина осим размака у водећој празнини"
  
  #: lex.cc:1167
  msgid "whitespace other than tabs in leading whitespace"
! msgstr "празнина осим табулатора у водећој празнини"
  
  #: lex.cc:1173
  msgid "whitespace other than spaces and tabs in leading whitespace"
! msgstr "празнина осим размака и табулатора у водећој празнини"
  
  #: lex.cc:1623
  msgid "end of bidirectional context"
*************** msgid "unpaired UTF-8 bidirectional cont
*** 1150,1199 ****
  msgstr "неупарени УТФ-8 двосмерни контролни знак је откривен"
  
  #: lex.cc:1706
! #, fuzzy, gcc-internal-format
! #| msgid "UTF-8 vs UCN mismatch when closing a context by \"%s\""
  msgid "UTF-8 vs UCN mismatch when closing a context by %qs"
! msgstr "„UTF-8 vs UCN“ не одговара када затварам контекст са „%s“"
  
  #: lex.cc:1715
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" is closing an unopened context"
  msgid "%qs is closing an unopened context"
! msgstr "„%s“ затвара неотворени контекст"
  
  #: lex.cc:1719
! #, fuzzy, gcc-internal-format
! #| msgid "found problematic Unicode character \"%s\""
  msgid "found problematic Unicode character %qs"
! msgstr "нађох проблематичан Јуникод знак „%s“"
  
  #: lex.cc:1749 lex.cc:1755
! #, fuzzy, gcc-internal-format
! #| msgid "invalid UTF-8 character <%x><%x>"
  msgid "invalid UTF-8 character %<<%x>%>"
! msgstr "неисправан УТФ-8 знак „<%x><%x>“"
  
  #: lex.cc:1765 lex.cc:1771
! #, fuzzy, gcc-internal-format
! #| msgid "invalid UTF-8 character <%x><%x><%x>"
  msgid "invalid UTF-8 character %<<%x><%x>%>"
! msgstr "неисправан УТФ-8 знак „<%x><%x><%x>“"
  
  #: lex.cc:1781 lex.cc:1787
! #, fuzzy, gcc-internal-format
! #| msgid "invalid UTF-8 character <%x><%x><%x><%x>"
  msgid "invalid UTF-8 character %<<%x><%x><%x>%>"
! msgstr "неисправан УТФ-8 знак „<%x><%x><%x><%x>“"
  
  #: lex.cc:1797 lex.cc:1803
! #, fuzzy, gcc-internal-format
! #| msgid "invalid UTF-8 character <%x><%x><%x><%x>"
  msgid "invalid UTF-8 character %<<%x><%x><%x><%x>%>"
  msgstr "неисправан УТФ-8 знак „<%x><%x><%x><%x>“"
  
  #: lex.cc:1885
! #, fuzzy, gcc-internal-format
! #| msgid "\"/*\" within comment"
  msgid "%</*%> within comment"
  msgstr "„/*“ унутар напомене"
  
--- 1036,1077 ----
  msgstr "неупарени УТФ-8 двосмерни контролни знак је откривен"
  
  #: lex.cc:1706
! #, gcc-internal-format
  msgid "UTF-8 vs UCN mismatch when closing a context by %qs"
! msgstr "„UTF-8 vs UCN“ не одговара када затварам контекст са „%qs“"
  
  #: lex.cc:1715
! #, gcc-internal-format
  msgid "%qs is closing an unopened context"
! msgstr "„%qs“ затвара неотворени контекст"
  
  #: lex.cc:1719
! #, gcc-internal-format
  msgid "found problematic Unicode character %qs"
! msgstr "нађох проблематичан Јуникод знак „%qs“"
  
  #: lex.cc:1749 lex.cc:1755
! #, gcc-internal-format
  msgid "invalid UTF-8 character %<<%x>%>"
! msgstr "неисправан УТФ-8 знак „<%x>“"
  
  #: lex.cc:1765 lex.cc:1771
! #, gcc-internal-format
  msgid "invalid UTF-8 character %<<%x><%x>%>"
! msgstr "неисправан УТФ-8 знак „<%x><%x>“"
  
  #: lex.cc:1781 lex.cc:1787
! #, gcc-internal-format
  msgid "invalid UTF-8 character %<<%x><%x><%x>%>"
! msgstr "неисправан УТФ-8 знак „<%x><%x><%x>“"
  
  #: lex.cc:1797 lex.cc:1803
! #, gcc-internal-format
  msgid "invalid UTF-8 character %<<%x><%x><%x><%x>%>"
  msgstr "неисправан УТФ-8 знак „<%x><%x><%x><%x>“"
  
  #: lex.cc:1885
! #, gcc-internal-format
  msgid "%</*%> within comment"
  msgstr "„/*“ унутар напомене"
  
*************** msgid "null character(s) ignored"
*** 1207,1268 ****
  msgstr "ништаван знак(ци) је занемарен(и)"
  
  #: lex.cc:2063
! #, fuzzy, gcc-internal-format
! #| msgid "`%.*s' is not in NFKC"
  msgid "%<%.*s%> is not in NFKC"
! msgstr "„%.*s“ није у НФКЦ-у"
  
  #: lex.cc:2066 lex.cc:2069
! #, fuzzy, gcc-internal-format
! #| msgid "`%.*s' is not in NFC"
  msgid "%<%.*s%> is not in NFC"
! msgstr "„%.*s“ није у НФЦ-у"
  
  #: lex.cc:2158
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ is not available until C++20"
  msgid "%<__VA_OPT__%> is not available until C++20"
! msgstr "„__VA_OPT__“ није доступно све до „Ц++20“"
  
  #: lex.cc:2161
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ is not available until C23"
  msgid "%<__VA_OPT__%> is not available until C23"
! msgstr "„__VA_OPT__“ није доступно све до „C23“"
  
  #: lex.cc:2169
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ can only appear in the expansion of a C++20 variadic macro"
  msgid "%<__VA_OPT__%> can only appear in the expansion of a C++20 variadic macro"
! msgstr "„__VA_OPT__“ може само да се појави у ширењу вариадик макроа „Ц++20“"
  
  #: lex.cc:2186
! #, fuzzy, gcc-internal-format
! #| msgid "attempt to use poisoned \"%s\""
  msgid "attempt to use poisoned %qs"
! msgstr "покушај коришћења отрованог „%s“"
  
  #: lex.cc:2191
  msgid "poisoned here"
  msgstr "отровано овде"
  
  #: lex.cc:2201
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_ARGS__ can only appear in the expansion of a C++11 variadic macro"
  msgid "%<__VA_ARGS__%> can only appear in the expansion of a C++11 variadic macro"
! msgstr "„__VA_ARGS__“ може само да се појави у ширењу вариадик макроа Ц++11"
  
  #: lex.cc:2205
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
  msgid "%<__VA_ARGS__%> can only appear in the expansion of a C99 variadic macro"
! msgstr "„__VA_ARGS__“ може само да се појави у ширењу вариадик макроа Ц99"
  
  #: lex.cc:2217
! #, fuzzy, gcc-internal-format
! #| msgid "identifier \"%s\" is a special operator name in C++"
  msgid "identifier %qs is a special operator name in C++"
! msgstr "одредник „%s“ је назив посебног оператора у Ц++-у"
  
  #: lex.cc:2353
  msgid "adjacent digit separators"
--- 1085,1137 ----
  msgstr "ништаван знак(ци) је занемарен(и)"
  
  #: lex.cc:2063
! #, gcc-internal-format
  msgid "%<%.*s%> is not in NFKC"
! msgstr "„%.*s“ није у NFKC-у"
  
  #: lex.cc:2066 lex.cc:2069
! #, gcc-internal-format
  msgid "%<%.*s%> is not in NFC"
! msgstr "„%.*s“ није у NFC-у"
  
  #: lex.cc:2158
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> is not available until C++20"
! msgstr "„__VA_OPT__“ није доступно све до C++20"
  
  #: lex.cc:2161
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> is not available until C23"
! msgstr "„__VA_OPT__“ није доступно све до C23"
  
  #: lex.cc:2169
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> can only appear in the expansion of a C++20 variadic macro"
! msgstr "„__VA_OPT__“ може само да се појави у ширењу вариадик макроа C++20"
  
  #: lex.cc:2186
! #, gcc-internal-format
  msgid "attempt to use poisoned %qs"
! msgstr "покушај коришћења отрованог „%qs“"
  
  #: lex.cc:2191
  msgid "poisoned here"
  msgstr "отровано овде"
  
  #: lex.cc:2201
! #, gcc-internal-format
  msgid "%<__VA_ARGS__%> can only appear in the expansion of a C++11 variadic macro"
! msgstr "„__VA_ARGS__“ може само да се појави у ширењу вариадик макроа C++11"
  
  #: lex.cc:2205
! #, gcc-internal-format
  msgid "%<__VA_ARGS__%> can only appear in the expansion of a C99 variadic macro"
! msgstr "„__VA_ARGS__“ може само да се појави у ширењу вариадик макроа C99"
  
  #: lex.cc:2217
! #, gcc-internal-format
  msgid "identifier %qs is a special operator name in C++"
! msgstr "одредник „%qs“ је назив посебног оператора у C++-у"
  
  #: lex.cc:2353
  msgid "adjacent digit separators"
*************** msgstr "блиски раздвојни�
*** 1270,1276 ****
  
  #: lex.cc:2502
  msgid "invalid suffix on literal; C++11 requires a space between literal and string macro"
! msgstr "неисправан суфикс у словности; Ц++11 захтева размак између словности и макроа ниске"
  
  #: lex.cc:2723
  msgid "raw string delimiter longer than 16 characters"
--- 1139,1145 ----
  
  #: lex.cc:2502
  msgid "invalid suffix on literal; C++11 requires a space between literal and string macro"
! msgstr "неисправан суфикс у словности; C++11 захтева размак између словности и макроа ниске"
  
  #: lex.cc:2723
  msgid "raw string delimiter longer than 16 characters"
*************** msgstr "ништаван знак је �
*** 1296,1339 ****
  #: lex.cc:2953
  #, gcc-internal-format, gfc-internal-format
  msgid "missing terminating %c character"
! msgstr "недостаје завршни знак %c"
  
  #: lex.cc:2986
  msgid "C++11 requires a space between string literal and macro"
! msgstr "Ц++11 захтева размак између словности и макроа ниске"
  
  #: lex.cc:3579
  msgid "module control-line cannot be in included file"
  msgstr "контролни ред модула не може бити у укљученој датотеци"
  
  #: lex.cc:3593
! #, fuzzy, gcc-internal-format
! #| msgid "module control-line \"%s\" cannot be an object-like macro"
  msgid "module control-line %qs cannot be an object-like macro"
! msgstr "контролни ред модула „%s“ не може бити макро налик објекту"
  
  #: lex.cc:3631
! #, fuzzy, gcc-internal-format
! #| msgid "module control-line \"%s\" cannot be an object-like macro"
  msgid "module name %qs cannot be an object-like macro"
! msgstr "контролни ред модула „%s“ не може бити макро налик објекту"
  
  #: lex.cc:3637
! #, fuzzy, gcc-internal-format
! #| msgid "module control-line \"%s\" cannot be an object-like macro"
  msgid "module partition %qs cannot be an object-like macro"
! msgstr "контролни ред модула „%s“ не може бити макро налик објекту"
  
  #: lex.cc:3658
! #, fuzzy, gcc-internal-format
! #| msgid "'\\o' not followed by '{'"
  msgid "module name followed by %<(%>"
! msgstr "за „\\o“ не следи „{“"
  
  #: lex.cc:3662
  #, gcc-internal-format
  msgid "module partition followed by %<(%>"
! msgstr ""
  
  #: lex.cc:4071 lex.cc:5504 traditional.cc:174
  msgid "unterminated comment"
--- 1165,1204 ----
  #: lex.cc:2953
  #, gcc-internal-format, gfc-internal-format
  msgid "missing terminating %c character"
! msgstr "недостаје завршни знак „%c“"
  
  #: lex.cc:2986
  msgid "C++11 requires a space between string literal and macro"
! msgstr "C++11 захтева размак између словности и макроа ниске"
  
  #: lex.cc:3579
  msgid "module control-line cannot be in included file"
  msgstr "контролни ред модула не може бити у укљученој датотеци"
  
  #: lex.cc:3593
! #, gcc-internal-format
  msgid "module control-line %qs cannot be an object-like macro"
! msgstr "контролни ред модула „%qs“ не може бити макро налик објекту"
  
  #: lex.cc:3631
! #, gcc-internal-format
  msgid "module name %qs cannot be an object-like macro"
! msgstr "контролни ред модула „%qs“ не може бити макро налик објекту"
  
  #: lex.cc:3637
! #, gcc-internal-format
  msgid "module partition %qs cannot be an object-like macro"
! msgstr "партиција модула „%qs“ не може бити макро налик објекту"
  
  #: lex.cc:3658
! #, gcc-internal-format
  msgid "module name followed by %<(%>"
! msgstr "за називом модула следи „(“"
  
  #: lex.cc:3662
  #, gcc-internal-format
  msgid "module partition followed by %<(%>"
! msgstr "за партицијом модула следи „(“"
  
  #: lex.cc:4071 lex.cc:5504 traditional.cc:174
  msgid "unterminated comment"
*************** msgstr "неокончана напом�
*** 1341,1347 ****
  
  #: lex.cc:4085 lex.cc:4120
  msgid "C++ style comments are not allowed in ISO C90"
! msgstr "Напомене Ц++ стила нису допуштене у ИСО Ц90"
  
  #: lex.cc:4088 lex.cc:4099 lex.cc:4123
  msgid "(this will be reported only once per input file)"
--- 1206,1212 ----
  
  #: lex.cc:4085 lex.cc:4120
  msgid "C++ style comments are not allowed in ISO C90"
! msgstr "Напомене C++ стила нису допуштене у ISO C90"
  
  #: lex.cc:4088 lex.cc:4099 lex.cc:4123
  msgid "(this will be reported only once per input file)"
*************** msgstr "(ово ће бити извеш
*** 1349,1355 ****
  
  #: lex.cc:4097
  msgid "C++ style comments are incompatible with C90"
! msgstr "Напомене Ц++ стила нису сагласне са Ц90"
  
  #: lex.cc:4129
  msgid "multi-line comment"
--- 1214,1220 ----
  
  #: lex.cc:4097
  msgid "C++ style comments are incompatible with C90"
! msgstr "Напомене C++ стила нису сагласне са C90"
  
  #: lex.cc:4129
  msgid "multi-line comment"
*************** msgid "'##' cannot appear at either end
*** 1374,1443 ****
  msgstr "„##“ не може да се појави у или на крају „__VA_OPT__“"
  
  #: macro.cc:144
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ may not appear in a __VA_OPT__"
  msgid "%<__VA_OPT__%> may not appear in a %<__VA_OPT__%>"
  msgstr "„__VA_OPT__“ не може да се појави у „__VA_OPT__“"
  
  #: macro.cc:157
! #, fuzzy, gcc-internal-format
! #| msgid "__VA_OPT__ must be followed by an open parenthesis"
  msgid "%<__VA_OPT__%> must be followed by an open parenthesis"
  msgstr "„__VA_OPT__“ мора да буде праћено отвореном заградом"
  
  #: macro.cc:235
! #, fuzzy, gcc-internal-format
! #| msgid "unterminated __VA_OPT__"
  msgid "unterminated %<__VA_OPT__%>"
  msgstr "неокончано „__VA_OPT__“"
  
  #: macro.cc:396
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" used outside of preprocessing directive"
  msgid "%qs used outside of preprocessing directive"
! msgstr "„%s“ се користи ван директиве претпроцесора"
  
  #: macro.cc:407
! #, fuzzy, gcc-internal-format
! #| msgid "missing '(' before \"%s\" operand"
  msgid "missing %<(%> before %qs operand"
! msgstr "недостаје ( пре операнда „%s“"
  
  #: macro.cc:425
! #, fuzzy, gcc-internal-format
! #| msgid "operator \"%s\" requires a header-name"
  msgid "operator %qs requires a header-name"
! msgstr "оператор „%s“ захтева назив заглавља"
  
  #: macro.cc:454
! #, fuzzy, gcc-internal-format
! #| msgid "missing ')' after \"%s\" operand"
  msgid "missing %<)%> after %qs operand"
! msgstr "недостаје ) након операнда „%s“"
  
  #: macro.cc:499
! #, fuzzy, gcc-internal-format
! #| msgid "empty filename in #%s"
  msgid "empty filename in %qs"
! msgstr "празан назив датотеке у #%s"
  
  #: macro.cc:533
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" is not used"
  msgid "macro %qs is not used"
! msgstr "макро „%s“ није коришћен"
  
  #: macro.cc:572 macro.cc:888
! #, fuzzy, gcc-internal-format
! #| msgid "invalid built-in macro \"%s\""
  msgid "invalid built-in macro %qs"
! msgstr "неисправан макро уградње „%s“"
  
  #: macro.cc:579 macro.cc:687
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" might prevent reproducible builds"
  msgid "macro %qs might prevent reproducible builds"
! msgstr "макро „%s“ може да спречи поновљиве изградње"
  
  #: macro.cc:610
  msgid "could not determine file timestamp"
--- 1239,1297 ----
  msgstr "„##“ не може да се појави у или на крају „__VA_OPT__“"
  
  #: macro.cc:144
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> may not appear in a %<__VA_OPT__%>"
  msgstr "„__VA_OPT__“ не може да се појави у „__VA_OPT__“"
  
  #: macro.cc:157
! #, gcc-internal-format
  msgid "%<__VA_OPT__%> must be followed by an open parenthesis"
  msgstr "„__VA_OPT__“ мора да буде праћено отвореном заградом"
  
  #: macro.cc:235
! #, gcc-internal-format
  msgid "unterminated %<__VA_OPT__%>"
  msgstr "неокончано „__VA_OPT__“"
  
  #: macro.cc:396
! #, gcc-internal-format
  msgid "%qs used outside of preprocessing directive"
! msgstr "„%qs“ се користи ван директиве претпроцесора"
  
  #: macro.cc:407
! #, gcc-internal-format
  msgid "missing %<(%> before %qs operand"
! msgstr "недостаје „(“ пре операнда „%qs“"
  
  #: macro.cc:425
! #, gcc-internal-format
  msgid "operator %qs requires a header-name"
! msgstr "оператор „%qs“ захтева назив заглавља"
  
  #: macro.cc:454
! #, gcc-internal-format
  msgid "missing %<)%> after %qs operand"
! msgstr "недостаје „)“ након операнда „%qs“"
  
  #: macro.cc:499
! #, gcc-internal-format
  msgid "empty filename in %qs"
! msgstr "празан назив датотеке у „%qs“"
  
  #: macro.cc:533
! #, gcc-internal-format
  msgid "macro %qs is not used"
! msgstr "макро „%qs“ није коришћен"
  
  #: macro.cc:572 macro.cc:888
! #, gcc-internal-format
  msgid "invalid built-in macro %qs"
! msgstr "неисправан макро уградње „%qs“"
  
  #: macro.cc:579 macro.cc:687
! #, gcc-internal-format
  msgid "macro %qs might prevent reproducible builds"
! msgstr "макро „%qs“ може да спречи поновљиве изградње"
  
  #: macro.cc:610
  msgid "could not determine file timestamp"
*************** msgid "could not determine date and time
*** 1448,1469 ****
  msgstr "не могу да одредим датум и време"
  
  #: macro.cc:733
! #, fuzzy, gcc-internal-format
! #| msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
  msgid "%<__COUNTER__%> expanded inside directive with %<-fdirectives-only%>"
  msgstr "„__COUNTER__“ је проширен у директиви са „-fdirectives-only“"
  
  #: macro.cc:760
! #, fuzzy, gcc-internal-format
! #| msgid "suggest not using #elif in traditional C"
  msgid "%<__has_embed%> not supported in traditional C"
! msgstr "саветује да се не користи „#elif“ у уобичајеном Ц-у"
  
  #: macro.cc:1007
! #, fuzzy, gcc-internal-format
! #| msgid "invalid string literal, ignoring final '\\'"
  msgid "invalid string literal, ignoring final %<\\%>"
! msgstr "неисправна словност ниске, занемарујем завршну \\"
  
  #: macro.cc:1071
  #, gcc-internal-format
--- 1302,1320 ----
  msgstr "не могу да одредим датум и време"
  
  #: macro.cc:733
! #, gcc-internal-format
  msgid "%<__COUNTER__%> expanded inside directive with %<-fdirectives-only%>"
  msgstr "„__COUNTER__“ је проширен у директиви са „-fdirectives-only“"
  
  #: macro.cc:760
! #, gcc-internal-format
  msgid "%<__has_embed%> not supported in traditional C"
! msgstr "„__has_embed“ није подржано у стандардном C-у"
  
  #: macro.cc:1007
! #, gcc-internal-format
  msgid "invalid string literal, ignoring final %<\\%>"
! msgstr "неисправна словност ниске, занемарујем завршну „\\“"
  
  #: macro.cc:1071
  #, gcc-internal-format
*************** msgid "pasting \"%.*s\" and \"%.*s\" doe
*** 1471,1653 ****
  msgstr "убацивање „%.*s“ и „%.*s“ не даје исправну скупину предобраде"
  
  #: macro.cc:1203
! #, fuzzy, gcc-internal-format
! #| msgid "ISO C++11 requires at least one argument for the \"...\" in a variadic macro"
  msgid "ISO C++11 requires at least one argument for the %<...%> in a variadic macro"
! msgstr "ИСО Ц++11 захтева барем један аргумент за „...“ у вариадик макроу"
  
  #: macro.cc:1207
! #, fuzzy, gcc-internal-format
! #| msgid "ISO C99 requires at least one argument for the \"...\" in a variadic macro"
  msgid "ISO C99 requires at least one argument for the %<...%> in a variadic macro"
! msgstr "ИСО Ц99 захтева барем један аргумент за „...“ у вариадик макроу"
  
  #: macro.cc:1214
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" requires %u arguments, but only %u given"
  msgid "macro %qs requires %u arguments, but only %u given"
! msgstr "макро „%s“ захтева %u аргумента, али само %u су дата"
  
  #: macro.cc:1219
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" passed %u arguments, but takes just %u"
  msgid "macro %qs passed %u arguments, but takes just %u"
! msgstr "макро „%s“ је проследио %u аргумента, али узима само %u"
  
  #: macro.cc:1223
! #, fuzzy, gcc-internal-format
! #| msgid "macro \"%s\" defined here"
  msgid "macro %qs defined here"
! msgstr "макро „%s“ је дефинисан овде"
  
  #: macro.cc:1417 traditional.cc:822
! #, fuzzy, gcc-internal-format
! #| msgid "unterminated argument list invoking macro \"%s\""
  msgid "unterminated argument list invoking macro %qs"
! msgstr "бесконачан списак аргумената призивајући макро „%s“"
  
  #: macro.cc:1563
! #, fuzzy, gcc-internal-format
! #| msgid "function-like macro \"%s\" must be used with arguments in traditional C"
  msgid "function-like macro %qs must be used with arguments in traditional C"
! msgstr "макро налик функцији „%s“ мора бити коришћен са аргументима у уобичајеном Ц-у"
  
  #: macro.cc:2398
  #, gcc-internal-format, gfc-internal-format
  msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C++98"
! msgstr "призивајући макро %s аргумент %d: празни аргументи макроа нису одређени у ИСО Ц++98"
  
  #: macro.cc:2406 macro.cc:2415
  #, gcc-internal-format, gfc-internal-format
  msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C90"
! msgstr "призивајући макро %s аргумент %d: празни аргументи макроа нису одређени у ИСО Ц90"
  
  #: macro.cc:3238
  #, gcc-internal-format
  msgid "%qc in module name or partition comes from or after macro expansion"
! msgstr ""
  
  #: macro.cc:3481
! #, fuzzy, gcc-internal-format
! #| msgid "duplicate macro parameter \"%s\""
  msgid "duplicate macro parameter %qs"
! msgstr "параметар двоструког макроа „%s“"
  
  #: macro.cc:3563
! #, fuzzy, gcc-internal-format
! #| msgid "expected parameter name, found \"%s\""
  msgid "expected parameter name, found %qs"
! msgstr "очекивах назив параметра, нађох „%s“"
  
  #: macro.cc:3564
! #, fuzzy, gcc-internal-format
! #| msgid "expected ',' or ')', found \"%s\""
  msgid "expected %<,%> or %<)%>, found %qs"
! msgstr "очекивах , или ), нађох „%s“"
  
  #: macro.cc:3565
  msgid "expected parameter name before end of line"
  msgstr "очекивах назив параметра пре краја реда"
  
  #: macro.cc:3566
! #, fuzzy, gcc-internal-format
! #| msgid "expected ')' before end of line"
  msgid "expected %<)%> before end of line"
! msgstr "очекивах ) пре краја реда"
  
  #: macro.cc:3567
! #, fuzzy, gcc-internal-format
! #| msgid "expected ')' after \"...\""
  msgid "expected %<)%> after %<...%>"
! msgstr "очекивах ) након ..."
  
  #: macro.cc:3624
  msgid "anonymous variadic macros were introduced in C++11"
! msgstr "безимени вариадик макрои су уведени у Ц++11"
  
  #: macro.cc:3625 macro.cc:3629
  msgid "anonymous variadic macros were introduced in C99"
! msgstr "безимени вариадик макрои су уведени у Ц99"
  
  #: macro.cc:3635
  msgid "ISO C++ does not permit named variadic macros"
! msgstr "ИСО Ц++ не дозвољава именоване вариадик макрое"
  
  #: macro.cc:3636
  msgid "ISO C does not permit named variadic macros"
! msgstr "ИСО Ц не дозвољава именоване вариадик макрое"
  
  #: macro.cc:3682
! #, fuzzy, gcc-internal-format
! #| msgid "'##' cannot appear at either end of a macro expansion"
  msgid "%<##%> cannot appear at either end of a macro expansion"
  msgstr "„##“ не може да се појави у или на крају макро ширења"
  
  #: macro.cc:3720
  msgid "ISO C++11 requires whitespace after the macro name"
! msgstr "ИСО Ц++11 захтева празнине након назива макроа"
  
  #: macro.cc:3721
  msgid "ISO C99 requires whitespace after the macro name"
! msgstr "ИСО Ц99 захтева празнине након назива макроа"
  
  #: macro.cc:3745
  msgid "missing whitespace after the macro name"
  msgstr "недостаје празнина након назива макроа"
  
  #: macro.cc:3798
! #, fuzzy, gcc-internal-format
! #| msgid "'#' is not followed by a macro parameter"
  msgid "%<#%> is not followed by a macro parameter"
  msgstr "за „#“ не следи параметар макроа"
  
  #: macro.cc:3961
! #, fuzzy, gcc-internal-format
! #| msgid "\"%s\" redefined"
  msgid "%qs redefined"
! msgstr "„%s“ је поново одређено"
  
  #: macro.cc:3965
  msgid "this is the location of the previous definition"
  msgstr "ово је место претходне одреднице"
  
  #: macro.cc:4103
! #, fuzzy, gcc-internal-format
! #| msgid "macro argument \"%s\" would be stringified in traditional C"
  msgid "macro argument %qs would be stringified in traditional C"
! msgstr "макро аргумент „%s“ ће бити нискован у уобичајеном Ц-у"
  
  #: pch.cc:90 pch.cc:342 pch.cc:356 pch.cc:374 pch.cc:380 pch.cc:389 pch.cc:396
  msgid "while writing precompiled header"
  msgstr "за време уписивања претходно преведеног заглавља"
  
  #: pch.cc:616
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `%.*s' is poisoned"
  msgid "%s: not used because %<%.*s%> is poisoned"
  msgstr "%s: није употребљено зато што је „%.*s“ отровано"
  
  #: pch.cc:638
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `%.*s' not defined"
  msgid "%s: not used because %<%.*s%> not defined"
  msgstr "%s: није употребљено зато што „%.*s“ није одређено"
  
  #: pch.cc:650
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `%.*s' defined as `%s' not `%.*s'"
  msgid "%s: not used because %<%.*s%> defined as %qs not %<%.*s%>"
! msgstr "%s: није употребљено зато што „%.*s“ одређено као „%s“ није „%.*s“"
  
  #: pch.cc:693
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `%s' is defined"
  msgid "%s: not used because %qs is defined"
! msgstr "%s: није употребљено зато што је „%s“ одређено"
  
  #: pch.cc:713
! #, fuzzy, gcc-internal-format
! #| msgid "%s: not used because `__COUNTER__' is invalid"
  msgid "%s: not used because %<__COUNTER__%> is invalid"
  msgstr "%s: није употребљено зато што „__COUNTER__“ није исправно"
  
--- 1322,1483 ----
  msgstr "убацивање „%.*s“ и „%.*s“ не даје исправну скупину предобраде"
  
  #: macro.cc:1203
! #, gcc-internal-format
  msgid "ISO C++11 requires at least one argument for the %<...%> in a variadic macro"
! msgstr "ISO C++11 захтева барем један аргумент за „...“ у вариадик макроу"
  
  #: macro.cc:1207
! #, gcc-internal-format
  msgid "ISO C99 requires at least one argument for the %<...%> in a variadic macro"
! msgstr "ISO C99 захтева барем један аргумент за „...“ у вариадик макроу"
  
  #: macro.cc:1214
! #, gcc-internal-format
  msgid "macro %qs requires %u arguments, but only %u given"
! msgstr "макро „%qs“ захтева %u аргумента, али само %u су дата"
  
  #: macro.cc:1219
! #, gcc-internal-format
  msgid "macro %qs passed %u arguments, but takes just %u"
! msgstr "макро „%qs“ је проследио %u аргумента, али узима само %u"
  
  #: macro.cc:1223
! #, gcc-internal-format
  msgid "macro %qs defined here"
! msgstr "макро „%qs“ је дефинисан овде"
  
  #: macro.cc:1417 traditional.cc:822
! #, gcc-internal-format
  msgid "unterminated argument list invoking macro %qs"
! msgstr "неокончан списак аргумената призивајући макро „%qs“"
  
  #: macro.cc:1563
! #, gcc-internal-format
  msgid "function-like macro %qs must be used with arguments in traditional C"
! msgstr "макро налик функцији „%qs“ мора бити коришћен са аргументима у стандардном C-у"
  
  #: macro.cc:2398
  #, gcc-internal-format, gfc-internal-format
  msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C++98"
! msgstr "призивајући макро %s аргумент %d: празни аргументи макроа нису одређени у ISO C++98"
  
  #: macro.cc:2406 macro.cc:2415
  #, gcc-internal-format, gfc-internal-format
  msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C90"
! msgstr "призивајући макро %s аргумент %d: празни аргументи макроа нису одређени у ISO C90"
  
  #: macro.cc:3238
  #, gcc-internal-format
  msgid "%qc in module name or partition comes from or after macro expansion"
! msgstr "„%qc“ у називу модула или партицији долази из или након ширења макроа"
  
  #: macro.cc:3481
! #, gcc-internal-format
  msgid "duplicate macro parameter %qs"
! msgstr "двоструки параметар макроа „%qs“"
  
  #: macro.cc:3563
! #, gcc-internal-format
  msgid "expected parameter name, found %qs"
! msgstr "очекивах назив параметра, нађох „%qs“"
  
  #: macro.cc:3564
! #, gcc-internal-format
  msgid "expected %<,%> or %<)%>, found %qs"
! msgstr "очекивах „,“ или „)“, нађох %qs"
  
  #: macro.cc:3565
  msgid "expected parameter name before end of line"
  msgstr "очекивах назив параметра пре краја реда"
  
  #: macro.cc:3566
! #, gcc-internal-format
  msgid "expected %<)%> before end of line"
! msgstr "очекивах „)“ пре краја реда"
  
  #: macro.cc:3567
! #, gcc-internal-format
  msgid "expected %<)%> after %<...%>"
! msgstr "очекивах „)“ након „...“"
  
  #: macro.cc:3624
  msgid "anonymous variadic macros were introduced in C++11"
! msgstr "безимени вариадик макрои су уведени у C++11"
  
  #: macro.cc:3625 macro.cc:3629
  msgid "anonymous variadic macros were introduced in C99"
! msgstr "безимени вариадик макрои су уведени у C99"
  
  #: macro.cc:3635
  msgid "ISO C++ does not permit named variadic macros"
! msgstr "ISO C++ не дозвољава именоване вариадик макрое"
  
  #: macro.cc:3636
  msgid "ISO C does not permit named variadic macros"
! msgstr "ISO C не дозвољава именоване вариадик макрое"
  
  #: macro.cc:3682
! #, gcc-internal-format
  msgid "%<##%> cannot appear at either end of a macro expansion"
  msgstr "„##“ не може да се појави у или на крају макро ширења"
  
  #: macro.cc:3720
  msgid "ISO C++11 requires whitespace after the macro name"
! msgstr "ISO C++11 захтева празнине након назива макроа"
  
  #: macro.cc:3721
  msgid "ISO C99 requires whitespace after the macro name"
! msgstr "ISO C99 захтева празнине након назива макроа"
  
  #: macro.cc:3745
  msgid "missing whitespace after the macro name"
  msgstr "недостаје празнина након назива макроа"
  
  #: macro.cc:3798
! #, gcc-internal-format
  msgid "%<#%> is not followed by a macro parameter"
  msgstr "за „#“ не следи параметар макроа"
  
  #: macro.cc:3961
! #, gcc-internal-format
  msgid "%qs redefined"
! msgstr "„%qs“ је поново одређено"
  
  #: macro.cc:3965
  msgid "this is the location of the previous definition"
  msgstr "ово је место претходне одреднице"
  
  #: macro.cc:4103
! #, gcc-internal-format
  msgid "macro argument %qs would be stringified in traditional C"
! msgstr "макро аргумент „%qs“ ће бити нискован у стандардном C-у"
  
  #: pch.cc:90 pch.cc:342 pch.cc:356 pch.cc:374 pch.cc:380 pch.cc:389 pch.cc:396
  msgid "while writing precompiled header"
  msgstr "за време уписивања претходно преведеног заглавља"
  
  #: pch.cc:616
! #, gcc-internal-format
  msgid "%s: not used because %<%.*s%> is poisoned"
  msgstr "%s: није употребљено зато што је „%.*s“ отровано"
  
  #: pch.cc:638
! #, gcc-internal-format
  msgid "%s: not used because %<%.*s%> not defined"
  msgstr "%s: није употребљено зато што „%.*s“ није одређено"
  
  #: pch.cc:650
! #, gcc-internal-format
  msgid "%s: not used because %<%.*s%> defined as %qs not %<%.*s%>"
! msgstr "%s: није употребљено зато што „%.*s“ одређено као „%qs“ није „%.*s“"
  
  #: pch.cc:693
! #, gcc-internal-format
  msgid "%s: not used because %qs is defined"
! msgstr "%s: није употребљено зато што је „%qs“ одређено"
  
  #: pch.cc:713
! #, gcc-internal-format
  msgid "%s: not used because %<__COUNTER__%> is invalid"
  msgstr "%s: није употребљено зато што „__COUNTER__“ није исправно"
  
*************** msgid "while reading precompiled header"
*** 1656,1665 ****
  msgstr "за време читања претходно преведеног заглавља"
  
  #: traditional.cc:891
! #, fuzzy, gcc-internal-format
! #| msgid "detected recursion whilst expanding macro \"%s\""
  msgid "detected recursion whilst expanding macro %qs"
! msgstr "откривено је дубачење за време ширења макроа „%s“"
  
  #: traditional.cc:1114
  msgid "syntax error in macro parameter list"
--- 1486,1494 ----
  msgstr "за време читања претходно преведеног заглавља"
  
  #: traditional.cc:891
! #, gcc-internal-format
  msgid "detected recursion whilst expanding macro %qs"
! msgstr "откривено је дубачење за време ширења макроа „%qs“"
  
  #: traditional.cc:1114
  msgid "syntax error in macro parameter list"
diff -Nrcpad gcc-15-20250726/libdecnumber/ChangeLog gcc-15-20250809/libdecnumber/ChangeLog
*** gcc-15-20250726/libdecnumber/ChangeLog	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libdecnumber/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libffi/ChangeLog gcc-15-20250809/libffi/ChangeLog
*** gcc-15-20250726/libffi/ChangeLog	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libffi/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libgcc/ChangeLog gcc-15-20250809/libgcc/ChangeLog
*** gcc-15-20250726/libgcc/ChangeLog	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libgcc/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/libgcc/config/avr/libf7/ChangeLog gcc-15-20250809/libgcc/config/avr/libf7/ChangeLog
*** gcc-15-20250726/libgcc/config/avr/libf7/ChangeLog	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libgcc/config/avr/libf7/ChangeLog	Sat Aug  9 22:32:59 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-05-27  Georg-Johann Lay  <avr@gjlay.de>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/libgcc/config/libbid/ChangeLog gcc-15-20250809/libgcc/config/libbid/ChangeLog
*** gcc-15-20250726/libgcc/config/libbid/ChangeLog	Sat Jul 26 22:33:49 2025
--- gcc-15-20250809/libgcc/config/libbid/ChangeLog	Sat Aug  9 22:33:00 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libgcobol/ChangeLog gcc-15-20250809/libgcobol/ChangeLog
*** gcc-15-20250726/libgcobol/ChangeLog	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/ChangeLog	Sat Aug  9 22:33:00 2025
***************
*** 1,3 ****
--- 1,525 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-13  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* common-defs.h (PTRCAST): Moved here from libgcobol.h.
+ 	* libgcobol.h (PTRCAST): Deleted.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* common-defs.h (cdf_enabled_exceptions): Use new CDF state.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Robert Dubner  <rdubner@symas.com>
+ 		    James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* libgcobol.cc (__gg__accept_envar): ACCEPT/DISPLAY environment variables.
+ 	(accept_envar): Likewise.
+ 	(default_exception_handler): Refine system log entries.
+ 	(open_syslog): Likewise.
+ 	(__gg__set_env_name): ACCEPT/DISPLAY environment variables.
+ 	(__gg__get_env_name): ACCEPT/DISPLAY environment variables.
+ 	(__gg__get_env_value): ACCEPT/DISPLAY environment variables.
+ 	(__gg__set_env_value): ACCEPT/DISPLAY environment variables.
+ 	(__gg__fprintf_stderr): Adjust __attribute__ for printf.
+ 	(__gg__set_arg_num): ACCEPT/DISPLAY command-line arguments.
+ 	(__gg__accept_arg_value): ACCEPT/DISPLAY command-line arguments.
+ 	(__gg__get_file_descriptor): DISPLAY on os_filename[] /dev device.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-06-20  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* LICENSE: New file.
+ 
+ 2025-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	Backported from master:
+ 	2025-06-16  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120621
+ 	* common-defs.h (class cbl_enabled_exceptions_t): Const parameter.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-11  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119975
+ 	* intrinsic.cc (__gg__current_date): Eliminate CLOCK_REALTIME.
+ 	(__gg__seconds_past_midnight): Likewise.
+ 	(__gg__formatted_current_date): Likewise.
+ 	(__gg__random): Likewise.
+ 	(__gg__random_next): Likewise.
+ 	* libgcobol.cc: include <sys/time.h>.
+ 	(__gg__abort): Eliminate CLOCK_REALTIME.
+ 	(cobol_time): Likewise.
+ 	(get_time_nanoseconds): Rename.
+ 	(get_time_nanoseconds_local): Comment; Eliminate CLOCK_REALTIME.
+ 	(__gg__clock_gettime): Likewise.
+ 	(__gg__get_date_hhmmssff): Likewise.
+ 	* libgcobol.h (__gg__clock_gettime): Eliminate clockid_t from declaration.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-06  Robert Dubner  <rdubner@symas.com>
+ 		    James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* common-defs.h (enum cbl_file_mode_t): Whitespace.
+ 	(enum file_stmt_t): Likewise.
+ 	(ec_cmp): Likewise.
+ 	(struct cbl_declarative_t): Add "explicit" keyword.
+ 	(class cbl_enabled_exceptions_t): Whitespace.
+ 	* gfileio.cc: Remove cppcheck comment.
+ 	* libgcobol.cc (class ec_status_t): Add "explicit" keyword.
+ 	(match_declarative): Remove %zu.
+ 	(default_exception_handler): Likwise.
+ 	(__gg__check_fatal_exception): Exception overhead.
+ 	(__gg__exception_push): Remove %zu.
+ 	(__gg__exception_pop): Likewise.
+ 	(cbl_enabled_exception_t::dump): Likewise.
+ 	(__gg__match_exception): Exception overhead; remove %zu.
+ 	(cbl_enabled_exceptions_t::dump): Remove %zu.
+ 	(__gg__set_exception_environment): Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119975
+ 	* configure.ac: AC_CHECK_LIB(rt, clock_gettime).
+ 	* config.h.in: Likewise.
+ 	* configure: Likewise.
+ 	* gfileio.cc: Remove in-line cppcheck-suppress.
+ 	* intrinsic.cc (timespec_to_string): Use guarded clock_gettime().
+ 	(__gg__current_date): Likewise.
+ 	(__gg__seconds_past_midnight): Likewise.
+ 	(__gg__formatted_current_date): Likewise.
+ 	(__gg__random): Likewise.
+ 	(__gg__random_next): Likewise.
+ 	(__gg__when_compiled): Likewise.
+ 	* libgcobol.cc (cobol_time): Likewise.
+ 	(get_time_nanoseconds): Likewise.
+ 	(__gg__clock_gettime): Likewise.
+ 	(__gg__get_date_hhmmssff): Likewise.
+ 	* libgcobol.h (__gg__clock_gettime): Likewise.
+ 	(struct cbl_timespec): Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-04  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119323
+ 	* charmaps.cc (__gg__raw_to_ascii):  Eliminate cppcheck warnings.
+ 	(__gg__raw_to_ebcdic): Likewise.
+ 	(__gg__ebcdic_to_console): Likewise.
+ 	(__gg__console_to_ascii): Likewise.
+ 	(__gg__console_to_ebcdic): Likewise.
+ 	* common-defs.h (struct cbl_declarative_t): Likewise.
+ 	* gfileio.cc (get_filename): Likewise.
+ 	(max_value): Likewise.
+ 	(relative_file_delete_varying): Likewise.
+ 	(relative_file_delete): Likewise.
+ 	(read_an_indexed_record): Likewise.
+ 	(position_state_restore): Likewise.
+ 	(indexed_file_delete): Likewise.
+ 	(indexed_file_start): Likewise.
+ 	(sequential_file_rewrite): Likewise.
+ 	(relative_file_write_varying): Likewise.
+ 	(relative_file_write): Likewise.
+ 	(sequential_file_write): Likewise.
+ 	(indexed_file_write): Likewise.
+ 	(__io__file_write): Likewise.
+ 	(line_sequential_file_read): Likewise.
+ 	(indexed_file_read): Likewise.
+ 	(file_indexed_open): Likewise.
+ 	(__gg__file_reopen): Likewise.
+ 	* gmath.cc (conditional_stash): Likewise.
+ 	(__gg__pow): Likewise.
+ 	(multiply_int256_by_int64): Likewise.
+ 	(add_int256_to_int256): Likewise.
+ 	(divide_int256_by_int64): Likewise.
+ 	(squeeze_int256): Likewise.
+ 	(get_int256_from_qualified_field): Likewise.
+ 	(__gg__add_fixed_phase1): Likewise.
+ 	(__gg__addf1_fixed_phase2): Likewise.
+ 	(__gg__fixed_phase2_assign_to_c): Likewise.
+ 	(__gg__add_float_phase1): Likewise.
+ 	(__gg__addf1_float_phase2): Likewise.
+ 	(__gg__float_phase2_assign_to_c): Likewise.
+ 	(__gg__addf3): Likewise.
+ 	(__gg__subtractf1_fixed_phase2): Likewise.
+ 	(__gg__subtractf2_fixed_phase1): Likewise.
+ 	(__gg__subtractf1_float_phase2): Likewise.
+ 	(__gg__subtractf2_float_phase1): Likewise.
+ 	(__gg__subtractf3): Likewise.
+ 	(__gg__multiplyf1_phase1): Likewise.
+ 	(multiply_int128_by_int128): Likewise.
+ 	(__gg__multiplyf1_phase2): Likewise.
+ 	(__gg__multiplyf2): Likewise.
+ 	(shift_in_place128): Likewise.
+ 	(divide_int128_by_int128): Likewise.
+ 	(__gg__dividef1_phase2): Likewise.
+ 	(__gg__dividef23): Likewise.
+ 	(__gg__dividef45): Likewise.
+ 	* intrinsic.cc (struct input_state): Likewise.
+ 	(get_value_as_double_from_qualified_field): Likewise.
+ 	(kahan_summation): Likewise.
+ 	(variance): Likewise.
+ 	(get_all_time): Likewise.
+ 	(populate_ctm_from_date): Likewise.
+ 	(populate_ctm_from_time): Likewise.
+ 	(ftime_replace): Likewise.
+ 	(__gg__abs): Likewise.
+ 	(__gg__acos): Likewise.
+ 	(__gg__annuity): Likewise.
+ 	(__gg__asin): Likewise.
+ 	(__gg__atan): Likewise.
+ 	(__gg__byte_length): Likewise.
+ 	(__gg__char): Likewise.
+ 	(__gg__combined_datetime): Likewise.
+ 	(__gg__cos): Likewise.
+ 	(__gg__date_of_integer): Likewise.
+ 	(__gg__date_to_yyyymmdd): Likewise.
+ 	(__gg__day_of_integer): Likewise.
+ 	(__gg__day_to_yyyyddd): Likewise.
+ 	(__gg__exp): Likewise.
+ 	(__gg__exp10): Likewise.
+ 	(__gg__factorial): Likewise.
+ 	(__gg__formatted_current_date): Likewise.
+ 	(__gg__formatted_date): Likewise.
+ 	(__gg__formatted_datetime): Likewise.
+ 	(__gg__formatted_time): Likewise.
+ 	(__gg__integer): Likewise.
+ 	(__gg__integer_of_date): Likewise.
+ 	(__gg__integer_of_day): Likewise.
+ 	(__gg__integer_part): Likewise.
+ 	(__gg__fraction_part): Likewise.
+ 	(__gg__log): Likewise.
+ 	(__gg__log10): Likewise.
+ 	(__gg__max): Likewise.
+ 	(__gg__lower_case): Likewise.
+ 	(__gg__median): Likewise.
+ 	(__gg__min): Likewise.
+ 	(numval): Likewise.
+ 	(numval_c): Likewise.
+ 	(__gg__numval): Likewise.
+ 	(__gg__test_numval): Likewise.
+ 	(__gg__numval_c): Likewise.
+ 	(__gg__test_numval_c): Likewise.
+ 	(__gg__ord): Likewise.
+ 	(__gg__rem): Likewise.
+ 	(__gg__trim): Likewise.
+ 	(__gg__random): Likewise.
+ 	(__gg__reverse): Likewise.
+ 	(__gg__sign): Likewise.
+ 	(__gg__sin): Likewise.
+ 	(__gg__sqrt): Likewise.
+ 	(__gg__tan): Likewise.
+ 	(__gg__test_date_yyyymmdd): Likewise.
+ 	(__gg__test_day_yyyyddd): Likewise.
+ 	(__gg__upper_case): Likewise.
+ 	(__gg__year_to_yyyy): Likewise.
+ 	(gets_int): Likewise.
+ 	(gets_year): Likewise.
+ 	(gets_month): Likewise.
+ 	(gets_day): Likewise.
+ 	(gets_day_of_week): Likewise.
+ 	(gets_day_of_year): Likewise.
+ 	(gets_week): Likewise.
+ 	(gets_hours): Likewise.
+ 	(gets_minutes): Likewise.
+ 	(gets_seconds): Likewise.
+ 	(gets_nanoseconds): Likewise.
+ 	(fill_cobol_tm): Likewise.
+ 	(__gg__test_formatted_datetime): Likewise.
+ 	(__gg__integer_of_formatted_date): Likewise.
+ 	(__gg__seconds_from_formatted_time): Likewise.
+ 	(__gg__hex_of): Likewise.
+ 	(__gg__highest_algebraic): Likewise.
+ 	(__gg__lowest_algebraic): Likewise.
+ 	(floating_format_tester): Likewise.
+ 	(__gg__numval_f): Likewise.
+ 	(__gg__test_numval_f): Likewise.
+ 	(ismatch): Likewise.
+ 	(iscasematch): Likewise.
+ 	(strstr): Likewise.
+ 	(strcasestr): Likewise.
+ 	(strlaststr): Likewise.
+ 	(strcaselaststr): Likewise.
+ 	(__gg__substitute): Likewise.
+ 	(__gg__locale_compare): Likewise.
+ 	(__gg__locale_date): Likewise.
+ 	(__gg__locale_time): Likewise.
+ 	(__gg__locale_time_from_seconds): Likewise.
+ 	* libgcobol.cc (class ec_status_t): Likewise.
+ 	(__gg__set_truncation_mode): Likewise.
+ 	(malloc): Likewise.
+ 	(__gg__mabort): Likewise.
+ 	(__gg__resize_int_p): Likewise.
+ 	(__gg__resize_treeplet): Likewise.
+ 	(var_is_refmod): Likewise.
+ 	(value_is_too_big): Likewise.
+ 	(__gg__string_to_alpha_edited_ascii): Likewise.
+ 	(int128_to_field): Likewise.
+ 	(edited_to_binary): Likewise.
+ 	(get_binary_value_local): Likewise.
+ 	(__gg__get_date_yymmdd): Likewise.
+ 	(__gg__get_date_yyyymmdd): Likewise.
+ 	(__gg__get_date_yyddd): Likewise.
+ 	(__gg__get_yyyyddd): Likewise.
+ 	(__gg__get_date_dow): Likewise.
+ 	(get_scaled_rdigits): Likewise.
+ 	(format_for_display_internal): Likewise.
+ 	(compare_88): Likewise.
+ 	(get_float128): Likewise.
+ 	(compare_field_class): Likewise.
+ 	(compare_strings): Likewise.
+ 	(__gg__compare_2): Likewise.
+ 	(__gg__sort_table): Likewise.
+ 	(init_var_both): Likewise.
+ 	(alpha_to_alpha_move_from_location): Likewise.
+ 	(alpha_to_alpha_move): Likewise.
+ 	(__gg__move): Likewise.
+ 	(__gg__move_literala): Likewise.
+ 	(__gg__sort_workfile): Likewise.
+ 	(__gg__merge_files): Likewise.
+ 	(normalize_id): Likewise.
+ 	(inspect_backward_format_1): Likewise.
+ 	(__gg__inspect_format_1): Likewise.
+ 	(inspect_backward_format_2): Likewise.
+ 	(__gg__inspect_format_2): Likewise.
+ 	(__gg__inspect_format_4): Likewise.
+ 	(move_string): Likewise.
+ 	(__gg__string): Likewise.
+ 	(display_both): Likewise.
+ 	(__gg__display_string): Likewise.
+ 	(__gg__accept): Likewise.
+ 	(__gg__binary_value_from_qualified_field): Likewise.
+ 	(__gg__float128_from_qualified_field): Likewise.
+ 	(float128_to_int128): Likewise.
+ 	(float128_to_location): Likewise.
+ 	(__gg__set_initial_switch_value): Likewise.
+ 	(is_numeric_display_numeric): Likewise.
+ 	(is_packed_numeric): Likewise.
+ 	(is_alpha_a_number): Likewise.
+ 	(__gg__classify): Likewise.
+ 	(__gg__accept_envar): Likewise.
+ 	(__gg__set_envar): Likewise.
+ 	(command_line_plan_b): Likewise.
+ 	(__gg__get_command_line): Likewise.
+ 	(__gg__set_pointer): Likewise.
+ 	(__gg__ascii_to_internal_field): Likewise.
+ 	(__gg__internal_to_console_in_place): Likewise.
+ 	(__gg__routine_to_call): Likewise.
+ 	(__gg__fetch_call_by_value_value): Likewise.
+ 	(__gg__assign_value_from_stack): Likewise.
+ 	(__gg__literaln_alpha_compare): Likewise.
+ 	(string_in): Likewise.
+ 	(__gg__unstring): Likewise.
+ 	(local_ec_type_of): Likewise.
+ 	(struct exception_descr_t): Likewise.
+ 	(struct cbl_exception_t): Likewise.
+ 	(cbl_enabled_exception_t: Likewise.: Likewise.dump): Likewise.
+ 	(__gg__match_exception): Likewise.
+ 	(__gg__float128_from_location): Likewise.
+ 	(__gg__integer_from_float128): Likewise.
+ 	(__gg__set_exception_file): Likewise.
+ 	(__gg__func_exception_file): Likewise.
+ 	(__gg__set_exception_code): Likewise.
+ 	(__gg__is_float_infinite): Likewise.
+ 	(__gg__float32_from_128): Likewise.
+ 	(__gg__float32_from_64): Likewise.
+ 	(__gg__float64_from_128): Likewise.
+ 	(__gg__copy_as_big_endian): Likewise.
+ 	(__gg__get_figconst_data): Likewise.
+ 	(find_in_dirs): Likewise.
+ 	(__gg__function_handle_from_cobpath): Likewise.
+ 	(__gg__just_mangle_name): Likewise.
+ 	(__gg__function_handle_from_literal): Likewise.
+ 	(__gg__function_handle_from_name): Likewise.
+ 	(__gg__mirror_range): Likewise.
+ 	(__gg__deallocate): Likewise.
+ 	(__gg__allocate): Likewise.
+ 	(__gg__module_name): Likewise.
+ 	(__gg__set_env_name): Likewise.
+ 	(__gg__set_env_value): Likewise.
+ 	* libgcobol.h (__gg__mabort): Likewise.
+ 	(massert): Likewise.
+ 	(PTRCAST): Likewise.
+ 	(__gg__float128_from_location): Likewise.
+ 	(__gg__set_exception_file): Likewise.
+ 	(__gg__binary_value_from_qualified_field): Likewise.
+ 	(__gg__float128_from_qualified_field): Likewise.
+ 	* valconv.cc (__gg__realloc_if_necessary): Likewise.
+ 	(__gg__alphabet_create): Likewise.
+ 	(__gg__string_to_numeric_edited): Likewise.
+ 	(__gg__string_to_alpha_edited): Likewise.
+ 	* valconv.h: Likewise.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-06-01  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119524
+ 	* libgcobol.cc (__gg__fprintf_stderr): New function.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-20  Robert Dubner  <rdubner@symas.com>
+ 		    James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* charmaps.cc: Switch to C++ includes.
+ 	* common-defs.h: Likewise.
+ 	* constants.cc: Likewise.
+ 	* ec.h: Remove #include <assert.h>.
+ 	* gcobolio.h (GCOBOLIO_H_): Switch to C++ includes.
+ 	* gfileio.cc: Likewise.
+ 	* gmath.cc: Likewise.
+ 	* intrinsic.cc: Comment formatting; C++ includes.
+ 	* io.cc: C++ includes.
+ 	* libgcobol.cc: (__gg__stash_exceptions): Eliminate.
+ 	* valconv.cc: Switch to C++ includes.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-20  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119885
+ 	* intrinsic.cc: (__gg__sqrt): Change test from <= zero to < zero.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-16  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* common-defs.h (struct cbl_declarative_t): Eliminate blobl.
+ 	* libgcobol.cc (__gg__set_env_name): Code for ENVIRONMENT-NAME/VALUE.
+ 	(__gg__set_env_value): Likewise.
+ 
+ 2025-07-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backported from master:
+ 	2025-05-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* libgcobol.cc [!LOG_PERROR] (LOG_PERROR): Provide fallback.
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-11  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119377
+ 	* common-defs.h: (struct cbl_declaratives_t): Change "bool global" to
+ 	"uint32_t global".
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-10  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* common-defs.h (ec_cmp): Delete "getenv("match_declarative")" calls.
+ 	(enabled_exception_match): Delete "getenv("match_declarative")" calls.
+ 	* libgcobol.cc: Eliminate __gg__odo_violation.
+ 
+ 2025-07-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backported from master:
+ 	2025-05-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac: Handle --enable-libgcobol.
+ 	Let it override LIBGCOBOL_SUPPORTED.
+ 	* configure: Regenerate.
+ 
+ 2025-07-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2025-05-06  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config.h.in: Regenerate.
+ 	* configure: Regenerate.
+ 	* configure.ac: Check for program_invocation_short_name and
+ 	and getprogname().
+ 	* libgcobol.cc (default_exception_handler): When the platform
+ 	has program_invocation_short_name, use it otherwise fall
+ 	back to using getprogname() or a constant string (if neither
+ 	interface is available).
+ 
+ 2025-07-29  Robert Dubner  <rdubner@symas.com>
+ 
+ 	Backported from master:
+ 	2025-05-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* charmaps.cc: Add #include <vector>.
+ 	* common-defs.h (COMMON_DEFS_H_): Add #include <stdio.h>.
+ 	(enum cbl_file_mode_t): Add file_mode_any_e.
+ 	(enum file_stmt_t): Created.
+ 	(cbl_file_mode_str): Add case for file_mode_any_e.
+ 	(ec_cmp): Exceptions.
+ 	(struct cbl_enabled_exception_t): Likewise.
+ 	(struct cbl_declarative_t): Likewise.
+ 	(class cbl_enabled_exceptions_array_t): Likewise.
+ 	(class cbl_enabled_exceptions_t): Likewise.
+ 	(struct cbl_enabled_exceptions_array_t): Likewise.
+ 	(enabled_exception_match): Likewise.
+ 	* constants.cc: Add #include <vector>.
+ 	* exceptl.h (struct cbl_exception_t): Removed.
+ 	(struct cbl_declarative_t): Removed.
+ 	(class ec_status_t): Removed.
+ 	* gcobolio.h: Add symbol_table_index to cblc_file_t.
+ 	* gfileio.cc: Add #include <vector>
+ 	(establish_status): Comment.
+ 	(__io__file_init): Handle symbol_table_index.
+ 	(__io__file_delete): Set file->prior_op.
+ 	(__io__file_rewrite): Likewise.
+ 	(__io__file_read): Likewise.
+ 	(__io__file_open): Likewise.
+ 	(__io__file_close): Likewise.
+ 	* gmath.cc: Include #include <vector>.
+ 	* intrinsic.cc: Include #include <vector>.
+ 	* libgcobol.cc: Multiple modifications for exceptions.
+ 	* valconv.cc: #include <vector>.
+ 
+ 2025-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-05-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR cobol/119364
+ 	* valconv.cc (__gg__realloc_if_necessary): Use (new_size>>16)>>16;
+ 	instead of new_size>>32; to avoid warnings on 32-bit hosts.
+ 	* common-defs.h (enum cbl_field_attr_t): Use uint64_t
+ 	as underlying type rather than size_t.
+ 	* gcobolio.h (cblc_field_t): Change attr member type from size_t
+ 	to unsigned long long.
+ 
+ 2025-07-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backported from master:
+ 	2025-04-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac: Check for struct tm.tm_zone.
+ 	* configure, config.h.in: Regenerate.
+ 	* intrinsic.cc (__gg__formatted_current_date): Guard tm.tm_zone
+ 	use with HAVE_STRUCT_TM_TM_ZONE.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libgcobol/LICENSE gcc-15-20250809/libgcobol/LICENSE
*** gcc-15-20250726/libgcobol/LICENSE	Thu Jan  1 00:00:00 1970
--- gcc-15-20250809/libgcobol/LICENSE	Sat Aug  9 22:33:00 2025
***************
*** 0 ****
--- 1,27 ----
+ Copyright (c) 2021-2025 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+   copyright notice, this list of conditions and the following disclaimer
+   in the documentation and/or other materials provided with the
+   distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff -Nrcpad gcc-15-20250726/libgcobol/charmaps.cc gcc-15-20250809/libgcobol/charmaps.cc
*** gcc-15-20250726/libgcobol/charmaps.cc	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/charmaps.cc	Sat Aug  9 22:33:00 2025
***************
*** 29,42 ****
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
! #include <ctype.h>
! #include <stdio.h>
! #include <string.h>
! #include <time.h>
  #include <algorithm>
  #include <unordered_map>
! #include <locale.h>
! #include <iconv.h>
  
  #include "ec.h"
  #include "common-defs.h"
--- 29,45 ----
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
! #include <iconv.h>
! 
! #include <cctype>
! #include <clocale>
! #include <cstdio>
! #include <cstring>
! #include <ctime>
! 
  #include <algorithm>
  #include <unordered_map>
! #include <vector>
  
  #include "ec.h"
  #include "common-defs.h"
*************** __gg__raw_to_ascii(char **dest, size_t *
*** 432,438 ****
  
      size_t code_point;
      // Pull the next code_point from the UTF-8 stream
!     long unicode_point = extract_next_code_point((const unsigned char *)in,
                                                   length,
                                                   position );
  
--- 435,441 ----
  
      size_t code_point;
      // Pull the next code_point from the UTF-8 stream
!     long unicode_point = extract_next_code_point(reinterpret_cast<const unsigned char *>(in),
                                                   length,
                                                   position );
  
*************** __gg__raw_to_ebcdic(char **dest, size_t
*** 494,500 ****
            }
  
          // Pull the next code_point from the UTF-8 stream
!         long unicode_point = extract_next_code_point(   (const unsigned char *)in,
                                                                  length,
                                                                  position );
          // Check for that unicode code point in the subset of characters we
--- 497,503 ----
            }
  
          // Pull the next code_point from the UTF-8 stream
!         long unicode_point = extract_next_code_point(   reinterpret_cast<const unsigned char *>(in),
                                                                  length,
                                                                  position );
          // Check for that unicode code point in the subset of characters we
*************** char *__gg__ebcdic_to_console(char **des
*** 719,725 ****
                                const size_t length)
      {
      static size_t ebcdic_size = MINIMUM_ALLOCATION_SIZE;
!     static char *ebcdic = (char *)malloc(ebcdic_size);
      __gg__realloc_if_necessary(&ebcdic, &ebcdic_size, length);
  
      memcpy(ebcdic, str, length);
--- 722,729 ----
                                const size_t length)
      {
      static size_t ebcdic_size = MINIMUM_ALLOCATION_SIZE;
!     static char *ebcdic = static_cast<char *>(malloc(ebcdic_size));
!     if(!ebcdic)abort();
      __gg__realloc_if_necessary(&ebcdic, &ebcdic_size, length);
  
      memcpy(ebcdic, str, length);
*************** void __gg__console_to_ascii(char * const
*** 754,760 ****
          size_t code_point;
          // Pull the next code_point from the UTF-8 stream
          long unicode_point
!             = extract_next_code_point(    (const unsigned char *)str,
                                                  length,
                                                  position );
          if( unicode_point == -1 )
--- 758,764 ----
          size_t code_point;
          // Pull the next code_point from the UTF-8 stream
          long unicode_point
!             = extract_next_code_point(    reinterpret_cast<const unsigned char *>(str),
                                                  length,
                                                  position );
          if( unicode_point == -1 )
*************** __gg__console_to_ebcdic(char * const str
*** 794,800 ****
          size_t code_point;
          // Pull the next code_point from the UTF-8 stream
          long unicode_point
!             = extract_next_code_point(    (const unsigned char *)str,
                                                  length,
                                                  position );
          if( unicode_point == -1 )
--- 798,804 ----
          size_t code_point;
          // Pull the next code_point from the UTF-8 stream
          long unicode_point
!             = extract_next_code_point(    reinterpret_cast<const unsigned char *>(str),
                                                  length,
                                                  position );
          if( unicode_point == -1 )
diff -Nrcpad gcc-15-20250726/libgcobol/common-defs.h gcc-15-20250809/libgcobol/common-defs.h
*** gcc-15-20250726/libgcobol/common-defs.h	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/common-defs.h	Sat Aug  9 22:33:00 2025
***************
*** 30,36 ****
  #ifndef COMMON_DEFS_H_
  #define COMMON_DEFS_H_
  
! #include <stdint.h>
  #include <list>
  
  #define COUNT_OF(X) (sizeof(X) / sizeof(X[0]))
--- 30,38 ----
  #ifndef COMMON_DEFS_H_
  #define COMMON_DEFS_H_
  
! #include <cassert>
! #include <cstdio>
! #include <cstdint>
  #include <list>
  
  #define COUNT_OF(X) (sizeof(X) / sizeof(X[0]))
***************
*** 82,87 ****
--- 84,97 ----
  
  #define MINIMUM_ALLOCATION_SIZE 16
  
+ // This was part of an exercise to make cppcheck shut up about invalid
+ // pointer type conversions.
+ // It was also to avoid having reinterpret_cast<> all over the place.
+ // So, instead of                 reinterpret_cast<char *>(VALUE)
+ // I sometimes use                PTRCAST(char, VALUE)
+ // Note that "(char *)" is implied by "PTRCAST(char, VALUE)"
+ #define PTRCAST(TYPE, VALUE) static_cast<TYPE *>(static_cast<void *>(VALUE))
+ 
  /*
   * User-defined names in IBM COBOL can have at most 30 characters.
   * For DBCS, the maximum is 14.
*************** enum cbl_field_type_t {
*** 147,153 ****
   * A field is padded (in the unjustified direction) either with 0 or SPC.
   *   (But maybe the fill character should just be an explicit character.)
   */
! enum cbl_field_attr_t : size_t {
    none_e            = 0x0000000000,
    figconst_1_e      = 0x0000000001, // This needs to be 1 - don't change the position
    figconst_2_e      = 0x0000000002, // This needs to be 2
--- 157,163 ----
   * A field is padded (in the unjustified direction) either with 0 or SPC.
   *   (But maybe the fill character should just be an explicit character.)
   */
! enum cbl_field_attr_t : uint64_t {
    none_e            = 0x0000000000,
    figconst_1_e      = 0x0000000001, // This needs to be 1 - don't change the position
    figconst_2_e      = 0x0000000002, // This needs to be 2
*************** enum cbl_file_mode_t {
*** 235,240 ****
--- 245,251 ----
    file_mode_output_e = 'w',
    file_mode_extend_e = 'a',
    file_mode_io_e     = '+',
+   file_mode_any_e,
  };
  
  enum cbl_round_t {
*************** enum bitop_t {
*** 284,289 ****
--- 295,310 ----
    bit_xor_op,
  };
  
+ enum file_stmt_t {
+   file_stmt_delete_e,
+   file_stmt_merge_e,
+   file_stmt_read_e,
+   file_stmt_rewrite_e,
+   file_stmt_sort_e,
+   file_stmt_start_e,
+   file_stmt_write_e,
+ };
+ 
  enum file_close_how_t {
    file_close_no_how_e     = 0x00,
    file_close_removal_e    = 0x01,
*************** cbl_file_mode_str( cbl_file_mode_t mode
*** 376,381 ****
--- 397,403 ----
    case file_mode_output_e: return "file_mode_output_e: 'w'";
    case file_mode_io_e:     return "file_mode_io_e: '+'";
    case file_mode_extend_e: return "file_mode_extend_e: 'a'";
+   case file_mode_any_e:    return "file_mode_any_e";
    }
    return "???";
  };
*************** enum module_type_t {
*** 388,445 ****
    module_toplevel_e,
  };
  
! 
! static inline bool
! ec_cmp( ec_type_t raised, ec_type_t mask )
  {
!   if( raised == mask ) return true;
  
!   // Do not match on only the low byte.
!   if( 0 < (~EC_ALL_E & static_cast<uint32_t>(mask)) ) return false;
  
!   return  0 != ( static_cast<uint32_t>(raised)
!                  &
!                  static_cast<uint32_t>(mask) );
  }
  
  struct cbl_enabled_exception_t {
!   bool enabled, location;
    ec_type_t ec;
    size_t file;
  
    cbl_enabled_exception_t()
!     : enabled(false)
!     , location(false)
      , ec(ec_none_e)
      , file(0)
    {}
  
!   cbl_enabled_exception_t( bool enabled, bool location,
!                            ec_type_t ec, size_t file = 0 )
!     : enabled(enabled)
!     , location(location)
      , ec(ec)
      , file(file)
    {}
  
!   // sort by  ec and file, not enablement
    bool operator<( const cbl_enabled_exception_t& that ) const {
      if( ec == that.ec ) return file < that.file;
      return ec < that.ec;
    }
!   // match on ec and file, not enablement
    bool operator==( const cbl_enabled_exception_t& that ) const {
      return ec == that.ec && file == that.file;
    }
  };
  
  
! class cbl_enabled_exceptions_array_t;
  
  class cbl_enabled_exceptions_t : protected std::set<cbl_enabled_exception_t>
  {
!   friend cbl_enabled_exceptions_array_t;
!   void apply( const cbl_enabled_exception_t& elem ) {
      auto inserted = insert( elem );
      if( ! inserted.second ) {
        erase(inserted.first);
--- 410,570 ----
    module_toplevel_e,
  };
  
! /*
!  * Compare a "raised" EC to an enabled EC or of a declarative.  "raised" may in
!  * fact not be raised; in the compiler this function is used to compare a TURN
!  * directive to the list of enabled ECs.
!  */
! static bool
! ec_cmp( ec_type_t raised, ec_type_t ec )
  {
!   if( raised == ec ) return true;
  
!   // If both low bytes are nonzero, we had to match exactly, above.
!   if( (~EC_ALL_E & static_cast<uint32_t>(raised))
!       &&
!       (~EC_ALL_E & static_cast<uint32_t>(ec)) ) {
!     return false;
!   }
  
!   // Level 1 and 2 have low byte of zero.
!   // If one low byte is zero, see if they're the same kind.
!   return 0xFF < ( static_cast<uint32_t>(raised)
! 		  &
! 		  static_cast<uint32_t>(ec) );
  }
  
  struct cbl_enabled_exception_t {
!   bool location;
    ec_type_t ec;
    size_t file;
  
    cbl_enabled_exception_t()
!     : location(false)
      , ec(ec_none_e)
      , file(0)
    {}
  
!   cbl_enabled_exception_t( bool location, ec_type_t ec, size_t file = 0 )
!     : location(location)
      , ec(ec)
      , file(file)
    {}
  
!   // sort by  ec and file
    bool operator<( const cbl_enabled_exception_t& that ) const {
      if( ec == that.ec ) return file < that.file;
      return ec < that.ec;
    }
!   // match on ec and file
    bool operator==( const cbl_enabled_exception_t& that ) const {
      return ec == that.ec && file == that.file;
    }
+ 
+   void dump( int i ) const;
  };
  
+ struct cbl_declarative_t {
+   enum { files_max = 16 };
+   size_t section; // implies program
+   bool global;
+   ec_type_t type;
+   uint32_t nfile, files[files_max];
+   cbl_file_mode_t mode;
  
!   explicit cbl_declarative_t( cbl_file_mode_t mode = file_mode_none_e )
!     : section(0)
!     , global(false)
!     , type(ec_none_e)
!     , nfile(0)
!     , mode(mode)
!   {
!     std::fill(files, files + COUNT_OF(files), 0);
!   }
!   explicit cbl_declarative_t( ec_type_t type )
!     : section(0)
!     , global(false)
!     , type(type)
!     , nfile(0)
!     , mode(file_mode_none_e)
!   {
!     std::fill(files, files + COUNT_OF(files), 0);
!   }
! 
!   cbl_declarative_t( size_t section, ec_type_t type,
!                      const std::list<size_t>& files,
!                      cbl_file_mode_t mode,
! 		     bool global = false )
!     : section(section), global(global)
!     , type(type)
!     , nfile(files.size())
!     , mode(mode)
!   {
!     assert( files.size() <= COUNT_OF(this->files) );
!     std::fill(this->files, this->files + COUNT_OF(this->files), 0);
!     if( nfile > 0 ) {
!       std::copy( files.begin(), files.end(), this->files );
!     }
!   }
!   cbl_declarative_t( const cbl_declarative_t& that )
!     : section(that.section)
!     , global(that.global)
!     , type(that.type)
!     , nfile(that.nfile)
!     , mode(that.mode)
!   {
!     std::fill(files, files + COUNT_OF(files), 0);
!     if( nfile > 0 ) {
!       std::copy( that.files, that.files + nfile, this->files );
!     }
!   }
!   cbl_declarative_t& operator=(const cbl_declarative_t&) = default;
! 
!   std::vector<uint64_t> encode() const;
! 
!   /*
!    * Sort file names before file modes, and file modes before non-IO.
!    */
!   bool operator<( const cbl_declarative_t& that ) const {
!     // file name declaratives first, in section order
!     if( nfile != 0 ) {
!       if( that.nfile != 0 ) return section < that.section;
!       return true;
!     }
!     // file mode declaratives between file name declaratives and non-IO
!     if( mode != file_mode_none_e ) {
!       if( that.nfile != 0 ) return false;
!       if( that.mode == file_mode_none_e ) return true;
!       return section < that.section;
!     }
!     // all others by section, after names and modes
!     if( that.nfile != 0 ) return false;
!     if( that.mode != file_mode_none_e ) return false;
!     return section < that.section;
!   }
! 
!     // TRUE if there are no files to match, or the provided file is in the list.
!     bool match_file( size_t file ) const {
!     static const uint32_t * pend = files + nfile;
! 
!     return nfile == 0 || pend != std::find(files, files + nfile, file);
!   }
! 
!   // USE Format 1 names a file mode, or at least one file, and not an EC.
!   bool is_format_1() const {
!     return mode != file_mode_none_e;
!   }
! };
! 
! typedef std::vector<cbl_declarative_t> cbl_declaratives_t;
  
  class cbl_enabled_exceptions_t : protected std::set<cbl_enabled_exception_t>
  {
!   void apply( bool enabled, const cbl_enabled_exception_t& elem ) {
!     if( ! enabled ) {
!       erase(elem);
!       return;
!     }
      auto inserted = insert( elem );
      if( ! inserted.second ) {
        erase(inserted.first);
*************** class cbl_enabled_exceptions_t : protect
*** 448,504 ****
    }
  
   public:
!   bool turn_on_off( bool enabled, bool location, ec_type_t type,
!                     std::set<size_t> files );
  
!   const cbl_enabled_exception_t * match( ec_type_t type, size_t file = 0 );
  
    void dump() const;
  
    void clear() { std::set<cbl_enabled_exception_t>::clear(); }
  
    bool   empty() const { return std::set<cbl_enabled_exception_t>::empty(); }
    size_t  size() const { return std::set<cbl_enabled_exception_t>::size(); }
  
    cbl_enabled_exceptions_t& operator=( const cbl_enabled_exceptions_t& ) = default;
  };
  
! extern cbl_enabled_exceptions_t enabled_exceptions;
! 
! /*
!  * This class is passed to the runtime function evaluating the raised exception.
!  * It is constructed in genapi.cc from the compile-time table.
!  */
! struct cbl_enabled_exceptions_array_t {
!   size_t nec;
!   cbl_enabled_exception_t *ecs;
! 
!   cbl_enabled_exceptions_array_t( size_t nec, cbl_enabled_exception_t *ecs )
!     : nec(nec), ecs(ecs) {}
! 
!   cbl_enabled_exceptions_array_t( const cbl_enabled_exceptions_t& input =
!                                   cbl_enabled_exceptions_t() )
!     : nec(input.size())
!     , ecs(NULL)
!   {
!     if( ! input.empty() ) {
!       ecs = new cbl_enabled_exception_t[nec];
!       std::copy(input.begin(), input.end(), ecs);
!     }
!   }
! 
!   cbl_enabled_exceptions_array_t&
!   operator=( const cbl_enabled_exceptions_array_t& input);
! 
! 
!   bool match( ec_type_t ec, size_t file = 0 ) const;
! 
!   size_t nbytes() const { return nec * sizeof(ecs[0]); }
! };
  
  template <typename T>
  T enabled_exception_match( T beg, T end, ec_type_t type, size_t file ) {
!   cbl_enabled_exception_t input( true, true, // don't matter
                                   type, file );
    auto output = std::find(beg, end, input);
    if( output == end ) {
--- 573,607 ----
    }
  
   public:
!   cbl_enabled_exceptions_t() {}
!   cbl_enabled_exceptions_t( size_t nec, const cbl_enabled_exception_t *ecs )
!     : std::set<cbl_enabled_exception_t>(ecs, ecs + nec)
!   {}
!   void turn_on_off( bool enabled, bool location, ec_type_t type,
!                     const std::set<size_t>& files );
  
!   const cbl_enabled_exception_t * match( ec_type_t ec, size_t file = 0 ) const;
  
    void dump() const;
+   void dump( const char tag[] ) const;
+   uint32_t status() const;
  
    void clear() { std::set<cbl_enabled_exception_t>::clear(); }
  
    bool   empty() const { return std::set<cbl_enabled_exception_t>::empty(); }
    size_t  size() const { return std::set<cbl_enabled_exception_t>::size(); }
  
+   std::vector<uint64_t> encode() const;
+   cbl_enabled_exceptions_t& decode( const std::vector<uint64_t>& encoded );
+ 
    cbl_enabled_exceptions_t& operator=( const cbl_enabled_exceptions_t& ) = default;
  };
  
! cbl_enabled_exceptions_t& cdf_enabled_exceptions();
  
  template <typename T>
  T enabled_exception_match( T beg, T end, ec_type_t type, size_t file ) {
!   cbl_enabled_exception_t input( true, // doesn't matter
                                   type, file );
    auto output = std::find(beg, end, input);
    if( output == end ) {
diff -Nrcpad gcc-15-20250726/libgcobol/config.h.in gcc-15-20250809/libgcobol/config.h.in
*** gcc-15-20250726/libgcobol/config.h.in	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/config.h.in	Sat Aug  9 22:33:00 2025
***************
*** 3,14 ****
--- 3,24 ----
  /* Define to 1 if the target assembler supports thread-local storage. */
  #undef HAVE_CC_TLS
  
+ /* Define to 1 if you have the `clock_gettime' function. */
+ #undef HAVE_CLOCK_GETTIME
+ 
  /* Define to 1 if you have the <complex.h> header file. */
  #undef HAVE_COMPLEX_H
  
+ /* Define to 1 if you have the declaration of `program_invocation_short_name',
+    and to 0 if you don't. */
+ #undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
+ 
  /* Define to 1 if you have the <dlfcn.h> header file. */
  #undef HAVE_DLFCN_H
  
+ /* Define to 1 if you have the <errno.h> header file. */
+ #undef HAVE_ERRNO_H
+ 
  /* Define to 1 if you have the <fenv.h> header file. */
  #undef HAVE_FENV_H
  
***************
*** 21,26 ****
--- 31,39 ----
  /* Define to 1 if you have the <fptrap.h> header file. */
  #undef HAVE_FPTRAP_H
  
+ /* Define to 1 if you have the `getprogname' function. */
+ #undef HAVE_GETPROGNAME
+ 
  /* Define if you have the iconv() function and it works. */
  #undef HAVE_ICONV
  
***************
*** 72,77 ****
--- 85,93 ----
  /* Define to 1 if you have the `strtof128' function. */
  #undef HAVE_STRTOF128
  
+ /* Define to 1 if `tm_zone' is a member of `struct tm'. */
+ #undef HAVE_STRUCT_TM_TM_ZONE
+ 
  /* Define to 1 if you have the <sys/stat.h> header file. */
  #undef HAVE_SYS_STAT_H
  
diff -Nrcpad gcc-15-20250726/libgcobol/configure gcc-15-20250809/libgcobol/configure
*** gcc-15-20250726/libgcobol/configure	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/configure	Sat Aug  9 22:33:00 2025
*************** enable_option_checking
*** 788,793 ****
--- 788,794 ----
  enable_multilib
  enable_maintainer_mode
  enable_silent_rules
+ enable_libgcobol
  enable_version_specific_runtime_libs
  enable_dependency_tracking
  enable_shared
*************** Optional Features:
*** 1438,1443 ****
--- 1439,1445 ----
                            sometimes confusing) to the casual installer
    --enable-silent-rules   less verbose build output (undo: "make V=1")
    --disable-silent-rules  verbose build output (undo: "make V=0")
+   --enable-libgcobol      Enable libgcobol
    --enable-version-specific-runtime-libs
                            Specify that runtime libraries should be installed
                            in a compiler-specific directory
*************** $as_echo "$ac_res" >&6; }
*** 2380,2385 ****
--- 2382,2433 ----
  
  } # ac_fn_cxx_check_header_compile
  
+ # ac_fn_cxx_check_decl LINENO SYMBOL VAR INCLUDES
+ # -----------------------------------------------
+ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+ # accordingly.
+ ac_fn_cxx_check_decl ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   as_decl_name=`echo $2|sed 's/ *(.*//'`
+   as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+ $as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+ if eval \${$3+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ $4
+ int
+ main ()
+ {
+ #ifndef $as_decl_name
+ #ifdef __cplusplus
+   (void) $as_decl_use;
+ #else
+   (void) $as_decl_name;
+ #endif
+ #endif
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_compile "$LINENO"; then :
+   eval "$3=yes"
+ else
+   eval "$3=no"
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ eval ac_res=\$$3
+ 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ 
+ } # ac_fn_cxx_check_decl
+ 
  # ac_fn_cxx_check_func LINENO FUNC VAR
  # ------------------------------------
  # Tests whether FUNC exists, setting the cache variable VAR accordingly
*************** $as_echo "$ac_res" >&6; }
*** 2449,2454 ****
--- 2497,2559 ----
    eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  
  } # ac_fn_cxx_check_func
+ 
+ # ac_fn_cxx_check_member LINENO AGGR MEMBER VAR INCLUDES
+ # ------------------------------------------------------
+ # Tries to find if the field MEMBER exists in type AGGR, after including
+ # INCLUDES, setting cache variable VAR accordingly.
+ ac_fn_cxx_check_member ()
+ {
+   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+ $as_echo_n "checking for $2.$3... " >&6; }
+ if eval \${$4+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ $5
+ int
+ main ()
+ {
+ static $2 ac_aggr;
+ if (ac_aggr.$3)
+ return 0;
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_compile "$LINENO"; then :
+   eval "$4=yes"
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ $5
+ int
+ main ()
+ {
+ static $2 ac_aggr;
+ if (sizeof ac_aggr.$3)
+ return 0;
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_compile "$LINENO"; then :
+   eval "$4=yes"
+ else
+   eval "$4=no"
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ eval ac_res=\$$4
+ 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ 
+ } # ac_fn_cxx_check_member
  cat >config.log <<_ACEOF
  This file contains any messages produced by compilers while
  running configure, to aid debugging if configure makes a mistake.
*************** as_fn_append ac_header_list " fenv.h"
*** 2739,2744 ****
--- 2844,2851 ----
  as_fn_append ac_header_list " fptrap.h"
  as_fn_append ac_header_list " complex.h"
  as_fn_append ac_header_list " stdlib.h"
+ as_fn_append ac_header_list " errno.h"
+ as_fn_append ac_func_list " getprogname"
  as_fn_append ac_func_list " random_r"
  as_fn_append ac_func_list " srandom_r"
  as_fn_append ac_func_list " initstate_r"
*************** END
*** 3618,3623 ****
--- 3725,3740 ----
  fi
  
  
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-libgcobol" >&5
+ $as_echo_n "checking for --enable-libgcobol... " >&6; }
+ # Check whether --enable-libgcobol was given.
+ if test "${enable_libgcobol+set}" = set; then :
+   enableval=$enable_libgcobol;
+ fi
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libgcobol" >&5
+ $as_echo "$enable_libgcobol" >&6; }
+ 
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5
  $as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; }
  # Check whether --enable-version-specific-runtime-libs was given.
*************** else
*** 11693,11699 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11696 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 11810,11816 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11813 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 11799,11805 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11802 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 11916,11922 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11919 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** _ACEOF
*** 16690,16695 ****
--- 16807,16820 ----
  unset LIBGCOBOL_SUPPORTED
  . ${srcdir}/configure.tgt
  
+ # Decide if it's usable.
+ case $LIBGCOBOL_SUPPORTED:$enable_libgcobol in
+ *:no)  use_libgcobol=no  ;;
+ *:yes) use_libgcobol=yes ;;
+ yes:*) use_libgcobol=yes ;;
+ *:*)   use_libgcobol=no  ;;
+ esac
+ 
  # -----------------
  # __int128 support
  # -----------------
*************** fi
*** 16782,16788 ****
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcobol_cv_have_int128" >&5
  $as_echo "$libgcobol_cv_have_int128" >&6; }
  
!  if test "x$LIBGCOBOL_SUPPORTED" = xyes && test "x$libgcobol_cv_have_int128" = xyes; then
    BUILD_LIBGCOBOL_TRUE=
    BUILD_LIBGCOBOL_FALSE='#'
  else
--- 16907,16913 ----
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcobol_cv_have_int128" >&5
  $as_echo "$libgcobol_cv_have_int128" >&6; }
  
!  if test "x$use_libgcobol" = xyes && test "x$libgcobol_cv_have_int128" = xyes; then
    BUILD_LIBGCOBOL_TRUE=
    BUILD_LIBGCOBOL_FALSE='#'
  else
*************** done
*** 16959,16965 ****
  
  
  
! # These are GLIBC
  
  
  
--- 17084,17112 ----
  
  
  
! 
! 
! # Look for a way to represent the program name
! # First, check the GLIBC case
! ac_fn_cxx_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "
! #if HAVE_ERRNO_H
! # define _GNU_SOURCE
! # include <errno.h>
! #endif
! 
! "
! if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes; then :
!   ac_have_decl=1
! else
!   ac_have_decl=0
! fi
! 
! cat >>confdefs.h <<_ACEOF
! #define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME $ac_have_decl
! _ACEOF
! 
! 
! # Check an alternate
  
  
  
*************** done
*** 16979,16984 ****
--- 17126,17136 ----
  
  
  
+ # These are GLIBC
+ 
+ 
+ 
+ 
  
  
  
*************** if test "$ac_res" != no; then :
*** 17123,17128 ****
--- 17275,17333 ----
  fi
  
  
+ # Copied from gcc/configure.ac. 2025-06-05 R.J.Dubner
+ # At least for glibc, clock_gettime is in librt.  But don't pull that
+ # in if it still doesn't give us the function we want.
+ ac_cv_func_clock_gettime=no
+ if test $ac_cv_func_clock_gettime = no; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
+ $as_echo_n "checking for clock_gettime in -lrt... " >&6; }
+ if ${ac_cv_lib_rt_clock_gettime+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+ LIBS="-lrt  $LIBS"
+ if test x$gcc_no_link = xyes; then
+   as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ /* Override any GCC internal prototype to avoid an error.
+    Use char because int might match the return type of a GCC
+    builtin and then its argument prototype would still apply.  */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+ char clock_gettime ();
+ int
+ main ()
+ {
+ return clock_gettime ();
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_link "$LINENO"; then :
+   ac_cv_lib_rt_clock_gettime=yes
+ else
+   ac_cv_lib_rt_clock_gettime=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
+ $as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
+ if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then :
+   LIBS="-lrt $LIBS"
+ 
+ $as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
+ 
+ fi
+ 
+ fi
+ 
  have_iec_60559_libc_support=no
  if test "x$ac_cv_func_strtof128$ac_cv_func_strfromf128" = xyesyes \
     && test "x$libgcobol_have_sinf128$libgcobol_have_cacosf128" = xyesyes; then
*************** $as_echo "#define USE_IEC_60559 1" >>con
*** 17434,17439 ****
--- 17639,17657 ----
  
  
  
+ # struct tm tm_zone is a POSIX.1-2024 addition.
+ ac_fn_cxx_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include <time.h>
+ "
+ if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then :
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_STRUCT_TM_TM_ZONE 1
+ _ACEOF
+ 
+ 
+ fi
+ 
+ 
  if test "${multilib}" = "yes"; then
    multilib_arg="--enable-multilib"
  else
diff -Nrcpad gcc-15-20250726/libgcobol/configure.ac gcc-15-20250809/libgcobol/configure.ac
*** gcc-15-20250726/libgcobol/configure.ac	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/configure.ac	Sat Aug  9 22:33:00 2025
*************** AM_MAINTAINER_MODE
*** 40,45 ****
--- 40,50 ----
  
  AM_INIT_AUTOMAKE([1.15.1 no-define foreign no-dist -Wall -Wno-portability])
  
+ AC_MSG_CHECKING([for --enable-libgcobol])
+ AC_ARG_ENABLE(libgcobol,
+   [AS_HELP_STRING([--enable-libgcobol], [Enable libgcobol])])
+ AC_MSG_RESULT($enable_libgcobol)
+ 
  AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
  AC_ARG_ENABLE(version-specific-runtime-libs,
  AS_HELP_STRING([--enable-version-specific-runtime-libs],
*************** AC_CHECK_SIZEOF([void *])
*** 138,143 ****
--- 143,156 ----
  unset LIBGCOBOL_SUPPORTED
  . ${srcdir}/configure.tgt
  
+ # Decide if it's usable.
+ case $LIBGCOBOL_SUPPORTED:$enable_libgcobol in
+ *:no)  use_libgcobol=no  ;;
+ *:yes) use_libgcobol=yes ;;
+ yes:*) use_libgcobol=yes ;;
+ *:*)   use_libgcobol=no  ;;
+ esac
+ 
  # -----------------
  # __int128 support
  # -----------------
*************** AC_CACHE_CHECK([whether __int128 is supp
*** 164,170 ****
      libgcobol_cv_have_int128=no
  ])])
  
! AM_CONDITIONAL(BUILD_LIBGCOBOL, [test "x$LIBGCOBOL_SUPPORTED" = xyes && test "x$libgcobol_cv_have_int128" = xyes])
  
  # Check if functions are available in libc before adding extra libs.
  AC_SEARCH_LIBS([malloc], [c])
--- 177,183 ----
      libgcobol_cv_have_int128=no
  ])])
  
! AM_CONDITIONAL(BUILD_LIBGCOBOL, [test "x$use_libgcobol" = xyes && test "x$libgcobol_cv_have_int128" = xyes])
  
  # Check if functions are available in libc before adding extra libs.
  AC_SEARCH_LIBS([malloc], [c])
*************** esac
*** 188,194 ****
  AC_SUBST(extra_ldflags_libgcobol)
  
  AC_CHECK_HEADERS_ONCE(floatingpoint.h ieeefp.h fenv.h fptrap.h \
! complex.h stdlib.h)
  
  # These are GLIBC
  AC_CHECK_FUNCS_ONCE(random_r srandom_r initstate_r setstate_r)
--- 201,219 ----
  AC_SUBST(extra_ldflags_libgcobol)
  
  AC_CHECK_HEADERS_ONCE(floatingpoint.h ieeefp.h fenv.h fptrap.h \
! complex.h stdlib.h errno.h)
! 
! # Look for a way to represent the program name
! # First, check the GLIBC case
! AC_CHECK_DECLS([program_invocation_short_name], , ,[
! #if HAVE_ERRNO_H
! # define _GNU_SOURCE
! # include <errno.h>
! #endif
! ])
! 
! # Check an alternate
! AC_CHECK_FUNCS_ONCE(getprogname)
  
  # These are GLIBC
  AC_CHECK_FUNCS_ONCE(random_r srandom_r initstate_r setstate_r)
*************** AC_SEARCH_LIBS([sinf128], [c m], libgcob
*** 207,212 ****
--- 232,248 ----
  libgcobol_have_cacosf128=no
  AC_SEARCH_LIBS([cacosf128], [c m], libgcobol_have_cacosf128=yes)
  
+ # Copied from gcc/configure.ac. 2025-06-05 R.J.Dubner
+ # At least for glibc, clock_gettime is in librt.  But don't pull that
+ # in if it still doesn't give us the function we want.
+ ac_cv_func_clock_gettime=no
+ if test $ac_cv_func_clock_gettime = no; then
+   AC_CHECK_LIB(rt, clock_gettime,
+     [LIBS="-lrt $LIBS"
+      AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
+ 	       [Define to 1 if you have the `clock_gettime' function.])])
+ fi
+ 
  have_iec_60559_libc_support=no
  if test "x$ac_cv_func_strtof128$ac_cv_func_strfromf128" = xyesyes \
     && test "x$libgcobol_have_sinf128$libgcobol_have_cacosf128" = xyesyes; then
*************** elif test "${ENABLE_LIBQUADMATH_SUPPORT}
*** 231,236 ****
--- 267,275 ----
  fi
  LIBGCOBOL_CHECK_FLOAT128
  
+ # struct tm tm_zone is a POSIX.1-2024 addition.
+ AC_CHECK_MEMBERS([struct tm.tm_zone],,,[#include <time.h>])
+ 
  if test "${multilib}" = "yes"; then
    multilib_arg="--enable-multilib"
  else
diff -Nrcpad gcc-15-20250726/libgcobol/constants.cc gcc-15-20250809/libgcobol/constants.cc
*** gcc-15-20250726/libgcobol/constants.cc	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/constants.cc	Sat Aug  9 22:33:00 2025
***************
*** 27,44 ****
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
! #include <ctype.h>
! #include <errno.h>
  #include <fcntl.h>
- #include <math.h>
- #include <fenv.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
  #include <unistd.h>
  #include <algorithm>
  #include <unordered_map>
  
  #include "ec.h"
  #include "io.h"
--- 27,48 ----
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
! 
  #include <fcntl.h>
  #include <unistd.h>
+ 
+ #include <cctype>
+ #include <cerrno>
+ #include <cmath>
+ #include <cfenv>
+ #include <cstdio>
+ #include <cstdlib>
+ #include <cstring>
+ #include <ctime>
+ 
  #include <algorithm>
  #include <unordered_map>
+ #include <vector>
  
  #include "ec.h"
  #include "io.h"
diff -Nrcpad gcc-15-20250726/libgcobol/ec.h gcc-15-20250809/libgcobol/ec.h
*** gcc-15-20250726/libgcobol/ec.h	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/ec.h	Sat Aug  9 22:33:00 2025
***************
*** 33,39 ****
  #define _CBL_EC_H_
  
  #include <set>
- #include <assert.h>
  
  #define  EC_ALL_E 0xFFFFFF00
  
--- 33,38 ----
diff -Nrcpad gcc-15-20250726/libgcobol/exceptl.h gcc-15-20250809/libgcobol/exceptl.h
*** gcc-15-20250726/libgcobol/exceptl.h	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/exceptl.h	Sat Aug  9 22:33:00 2025
*************** extern ec_descr_t *__gg__exception_table
*** 117,256 ****
  
   */
  
- // SymException
- struct cbl_exception_t {
-   size_t program, file;
-   ec_type_t type;
-   cbl_file_mode_t mode;
- };
- 
- 
- struct cbl_declarative_t {
-   enum { files_max = 16 };
-   size_t section; // implies program
-   bool global;
-   ec_type_t type;
-   uint32_t nfile, files[files_max];
-   cbl_file_mode_t mode;
- 
-   cbl_declarative_t( cbl_file_mode_t mode = file_mode_none_e )
-     : section(0), global(false), type(ec_none_e)
-     , nfile(0)
-     , mode(mode)
-   {
-     std::fill(files, files + COUNT_OF(files), 0);
-   }
-   cbl_declarative_t( ec_type_t type )
-     : section(0), global(false), type(type)
-     , nfile(0)
-     , mode(file_mode_none_e)
-   {
-     std::fill(files, files + COUNT_OF(files), 0);
-   }
- 
-   cbl_declarative_t( size_t section, ec_type_t type,
-                      const std::list<size_t>& files,
-                      cbl_file_mode_t mode, bool global = false )
-     : section(section), global(global), type(type)
-     , nfile(files.size())
-     , mode(mode)
-   {
-     assert( files.size() <= COUNT_OF(this->files) );
-     std::fill(this->files, this->files + COUNT_OF(this->files), 0);
-     if( nfile > 0 ) {
-       std::copy( files.begin(), files.end(), this->files );
-     }
-   }
-   cbl_declarative_t( const cbl_declarative_t& that )
-     : section(that.section), global(that.global), type(that.type)
-     , nfile(that.nfile)
-     , mode(that.mode)
-   {
-     std::fill(files, files + COUNT_OF(files), 0);
-     if( nfile > 0 ) {
-       std::copy( that.files, that.files + nfile, this->files );
-     }
-   }
- 
-   /*
-    * Sort file names before file modes, and file modes before non-IO.
-    */
-   bool operator<( const cbl_declarative_t& that ) const {
-     // file name declaratives first, in section order
-     if( nfile != 0 ) {
-       if( that.nfile != 0 ) return section < that.section;
-       return true;
-     }
-     // file mode declaratives between file name declaratives and non-IO
-     if( mode != file_mode_none_e ) {
-       if( that.nfile != 0 ) return false;
-       if( that.mode == file_mode_none_e ) return true;
-       return section < that.section;
-     }
-     // all others by section, after names and modes
-     if( that.nfile != 0 ) return false;
-     if( that.mode != file_mode_none_e ) return false;
-     return section < that.section;
-   }
- 
-   // TRUE if there are no files to match, or the provided file is in the list.
-   bool match_file( size_t file ) const {
-     static const auto pend = files + nfile;
- 
-     return nfile == 0 || pend != std::find(files, files + nfile, file);
-   }
- 
-   // USE Format 1 names a file mode, or at least one file, and not an EC.
-   bool is_format_1() const {
-     assert(type != ec_none_e || nfile > 0 || mode != file_mode_none_e);
-     return nfile > 0 || mode != file_mode_none_e;
-   }
- };
- 
- 
- /*
-  * ec_status_t represents the runtime exception condition status for
-  * any statement.  Prior to execution, the generated code
-  * clears "type", and sets "source_file" and "lineno".
-  *
-  * If the statement includes some kind of ON ERROR
-  * clause, the generated code sets "handled" to the exception type
-  * handled by that clause, else it sets "handled" to ec_none_e.
-  *
-  * Post-execution, the generated code sets "type" to the appropriate
-  * exception, if any.  The match-exception logic compares any raised
-  * exception to the set of declaratives, and returns a symbol-table
-  * index to the matching declarative, if any.
-  */
- class ec_status_t {
-   char msg[132];
- public:
-   ec_type_t type, handled;
-   cbl_name_t statement; // e.g., "ADD"
-   size_t lineno;
-   const char *source_file;
- 
-   ec_status_t()
-     : type(ec_none_e)
-     , handled(ec_none_e)
-     , lineno(0)
-     , source_file(NULL)
-   {
-     msg[0] = statement[0] = '\0';
-   }
- 
-   ec_status_t& update();
-   ec_status_t& enable( unsigned int mask );
- 
-   const char * exception_location() {
-     snprintf(msg, sizeof(msg), "%s:%zu: '%s'", source_file, lineno, statement);
-     return msg;
-   }
-   ec_type_t unhandled() const {
-     return ec_type_t(static_cast<unsigned int>(type)
-                      &
-                      ~static_cast<unsigned int>(handled));
-   }
- };
- 
  #endif
--- 117,120 ----
diff -Nrcpad gcc-15-20250726/libgcobol/gcobolio.h gcc-15-20250809/libgcobol/gcobolio.h
*** gcc-15-20250726/libgcobol/gcobolio.h	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/gcobolio.h	Sat Aug  9 22:33:00 2025
***************
*** 30,36 ****
  #ifndef GCOBOLIO_H_
  #define GCOBOLIO_H_
  
! #include <stdio.h>
  #include <map>
  #include <unordered_map>
  #include <vector>
--- 30,37 ----
  #ifndef GCOBOLIO_H_
  #define GCOBOLIO_H_
  
! #include <cstdio>
! 
  #include <map>
  #include <unordered_map>
  #include <vector>
*************** typedef struct cblc_field_t
*** 55,61 ****
      struct cblc_field_t *parent;// This field's immediate parent field
      size_t occurs_lower;        // non-zero for a table
      size_t occurs_upper;        // non-zero for a table
!     size_t attr;                // See cbl_field_attr_t
      signed char type;           // A one-byte copy of cbl_field_type_t
      signed char level;          // This variable's level in the naming heirarchy
      signed char digits;         // Digits specified in PIC string; e.g. 5 for 99v999
--- 56,62 ----
      struct cblc_field_t *parent;// This field's immediate parent field
      size_t occurs_lower;        // non-zero for a table
      size_t occurs_upper;        // non-zero for a table
!     unsigned long long attr;    // See cbl_field_attr_t
      signed char type;           // A one-byte copy of cbl_field_type_t
      signed char level;          // This variable's level in the naming heirarchy
      signed char digits;         // Digits specified in PIC string; e.g. 5 for 99v999
*************** typedef struct cblc_file_t
*** 96,101 ****
--- 97,103 ----
      {
      // This structure must match the code in structs.cc
      char                *name;             // This is the name of the structure; might be the name of an environment variable
+     size_t               symbol_table_index;  // of the related cbl_field_t structure
      char                *filename;         // The name of the file to be opened
      FILE                *file_pointer;     // The FILE *pointer
      cblc_field_t        *default_record;   // The record_area
diff -Nrcpad gcc-15-20250726/libgcobol/gfileio.cc gcc-15-20250809/libgcobol/gfileio.cc
*** gcc-15-20250726/libgcobol/gfileio.cc	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/gfileio.cc	Sat Aug  9 22:33:00 2025
***************
*** 27,44 ****
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
! #include <ctype.h>
! #include <ctype.h>
  #include <err.h>
- #include <errno.h>
  #include <fcntl.h>
- #include <math.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
  #include <unistd.h>
  #include <algorithm>
  
  #include "config.h"
  #include "libgcobol-fp.h"
--- 27,47 ----
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
! 
  #include <err.h>
  #include <fcntl.h>
  #include <unistd.h>
+ 
+ #include <cctype>
+ #include <cerrno>
+ #include <cmath>
+ #include <cstdio>
+ #include <cstdlib>
+ #include <cstring>
+ #include <ctime>
+ 
  #include <algorithm>
+ #include <vector>
  
  #include "config.h"
  #include "libgcobol-fp.h"
*************** handle_errno(cblc_file_t *file, const ch
*** 188,198 ****
  
  static
  char *
! get_filename( cblc_file_t *file,
                int is_quoted)
    {
    static size_t fname_size = MINIMUM_ALLOCATION_SIZE;
!   static char *fname = (char *)malloc(MINIMUM_ALLOCATION_SIZE);
    fname = internal_to_console(&fname,
                                &fname_size,
                                file->filename,
--- 191,202 ----
  
  static
  char *
! get_filename( const cblc_file_t *file,
                int is_quoted)
    {
    static size_t fname_size = MINIMUM_ALLOCATION_SIZE;
!   static char *fname = static_cast<char *>(malloc(MINIMUM_ALLOCATION_SIZE));
!   massert(fname);
    fname = internal_to_console(&fname,
                                &fname_size,
                                file->filename,
*************** get_filename( cblc_file_t *file,
*** 202,215 ****
      {
      // We have been given something that might be the name of an
      // environment variable that contains the filename:
!     char *p_from_environment = getenv(fname);
      if( p_from_environment )
        {
        if( strlen(p_from_environment)+1 > fname_size )
          {
          fname_size = strlen(p_from_environment)+1;
          free(fname);
!         fname = (char *)malloc(fname_size);
          }
        strcpy(fname, p_from_environment);
        }
--- 206,220 ----
      {
      // We have been given something that might be the name of an
      // environment variable that contains the filename:
!     const char *p_from_environment = getenv(fname);
      if( p_from_environment )
        {
        if( strlen(p_from_environment)+1 > fname_size )
          {
          fname_size = strlen(p_from_environment)+1;
          free(fname);
!         fname = static_cast<char *>(malloc(fname_size));
!         massert(fname);
          }
        strcpy(fname, p_from_environment);
        }
*************** establish_status(cblc_file_t *file, long
*** 253,259 ****
                                    0,
                                    truncation_e,
                                    NULL);
!   // Set the EC-EXCEPTION accoring the status code
    __gg__set_exception_file(file);
    }
  
--- 258,264 ----
                                    0,
                                    truncation_e,
                                    NULL);
!   // Set the EC-EXCEPTION according to the status code
    __gg__set_exception_file(file);
    }
  
*************** __gg__set_user_status(cblc_field_t *usta
*** 269,275 ****
    }
  
  static long
! max_value(cblc_field_t *key)
    {
    long retval;
    if( key->digits )
--- 274,280 ----
    }
  
  static long
! max_value(const cblc_field_t *key)
    {
    long retval;
    if( key->digits )
*************** void
*** 299,304 ****
--- 304,310 ----
  __gg__file_init(
    cblc_file_t   *file,
    const char    *name,
+   size_t         symbol_table_index,
    cblc_field_t **keys,
    int           *key_numbers,
    int           *uniques,
*************** __gg__file_init(
*** 319,324 ****
--- 325,331 ----
    if( !(file->flags & file_flag_initialized_e) )
      {
      file->name                = strdup(name);
+     file->symbol_table_index  = symbol_table_index;
      file->filename            = NULL ;
      file->file_pointer        = NULL ;
      file->keys                = keys;
*************** relative_file_delete_varying(cblc_file_t
*** 532,538 ****
  
    size_t payload_length;
  
!   unsigned char *stash = (unsigned char *)malloc(file->default_record->capacity);
    memcpy(stash, file->default_record->data, file->default_record->capacity);
    long starting_pos = ftell(file->file_pointer);
  
--- 539,546 ----
  
    size_t payload_length;
  
!   unsigned char *stash = static_cast<unsigned char *>(malloc(file->default_record->capacity));
!   massert(stash);
    memcpy(stash, file->default_record->data, file->default_record->capacity);
    long starting_pos = ftell(file->file_pointer);
  
*************** done:
*** 632,638 ****
    memcpy(file->default_record->data, stash, file->default_record->capacity);
    free(stash);
    fseek(file->file_pointer, starting_pos, SEEK_SET);
! 
    establish_status(file, -1);
    }
  
--- 640,646 ----
    memcpy(file->default_record->data, stash, file->default_record->capacity);
    free(stash);
    fseek(file->file_pointer, starting_pos, SEEK_SET);
!   file->prior_op = file_op_delete;
    establish_status(file, -1);
    }
  
*************** relative_file_delete(cblc_file_t *file,
*** 649,655 ****
  
    char record_marker;
  
!   unsigned char *stash = (unsigned char *)malloc(file->default_record->capacity);
    memcpy(stash, file->default_record->data, file->default_record->capacity);
  
    long starting_pos = ftell(file->file_pointer);
--- 657,664 ----
  
    char record_marker;
  
!   unsigned char *stash = static_cast<unsigned char *>(malloc(file->default_record->capacity));
!   massert(stash);
    memcpy(stash, file->default_record->data, file->default_record->capacity);
  
    long starting_pos = ftell(file->file_pointer);
*************** done:
*** 741,746 ****
--- 750,756 ----
    memcpy(file->default_record->data, stash, file->default_record->capacity);
    free(stash);
    fseek(file->file_pointer, starting_pos, SEEK_SET);
+   file->prior_op = file_op_delete;
    establish_status(file, -1);
    }
  
*************** read_an_indexed_record( cblc_file_t *fil
*** 823,829 ****
      goto done;
      }
  
!   record_length  = ach[0]<<8;
    record_length += ach[1];
    if(ach[2] != 0)
      {
--- 833,839 ----
      goto done;
      }
  
!   record_length  = static_cast<long>(ach[0])<<8;
    record_length += ach[1];
    if(ach[2] != 0)
      {
*************** position_state_preserve(cblc_file_t *fil
*** 900,906 ****
    }
  
  static void
! position_state_restore(cblc_file_t *file, position_state_t &state)
    {
    file->recent_key = state.recent_key;
    fseek(file->file_pointer, state.starting_position, SEEK_SET);
--- 910,916 ----
    }
  
  static void
! position_state_restore(cblc_file_t *file, const position_state_t &state)
    {
    file->recent_key = state.recent_key;
    fseek(file->file_pointer, state.starting_position, SEEK_SET);
*************** indexed_file_delete(cblc_file_t *file, b
*** 967,973 ****
    // and the record area itself are unchanged by the delete operation.
  
    // So, we save the current record area:
!   stash = (unsigned char *)malloc(file->record_area_max);
    memcpy(stash, file->default_record->data, file->record_area_max);
  
    // And the position state of our file
--- 977,984 ----
    // and the record area itself are unchanged by the delete operation.
  
    // So, we save the current record area:
!   stash = static_cast<unsigned char *>(malloc(file->record_area_max));
!   massert(stash);
    memcpy(stash, file->default_record->data, file->record_area_max);
  
    // And the position state of our file
*************** indexed_file_delete(cblc_file_t *file, b
*** 1045,1052 ****
        // we find one, we check to see if the keys match.  If the keys don't
        // match, then we have to remove the existing one from the index.
  
-       std::vector<unsigned char> the_key
-                                      = file_indexed_make_key(file, key_number);
        bool deleting = true;
        while(deleting)
          {
--- 1056,1061 ----
*************** indexed_file_delete(cblc_file_t *file, b
*** 1063,1068 ****
--- 1072,1078 ----
              deleting = true;
              break;
              }
+ 
            it++;
            }
          }
*************** done:
*** 1095,1103 ****
--- 1105,1115 ----
      memcpy(file->default_record->data, stash, file->record_area_min);
      free(stash);
      stash = NULL;
+     file->prior_op = file_op_delete;
      position_state_restore(file, position_state);
      }
  
+   file->prior_op = file_op_delete;
    establish_status(file, -1);
    }
  
*************** __io__file_delete(cblc_file_t *file, boo
*** 1124,1130 ****
      {
      file->flags |= file_flag_existed_e;
      }
-   file->prior_op = file_op_delete;
    }
  
  static void
--- 1136,1141 ----
*************** indexed_file_start( cblc_file_t *file,
*** 1227,1233 ****
            file->io_status = FsErrno;
            }
          }
!       else if( result < 0 )
          {
          // The index is less than the key.
          if(    relop == lt_op
--- 1238,1244 ----
            file->io_status = FsErrno;
            }
          }
!       else // if( result < 0 )
          {
          // The index is less than the key.
          if(    relop == lt_op
*************** done:
*** 1529,1540 ****
      file->flags |= file_flag_existed_e;
      }
  
    establish_status(file, fpos);
    if( file->io_status < FhNotOkay )
      {
      file->flags |= file_flag_existed_e;
      }
-   file->prior_op = file_op_start;
    }
  
  static void
--- 1540,1551 ----
      file->flags |= file_flag_existed_e;
      }
  
+   file->prior_op = file_op_start;
    establish_status(file, fpos);
    if( file->io_status < FhNotOkay )
      {
      file->flags |= file_flag_existed_e;
      }
    }
  
  static void
*************** sequential_file_rewrite( cblc_file_t *fi
*** 1649,1655 ****
  
    if( file->record_area_min != file->record_area_max )
      {
!     unsigned char preamble[4] =
        {
        (unsigned char)(bytes_to_write>>8),
        (unsigned char)(bytes_to_write),
--- 1660,1666 ----
  
    if( file->record_area_min != file->record_area_max )
      {
!     const unsigned char preamble[4] =
        {
        (unsigned char)(bytes_to_write>>8),
        (unsigned char)(bytes_to_write),
*************** sequential_file_rewrite( cblc_file_t *fi
*** 1679,1688 ****
  done:
    // Per the standard, return the file location pointer back to whence it came:
    fseek(file->file_pointer, starting_position, SEEK_SET);
!   if( handle_ferror(file, __func__, "fseek() error") )
!     {
!     goto done;
!     }
    establish_status(file, starting_position);
    }
  
--- 1690,1697 ----
  done:
    // Per the standard, return the file location pointer back to whence it came:
    fseek(file->file_pointer, starting_position, SEEK_SET);
!   handle_ferror(file, __func__, "fseek() error");
!   file->prior_op = file_op_rewrite;
    establish_status(file, starting_position);
    }
  
*************** relative_file_rewrite_varying( cblc_file
*** 1798,1807 ****
  done:
    // Per the standard, return the file location pointer back to whence it came:
    fseek(file->file_pointer, starting_position, SEEK_SET);
!   if( handle_ferror(file, __func__, "fseek() error") )
!     {
!     goto done;
!     }
    establish_status(file, starting_position);
    }
  
--- 1807,1814 ----
  done:
    // Per the standard, return the file location pointer back to whence it came:
    fseek(file->file_pointer, starting_position, SEEK_SET);
!   handle_ferror(file, __func__, "fseek() error");
!   file->prior_op = file_op_rewrite;
    establish_status(file, starting_position);
    }
  
*************** relative_file_rewrite( cblc_file_t *file
*** 1901,1910 ****
  done:
    // Per the standard, return the file location pointer back to whence it came:
    fseek(file->file_pointer, starting_position, SEEK_SET);
!   if( handle_ferror(file, __func__, "fseek() error") )
!     {
!     goto done;
!     }
    establish_status(file, starting_position);
    }
  
--- 1908,1915 ----
  done:
    // Per the standard, return the file location pointer back to whence it came:
    fseek(file->file_pointer, starting_position, SEEK_SET);
!   handle_ferror(file, __func__, "fseek() error");
!   file->prior_op = file_op_rewrite;
    establish_status(file, starting_position);
    }
  
*************** done:
*** 2173,2179 ****
      {
      position_state_restore(file, position_state);
      }
! 
    establish_status(file, fpos);
    file->prior_read_location = -1;
    }
--- 2178,2184 ----
      {
      position_state_restore(file, position_state);
      }
!   file->prior_op = file_op_rewrite;
    establish_status(file, fpos);
    file->prior_read_location = -1;
    }
*************** __io__file_rewrite(cblc_file_t *file, si
*** 2204,2215 ****
      {
      file->flags |= file_flag_existed_e;
      }
-   file->prior_op = file_op_rewrite;
    }
  
  static void
  relative_file_write_varying(cblc_file_t    *file,
!                             unsigned char  *location,
                              size_t          length,
                              bool            is_random)
    {
--- 2209,2219 ----
      {
      file->flags |= file_flag_existed_e;
      }
    }
  
  static void
  relative_file_write_varying(cblc_file_t    *file,
!                       const unsigned char  *location,
                              size_t          length,
                              bool            is_random)
    {
*************** relative_file_write_varying(cblc_file_t
*** 2352,2363 ****
      }
  
  done:
    establish_status(file, -1);
    }
  
  static void
  relative_file_write(cblc_file_t    *file,
!                     unsigned char  *location,
                      size_t          length,
                      bool            is_random)
    {
--- 2356,2368 ----
      }
  
  done:
+   file->prior_op = file_op_write;
    establish_status(file, -1);
    }
  
  static void
  relative_file_write(cblc_file_t    *file,
!               const unsigned char  *location,
                      size_t          length,
                      bool            is_random)
    {
*************** relative_file_write(cblc_file_t    *file
*** 2372,2378 ****
    file->io_status = FsErrno;
  
    long necessary_file_size;
!   unsigned char achPostamble[] = {internal_cr, internal_newline};
  
    relative_file_parameters rfp;
  
--- 2377,2383 ----
    file->io_status = FsErrno;
  
    long necessary_file_size;
!   const unsigned char achPostamble[] = {internal_cr, internal_newline};
  
    relative_file_parameters rfp;
  
*************** relative_file_write(cblc_file_t    *file
*** 2485,2496 ****
      }
  
  done:
    establish_status(file, -1);
    }
  
  static void
  sequential_file_write(cblc_file_t    *file,
!                       unsigned char  *location,
                        size_t          length,
                        int             after,
                        int             lines)
--- 2490,2502 ----
      }
  
  done:
+   file->prior_op = file_op_write;
    establish_status(file, -1);
    }
  
  static void
  sequential_file_write(cblc_file_t    *file,
!                 const unsigned char  *location,
                        size_t          length,
                        int             after,
                        int             lines)
*************** sequential_file_write(cblc_file_t    *fi
*** 2606,2612 ****
            {
            // Because of the min/max mismatch, we require a preamble:
            // The first two bytes are the big-endian character count
!           unsigned char preamble[4] =
              {
              (unsigned char)(characters_to_write>>8),
              (unsigned char)(characters_to_write),
--- 2612,2618 ----
            {
            // Because of the min/max mismatch, we require a preamble:
            // The first two bytes are the big-endian character count
!           const unsigned char preamble[4] =
              {
              (unsigned char)(characters_to_write>>8),
              (unsigned char)(characters_to_write),
*************** sequential_file_write(cblc_file_t    *fi
*** 2672,2683 ****
      }
  
  done:
    establish_status(file, -1);
    }
  
  static void
  indexed_file_write( cblc_file_t    *file,
!                     unsigned char  *location,
                      size_t          length,
                      bool            is_random)
    {
--- 2678,2690 ----
      }
  
  done:
+   file->prior_op = file_op_write;
    establish_status(file, -1);
    }
  
  static void
  indexed_file_write( cblc_file_t    *file,
!               const unsigned char  *location,
                      size_t          length,
                      bool            is_random)
    {
*************** indexed_file_write( cblc_file_t    *file
*** 2748,2760 ****
      // We are allowed to do the write, but only if there will be no key
      // violations as a result:
  
!     for(size_t  key_number=1;
!                 key_number<file->supplemental->indexes.size();
!                 key_number++)
        {
!       if( file->supplemental->uniques[key_number] )
          {
!         long record_position = file_indexed_first_position(file, key_number);
          if( record_position != -1 )
            {
            // No can do, because we already have a unique key with that value
--- 2755,2767 ----
      // We are allowed to do the write, but only if there will be no key
      // violations as a result:
  
!     for(size_t  keynum=1;
!                 keynum<file->supplemental->indexes.size();
!                 keynum++)
        {
!       if( file->supplemental->uniques[keynum] )
          {
!         long record_position = file_indexed_first_position(file, keynum);
          if( record_position != -1 )
            {
            // No can do, because we already have a unique key with that value
*************** indexed_file_write( cblc_file_t    *file
*** 2839,2850 ****
    file_indexed_update_indices(file, position_to_write);
  
  done:
    establish_status(file, -1);
    }
  
  static void
  __io__file_write(   cblc_file_t    *file,
!                     unsigned char  *location,
                      size_t          length,
                      int             after,
                      int             lines,
--- 2846,2858 ----
    file_indexed_update_indices(file, position_to_write);
  
  done:
+   file->prior_op = file_op_write;
    establish_status(file, -1);
    }
  
  static void
  __io__file_write(   cblc_file_t    *file,
!               const unsigned char  *location,
                      size_t          length,
                      int             after,
                      int             lines,
*************** __io__file_write(   cblc_file_t    *file
*** 2925,2936 ****
        break;
      }
  done:
    establish_status(file, -1);
    if( file->io_status < FhNotOkay )
      {
      file->flags |= file_flag_existed_e;
      }
-   file->prior_op = file_op_write;
    }
  
  static void
--- 2933,2944 ----
        break;
      }
  done:
+   file->prior_op = file_op_write;
    establish_status(file, -1);
    if( file->io_status < FhNotOkay )
      {
      file->flags |= file_flag_existed_e;
      }
    }
  
  static void
*************** line_sequential_file_read(  cblc_file_t
*** 2978,2984 ****
        {
        break;
        }
!     if( ch == file->delimiter || ch == EOF )
        {
        hit_eof = true;
        clearerr(file->file_pointer);
--- 2986,2992 ----
        {
        break;
        }
!     if( ch == EOF )
        {
        hit_eof = true;
        clearerr(file->file_pointer);
*************** line_sequential_file_read(  cblc_file_t
*** 3074,3079 ****
--- 3082,3088 ----
                                      NULL);
      }
  done:
+   file->prior_op = file_op_read;
    establish_status(file, fpos);
    }
  
*************** sequential_file_read(  cblc_file_t  *fil
*** 3186,3191 ****
--- 3195,3201 ----
                                      NULL);
      }
  done:
+   file->prior_op = file_op_read;
    establish_status(file, fpos);
    return characters_read;
    }
*************** done:
*** 3373,3378 ****
--- 3383,3389 ----
                                      truncation_e,
                                      NULL);
      }
+   file->prior_op = file_op_read;
    establish_status(file, fpos);
    }
  
*************** done:
*** 3571,3576 ****
--- 3582,3588 ----
                                      truncation_e,
                                      NULL);
      }
+   file->prior_op = file_op_read;
    establish_status(file, fpos);
    }
  
*************** indexed_file_read(  cblc_file_t  *file,
*** 3638,3643 ****
--- 3650,3656 ----
        goto done;
        }
  
+     // cppcheck-suppress derefInvalidIteratorRedundantCheck
      fpos = file_index->current_iterator->second;
  
      if( file_index->current_iterator == file_index->key_to_position.end() )
*************** indexed_file_read(  cblc_file_t  *file,
*** 3719,3724 ****
--- 3732,3738 ----
  
      // We are ready to proceed
  
+     // cppcheck-suppress derefInvalidIteratorRedundantCheck
      fpos = file_index->current_iterator->second;
      if( file_index->current_iterator == file_index->key_to_position.end() )
        {
*************** done:
*** 3764,3769 ****
--- 3778,3784 ----
                                      truncation_e,
                                      NULL);
      }
+   file->prior_op = file_op_read;
    establish_status(file, fpos);
    }
  
*************** __io__file_read(cblc_file_t *file,
*** 3792,3797 ****
--- 3807,3813 ----
          {
          file->io_status = FsReadError; // "46"
          }
+       file->prior_op = file_op_read;
        establish_status(file, -1);
        return;
        }
*************** __io__file_read(cblc_file_t *file,
*** 3810,3821 ****
--- 3826,3839 ----
            {
            file->io_status = FsReadError; // "46"
            }
+         file->prior_op = file_op_read;
          establish_status(file, -1);
          }
        else
          {
          // This is a format 2 read
          file->io_status = FsNotFound; // "23"
+         file->prior_op = file_op_read;
          establish_status(file, -1);
          }
        return;
*************** __io__file_read(cblc_file_t *file,
*** 3826,3831 ****
--- 3844,3850 ----
      {
      // Attempting to read a file that isn't open
      file->io_status = FsReadNotOpen;    // "47"
+     file->prior_op = file_op_read;
      establish_status(file, -1);
      return;
      }
*************** __io__file_read(cblc_file_t *file,
*** 3834,3839 ****
--- 3853,3859 ----
      {
      // The file is open, but not in INPUT or I-O mode:
      file->io_status = FsReadNotOpen;    // "47"
+     file->prior_op = file_op_read;
      establish_status(file, -1);
      return;
      }
*************** __io__file_read(cblc_file_t *file,
*** 3876,3882 ****
      {
      file->flags |= file_flag_existed_e;
      }
-   file->prior_op = file_op_read;
    }
  
  static void
--- 3896,3901 ----
*************** file_indexed_open(cblc_file_t *file)
*** 3908,3914 ****
      {
      if( file->key_numbers[index] != current_key_number )
        {
-       file_index_t file_index;
        file->supplemental->indexes.push_back(file_index);
        current_key_number = file->key_numbers[index];
        file->supplemental->uniques.push_back(file->uniques[index]);
--- 3927,3932 ----
*************** file_indexed_open(cblc_file_t *file)
*** 3938,3944 ****
          // We need to open the file for reading, and build the
          // maps for each index:
          static size_t fname_size = MINIMUM_ALLOCATION_SIZE;
!         static char *fname = (char *)malloc(fname_size);
  
          internal_to_console(&fname,
                              &fname_size,
--- 3956,3963 ----
          // We need to open the file for reading, and build the
          // maps for each index:
          static size_t fname_size = MINIMUM_ALLOCATION_SIZE;
!         static char *fname = static_cast<char *>(malloc(fname_size));
!         massert(fname);
  
          internal_to_console(&fname,
                              &fname_size,
*************** file_indexed_open(cblc_file_t *file)
*** 3955,3961 ****
            }
  
          // Stash the existing record area:
!         stash = (unsigned char *)malloc(file->record_area_max);
          memcpy( stash,
                  file->default_record->data,
                  file->record_area_max);
--- 3974,3981 ----
            }
  
          // Stash the existing record area:
!         stash = static_cast<unsigned char *>(malloc(file->record_area_max));
!         massert(stash);
          memcpy( stash,
                  file->default_record->data,
                  file->record_area_max);
*************** __gg__file_reopen(cblc_file_t *file, int
*** 4097,4103 ****
        }
  
      static size_t fname_size = MINIMUM_ALLOCATION_SIZE;
!     static char *fname = (char *)malloc(fname_size);
      internal_to_console(&fname,
                          &fname_size,
                          file->filename,
--- 4117,4124 ----
        }
  
      static size_t fname_size = MINIMUM_ALLOCATION_SIZE;
!     static char *fname = static_cast<char *>(malloc(fname_size));
!     massert(fname)
      internal_to_console(&fname,
                          &fname_size,
                          file->filename,
*************** __io__file_open(cblc_file_t *file,
*** 4327,4334 ****
  
      __gg__file_reopen(file, mode_char);
      }
-   establish_status(file, -1);
    file->prior_op = file_op_open;
    }
  
  static void
--- 4348,4355 ----
  
      __gg__file_reopen(file, mode_char);
      }
    file->prior_op = file_op_open;
+   establish_status(file, -1);
    }
  
  static void
*************** __io__file_close( cblc_file_t *file, int
*** 4387,4394 ****
    file->filename = NULL;
  
    done:
-   establish_status(file, fpos);
    file->prior_op = file_op_close;
    }
  
  static cblc_file_t *stashed;
--- 4408,4415 ----
    file->filename = NULL;
  
    done:
    file->prior_op = file_op_close;
+   establish_status(file, fpos);
    }
  
  static cblc_file_t *stashed;
*************** public:
*** 4451,4457 ****
    typedef void (read_t)( cblc_file_t *file,
                           int where );
    typedef void (write_t)( cblc_file_t *file,
!                           unsigned char  *location,
                            size_t length,
                            int after,
                            int lines,
--- 4472,4478 ----
    typedef void (read_t)( cblc_file_t *file,
                           int where );
    typedef void (write_t)( cblc_file_t *file,
!                           const unsigned char  *location,
                            size_t length,
                            int after,
                            int lines,
diff -Nrcpad gcc-15-20250726/libgcobol/gmath.cc gcc-15-20250809/libgcobol/gmath.cc
*** gcc-15-20250726/libgcobol/gmath.cc	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/gmath.cc	Sat Aug  9 22:33:00 2025
***************
*** 27,43 ****
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
! #include <ctype.h>
! #include <errno.h>
  #include <fcntl.h>
- #include <math.h>
- #include <fenv.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
  #include <unistd.h>
  #include <algorithm>
  
  #include "config.h"
  #include "libgcobol-fp.h"
--- 27,47 ----
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
! 
  #include <fcntl.h>
  #include <unistd.h>
+ 
+ #include <cctype>
+ #include <cerrno>
+ #include <cmath>
+ #include <cfenv>
+ #include <cstdio>
+ #include <cstdlib>
+ #include <cstring>
+ #include <ctime>
+ 
  #include <algorithm>
+ #include <vector>
  
  #include "config.h"
  #include "libgcobol-fp.h"
***************
*** 47,53 ****
  #include "io.h"
  #include "gcobolio.h"
  #include "libgcobol.h"
- #include "common-defs.h"
  #include "gmath.h"
  #include "gcobolio.h"
  
--- 51,56 ----
*************** conditional_stash(  cblc_field_t *destin
*** 85,91 ****
      // This is slightly more complex, because in the event of a
      // SIZE ERROR. we need to leave the original value untouched
  
!     unsigned char *stash = (unsigned char *)malloc(destination_s);
      memcpy(stash, destination->data+destination_o, destination_s);
  
      __gg__int128_to_qualified_field(destination,
--- 88,95 ----
      // This is slightly more complex, because in the event of a
      // SIZE ERROR. we need to leave the original value untouched
  
!     unsigned char *stash = static_cast<unsigned char *>(malloc(destination_s));
!     massert(stash);
      memcpy(stash, destination->data+destination_o, destination_s);
  
      __gg__int128_to_qualified_field(destination,
*************** conditional_stash(  cblc_field_t *destin
*** 129,135 ****
      {
      // This is slightly more complex, because in the event of a
      // SIZE ERROR. we need to leave the original value untouched
!     unsigned char *stash = (unsigned char *)malloc(destination_s);
      memcpy(stash, destination->data+destination_o, destination_s);
      __gg__float128_to_qualified_field(destination,
                                        destination_o,
--- 133,141 ----
      {
      // This is slightly more complex, because in the event of a
      // SIZE ERROR. we need to leave the original value untouched
!     assert(destination_s);
!     unsigned char *stash = static_cast<unsigned char *>(malloc(destination_s));
!     massert(stash);
      memcpy(stash, destination->data+destination_o, destination_s);
      __gg__float128_to_qualified_field(destination,
                                        destination_o,
*************** __gg__pow(  cbl_arith_format_t,
*** 253,272 ****
              size_t,
              size_t,
              size_t,
!             cbl_round_t  *rounded,
              int           on_error_flag,
              int          *compute_error
              )
    {
!   cblc_field_t **A  = __gg__treeplet_1f;
!   size_t       *A_o = __gg__treeplet_1o;
!   size_t       *A_s = __gg__treeplet_1s;
!   cblc_field_t **B  = __gg__treeplet_2f;
!   size_t       *B_o = __gg__treeplet_2o;
!   size_t       *B_s = __gg__treeplet_2s;
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    GCOB_FP128 avalue = __gg__float128_from_qualified_field(A[0], A_o[0], A_s[0]);
    GCOB_FP128 bvalue = __gg__float128_from_qualified_field(B[0], B_o[0], B_s[0]);
--- 259,278 ----
              size_t,
              size_t,
              size_t,
!       const cbl_round_t  *rounded,
              int           on_error_flag,
              int          *compute_error
              )
    {
!         cblc_field_t **A  = __gg__treeplet_1f;
!   const size_t       *A_o = __gg__treeplet_1o;
!   const size_t       *A_s = __gg__treeplet_1s;
!         cblc_field_t **B  = __gg__treeplet_2f;
!   const size_t       *B_o = __gg__treeplet_2o;
!   const size_t       *B_s = __gg__treeplet_2s;
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    GCOB_FP128 avalue = __gg__float128_from_qualified_field(A[0], A_o[0], A_s[0]);
    GCOB_FP128 bvalue = __gg__float128_from_qualified_field(B[0], B_o[0], B_s[0]);
*************** multiply_int256_by_int64(int256 &product
*** 365,372 ****
    for(int i=0; i<4; i++)
      {
      uint128 temp = (uint128)product.i64[i] * multiplier;
!     product.i64[i] = *(uint64_t *)(&temp);
!     overflows[i+1] = *(uint64_t *)((uint8_t *)(&temp) + 8);
      }
  
    for(int i=1; i<4; i++)
--- 371,378 ----
    for(int i=0; i<4; i++)
      {
      uint128 temp = (uint128)product.i64[i] * multiplier;
!     product.i64[i] = *PTRCAST(uint64_t, &temp);
!     overflows[i+1] = *PTRCAST(uint64_t, PTRCAST(uint8_t, &temp) + 8);
      }
  
    for(int i=1; i<4; i++)
*************** multiply_int256_by_int64(int256 &product
*** 383,389 ****
    }
  
  static int
! add_int256_to_int256(int256 &sum, const int256 addend)
    {
    uint128 overflows[3] = {};
    for(int i=0; i<2; i++)
--- 389,395 ----
    }
  
  static int
! add_int256_to_int256(int256 &sum, const int256 &addend)
    {
    uint128 overflows[3] = {};
    for(int i=0; i<2; i++)
*************** divide_int256_by_int64(int256 &val, uint
*** 448,457 ****
    for( int i=3; i>=0; i-- )
      {
      // Left shift temp 64 bits:
!     *(uint64_t *)(((uint8_t *)&temp)+8) = *(uint64_t *)(((uint8_t *)&temp)+0);
  
      // Put the high digit of val into the bottom of temp
!     *(uint64_t *)(((uint8_t *)&temp)+0) = val.i64[i];
  
      // Divide that combinary by divisor to get the new digits
      val.i64[i] = temp / divisor;
--- 454,464 ----
    for( int i=3; i>=0; i-- )
      {
      // Left shift temp 64 bits:
!     *PTRCAST(uint64_t, ((PTRCAST(uint8_t, &temp))+8))
!                           = *PTRCAST(uint64_t, ((PTRCAST(uint8_t, &temp))+0));
  
      // Put the high digit of val into the bottom of temp
!     *PTRCAST(uint64_t, ((PTRCAST(uint8_t, &temp))+0)) = val.i64[i];
  
      // Divide that combinary by divisor to get the new digits
      val.i64[i] = temp / divisor;
*************** squeeze_int256(int256 &val, int &rdigits
*** 466,472 ****
    {
    int overflow = 0;
    // It has been decreed that at this juncture the result must fit into
!   // MAX_FIXED_POINT_DIGITS.  If the result does not, we have an OVERFLOW error.
  
    int is_negative = val.data[31] & 0x80;
    if( is_negative )
--- 473,480 ----
    {
    int overflow = 0;
    // It has been decreed that at this juncture the result must fit into
!   // MAX_FIXED_POINT_DIGITS.  If the result does not, we have an OVERFLOW
!   // error.
  
    int is_negative = val.data[31] & 0x80;
    if( is_negative )
*************** squeeze_int256(int256 &val, int &rdigits
*** 474,482 ****
      negate_int256(val);
      }
  
!   // As long as there are some decimal places left, we hold our nose and right-
!   // shift a too-large value rightward by decimal digits.  In other words, we
!   // truncate the fractional part to make room for the integer part:
    while(rdigits > 0 && val.i128[1] )
      {
      divide_int256_by_int64(val, 10UL);
--- 482,490 ----
      negate_int256(val);
      }
  
!   // As long as there are some decimal places left, we hold our nose and
!   // right-shift a too-large value rightward by decimal digits.  In other
!   // words, we truncate the fractional part to make room for the integer part:
    while(rdigits > 0 && val.i128[1] )
      {
      divide_int256_by_int64(val, 10UL);
*************** squeeze_int256(int256 &val, int &rdigits
*** 501,507 ****
      // These sixteen bytes comprise the binary value of 10^38
      static const uint8_t C1038[] = {0x00, 0x00, 0x00, 0x00, 0x40, 0x22, 0x8a, 0x09,
                                  0x7a, 0xc4, 0x86, 0x5a, 0xa8, 0x4c, 0x3b, 0x4b};
!     static const uint128 biggest = *(uint128 *)C1038;
  
      // If we still have some rdigits to throw away, we can keep shrinking
      // the value:
--- 509,515 ----
      // These sixteen bytes comprise the binary value of 10^38
      static const uint8_t C1038[] = {0x00, 0x00, 0x00, 0x00, 0x40, 0x22, 0x8a, 0x09,
                                  0x7a, 0xc4, 0x86, 0x5a, 0xa8, 0x4c, 0x3b, 0x4b};
!     static const uint128 biggest = *reinterpret_cast<const uint128 *>(C1038);
  
      // If we still have some rdigits to throw away, we can keep shrinking
      // the value:
*************** squeeze_int256(int256 &val, int &rdigits
*** 537,543 ****
  static void
  get_int256_from_qualified_field(int256 &var,
                                  int &rdigits,
!                                 cblc_field_t *field,
                                  size_t field_o,
                                  size_t field_s)
    {
--- 545,551 ----
  static void
  get_int256_from_qualified_field(int256 &var,
                                  int &rdigits,
!                           const cblc_field_t *field,
                                  size_t field_o,
                                  size_t field_s)
    {
*************** __gg__add_fixed_phase1( cbl_arith_format
*** 568,574 ****
                          size_t nA,
                          size_t ,
                          size_t ,
!                         cbl_round_t  *,
                          int           ,
                          int          *compute_error
                          )
--- 576,582 ----
                          size_t nA,
                          size_t ,
                          size_t ,
!                   const cbl_round_t  *,
                          int           ,
                          int          *compute_error
                          )
*************** __gg__add_fixed_phase1( cbl_arith_format
*** 577,585 ****
  
    // The result goes into the temporary phase1_result.
  
!   cblc_field_t **A  = __gg__treeplet_1f;
!   size_t       *A_o = __gg__treeplet_1o;
!   size_t       *A_s = __gg__treeplet_1s;
  
    // Let us prime the pump with the first value of A[]
    get_int256_from_qualified_field(phase1_result, phase1_rdigits, A[0], A_o[0], A_s[0]);
--- 585,593 ----
  
    // The result goes into the temporary phase1_result.
  
!         cblc_field_t **A  = __gg__treeplet_1f;
!   const size_t       *A_o = __gg__treeplet_1o;
!   const size_t       *A_s = __gg__treeplet_1s;
  
    // Let us prime the pump with the first value of A[]
    get_int256_from_qualified_field(phase1_result, phase1_rdigits, A[0], A_o[0], A_s[0]);
*************** __gg__add_fixed_phase1( cbl_arith_format
*** 597,603 ****
      if( phase1_rdigits > temp_rdigits )
        {
        scale_int256_by_digits(temp, phase1_rdigits - temp_rdigits);
-       temp_rdigits = phase1_rdigits;
        }
      else if( phase1_rdigits < temp_rdigits )
        {
--- 605,610 ----
*************** __gg__addf1_fixed_phase2( cbl_arith_form
*** 625,638 ****
                            size_t ,
                            size_t ,
                            size_t ,
!                           cbl_round_t  *rounded,
                            int           on_error_flag,
                            int          *compute_error
                            )
    {
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    // This is the assignment phase of an ADD Format 1
  
--- 632,645 ----
                            size_t ,
                            size_t ,
                            size_t ,
!                     const cbl_round_t  *rounded,
                            int           on_error_flag,
                            int          *compute_error
                            )
    {
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    // This is the assignment phase of an ADD Format 1
  
*************** __gg__addf1_fixed_phase2( cbl_arith_form
*** 677,683 ****
      if( rdigits_a > rdigits_b )
        {
        scale_int256_by_digits(value_b, rdigits_a - rdigits_b);
-       rdigits_b = rdigits_a;
        }
      else if( rdigits_a < rdigits_b )
        {
--- 684,689 ----
*************** __gg__fixed_phase2_assign_to_c( cbl_arit
*** 710,725 ****
                                  size_t ,
                                  size_t ,
                                  size_t ,
!                                 cbl_round_t  *rounded,
                                  int           on_error_flag,
                                  int          *compute_error
                                  )
    {
    // This is the assignment phase of an ADD Format 2
  
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
  
    // We take phase1_result and put it into C
--- 716,731 ----
                                  size_t ,
                                  size_t ,
                                  size_t ,
!                           const cbl_round_t  *rounded,
                                  int           on_error_flag,
                                  int          *compute_error
                                  )
    {
    // This is the assignment phase of an ADD Format 2
  
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
  
    // We take phase1_result and put it into C
*************** __gg__add_float_phase1( cbl_arith_format
*** 768,774 ****
                          size_t nA,
                          size_t ,
                          size_t ,
!                         cbl_round_t  *,
                          int           ,
                          int          *compute_error
                          )
--- 774,780 ----
                          size_t nA,
                          size_t ,
                          size_t ,
!                   const cbl_round_t  *,
                          int           ,
                          int          *compute_error
                          )
*************** __gg__add_float_phase1( cbl_arith_format
*** 777,785 ****
  
    // The result goes into the temporary phase1_result_ffloat.
  
!   cblc_field_t **A  = __gg__treeplet_1f;
!   size_t       *A_o = __gg__treeplet_1o;
!   size_t       *A_s = __gg__treeplet_1s;
  
    // Let us prime the pump with the first value of A[]
    phase1_result_float = __gg__float128_from_qualified_field(A[0], A_o[0], A_s[0]);
--- 783,791 ----
  
    // The result goes into the temporary phase1_result_ffloat.
  
!         cblc_field_t **A  = __gg__treeplet_1f;
!   const size_t       *A_o = __gg__treeplet_1o;
!   const size_t       *A_s = __gg__treeplet_1s;
  
    // Let us prime the pump with the first value of A[]
    phase1_result_float = __gg__float128_from_qualified_field(A[0], A_o[0], A_s[0]);
*************** __gg__addf1_float_phase2( cbl_arith_form
*** 801,814 ****
                            size_t ,
                            size_t ,
                            size_t ,
!                           cbl_round_t  *rounded,
                            int           on_error_flag,
                            int          *compute_error
                            )
    {
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    // This is the assignment phase of an ADD Format 2
--- 807,820 ----
                            size_t ,
                            size_t ,
                            size_t ,
!                     const cbl_round_t  *rounded,
                            int           on_error_flag,
                            int          *compute_error
                            )
    {
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    // This is the assignment phase of an ADD Format 2
*************** __gg__float_phase2_assign_to_c( cbl_arit
*** 828,841 ****
                            size_t ,
                            size_t ,
                            size_t ,
!                           cbl_round_t  *rounded,
                            int           on_error_flag,
                            int          *compute_error
                            )
    {
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    // This is the assignment phase of an ADD Format 2
--- 834,847 ----
                            size_t ,
                            size_t ,
                            size_t ,
!                     const cbl_round_t  *rounded,
                            int           on_error_flag,
                            int          *compute_error
                            )
    {
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    // This is the assignment phase of an ADD Format 2
*************** __gg__addf3(cbl_arith_format_t ,
*** 853,859 ****
              size_t nA,
              size_t ,
              size_t ,
!             cbl_round_t  *rounded,
              int           on_error_flag,
              int          *compute_error
              )
--- 859,865 ----
              size_t nA,
              size_t ,
              size_t ,
!       const cbl_round_t  *rounded,
              int           on_error_flag,
              int          *compute_error
              )
*************** __gg__addf3(cbl_arith_format_t ,
*** 861,873 ****
    // This is an ADD Format 3.  Each A[i] gets accumulated into each C[i].  When
    // both are fixed, we do fixed arithmetic.  When either is a FldFloat, we
    // do floating-point arithmetic.
!   cblc_field_t **A  = __gg__treeplet_1f;
!   size_t       *A_o = __gg__treeplet_1o;
!   size_t       *A_s = __gg__treeplet_1s;
  
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
  
--- 867,879 ----
    // This is an ADD Format 3.  Each A[i] gets accumulated into each C[i].  When
    // both are fixed, we do fixed arithmetic.  When either is a FldFloat, we
    // do floating-point arithmetic.
!         cblc_field_t **A  = __gg__treeplet_1f;
!   const size_t       *A_o = __gg__treeplet_1o;
!   const size_t       *A_s = __gg__treeplet_1s;
  
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
  
*************** __gg__addf3(cbl_arith_format_t ,
*** 903,909 ****
        if( rdigits_a > rdigits_b )
          {
          scale_int256_by_digits(value_b, rdigits_a - rdigits_b);
-         rdigits_b = rdigits_a;
          }
        else if( rdigits_a < rdigits_b )
          {
--- 909,914 ----
*************** __gg__subtractf1_fixed_phase2(cbl_arith_
*** 937,950 ****
                                size_t ,
                                size_t ,
                                size_t ,
!                               cbl_round_t  *rounded,
                                int           on_error_flag,
                                int          *compute_error
                                )
    {
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    // This is the assignment phase of an ADD Format 1
  
--- 942,955 ----
                                size_t ,
                                size_t ,
                                size_t ,
!                         const cbl_round_t  *rounded,
                                int           on_error_flag,
                                int          *compute_error
                                )
    {
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    // This is the assignment phase of an ADD Format 1
  
*************** __gg__subtractf1_fixed_phase2(cbl_arith_
*** 994,1000 ****
      else if( rdigits_a < rdigits_b )
        {
        scale_int256_by_digits(value_a, rdigits_b - rdigits_a);
-       rdigits_a = rdigits_b;
        }
  
      // The two numbers have the same number of rdigits.  It's now safe to add
--- 999,1004 ----
*************** __gg__subtractf2_fixed_phase1(cbl_arith_
*** 1022,1037 ****
                                size_t nA,
                                size_t ,
                                size_t ,
!                               cbl_round_t  *rounded,
                                int           on_error_flag,
                                int          *compute_error
                                )
    {
    // This is the calculation phase of a fixed-point SUBTRACT Format 2
  
!   cblc_field_t **B  = __gg__treeplet_2f;
!   size_t       *B_o = __gg__treeplet_2o;
!   size_t       *B_s = __gg__treeplet_2s;
  
    // Add up all the A values
    __gg__add_fixed_phase1( not_expected_e ,
--- 1026,1041 ----
                                size_t nA,
                                size_t ,
                                size_t ,
!                         const cbl_round_t  *rounded,
                                int           on_error_flag,
                                int          *compute_error
                                )
    {
    // This is the calculation phase of a fixed-point SUBTRACT Format 2
  
!         cblc_field_t **B  = __gg__treeplet_2f;
!   const size_t       *B_o = __gg__treeplet_2o;
!   const size_t       *B_s = __gg__treeplet_2s;
  
    // Add up all the A values
    __gg__add_fixed_phase1( not_expected_e ,
*************** __gg__subtractf2_fixed_phase1(cbl_arith_
*** 1062,1068 ****
    else if( rdigits_a < rdigits_b )
      {
      scale_int256_by_digits(value_a, rdigits_b - rdigits_a);
-     rdigits_a = rdigits_b;
      }
  
    // The two numbers have the same number of rdigits.  It's now safe to add
--- 1066,1071 ----
*************** __gg__subtractf2_fixed_phase1(cbl_arith_
*** 1078,1098 ****
    phase1_rdigits = rdigits_b;
    }
  
- 
  extern "C"
  void
  __gg__subtractf1_float_phase2(cbl_arith_format_t ,
                                size_t ,
                                size_t ,
                                size_t ,
!                               cbl_round_t  *rounded,
                                int           on_error_flag,
                                int          *compute_error
                                )
    {
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    // This is the assignment phase of an ADD Format 2
--- 1081,1100 ----
    phase1_rdigits = rdigits_b;
    }
  
  extern "C"
  void
  __gg__subtractf1_float_phase2(cbl_arith_format_t ,
                                size_t ,
                                size_t ,
                                size_t ,
!                         const cbl_round_t  *rounded,
                                int           on_error_flag,
                                int          *compute_error
                                )
    {
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    // This is the assignment phase of an ADD Format 2
*************** __gg__subtractf1_float_phase2(cbl_arith_
*** 1106,1128 ****
                                       *rounded++);
    }
  
- 
  extern "C"
  void
  __gg__subtractf2_float_phase1(cbl_arith_format_t ,
                                size_t nA,
                                size_t ,
                                size_t ,
!                               cbl_round_t  *rounded,
                                int           on_error_flag,
                                int          *compute_error
                                )
    {
    // This is the calculation phase of a fixed-point SUBTRACT Format 2
  
!   cblc_field_t **B  = __gg__treeplet_2f;
!   size_t       *B_o = __gg__treeplet_2o;
!   size_t       *B_s = __gg__treeplet_2s;
  
    // Add up all the A values
    __gg__add_float_phase1( not_expected_e ,
--- 1108,1129 ----
                                       *rounded++);
    }
  
  extern "C"
  void
  __gg__subtractf2_float_phase1(cbl_arith_format_t ,
                                size_t nA,
                                size_t ,
                                size_t ,
!                         const cbl_round_t  *rounded,
                                int           on_error_flag,
                                int          *compute_error
                                )
    {
    // This is the calculation phase of a fixed-point SUBTRACT Format 2
  
!         cblc_field_t **B  = __gg__treeplet_2f;
!   const size_t       *B_o = __gg__treeplet_2o;
!   const size_t       *B_s = __gg__treeplet_2s;
  
    // Add up all the A values
    __gg__add_float_phase1( not_expected_e ,
*************** __gg__subtractf3( cbl_arith_format_t ,
*** 1148,1154 ****
                    size_t nA,
                    size_t ,
                    size_t ,
!                   cbl_round_t  *rounded,
                    int           on_error_flag,
                    int          *compute_error
                    )
--- 1149,1155 ----
                    size_t nA,
                    size_t ,
                    size_t ,
!             const cbl_round_t  *rounded,
                    int           on_error_flag,
                    int          *compute_error
                    )
*************** __gg__subtractf3( cbl_arith_format_t ,
*** 1156,1167 ****
    // This is an ADD Format 3.  Each A[i] gets accumulated into each C[i].  Each
    // SUBTRACTION is treated separately.
  
!   cblc_field_t **A  = __gg__treeplet_1f;
!   size_t       *A_o = __gg__treeplet_1o;
!   size_t       *A_s = __gg__treeplet_1s;
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
  
--- 1157,1168 ----
    // This is an ADD Format 3.  Each A[i] gets accumulated into each C[i].  Each
    // SUBTRACTION is treated separately.
  
!         cblc_field_t **A  = __gg__treeplet_1f;
!   const size_t       *A_o = __gg__treeplet_1o;
!   const size_t       *A_s = __gg__treeplet_1s;
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
  
*************** __gg__subtractf3( cbl_arith_format_t ,
*** 1202,1208 ****
        else if( rdigits_a < rdigits_b )
          {
          scale_int256_by_digits(value_a, rdigits_b - rdigits_a);
-         rdigits_a = rdigits_b;
          }
  
        // The two numbers have the same number of rdigits.  It's now safe to add
--- 1203,1208 ----
*************** __gg__multiplyf1_phase1(cbl_arith_format
*** 1237,1252 ****
                          size_t ,
                          size_t ,
                          size_t ,
!                         cbl_round_t  *,
                          int           ,
                          int          *)
    {
    // We are getting just the one value, which we are converting to the necessary
    // intermediate form
  
!   cblc_field_t **A  = __gg__treeplet_1f;
!   size_t       *A_o = __gg__treeplet_1o;
!   size_t       *A_s = __gg__treeplet_1s;
  
    if( A[0]->type == FldFloat )
      {
--- 1237,1252 ----
                          size_t ,
                          size_t ,
                          size_t ,
!                   const cbl_round_t  *,
                          int           ,
                          int          *)
    {
    // We are getting just the one value, which we are converting to the necessary
    // intermediate form
  
!         cblc_field_t **A  = __gg__treeplet_1f;
!   const size_t       *A_o = __gg__treeplet_1o;
!   const size_t       *A_s = __gg__treeplet_1s;
  
    if( A[0]->type == FldFloat )
      {
*************** void multiply_int128_by_int128(int256 &A
*** 1271,1277 ****
                                 __int128 ab_value,
                                 __int128 cd_value)
    {
!   int is_negative = ( ((uint8_t *)(&ab_value))[15]^((uint8_t *)(&cd_value))[15]) & 0x80;
    if( ab_value < 0 )
      {
      ab_value = -ab_value;
--- 1271,1278 ----
                                 __int128 ab_value,
                                 __int128 cd_value)
    {
!   int is_negative = ( (PTRCAST(uint8_t, (&ab_value)))[15]
!                                 ^(PTRCAST(uint8_t, (&cd_value)))[15]) & 0x80;
    if( ab_value < 0 )
      {
      ab_value = -ab_value;
*************** void multiply_int128_by_int128(int256 &A
*** 1287,1296 ****
    uint128 BD;
  
    // Let's extract the digits.
!   uint64_t a = *(uint64_t *)((unsigned char *)(&ab_value)+8);
!   uint64_t b = *(uint64_t *)((unsigned char *)(&ab_value)+0);
!   uint64_t c = *(uint64_t *)((unsigned char *)(&cd_value)+8);
!   uint64_t d = *(uint64_t *)((unsigned char *)(&cd_value)+0);
  
    // multiply (a0 + b) * (c0 + d)
  
--- 1288,1297 ----
    uint128 BD;
  
    // Let's extract the digits.
!   uint64_t a = *PTRCAST(uint64_t, (PTRCAST(unsigned char, (&ab_value))+8));
!   uint64_t b = *PTRCAST(uint64_t, (PTRCAST(unsigned char, (&ab_value))+0));
!   uint64_t c = *PTRCAST(uint64_t, (PTRCAST(unsigned char, (&cd_value))+8));
!   uint64_t d = *PTRCAST(uint64_t, (PTRCAST(unsigned char, (&cd_value))+0));
  
    // multiply (a0 + b) * (c0 + d)
  
*************** __gg__multiplyf1_phase2(cbl_arith_format
*** 1331,1344 ****
                          size_t ,
                          size_t ,
                          size_t ,
!                         cbl_round_t  *rounded,
                          int           on_error_flag,
                          int          *compute_error
                          )
    {
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    int error_this_time=0;
--- 1332,1345 ----
                          size_t ,
                          size_t ,
                          size_t ,
!                   const cbl_round_t  *rounded,
                          int           on_error_flag,
                          int          *compute_error
                          )
    {
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    int error_this_time=0;
*************** __gg__multiplyf1_phase2(cbl_arith_format
*** 1412,1425 ****
    if( error_this_time && on_size_error)
      {
      *compute_error |= error_this_time;
-     rounded++;
      }
    else
      {
      *compute_error |= conditional_stash(C[0], C_o[0], C_s[0],
                                          on_size_error,
                                          a_value,
!                                         *rounded++);
      }
    done:
    return;
--- 1413,1425 ----
    if( error_this_time && on_size_error)
      {
      *compute_error |= error_this_time;
      }
    else
      {
      *compute_error |= conditional_stash(C[0], C_o[0], C_s[0],
                                          on_size_error,
                                          a_value,
!                                         *rounded);
      }
    done:
    return;
*************** __gg__multiplyf2( cbl_arith_format_t ,
*** 1431,1450 ****
                    size_t ,
                    size_t ,
                    size_t nC,
!                   cbl_round_t  *rounded,
                    int           on_error_flag,
                    int          *compute_error
                    )
    {
!   cblc_field_t **A  = __gg__treeplet_1f;
!   size_t       *A_o = __gg__treeplet_1o;
!   size_t       *A_s = __gg__treeplet_1s;
!   cblc_field_t **B  = __gg__treeplet_2f;
!   size_t       *B_o = __gg__treeplet_2o;
!   size_t       *B_s = __gg__treeplet_2s;
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
  
--- 1431,1450 ----
                    size_t ,
                    size_t ,
                    size_t nC,
!             const cbl_round_t  *rounded,
                    int           on_error_flag,
                    int          *compute_error
                    )
    {
!         cblc_field_t **A  = __gg__treeplet_1f;
!   const size_t       *A_o = __gg__treeplet_1o;
!   const size_t       *A_s = __gg__treeplet_1s;
!         cblc_field_t **B  = __gg__treeplet_2f;
!   const size_t       *B_o = __gg__treeplet_2o;
!   const size_t       *B_s = __gg__treeplet_2s;
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
  
*************** shift_in_place128(uint8_t *buf, int size
*** 1514,1520 ****
    uint128 temp;
    uint128 overflow = 0;
  
!   uint128 *as128 = (uint128 *)buf;
  
    for( size_t i=0; i<places; i++ )
      {
--- 1514,1520 ----
    uint128 temp;
    uint128 overflow = 0;
  
!   uint128 *as128 = PTRCAST(uint128, buf);
  
    for( size_t i=0; i<places; i++ )
      {
*************** divide_int128_by_int128(int256   &quotie
*** 1595,1601 ****
      }
  
    // We are going to be referencing the 64-bit pices of the 128-bit divisor:
!   uint64_t *divisor64 = (uint64_t *)&divisor;
  
    quotient.i128[1] = 0;
    quotient.i128[0] = dividend;
--- 1595,1601 ----
      }
  
    // We are going to be referencing the 64-bit pices of the 128-bit divisor:
!   uint64_t *divisor64 = PTRCAST(uint64_t, &divisor);
  
    quotient.i128[1] = 0;
    quotient.i128[0] = dividend;
*************** divide_int128_by_int128(int256   &quotie
*** 1664,1675 ****
  
      int bits_to_shift = 0;
      int i=15;
!     while( ((uint8_t *)(&divisor))[i] == 0 )
        {
        i -= 1;
        bits_to_shift += 8;
!       }
!     uint8_t tail = ((uint8_t *)(&divisor))[i];
      while( !(tail & 0x80) )
        {
        bits_to_shift += 1;
--- 1664,1674 ----
  
      int bits_to_shift = 0;
      int i=15;
!     while( (PTRCAST(uint8_t, &divisor))[i] == 0 )
        {
        i -= 1;
        bits_to_shift += 8;
!       }    uint8_t tail = (  PTRCAST(uint8_t, &divisor)  )[i];
      while( !(tail & 0x80) )
        {
        bits_to_shift += 1;
*************** divide_int128_by_int128(int256   &quotie
*** 1678,1686 ****
  
      // Shift both the numerator and the divisor that number of bits
  
!     shift_in_place128((uint8_t *)&numerator, sizeof(numerator), bits_to_shift);
!     shift_in_place128((uint8_t *)&divisor,   sizeof(divisor),   bits_to_shift);
! 
  
      // We are now ready to do the guess-multiply-subtract loop.  We know that
      // the result will have two places, so we know we are going to go through
--- 1677,1684 ----
  
      // Shift both the numerator and the divisor that number of bits
  
!     shift_in_place128( PTRCAST(uint8_t, &numerator), sizeof(numerator), bits_to_shift);
!     shift_in_place128( PTRCAST(uint8_t, &divisor),   sizeof(divisor),   bits_to_shift);
  
      // We are now ready to do the guess-multiply-subtract loop.  We know that
      // the result will have two places, so we know we are going to go through
*************** divide_int128_by_int128(int256   &quotie
*** 1697,1703 ****
        // We develop our guess for a quotient by dividing the top two places of
        // the numerator area by C
        uint128 temp;
!       uint64_t *temp64 = (uint64_t *)&temp;
  
        temp64[1] = numerator.i64[q_place+2];
        temp64[0] = numerator.i64[q_place+1];
--- 1695,1701 ----
        // We develop our guess for a quotient by dividing the top two places of
        // the numerator area by C
        uint128 temp;
!       uint64_t *temp64 = PTRCAST(uint64_t, &temp);
  
        temp64[1] = numerator.i64[q_place+2];
        temp64[0] = numerator.i64[q_place+1];
*************** divide_int128_by_int128(int256   &quotie
*** 1711,1720 ****
        subber[2] = 0;
  
        // Start with the bottom 128 bits of the "subber"
!       *(uint128 *)subber = (uint128) divisor64[0] * quotient.i64[q_place];
  
        // Get the next 128 bits of subber
!       temp             = (uint128) divisor64[1] * quotient.i64[q_place];
  
        // Add the top of the first product to the bottom of the second:
        subber[1] += temp64[0];
--- 1709,1718 ----
        subber[2] = 0;
  
        // Start with the bottom 128 bits of the "subber"
!       *PTRCAST(uint128, subber) = (uint128) divisor64[0] * quotient.i64[q_place];
  
        // Get the next 128 bits of subber
!       temp = (uint128) divisor64[1] * quotient.i64[q_place];
  
        // Add the top of the first product to the bottom of the second:
        subber[1] += temp64[0];
*************** divide_int128_by_int128(int256   &quotie
*** 1735,1754 ****
        // the numerator:
  
        uint64_t borrow = 0;
!       for(size_t i=0; i<3; i++)
          {
!         if( numerator.i64[q_place + i] == 0 && borrow )
            {
            // We are subtracting from zero and we have a borrow.  Leave the
            // borrow on and just do the subtraction:
!           numerator.i64[q_place + i] -= subber[i];
            }
          else
            {
!           uint64_t stash = numerator.i64[q_place + i];
!           numerator.i64[q_place + i] -= borrow;
!           numerator.i64[q_place + i] -= subber[i];
!           if( numerator.i64[q_place + i] > stash )
              {
              // After subtracting, the value got bigger, which means we have
              // to borrow from the next value to the left
--- 1733,1752 ----
        // the numerator:
  
        uint64_t borrow = 0;
!       for(size_t j=0; j<3; j++)
          {
!         if( numerator.i64[q_place + j] == 0 && borrow )
            {
            // We are subtracting from zero and we have a borrow.  Leave the
            // borrow on and just do the subtraction:
!           numerator.i64[q_place + j] -= subber[j];
            }
          else
            {
!           uint64_t stash = numerator.i64[q_place + j];
!           numerator.i64[q_place + j] -= borrow;
!           numerator.i64[q_place + j] -= subber[j];
!           if( numerator.i64[q_place + j] > stash )
              {
              // After subtracting, the value got bigger, which means we have
              // to borrow from the next value to the left
*************** divide_int128_by_int128(int256   &quotie
*** 1772,1792 ****
          {
          // We need to add subber back into the numerator area
          uint64_t carry = 0;
!         for(size_t i=0; i<3; i++)
            {
!           if( numerator.i64[q_place + i] == 0xFFFFFFFFFFFFFFFFUL && carry )
              {
              // We are at the top and have a carry.  Just leave the carry on
              // and do the addition:
!             numerator.i64[q_place + i] += subber[i];
              }
            else
              {
              // We are not at the top.
!             uint64_t stash = numerator.i64[q_place + i];
!             numerator.i64[q_place + i] += carry;
!             numerator.i64[q_place + i] += subber[i];
!             if( numerator.i64[q_place + i] < stash )
                {
                // The addition caused the result to get smaller, meaning that
                // we wrapped around:
--- 1770,1790 ----
          {
          // We need to add subber back into the numerator area
          uint64_t carry = 0;
!         for(size_t ii=0; ii<3; ii++)
            {
!           if( numerator.i64[q_place + ii] == 0xFFFFFFFFFFFFFFFFUL && carry )
              {
              // We are at the top and have a carry.  Just leave the carry on
              // and do the addition:
!             numerator.i64[q_place + ii] += subber[ii];
              }
            else
              {
              // We are not at the top.
!             uint64_t stash = numerator.i64[q_place + ii];
!             numerator.i64[q_place + ii] += carry;
!             numerator.i64[q_place + ii] += subber[ii];
!             if( numerator.i64[q_place + ii] < stash )
                {
                // The addition caused the result to get smaller, meaning that
                // we wrapped around:
*************** __gg__dividef1_phase2(cbl_arith_format_t
*** 1814,1827 ****
                        size_t ,
                        size_t ,
                        size_t ,
!                       cbl_round_t  *rounded,
                        int           on_error_flag,
                        int          *compute_error
                        )
    {
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    int error_this_time=0;
--- 1812,1825 ----
                        size_t ,
                        size_t ,
                        size_t ,
!                 const cbl_round_t  *rounded,
                        int           on_error_flag,
                        int          *compute_error
                        )
    {
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    int error_this_time=0;
*************** __gg__dividef1_phase2(cbl_arith_format_t
*** 1901,1914 ****
  
    if( error_this_time && on_size_error)
      {
-     rounded++;
      }
    else
      {
      *compute_error |= conditional_stash(C[0], C_o[0], C_s[0],
                                          on_size_error,
                                          b_value,
!                                         *rounded++);
      }
    done:
    return;
--- 1899,1911 ----
  
    if( error_this_time && on_size_error)
      {
      }
    else
      {
      *compute_error |= conditional_stash(C[0], C_o[0], C_s[0],
                                          on_size_error,
                                          b_value,
!                                         *rounded);
      }
    done:
    return;
*************** __gg__dividef23(cbl_arith_format_t ,
*** 1920,1939 ****
                  size_t ,
                  size_t ,
                  size_t nC,
!                 cbl_round_t  *rounded,
                  int           on_error_flag,
                  int          *compute_error
                  )
    {
!   cblc_field_t **A  = __gg__treeplet_1f;
!   size_t       *A_o = __gg__treeplet_1o;
!   size_t       *A_s = __gg__treeplet_1s;
!   cblc_field_t **B  = __gg__treeplet_2f;
!   size_t       *B_o = __gg__treeplet_2o;
!   size_t       *B_s = __gg__treeplet_2s;
!   cblc_field_t **C  = __gg__treeplet_3f;
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    int error_this_time=0;
--- 1917,1936 ----
                  size_t ,
                  size_t ,
                  size_t nC,
!           const cbl_round_t  *rounded,
                  int           on_error_flag,
                  int          *compute_error
                  )
    {
!         cblc_field_t **A  = __gg__treeplet_1f;
!   const size_t       *A_o = __gg__treeplet_1o;
!   const size_t       *A_s = __gg__treeplet_1s;
!         cblc_field_t **B  = __gg__treeplet_2f;
!   const size_t       *B_o = __gg__treeplet_2o;
!   const size_t       *B_s = __gg__treeplet_2s;
!         cblc_field_t **C  = __gg__treeplet_3f;
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    int error_this_time=0;
*************** __gg__dividef45(cbl_arith_format_t ,
*** 2006,2020 ****
                  int          *compute_error
                  )
    {
!   cblc_field_t **A  = __gg__treeplet_1f;  // Numerator
!   size_t       *A_o = __gg__treeplet_1o;
!   size_t       *A_s = __gg__treeplet_1s;
!   cblc_field_t **B  = __gg__treeplet_2f;  // Denominator
!   size_t       *B_o = __gg__treeplet_2o;
!   size_t       *B_s = __gg__treeplet_2s;
!   cblc_field_t **C  = __gg__treeplet_3f;  // Has remainder, then quotient
!   size_t       *C_o = __gg__treeplet_3o;
!   size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    int error_this_time=0;
--- 2003,2017 ----
                  int          *compute_error
                  )
    {
!         cblc_field_t **A  = __gg__treeplet_1f;  // Numerator
!   const size_t       *A_o = __gg__treeplet_1o;
!   const size_t       *A_s = __gg__treeplet_1s;
!         cblc_field_t **B  = __gg__treeplet_2f;  // Denominator
!   const size_t       *B_o = __gg__treeplet_2o;
!   const size_t       *B_s = __gg__treeplet_2s;
!         cblc_field_t **C  = __gg__treeplet_3f;  // Has remainder, then quotient
!   const size_t       *C_o = __gg__treeplet_3o;
!   const size_t       *C_s = __gg__treeplet_3s;
  
    bool on_size_error = !!(on_error_flag & ON_SIZE_ERROR);
    int error_this_time=0;
diff -Nrcpad gcc-15-20250726/libgcobol/intrinsic.cc gcc-15-20250809/libgcobol/intrinsic.cc
*** gcc-15-20250726/libgcobol/intrinsic.cc	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/intrinsic.cc	Sat Aug  9 22:33:00 2025
***************
*** 28,48 ****
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
! /*  Operational note for COBOL intrinsic functions:
! 
!     In general, the parameters to these functions are cblc_field_t pointers
!     along with an offset, size, and for some functions the "allflags", which
!     indicate that the variable is a table that was referenced as TABL(ALL)
  
  
!     */
  
- #include <time.h>
- #include <math.h>
  #include <algorithm>
! #include <cctype>
! #include <langinfo.h>
! #include <string.h>
  
  #include "config.h"
  #include "libgcobol-fp.h"
--- 28,49 ----
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
! /* COBOL intrinsic functions.
!  *
!  * In general, the parameters to these functions are cblc_field_t pointers
!  * along with an offset, size, and for some functions the "allflags", which
!  * indicate that the variable is a table that was referenced as TABL(ALL)
!  */
  
+ #include <langinfo.h>
  
! #include <cctype>
! #include <cmath>
! #include <cstring>
! #include <ctime>
  
  #include <algorithm>
! #include <vector>
  
  #include "config.h"
  #include "libgcobol-fp.h"
*************** JD_to_DOW(double JD)
*** 166,172 ****
  
  static
  char *
! timespec_to_string(char *retval, struct timespec &tp)
    {
    /*
    Returns a 21-character string:
--- 167,173 ----
  
  static
  char *
! timespec_to_string(char *retval, struct cbl_timespec &tp)
    {
    /*
    Returns a 21-character string:
*************** struct input_state
*** 247,255 ****
      nsubscript = N;
      if(N)
        {
!       subscript_alls   = (bool *)  malloc(nsubscript);
!       subscripts       = (size_t *)malloc(nsubscript);
!       subscript_limits = (size_t *)malloc(nsubscript);
        }
      done = false;
      }
--- 248,259 ----
      nsubscript = N;
      if(N)
        {
!       subscript_alls   = static_cast<bool   *>(malloc(nsubscript));
!       subscripts       = static_cast<size_t *>(malloc(nsubscript));
!       subscript_limits = static_cast<size_t *>(malloc(nsubscript));
!       massert(subscript_alls);
!       massert(subscripts);
!       massert(subscript_limits);
        }
      done = false;
      }
*************** year_to_yyyy(int arg1, int arg2, int arg
*** 377,383 ****
  
  static
  double
! get_value_as_double_from_qualified_field( cblc_field_t *input,
                                            size_t input_o,
                                            size_t input_s)
    {
--- 381,387 ----
  
  static
  double
! get_value_as_double_from_qualified_field( const cblc_field_t *input,
                                            size_t input_o,
                                            size_t input_s)
    {
*************** get_value_as_double_from_qualified_field
*** 410,418 ****
  static
  GCOB_FP128 kahan_summation(size_t ncount,
                            cblc_field_t **source,
!                           size_t        *source_o,
!                           size_t        *source_s,
!                           int           *flags,
                            size_t        *k_count)
    {
    // We use compensated addition.  Look up Kahan summation.
--- 414,422 ----
  static
  GCOB_FP128 kahan_summation(size_t ncount,
                            cblc_field_t **source,
!                     const size_t        *source_o,
!                     const size_t        *source_s,
!                     const int           *flags,
                            size_t        *k_count)
    {
    // We use compensated addition.  Look up Kahan summation.
*************** static
*** 457,465 ****
  GCOB_FP128
  variance( size_t         ncount,
            cblc_field_t **source,
!           size_t        *source_o,
!           size_t        *source_s,
!           int           *flags)
    {
    // In order to avoid catastrophic cancellation, we are going to use an
    // algorithm that is a bit wasteful of time, but is described as particularly
--- 461,469 ----
  GCOB_FP128
  variance( size_t         ncount,
            cblc_field_t **source,
!     const size_t        *source_o,
!     const size_t        *source_s,
!     const int           *flags)
    {
    // In order to avoid catastrophic cancellation, we are going to use an
    // algorithm that is a bit wasteful of time, but is described as particularly
*************** get_all_time( char *stime,
*** 546,559 ****
    //         days of January show up in the final week of the prior year.
  
    sprintf(stime,
!           "%4.4u%2.2u%2.2uT"  // YYYYMMSS
!           "%2.2u%2.2u%2.2u"   // hhmmss
!           ".%9.9u"            // .sssssssss
!           "%c%2.2u%2.2u"      // +hhmm
!           "W%2.2u"            // Www
!           "%1u"               // DOW [1-7], 1 for Monday
!           "%3.3u"             // DDD day of year, 001 - 365,366
!           "%4.4u",            // ZZZZ Year for YYYY-Www-D
            ctm.YYYY,
            ctm.MM,
            ctm.DD,
--- 550,563 ----
    //         days of January show up in the final week of the prior year.
  
    sprintf(stime,
!           "%4.4d%2.2d%2.2dT"  // YYYYMMSS
!           "%2.2d%2.2d%2.2d"   // hhmmss
!           ".%9.9d"            // .sssssssss
!           "%c%2.2d%2.2d"      // +hhmm
!           "W%2.2d"            // Www
!           "%1d"               // DOW [1-7], 1 for Monday
!           "%3.3d"             // DDD day of year, 001 - 365,366
!           "%4.4d",            // ZZZZ Year for YYYY-Www-D
            ctm.YYYY,
            ctm.MM,
            ctm.DD,
*************** populate_ctm_from_JD(struct cobol_tm &ct
*** 686,692 ****
  static
  void
  populate_ctm_from_date( struct cobol_tm &ctm,
!                         cblc_field_t *pdate,
                          size_t pdate_offset,
                          size_t pdate_size)
    {
--- 690,696 ----
  static
  void
  populate_ctm_from_date( struct cobol_tm &ctm,
!                   const cblc_field_t *pdate,
                          size_t pdate_offset,
                          size_t pdate_size)
    {
*************** populate_ctm_from_double_time(struct cob
*** 720,729 ****
  static
  void
  populate_ctm_from_time( struct cobol_tm &ctm,
!                         cblc_field_t *ptime,
                          size_t ptime_o,
                          size_t ptime_s,
!                         cblc_field_t *poffset,
                          size_t poffset_o,
                          size_t poffset_s)
    {
--- 724,733 ----
  static
  void
  populate_ctm_from_time( struct cobol_tm &ctm,
!                    const cblc_field_t *ptime,
                          size_t ptime_o,
                          size_t ptime_s,
!                    const cblc_field_t *poffset,
                          size_t poffset_o,
                          size_t poffset_s)
    {
*************** convert_to_zulu(cobol_tm &ctm)
*** 790,797 ****
  
  static
  void
! ftime_replace(char *dest, char const * const dest_end,
!               char const *source, char const * const source_end,
                char const * const ftime)
    {
    // This routine is highly dependent on the source format being correct.
--- 794,803 ----
  
  static
  void
! ftime_replace(char *dest,
!               char const * const dest_end,
!               char const *       source,
!               char const * const source_end,
                char const * const ftime)
    {
    // This routine is highly dependent on the source format being correct.
*************** ftime_replace(char *dest, char const * c
*** 955,961 ****
  extern "C"
  void
  __gg__abs(cblc_field_t *dest,
!           cblc_field_t *source,
            size_t source_offset,
            size_t source_size)
    {
--- 961,967 ----
  extern "C"
  void
  __gg__abs(cblc_field_t *dest,
!     const cblc_field_t *source,
            size_t source_offset,
            size_t source_size)
    {
*************** __gg__abs(cblc_field_t *dest,
*** 977,983 ****
  extern "C"
  void
  __gg__acos( cblc_field_t *dest,
!             cblc_field_t *source,
              size_t        source_offset,
              size_t        source_size)
    {
--- 983,989 ----
  extern "C"
  void
  __gg__acos( cblc_field_t *dest,
!       const cblc_field_t *source,
              size_t        source_offset,
              size_t        source_size)
    {
*************** __gg__acos( cblc_field_t *dest,
*** 1004,1013 ****
  extern "C"
  void
  __gg__annuity(cblc_field_t *dest,
!               cblc_field_t *arg1,
                size_t arg1_offset,
                size_t arg1_size,
!               cblc_field_t *arg2,
                size_t arg2_offset,
                size_t arg2_size)
    {
--- 1010,1019 ----
  extern "C"
  void
  __gg__annuity(cblc_field_t *dest,
!         const cblc_field_t *arg1,
                size_t arg1_offset,
                size_t arg1_size,
!         const cblc_field_t *arg2,
                size_t arg2_offset,
                size_t arg2_size)
    {
*************** __gg__annuity(cblc_field_t *dest,
*** 1049,1055 ****
  extern "C"
  void
  __gg__asin( cblc_field_t *dest,
!             cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
--- 1055,1061 ----
  extern "C"
  void
  __gg__asin( cblc_field_t *dest,
!       const cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
*************** __gg__asin( cblc_field_t *dest,
*** 1079,1085 ****
  extern "C"
  void
  __gg__atan( cblc_field_t *dest,
!             cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
--- 1085,1091 ----
  extern "C"
  void
  __gg__atan( cblc_field_t *dest,
!       const cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
*************** __gg__atan( cblc_field_t *dest,
*** 1101,1107 ****
  extern "C"
  void
  __gg__byte_length(cblc_field_t *dest,
!                   cblc_field_t */*source*/,
                    size_t /*source_offset*/,
                    size_t source_size)
    {
--- 1107,1113 ----
  extern "C"
  void
  __gg__byte_length(cblc_field_t *dest,
!             const cblc_field_t */*source*/,
                    size_t /*source_offset*/,
                    size_t source_size)
    {
*************** __gg__byte_length(cblc_field_t *dest,
*** 1117,1123 ****
  extern "C"
  void
  __gg__char( cblc_field_t *dest,
!             cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
--- 1123,1129 ----
  extern "C"
  void
  __gg__char( cblc_field_t *dest,
!       const cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
*************** __gg__char( cblc_field_t *dest,
*** 1142,1151 ****
  extern "C"
  void
  __gg__combined_datetime(cblc_field_t *dest,
!                         cblc_field_t *arg1,
                          size_t arg1_offset,
                          size_t arg1_size,
!                         cblc_field_t *arg2,
                          size_t arg2_offset,
                          size_t arg2_size)
    {
--- 1148,1157 ----
  extern "C"
  void
  __gg__combined_datetime(cblc_field_t *dest,
!                   const cblc_field_t *arg1,
                          size_t arg1_offset,
                          size_t arg1_size,
!                   const cblc_field_t *arg2,
                          size_t arg2_offset,
                          size_t arg2_size)
    {
*************** __gg__concat( cblc_field_t *dest,
*** 1191,1197 ****
  extern "C"
  void
  __gg__cos(cblc_field_t *dest,
!           cblc_field_t *source,
            size_t        source_offset,
            size_t        source_size)
    {
--- 1197,1203 ----
  extern "C"
  void
  __gg__cos(cblc_field_t *dest,
!      const cblc_field_t *source,
            size_t        source_offset,
            size_t        source_size)
    {
*************** void
*** 1212,1219 ****
  __gg__current_date(cblc_field_t *dest)
    {
    // FUNCTION CURRENT-DATE
!   struct timespec tp = {};
!   __gg__clock_gettime(CLOCK_REALTIME, &tp); // time_t tv_sec; long tv_nsec
  
    char retval[DATE_STRING_BUFFER_SIZE];
    timespec_to_string(retval, tp);
--- 1218,1225 ----
  __gg__current_date(cblc_field_t *dest)
    {
    // FUNCTION CURRENT-DATE
!   struct cbl_timespec tp = {};
!   __gg__clock_gettime(&tp); // time_t tv_sec; long tv_nsec
  
    char retval[DATE_STRING_BUFFER_SIZE];
    timespec_to_string(retval, tp);
*************** void
*** 1226,1236 ****
  __gg__seconds_past_midnight(cblc_field_t *dest)
    {
    // SECONDS-PAST-MIDNIGHT
!   struct timespec tp = {};
    struct tm tm;
    __int128 retval=0;
    
!   __gg__clock_gettime(CLOCK_REALTIME, &tp); // time_t tv_sec; long tv_nsec
    localtime_r(&tp.tv_sec, &tm);
  
    retval += tm.tm_hour;
--- 1232,1242 ----
  __gg__seconds_past_midnight(cblc_field_t *dest)
    {
    // SECONDS-PAST-MIDNIGHT
!   struct cbl_timespec tp = {};
    struct tm tm;
    __int128 retval=0;
    
!   __gg__clock_gettime(&tp); // time_t tv_sec; long tv_nsec
    localtime_r(&tp.tv_sec, &tm);
  
    retval += tm.tm_hour;
*************** __gg__seconds_past_midnight(cblc_field_t
*** 1250,1256 ****
  extern "C"
  void
  __gg__date_of_integer(cblc_field_t *dest,
!                       cblc_field_t *source,
                        size_t source_offset,
                        size_t source_size)
    {
--- 1256,1262 ----
  extern "C"
  void
  __gg__date_of_integer(cblc_field_t *dest,
!                 const cblc_field_t *source,
                        size_t source_offset,
                        size_t source_size)
    {
*************** __gg__date_of_integer(cblc_field_t *dest
*** 1276,1288 ****
  extern "C"
  void
  __gg__date_to_yyyymmdd( cblc_field_t *dest,
!                         cblc_field_t *par1,
                          size_t par1_o,
                          size_t par1_s,
!                         cblc_field_t *par2,
                          size_t par2_o,
                          size_t par2_s,
!                         cblc_field_t *par3,
                          size_t par3_o,
                          size_t par3_s)
    {
--- 1282,1294 ----
  extern "C"
  void
  __gg__date_to_yyyymmdd( cblc_field_t *dest,
!                   const cblc_field_t *par1,
                          size_t par1_o,
                          size_t par1_s,
!                   const cblc_field_t *par2,
                          size_t par2_o,
                          size_t par2_s,
!                   const cblc_field_t *par3,
                          size_t par3_o,
                          size_t par3_s)
    {
*************** __gg__date_to_yyyymmdd( cblc_field_t *de
*** 1307,1313 ****
  extern "C"
  void
  __gg__day_of_integer( cblc_field_t *dest,
!                       cblc_field_t *source,
                        size_t source_offset,
                        size_t source_size)
    {
--- 1313,1319 ----
  extern "C"
  void
  __gg__day_of_integer( cblc_field_t *dest,
!                 const cblc_field_t *source,
                        size_t source_offset,
                        size_t source_size)
    {
*************** __gg__day_of_integer( cblc_field_t *dest
*** 1336,1348 ****
  extern "C"
  void
  __gg__day_to_yyyyddd( cblc_field_t *dest,
!                       cblc_field_t *par1,
                        size_t par1_o,
                        size_t par1_s,
!                       cblc_field_t *par2,
                        size_t par2_o,
                        size_t par2_s,
!                       cblc_field_t *par3,
                        size_t par3_o,
                        size_t par3_s)
    {
--- 1342,1354 ----
  extern "C"
  void
  __gg__day_to_yyyyddd( cblc_field_t *dest,
!                 const cblc_field_t *par1,
                        size_t par1_o,
                        size_t par1_s,
!                 const cblc_field_t *par2,
                        size_t par2_o,
                        size_t par2_s,
!                 const cblc_field_t *par3,
                        size_t par3_o,
                        size_t par3_s)
    {
*************** __gg__e(cblc_field_t *dest)
*** 1381,1387 ****
  extern "C"
  void
  __gg__exp(cblc_field_t *dest,
!           cblc_field_t *source,
            size_t source_offset,
            size_t source_size)
    {
--- 1387,1393 ----
  extern "C"
  void
  __gg__exp(cblc_field_t *dest,
!     const cblc_field_t *source,
            size_t source_offset,
            size_t source_size)
    {
*************** __gg__exp(cblc_field_t *dest,
*** 1400,1406 ****
  extern "C"
  void
  __gg__exp10(cblc_field_t *dest,
!             cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
--- 1406,1412 ----
  extern "C"
  void
  __gg__exp10(cblc_field_t *dest,
!       const cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
*************** __gg__exp10(cblc_field_t *dest,
*** 1419,1425 ****
  extern "C"
  void
  __gg__factorial(cblc_field_t *dest,
!                 cblc_field_t *source,
                  size_t source_offset,
                  size_t source_size)
    {
--- 1425,1431 ----
  extern "C"
  void
  __gg__factorial(cblc_field_t *dest,
!           const cblc_field_t *source,
                  size_t source_offset,
                  size_t source_size)
    {
*************** __gg__factorial(cblc_field_t *dest,
*** 1450,1473 ****
  extern "C"
  void
  __gg__formatted_current_date( cblc_field_t *dest, // Destination string
!                               cblc_field_t *input, // datetime format
                                size_t input_offset,
                                size_t input_size)
    {
!   // FUNCTION CURRENT-DATE
  
    // Establish the destination, and set it to spaces
!   char *d    = (char *)dest->data;
!   char *dend = d + dest->capacity;
    memset(d, internal_space, dest->capacity);
  
    // Establish the formatting string:
!   char *format     = (char *)(input->data+input_offset);
!   char *format_end = format + input_size;
  
    bool is_zulu = false;
  
!   char *p = format;
    while( p < format_end )
      {
      int ch = *p++;
--- 1456,1479 ----
  extern "C"
  void
  __gg__formatted_current_date( cblc_field_t *dest, // Destination string
!                          const cblc_field_t *input, // datetime format
                                size_t input_offset,
                                size_t input_size)
    {
!   // FUNCTION FORMATTED-CURRENT-DATE
  
    // Establish the destination, and set it to spaces
!   char *d    = PTRCAST(char, dest->data);
!   const char *dend = d + dest->capacity;
    memset(d, internal_space, dest->capacity);
  
    // Establish the formatting string:
!   const char *format     = PTRCAST(char, (input->data+input_offset));
!   const char *format_end = format + input_size;
  
    bool is_zulu = false;
  
!   const char *p = format;
    while( p < format_end )
      {
      int ch = *p++;
*************** __gg__formatted_current_date( cblc_field
*** 1478,1488 ****
        }
      }
  
!   struct timespec ts = {};
!   __gg__clock_gettime(CLOCK_REALTIME, &ts);
  
    struct tm tm = {};
    tm.tm_zone = "GMT";
    if( is_zulu )
      {
      gmtime_r(&ts.tv_sec, &tm);
--- 1484,1496 ----
        }
      }
  
!   struct cbl_timespec ts = {};
!   __gg__clock_gettime(&ts);
  
    struct tm tm = {};
+ #ifdef HAVE_STRUCT_TM_TM_ZONE
    tm.tm_zone = "GMT";
+ #endif
    if( is_zulu )
      {
      gmtime_r(&ts.tv_sec, &tm);
*************** __gg__formatted_current_date( cblc_field
*** 1509,1531 ****
  extern "C"
  void
  __gg__formatted_date(cblc_field_t *dest, // Destination string
!                      cblc_field_t *arg1, // datetime format
                       size_t arg1_offset,
                       size_t arg1_size,
!                      cblc_field_t *arg2, // integer date
                       size_t arg2_offset,
                       size_t arg2_size)
    {
    // FUNCTION FORMATTED-DATE
  
    // Establish the destination, and set it to spaces
!   char *d    = (char *)dest->data;
!   char *dend = d + dest->capacity;
    memset(d, internal_space, dest->capacity);
  
    // Establish the formatting string:
!   char *format     = (char *)(arg1->data+arg1_offset);
!   char *format_end = format + arg1_size;
  
    struct cobol_tm ctm = {};
  
--- 1517,1539 ----
  extern "C"
  void
  __gg__formatted_date(cblc_field_t *dest, // Destination string
!                const cblc_field_t *arg1, // datetime format
                       size_t arg1_offset,
                       size_t arg1_size,
!                const cblc_field_t *arg2, // integer date
                       size_t arg2_offset,
                       size_t arg2_size)
    {
    // FUNCTION FORMATTED-DATE
  
    // Establish the destination, and set it to spaces
!   char *d    = PTRCAST(char, dest->data);
!   const char *dend = d + dest->capacity;
    memset(d, internal_space, dest->capacity);
  
    // Establish the formatting string:
!   char *format     = PTRCAST(char, (arg1->data+arg1_offset));
!   const char *format_end = format + arg1_size;
  
    struct cobol_tm ctm = {};
  
*************** __gg__formatted_date(cblc_field_t *dest,
*** 1547,1562 ****
  extern "C"
  void
  __gg__formatted_datetime( cblc_field_t *dest, // Destination string
!                           cblc_field_t *par1, // datetime format
                            size_t par1_o,
                            size_t par1_s,
!                           cblc_field_t *par2, // integer date
                            size_t par2_o,
                            size_t par2_s,
!                           cblc_field_t *par3, // numeric time
                            size_t par3_o,
                            size_t par3_s,
!                           cblc_field_t *par4, // optional offset in seconds
                            size_t par4_o,
                            size_t par4_s
                            )
--- 1555,1570 ----
  extern "C"
  void
  __gg__formatted_datetime( cblc_field_t *dest, // Destination string
!                     const cblc_field_t *par1, // datetime format
                            size_t par1_o,
                            size_t par1_s,
!                     const cblc_field_t *par2, // integer date
                            size_t par2_o,
                            size_t par2_s,
!                     const cblc_field_t *par3, // numeric time
                            size_t par3_o,
                            size_t par3_s,
!                     const cblc_field_t *par4, // optional offset in seconds
                            size_t par4_o,
                            size_t par4_s
                            )
*************** __gg__formatted_datetime( cblc_field_t *
*** 1564,1575 ****
    // FUNCTION FORMATTED-DATETIME
  
    // Establish the destination, and set it to spaces
!   char *d    = (char *)dest->data;
!   char *dend = d + dest->capacity;
    memset(d, internal_space, dest->capacity);
  
    // Establish the formatting string:
!   char *format     = (char *)(par1->data+par1_o);
    char *format_end = format + par1_s;
    trim_trailing_spaces(format, format_end);
    bool is_zulu = is_zulu_format(format, format_end);
--- 1572,1583 ----
    // FUNCTION FORMATTED-DATETIME
  
    // Establish the destination, and set it to spaces
!         char *d    = PTRCAST(char, (dest->data));
!   const char *dend = d + dest->capacity;
    memset(d, internal_space, dest->capacity);
  
    // Establish the formatting string:
!   char *format     = PTRCAST(char, (par1->data+par1_o));
    char *format_end = format + par1_s;
    trim_trailing_spaces(format, format_end);
    bool is_zulu = is_zulu_format(format, format_end);
*************** __gg__formatted_datetime( cblc_field_t *
*** 1602,1614 ****
  extern "C"
  void
  __gg__formatted_time( cblc_field_t *dest,// Destination string
!                       cblc_field_t *par1, // datetime format
                        size_t par1_o,
                        size_t par1_s,
!                       cblc_field_t *par2,// numeric time
                        size_t par2_o,
                        size_t par2_s,
!                       cblc_field_t *par4, // optional offset in seconds
                        size_t par4_o,
                        size_t par4_s)
  
--- 1610,1622 ----
  extern "C"
  void
  __gg__formatted_time( cblc_field_t *dest,// Destination string
!                 const cblc_field_t *par1, // datetime format
                        size_t par1_o,
                        size_t par1_s,
!                 const cblc_field_t *par2,// numeric time
                        size_t par2_o,
                        size_t par2_s,
!                 const cblc_field_t *par4, // optional offset in seconds
                        size_t par4_o,
                        size_t par4_s)
  
*************** __gg__formatted_time( cblc_field_t *dest
*** 1616,1627 ****
    // FUNCTION FORMATTED-TIME
  
    // Establish the destination, and set it to spaces
!   char *d    = (char *)dest->data;
!   char *dend = d + dest->capacity;
    memset(d, internal_space, dest->capacity);
  
    // Establish the formatting string:
!   char *format     = (char *)(par1->data+par1_o);
    char *format_end = format + par1_s;
    trim_trailing_spaces(format, format_end);
    bool is_zulu = is_zulu_format(format, format_end);
--- 1624,1635 ----
    // FUNCTION FORMATTED-TIME
  
    // Establish the destination, and set it to spaces
!   char *d          = PTRCAST(char, dest->data);
!   const char *dend = d + dest->capacity;
    memset(d, internal_space, dest->capacity);
  
    // Establish the formatting string:
!   char *format     = PTRCAST(char, (par1->data+par1_o));
    char *format_end = format + par1_s;
    trim_trailing_spaces(format, format_end);
    bool is_zulu = is_zulu_format(format, format_end);
*************** __gg__formatted_time( cblc_field_t *dest
*** 1656,1662 ****
  extern "C"
  void
  __gg__integer(cblc_field_t *dest,
!               cblc_field_t *source,
                size_t source_offset,
                size_t source_size)
    {
--- 1664,1670 ----
  extern "C"
  void
  __gg__integer(cblc_field_t *dest,
!         const cblc_field_t *source,
                size_t source_offset,
                size_t source_size)
    {
*************** __gg__integer(cblc_field_t *dest,
*** 1674,1680 ****
  extern "C"
  void
  __gg__integer_of_date(cblc_field_t *dest,
!                       cblc_field_t *source,
                        size_t source_offset,
                        size_t source_size)
    {
--- 1682,1688 ----
  extern "C"
  void
  __gg__integer_of_date(cblc_field_t *dest,
!                 const cblc_field_t *source,
                        size_t source_offset,
                        size_t source_size)
    {
*************** __gg__integer_of_date(cblc_field_t *dest
*** 1729,1735 ****
  extern "C"
  void
  __gg__integer_of_day( cblc_field_t *dest,
!                       cblc_field_t *source,
                        size_t source_offset,
                        size_t source_size)
    {
--- 1737,1743 ----
  extern "C"
  void
  __gg__integer_of_day( cblc_field_t *dest,
!                 const cblc_field_t *source,
                        size_t source_offset,
                        size_t source_size)
    {
*************** __gg__integer_of_day( cblc_field_t *dest
*** 1756,1762 ****
  extern "C"
  void
  __gg__integer_part( cblc_field_t *dest,
!                     cblc_field_t *source,
                      size_t source_offset,
                      size_t source_size)
    {
--- 1764,1770 ----
  extern "C"
  void
  __gg__integer_part( cblc_field_t *dest,
!               const cblc_field_t *source,
                      size_t source_offset,
                      size_t source_size)
    {
*************** __gg__integer_part( cblc_field_t *dest,
*** 1779,1785 ****
  extern "C"
  void
  __gg__fraction_part(cblc_field_t *dest,
!                     cblc_field_t *source,
                      size_t source_offset,
                      size_t source_size)
    {
--- 1787,1793 ----
  extern "C"
  void
  __gg__fraction_part(cblc_field_t *dest,
!               const cblc_field_t *source,
                      size_t source_offset,
                      size_t source_size)
    {
*************** __gg__fraction_part(cblc_field_t *dest,
*** 1808,1817 ****
  
  extern "C"
  void
! __gg__log( cblc_field_t *dest,
!                       cblc_field_t *source,
!                       size_t source_offset,
!                       size_t source_size)
    {
    // FUNCTION LOG
    GCOB_FP128 value = __gg__float128_from_qualified_field(source,
--- 1816,1825 ----
  
  extern "C"
  void
! __gg__log(cblc_field_t *dest,
!     const cblc_field_t *source,
!           size_t source_offset,
!           size_t source_size)
    {
    // FUNCTION LOG
    GCOB_FP128 value = __gg__float128_from_qualified_field(source,
*************** __gg__log( cblc_field_t *dest,
*** 1833,1842 ****
  
  extern "C"
  void
! __gg__log10( cblc_field_t *dest,
!                       cblc_field_t *source,
!                       size_t source_offset,
!                       size_t source_size)
    {
    // FUNCTION LOG10
    GCOB_FP128 value = __gg__float128_from_qualified_field(source,
--- 1841,1850 ----
  
  extern "C"
  void
! __gg__log10(cblc_field_t *dest,
!       const cblc_field_t *source,
!             size_t source_offset,
!             size_t source_size)
    {
    // FUNCTION LOG10
    GCOB_FP128 value = __gg__float128_from_qualified_field(source,
*************** __gg__max(cblc_field_t *dest,
*** 1867,1874 ****
          || __gg__treeplet_1f[0]->type == FldLiteralA) )
      {
      cblc_field_t  *best_field      ;
!     unsigned char *best_location   ;
!     size_t         best_length     ;
      int            best_attr       ;
      int            best_flags      ;
  
--- 1875,1882 ----
          || __gg__treeplet_1f[0]->type == FldLiteralA) )
      {
      cblc_field_t  *best_field      ;
!     unsigned char *best_location = nullptr  ;
!     size_t         best_length   = 0        ;
      int            best_attr       ;
      int            best_flags      ;
  
*************** __gg__max(cblc_field_t *dest,
*** 1928,1935 ****
--- 1936,1945 ----
          }
        }
  
+ 
      __gg__adjust_dest_size(dest, best_length);
      dest->type = FldAlphanumeric;
+     assert(best_location);
      memcpy(dest->data, best_location, best_length);
      }
    else
*************** __gg__max(cblc_field_t *dest,
*** 1974,1980 ****
  extern "C"
  void
  __gg__lower_case( cblc_field_t *dest,
!                   cblc_field_t *input,
                    size_t        input_offset,
                    size_t        input_size)
    {
--- 1984,1990 ----
  extern "C"
  void
  __gg__lower_case( cblc_field_t *dest,
!             const cblc_field_t *input,
                    size_t        input_offset,
                    size_t        input_size)
    {
*************** __gg__lower_case( cblc_field_t *dest,
*** 1982,1991 ****
    size_t source_length = input_size;
    memset(dest->data, internal_space, dest_length);
    memcpy(dest->data, input->data+input_offset, std::min(dest_length, source_length));
!   internal_to_ascii((char *)dest->data, dest_length);
    std::transform(dest->data, dest->data + dest_length, dest->data,
  		 [](unsigned char c) { return std::tolower(c); });
!   ascii_to_internal_str((char *)dest->data, dest_length);
    }
  
  extern "C"
--- 1992,2001 ----
    size_t source_length = input_size;
    memset(dest->data, internal_space, dest_length);
    memcpy(dest->data, input->data+input_offset, std::min(dest_length, source_length));
!   internal_to_ascii( PTRCAST(char, dest->data), dest_length);
    std::transform(dest->data, dest->data + dest_length, dest->data,
  		 [](unsigned char c) { return std::tolower(c); });
!   ascii_to_internal_str( PTRCAST(char, dest->data), dest_length);
    }
  
  extern "C"
*************** __gg__median( cblc_field_t *dest,
*** 2024,2030 ****
  
    size_t list_size = 1;
  
!   GCOB_FP128 *the_list = (GCOB_FP128 *)malloc(list_size *sizeof(GCOB_FP128));
    size_t k_count = 0;
    assert(ncount);
    for(size_t i=0; i<ncount; i++)
--- 2034,2041 ----
  
    size_t list_size = 1;
  
!   GCOB_FP128 *the_list = static_cast<GCOB_FP128 *>(malloc(list_size *sizeof(GCOB_FP128)));
!   massert(the_list);
    size_t k_count = 0;
    assert(ncount);
    for(size_t i=0; i<ncount; i++)
*************** __gg__median( cblc_field_t *dest,
*** 2037,2045 ****
        if(k_count >= list_size)
          {
          list_size *= 2;
!         the_list = (GCOB_FP128 *)realloc(the_list, list_size *sizeof(GCOB_FP128));
          }
  
        the_list[k_count] = __gg__float128_from_qualified_field(__gg__treeplet_1f[i],
                                                                __gg__treeplet_1o[i],
                                                                __gg__treeplet_1s[i]);
--- 2048,2058 ----
        if(k_count >= list_size)
          {
          list_size *= 2;
!         the_list = PTRCAST(GCOB_FP128, realloc(the_list, list_size *sizeof(GCOB_FP128)));
!         massert(the_list);
          }
  
+       assert(the_list);
        the_list[k_count] = __gg__float128_from_qualified_field(__gg__treeplet_1f[i],
                                                                __gg__treeplet_1o[i],
                                                                __gg__treeplet_1s[i]);
*************** __gg__min(cblc_field_t *dest,
*** 2122,2132 ****
    if( (    __gg__treeplet_1f[0]->type == FldAlphanumeric
          || __gg__treeplet_1f[0]->type == FldLiteralA) )
      {
!     cblc_field_t  *best_field      ;
!     unsigned char *best_location   ;
!     size_t         best_length     ;
!     int            best_attr       ;
!     int            best_flags      ;
  
      bool first_time = true;
      assert(ncount);
--- 2135,2145 ----
    if( (    __gg__treeplet_1f[0]->type == FldAlphanumeric
          || __gg__treeplet_1f[0]->type == FldLiteralA) )
      {
!     cblc_field_t  *best_field               ;
!     unsigned char *best_location = nullptr  ;
!     size_t         best_length   = 0        ;
!     int            best_attr                ;
!     int            best_flags               ;
  
      bool first_time = true;
      assert(ncount);
*************** __gg__min(cblc_field_t *dest,
*** 2186,2191 ****
--- 2199,2205 ----
  
      __gg__adjust_dest_size(dest, best_length);
      dest->type = FldAlphanumeric;
+     assert(best_location);
      memcpy(dest->data, best_location, best_length);
      }
    else
*************** __gg__mod(cblc_field_t *dest,
*** 2274,2288 ****
  
  static int
  numval( cblc_field_t *dest,
!         cblc_field_t *input,
          size_t input_offset,
          size_t input_size)
    {
    // Returns the one-based character position of a bad character
    // returns zero if it is okay
  
!   char *p    = (char *)(input->data + input_offset);
!   char *pend =     p + input_size;
  
    int errpos = 0;
    __int128 retval = 0;
--- 2288,2302 ----
  
  static int
  numval( cblc_field_t *dest,
!   const cblc_field_t *input,
          size_t input_offset,
          size_t input_size)
    {
    // Returns the one-based character position of a bad character
    // returns zero if it is okay
  
!   const char *p    = PTRCAST(char, (input->data + input_offset));
!   const char *pend =     p + input_size;
  
    int errpos = 0;
    __int128 retval = 0;
*************** numval( cblc_field_t *dest,
*** 2565,2581 ****
  static
  int
  numval_c( cblc_field_t *dest,
!           cblc_field_t *src,
            size_t        src_offset,
            size_t        src_size,
!           cblc_field_t *crcy,
            size_t        crcy_offset,
            size_t        crcy_size
            )
    {
    size_t errcode = 0;
  
!   char *pstart = (char *)(src->data+src_offset);
    char *pend   = pstart + src_size;
    char *p      = pstart;
  
--- 2579,2595 ----
  static
  int
  numval_c( cblc_field_t *dest,
!     const cblc_field_t *src,
            size_t        src_offset,
            size_t        src_size,
!     const cblc_field_t *crcy,
            size_t        crcy_offset,
            size_t        crcy_size
            )
    {
    size_t errcode = 0;
  
!   char *pstart = PTRCAST(char, (src->data+src_offset));
    char *pend   = pstart + src_size;
    char *p      = pstart;
  
*************** numval_c( cblc_field_t *dest,
*** 2590,2596 ****
    char *currency_end;
    if( crcy )
      {
!     currency_start = (char *)(crcy->data+crcy_offset);
      currency_end   = currency_start + crcy_size;
      }
    else
--- 2604,2610 ----
    char *currency_end;
    if( crcy )
      {
!     currency_start = PTRCAST(char, (crcy->data+crcy_offset));
      currency_end   = currency_start + crcy_size;
      }
    else
*************** numval_c( cblc_field_t *dest,
*** 2804,2810 ****
          if( sign )
            {
            // A second sign isn't allowed
-           state = final_space;
            errcode = p - pstart;
            p = pend;
            }
--- 2818,2823 ----
*************** numval_c( cblc_field_t *dest,
*** 2872,2878 ****
  extern "C"
  void
  __gg__numval( cblc_field_t *dest,
!               cblc_field_t *source,
                size_t source_offset,
                size_t source_size)
    {
--- 2885,2891 ----
  extern "C"
  void
  __gg__numval( cblc_field_t *dest,
!         const cblc_field_t *source,
                size_t source_offset,
                size_t source_size)
    {
*************** __gg__numval( cblc_field_t *dest,
*** 2886,2892 ****
  extern "C"
  void
  __gg__test_numval(cblc_field_t *dest,
!                   cblc_field_t *source,
                    size_t source_offset,
                    size_t source_size)
    {
--- 2899,2905 ----
  extern "C"
  void
  __gg__test_numval(cblc_field_t *dest,
!             const cblc_field_t *source,
                    size_t source_offset,
                    size_t source_size)
    {
*************** __gg__test_numval(cblc_field_t *dest,
*** 2901,2910 ****
  extern "C"
  void
  __gg__numval_c( cblc_field_t *dest,
!                     cblc_field_t *src,
                      size_t        src_offset,
                      size_t        src_size,
!                     cblc_field_t *crcy,
                      size_t        crcy_offset,
                      size_t        crcy_size
                  )
--- 2914,2923 ----
  extern "C"
  void
  __gg__numval_c( cblc_field_t *dest,
!               const cblc_field_t *src,
                      size_t        src_offset,
                      size_t        src_size,
!               const cblc_field_t *crcy,
                      size_t        crcy_offset,
                      size_t        crcy_size
                  )
*************** __gg__numval_c( cblc_field_t *dest,
*** 2921,2930 ****
  extern "C"
  void
  __gg__test_numval_c(cblc_field_t *dest,
!                     cblc_field_t *src,
                      size_t        src_offset,
                      size_t        src_size,
!                     cblc_field_t *crcy,
                      size_t        crcy_offset,
                      size_t        crcy_size
                      )
--- 2934,2943 ----
  extern "C"
  void
  __gg__test_numval_c(cblc_field_t *dest,
!               const cblc_field_t *src,
                      size_t        src_offset,
                      size_t        src_size,
!               const cblc_field_t *crcy,
                      size_t        crcy_offset,
                      size_t        crcy_size
                      )
*************** __gg__test_numval_c(cblc_field_t *dest,
*** 2946,2957 ****
  extern "C"
  void
  __gg__ord(cblc_field_t *dest,
!           cblc_field_t *input,
            size_t input_offset,
            size_t /*input_size*/)
    {
    // We get our input in internal_character form.
!   char *arg = (char *)(input->data + input_offset);
  
    // The ORD function takes a single-character string and returns the
    // ordinal position of that character.
--- 2959,2970 ----
  extern "C"
  void
  __gg__ord(cblc_field_t *dest,
!     const cblc_field_t *input,
            size_t input_offset,
            size_t /*input_size*/)
    {
    // We get our input in internal_character form.
!   const char *arg = PTRCAST(char, (input->data + input_offset));
  
    // The ORD function takes a single-character string and returns the
    // ordinal position of that character.
*************** __gg__range(cblc_field_t *dest,
*** 3254,3263 ****
  extern "C"
  void
  __gg__rem(cblc_field_t *dest,
!           cblc_field_t *par1,
            size_t par1_offset,
            size_t par1_size,
!           cblc_field_t *par2,
            size_t par2_offset,
            size_t par2_size)
    {
--- 3267,3276 ----
  extern "C"
  void
  __gg__rem(cblc_field_t *dest,
!      const cblc_field_t *par1,
            size_t par1_offset,
            size_t par1_size,
!      const cblc_field_t *par2,
            size_t par2_offset,
            size_t par2_size)
    {
*************** __gg__rem(cblc_field_t *dest,
*** 3297,3306 ****
  extern "C"
  void
  __gg__trim( cblc_field_t *dest,
!             cblc_field_t *arg1,
              size_t        arg1_offset,
              size_t        arg1_size,
!             cblc_field_t *arg2,
              size_t        arg2_offset,
              size_t        arg2_size)
    {
--- 3310,3319 ----
  extern "C"
  void
  __gg__trim( cblc_field_t *dest,
!       const cblc_field_t *arg1,
              size_t        arg1_offset,
              size_t        arg1_size,
!       const cblc_field_t *arg2,
              size_t        arg2_offset,
              size_t        arg2_size)
    {
*************** __gg__trim( cblc_field_t *dest,
*** 3326,3332 ****
    // No matter what, we want to find the leftmost non-space and the
    // rightmost non-space:
  
!   char *left  = (char *)(arg1->data+arg1_offset);
    char *right = left + arg1_size-1;
  
    // Find left and right: the first and last non-spaces
--- 3339,3345 ----
    // No matter what, we want to find the leftmost non-space and the
    // rightmost non-space:
  
!   char *left  = PTRCAST(char, (arg1->data+arg1_offset));
    char *right = left + arg1_size-1;
  
    // Find left and right: the first and last non-spaces
*************** __gg__trim( cblc_field_t *dest,
*** 3349,3361 ****
      {
      // We want to leave any trailing spaces, so we return 'right' to its
      // original value:
!     right = (char *)(arg1->data+arg1_offset) + arg1_size-1;
      }
    else if( type == TRAILING )
      {
      // We want to leave any leading spaces, so we return 'left' to its
      // original value:
!     left = (char *)(arg1->data+arg1_offset);
      }
  
    if( left > right )
--- 3362,3374 ----
      {
      // We want to leave any trailing spaces, so we return 'right' to its
      // original value:
!     right = PTRCAST(char, (arg1->data+arg1_offset)) + arg1_size-1;
      }
    else if( type == TRAILING )
      {
      // We want to leave any leading spaces, so we return 'left' to its
      // original value:
!     left = PTRCAST(char, (arg1->data+arg1_offset));
      }
  
    if( left > right )
*************** __gg__trim( cblc_field_t *dest,
*** 3375,3383 ****
    // compiler believes the capacity to be at compile-time.  But we obviously
    // think it'll be okay.
  
!   char *dest_left  = (char *)dest->data;
    char *dest_right = dest_left + dest->capacity - 1;
!   char *dest_end   = dest_left + dest->capacity;
  
    while( dest_left <= dest_right && left <= right )
      {
--- 3388,3396 ----
    // compiler believes the capacity to be at compile-time.  But we obviously
    // think it'll be okay.
  
!   char *dest_left  = PTRCAST(char, dest->data);
    char *dest_right = dest_left + dest->capacity - 1;
!   const char *dest_end   = dest_left + dest->capacity;
  
    while( dest_left <= dest_right && left <= right )
      {
*************** static unsigned seed = 0;
*** 3400,3406 ****
  extern "C"
  void
  __gg__random( cblc_field_t *dest,
!               cblc_field_t *input,
                size_t        input_offset,
                size_t        input_size)
    {
--- 3413,3419 ----
  extern "C"
  void
  __gg__random( cblc_field_t *dest,
!         const cblc_field_t *input,
                size_t        input_offset,
                size_t        input_size)
    {
*************** __gg__random( cblc_field_t *dest,
*** 3419,3426 ****
      buf->state = NULL;
      state = (char *)malloc(state_len);
  
!     struct timespec ts;
!     __gg__clock_gettime(CLOCK_REALTIME, &ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
    int seed = (int)__gg__binary_value_from_qualified_field(&rdigits,
--- 3432,3439 ----
      buf->state = NULL;
      state = (char *)malloc(state_len);
  
!     struct cbl_timespec ts;
!     __gg__clock_gettime(&ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
    int seed = (int)__gg__binary_value_from_qualified_field(&rdigits,
*************** __gg__random_next(cblc_field_t *dest)
*** 3459,3466 ****
      buf = (random_data *)malloc(sizeof(struct random_data));
      buf->state = NULL;
      state = (char *)malloc(state_len);
!     struct timespec ts;
!     __gg__clock_gettime(CLOCK_REALTIME, &ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
    random_r(buf, &retval_31);
--- 3472,3479 ----
      buf = (random_data *)malloc(sizeof(struct random_data));
      buf->state = NULL;
      state = (char *)malloc(state_len);
!     struct cbl_timespec ts;
!     __gg__clock_gettime(&ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
    random_r(buf, &retval_31);
*************** __gg__random_next(cblc_field_t *dest)
*** 3477,3483 ****
  extern "C"
  void
  __gg__reverse(cblc_field_t *dest,
!               cblc_field_t *input,
                size_t input_offset,
                size_t input_size)
    {
--- 3490,3496 ----
  extern "C"
  void
  __gg__reverse(cblc_field_t *dest,
!         const cblc_field_t *input,
                size_t input_offset,
                size_t input_size)
    {
*************** __gg__reverse(cblc_field_t *dest,
*** 3498,3504 ****
  extern "C"
  void
  __gg__sign( cblc_field_t *dest,
!             cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
--- 3511,3517 ----
  extern "C"
  void
  __gg__sign( cblc_field_t *dest,
!       const cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
*************** __gg__sign( cblc_field_t *dest,
*** 3531,3537 ****
  extern "C"
  void
  __gg__sin(cblc_field_t *dest,
!           cblc_field_t *source,
            size_t source_offset,
            size_t source_size)
    {
--- 3544,3550 ----
  extern "C"
  void
  __gg__sin(cblc_field_t *dest,
!     const cblc_field_t *source,
            size_t source_offset,
            size_t source_size)
    {
*************** __gg__sin(cblc_field_t *dest,
*** 3552,3558 ****
  extern "C"
  void
  __gg__sqrt( cblc_field_t *dest,
!             cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
--- 3565,3571 ----
  extern "C"
  void
  __gg__sqrt( cblc_field_t *dest,
!       const cblc_field_t *source,
              size_t source_offset,
              size_t source_size)
    {
*************** __gg__sqrt( cblc_field_t *dest,
*** 3562,3568 ****
                                                          source_offset,
                                                          source_size);
  
!   if( value <= GCOB_FP128_LITERAL(0.0) )
      {
      exception_raise(ec_argument_function_e);
      }
--- 3575,3581 ----
                                                          source_offset,
                                                          source_size);
  
!   if( value < GCOB_FP128_LITERAL(0.0) )
      {
      exception_raise(ec_argument_function_e);
      }
*************** __gg__sum(cblc_field_t *dest,
*** 3618,3624 ****
  extern "C"
  void
  __gg__tan(cblc_field_t *dest,
!           cblc_field_t *source,
            size_t source_offset,
            size_t source_size)
    {
--- 3631,3637 ----
  extern "C"
  void
  __gg__tan(cblc_field_t *dest,
!     const cblc_field_t *source,
            size_t source_offset,
            size_t source_size)
    {
*************** __gg__tan(cblc_field_t *dest,
*** 3637,3643 ****
  extern "C"
  void
  __gg__test_date_yyyymmdd( cblc_field_t *dest,
!                           cblc_field_t *source,
                            size_t source_offset,
                            size_t source_size)
    {
--- 3650,3656 ----
  extern "C"
  void
  __gg__test_date_yyyymmdd( cblc_field_t *dest,
!                     const cblc_field_t *source,
                            size_t source_offset,
                            size_t source_size)
    {
*************** __gg__test_date_yyyymmdd( cblc_field_t *
*** 3647,3660 ****
                                                                source_offset,
                                                                source_size);
    int retval;
-   int dd   = yyyymmdd %   100;
    int mmdd = yyyymmdd % 10000;
    int mm   = mmdd     /   100;
-   int yyyy = yyyymmdd / 10000;
-   int jy;
-   int jm;
-   int jd;
-   double JD;
    if( yyyymmdd < 16010000 || yyyymmdd > 99999999 )
      {
      retval = 1;
--- 3660,3667 ----
*************** __gg__test_date_yyyymmdd( cblc_field_t *
*** 3665,3670 ****
--- 3672,3684 ----
      }
    else
      {
+     int dd   = yyyymmdd %   100;
+     int yyyy = yyyymmdd / 10000;
+     int jy;
+     int jm;
+     int jd;
+     double JD;
+ 
      // If there is something wrong with the number of days per month for a
      // given year, the Julian Date conversion won't reverse properly.
      // For example, January 32 will come back as February 1
*************** __gg__test_date_yyyymmdd( cblc_field_t *
*** 3689,3695 ****
  extern "C"
  void
  __gg__test_day_yyyyddd( cblc_field_t *dest,
!                         cblc_field_t *source,
                          size_t source_offset,
                          size_t source_size)
    {
--- 3703,3709 ----
  extern "C"
  void
  __gg__test_day_yyyyddd( cblc_field_t *dest,
!                   const cblc_field_t *source,
                          size_t source_offset,
                          size_t source_size)
    {
*************** __gg__test_day_yyyyddd( cblc_field_t *de
*** 3727,3733 ****
  extern "C"
  void
  __gg__upper_case( cblc_field_t *dest,
!                   cblc_field_t *input,
                    size_t        input_offset,
                    size_t        input_size)
    {
--- 3741,3747 ----
  extern "C"
  void
  __gg__upper_case( cblc_field_t *dest,
!             const cblc_field_t *input,
                    size_t        input_offset,
                    size_t        input_size)
    {
*************** __gg__upper_case( cblc_field_t *dest,
*** 3735,3744 ****
    size_t source_length = input_size;
    memset(dest->data, internal_space, dest_length);
    memcpy(dest->data, input->data+input_offset, std::min(dest_length, source_length));
!   internal_to_ascii((char *)dest->data, dest_length);
    std::transform(dest->data, dest->data + dest_length, dest->data,
  		 [](unsigned char c) { return std::toupper(c); });
!   ascii_to_internal_str((char *)dest->data, dest_length);
    }
  
  extern "C"
--- 3749,3758 ----
    size_t source_length = input_size;
    memset(dest->data, internal_space, dest_length);
    memcpy(dest->data, input->data+input_offset, std::min(dest_length, source_length));
!   internal_to_ascii( PTRCAST(char, dest->data), dest_length);
    std::transform(dest->data, dest->data + dest_length, dest->data,
  		 [](unsigned char c) { return std::toupper(c); });
!   ascii_to_internal_str( PTRCAST(char, dest->data), dest_length);
    }
  
  extern "C"
*************** extern "C"
*** 3762,3768 ****
  void
  __gg__when_compiled(cblc_field_t *dest, size_t tv_sec, long tv_nsec)
    {
!   struct timespec tp = {};
    tp.tv_sec  = tv_sec;
    tp.tv_nsec = tv_nsec;
    char retval[DATE_STRING_BUFFER_SIZE];
--- 3776,3782 ----
  void
  __gg__when_compiled(cblc_field_t *dest, size_t tv_sec, long tv_nsec)
    {
!   struct cbl_timespec tp = {};
    tp.tv_sec  = tv_sec;
    tp.tv_nsec = tv_nsec;
    char retval[DATE_STRING_BUFFER_SIZE];
*************** __gg__when_compiled(cblc_field_t *dest,
*** 3774,3786 ****
  extern "C"
  void
  __gg__year_to_yyyy( cblc_field_t *dest,
!                     cblc_field_t *par1,
                      size_t par1_o,
                      size_t par1_s,
!                     cblc_field_t *par2,
                      size_t par2_o,
                      size_t par2_s,
!                     cblc_field_t *par3,
                      size_t par3_o,
                      size_t par3_s)
    {
--- 3788,3800 ----
  extern "C"
  void
  __gg__year_to_yyyy( cblc_field_t *dest,
!               const cblc_field_t *par1,
                      size_t par1_o,
                      size_t par1_s,
!               const cblc_field_t *par2,
                      size_t par2_o,
                      size_t par2_s,
!               const cblc_field_t *par3,
                      size_t par3_o,
                      size_t par3_s)
    {
*************** __gg__year_to_yyyy( cblc_field_t *dest,
*** 3801,3807 ****
  
  static
  int
! gets_int(int ndigits, char *p, char *pend, int *digits)
    {
    // This routine returns the value of the integer at p.  If there is something
    // wrong with the integer, it returns a negative number, the value being the
--- 3815,3821 ----
  
  static
  int
! gets_int(int ndigits, const char *p, const char *pend, int *digits)
    {
    // This routine returns the value of the integer at p.  If there is something
    // wrong with the integer, it returns a negative number, the value being the
*************** gets_int(int ndigits, char *p, char *pen
*** 3832,3838 ****
  
  static
  int
! gets_year(char *p, char *pend, struct cobol_tm &ctm)
    {
    // Populates ctm.YYYY, ctm.days_in_year, and ctm.weeks_in_year, which are
    // all determined by the YYYY value.
--- 3846,3852 ----
  
  static
  int
! gets_year(const char *p, const char *pend, struct cobol_tm &ctm)
    {
    // Populates ctm.YYYY, ctm.days_in_year, and ctm.weeks_in_year, which are
    // all determined by the YYYY value.
*************** gets_year(char *p, char *pend, struct co
*** 3852,3861 ****
      {
      return 2;
      }
-   if( digits[0] == 0 && digits[1] < 5)
-     {
-     return 2;
-     }
    if( digits[2] == -1 )
      {
      return 3;
--- 3866,3871 ----
*************** gets_year(char *p, char *pend, struct co
*** 3900,3906 ****
  
  static
  int
! gets_month(char *p, char *pend, struct cobol_tm &ctm)
    {
    // Populates ctm.MM
  
--- 3910,3916 ----
  
  static
  int
! gets_month(const char *p, const char *pend, struct cobol_tm &ctm)
    {
    // Populates ctm.MM
  
*************** gets_month(char *p, char *pend, struct c
*** 3947,3953 ****
  
  static
  int
! gets_day(char *p, char *pend, struct cobol_tm &ctm)
    {
    // Populates ctm.DD, ctm.day_of_week, ctm.week_of_year, ctm.day_of_week
  
--- 3957,3963 ----
  
  static
  int
! gets_day(const char *p, const char *pend, struct cobol_tm &ctm)
    {
    // Populates ctm.DD, ctm.day_of_week, ctm.week_of_year, ctm.day_of_week
  
*************** gets_day(char *p, char *pend, struct cob
*** 3965,4012 ****
      {
      return 2;
      }
!   if(DD >= 0)
      {
!     if( DD >= 0 )
        {
!       if( DD == 0)
!         {
!         // If zero, we know we failed at the second '0' in "00"
!         retval = 2;
!         }
!       else if( DD >= 40)
          {
!         // 40 or more, then we knew there was trouble at the first digit
!         retval = 1;
          }
!       else if(ctm.MM == 2 && DD >=30)
          {
!         // It's February, so if we see 3x we know on the 3 that we are in
!         // error:
!         retval = 1;
          }
        else
          {
!         static const int month_days[13] = {-1,31,28,31,30,31,30,31,31,30,31,30,31};
!         int days_in_month = month_days[ctm.MM];
!         if( ctm.MM == 2 && ctm.days_in_year == 366 )
!           {
!           days_in_month = 29;
!           }
! 
!         if( DD > days_in_month )
!           {
!           retval = 2;
!           }
!         else
!           {
!           // We have a good YYYY-MM-DD
!           ctm.DD = DD;
!           double JD      = YMD_to_JD(ctm.YYYY, ctm.MM, DD);
!           double JD_Jan0 = YMD_to_JD(ctm.YYYY, 1, 0);
!           ctm.day_of_year = (int)(JD - JD_Jan0);
!           ctm.day_of_week = JD_to_DOW(JD);
!           }
          }
        }
      }
--- 3975,4019 ----
      {
      return 2;
      }
!   if( DD >= 0 )
      {
!     if( DD == 0)
        {
!       // If zero, we know we failed at the second '0' in "00"
!       retval = 2;
!       }
!     else if( DD >= 40)
!       {
!       // 40 or more, then we knew there was trouble at the first digit
!       retval = 1;
!       }
!     else if(ctm.MM == 2 && DD >=30)
!       {
!       // It's February, so if we see 3x we know on the 3 that we are in
!       // error:
!       retval = 1;
!       }
!     else
!       {
!       static const int month_days[13] = {-1,31,28,31,30,31,30,31,31,30,31,30,31};
!       int days_in_month = month_days[ctm.MM];
!       if( ctm.MM == 2 && ctm.days_in_year == 366 )
          {
!         days_in_month = 29;
          }
! 
!       if( DD > days_in_month )
          {
!         retval = 2;
          }
        else
          {
!         // We have a good YYYY-MM-DD
!         ctm.DD = DD;
!         double JD      = YMD_to_JD(ctm.YYYY, ctm.MM, DD);
!         double JD_Jan0 = YMD_to_JD(ctm.YYYY, 1, 0);
!         ctm.day_of_year = (int)(JD - JD_Jan0);
!         ctm.day_of_week = JD_to_DOW(JD);
          }
        }
      }
*************** gets_day(char *p, char *pend, struct cob
*** 4019,4025 ****
  
  static
  int
! gets_day_of_week(char *p, char *pend, struct cobol_tm &ctm)
    {
    // This is just a simple D, for day-of-week.  The COBOL spec is that
    // it be 1 to 7, 1 being Monday
--- 4026,4032 ----
  
  static
  int
! gets_day_of_week(const char *p, const char *pend, struct cobol_tm &ctm)
    {
    // This is just a simple D, for day-of-week.  The COBOL spec is that
    // it be 1 to 7, 1 being Monday
*************** gets_day_of_week(char *p, char *pend, st
*** 4068,4074 ****
  
  static
  int
! gets_day_of_year(char *p, char *pend, struct cobol_tm &ctm)
    {
    // This is a three-digit day-of-year, 001 through 365,366
    int digits[3];
--- 4075,4081 ----
  
  static
  int
! gets_day_of_year(const char *p, const char *pend, struct cobol_tm &ctm)
    {
    // This is a three-digit day-of-year, 001 through 365,366
    int digits[3];
*************** gets_day_of_year(char *p, char *pend, st
*** 4125,4131 ****
  
  static
  int
! gets_week(char *p, char *pend, struct cobol_tm &ctm)
    {
    // This is a two-digit value, 01 through 52,53
    int digits[2];
--- 4132,4138 ----
  
  static
  int
! gets_week(const char *p, const char *pend, struct cobol_tm &ctm)
    {
    // This is a two-digit value, 01 through 52,53
    int digits[2];
*************** gets_week(char *p, char *pend, struct co
*** 4165,4171 ****
  
  static
  int
! gets_hours(char *p, char *pend, struct cobol_tm &ctm, bool in_offset)
    {
    // This is a two-digit value, 01 through 23
    int digits[2];
--- 4172,4181 ----
  
  static
  int
! gets_hours( const char *p,
!             const char *pend,
!             struct cobol_tm &ctm,
!             bool in_offset)
    {
    // This is a two-digit value, 01 through 23
    int digits[2];
*************** gets_hours(char *p, char *pend, struct c
*** 4210,4216 ****
  
  static
  int
! gets_minutes(char *p, char *pend, struct cobol_tm &ctm, bool in_offset)
    {
    // This is a two-digit value, 01 through 59
    int digits[2];
--- 4220,4229 ----
  
  static
  int
! gets_minutes( const char *p,
!               const char *pend,
!               struct cobol_tm &ctm,
!               bool in_offset)
    {
    // This is a two-digit value, 01 through 59
    int digits[2];
*************** gets_minutes(char *p, char *pend, struct
*** 4248,4254 ****
  
  static
  int
! gets_seconds(char *p, char *pend, struct cobol_tm &ctm)
    {
    // This is a two-digit value, 01 through 59
    int digits[2];
--- 4261,4267 ----
  
  static
  int
! gets_seconds(const char *p, const char *pend, struct cobol_tm &ctm)
    {
    // This is a two-digit value, 01 through 59
    int digits[2];
*************** gets_seconds(char *p, char *pend, struct
*** 4278,4284 ****
  
  static
  int
! gets_nanoseconds(char *f, char *f_end, char *p, char *pend, struct cobol_tm &ctm)
    {
    // Because nanoseconds digits to the right of the decimal point can vary from
    // one digit to our implementation-specific limit of nine characters, this
--- 4291,4301 ----
  
  static
  int
! gets_nanoseconds( const char *f,
!                   const char *f_end,
!                   const char *p,
!                   const char *pend,
!                   struct cobol_tm &ctm)
    {
    // Because nanoseconds digits to the right of the decimal point can vary from
    // one digit to our implementation-specific limit of nine characters, this
*************** gets_nanoseconds(char *f, char *f_end, c
*** 4290,4296 ****
    int ncount = 0;
    int nanoseconds = 0;
  
!   char *pinit = p;
    while( f < f_end && *f == internal_s && p < pend )
      {
      f += 1;
--- 4307,4313 ----
    int ncount = 0;
    int nanoseconds = 0;
  
!   const char *pinit = p;
    while( f < f_end && *f == internal_s && p < pend )
      {
      f += 1;
*************** gets_nanoseconds(char *f, char *f_end, c
*** 4322,4340 ****
  static
  int
  fill_cobol_tm(cobol_tm &ctm,
!               cblc_field_t *par1,
                size_t par1_offset,
                size_t par1_size,
!               cblc_field_t *par2,
                size_t par2_offset,
                size_t par2_size)
    {
    // Establish the formatting string:
!   char *format     = (char *)(par1->data+par1_offset);
    char *format_end = format + par1_size;
  
    // Establish the string to be checked:
!   char *source     = (char *)(par2->data+par2_offset);
    char *source_end = source + par2_size;
  
    // Let's eliminate trailing spaces...
--- 4339,4357 ----
  static
  int
  fill_cobol_tm(cobol_tm &ctm,
!         const cblc_field_t *par1,
                size_t par1_offset,
                size_t par1_size,
!         const cblc_field_t *par2,
                size_t par2_offset,
                size_t par2_size)
    {
    // Establish the formatting string:
!   char *format     = PTRCAST(char, (par1->data+par1_offset));
    char *format_end = format + par1_size;
  
    // Establish the string to be checked:
!   char *source     = PTRCAST(char, (par2->data+par2_offset));
    char *source_end = source + par2_size;
  
    // Let's eliminate trailing spaces...
*************** proceed:
*** 4584,4593 ****
  extern "C"
  void
  __gg__test_formatted_datetime(cblc_field_t *dest,
!                               cblc_field_t *arg1,
                                size_t arg1_offset,
                                size_t arg1_size,
!                               cblc_field_t *arg2,
                                size_t arg2_offset,
                                size_t arg2_size)
  
--- 4601,4610 ----
  extern "C"
  void
  __gg__test_formatted_datetime(cblc_field_t *dest,
!                         const cblc_field_t *arg1,
                                size_t arg1_offset,
                                size_t arg1_size,
!                         const cblc_field_t *arg2,
                                size_t arg2_offset,
                                size_t arg2_size)
  
*************** __gg__test_formatted_datetime(cblc_field
*** 4607,4616 ****
  extern "C"
  void
  __gg__integer_of_formatted_date(cblc_field_t *dest,
!                                 cblc_field_t *arg1,
                                  size_t arg1_offset,
                                  size_t arg1_size,
!                                 cblc_field_t *arg2,
                                  size_t arg2_offset,
                                  size_t arg2_size)
    {
--- 4624,4633 ----
  extern "C"
  void
  __gg__integer_of_formatted_date(cblc_field_t *dest,
!                           const cblc_field_t *arg1,
                                  size_t arg1_offset,
                                  size_t arg1_size,
!                           const cblc_field_t *arg2,
                                  size_t arg2_offset,
                                  size_t arg2_size)
    {
*************** __gg__integer_of_formatted_date(cblc_fie
*** 4642,4651 ****
  extern "C"
  void
  __gg__seconds_from_formatted_time(cblc_field_t *dest,
!                                   cblc_field_t *arg1,
                                    size_t arg1_offset,
                                    size_t arg1_size,
!                                   cblc_field_t *arg2,
                                    size_t arg2_offset,
                                    size_t arg2_size)
    {
--- 4659,4668 ----
  extern "C"
  void
  __gg__seconds_from_formatted_time(cblc_field_t *dest,
!                             const cblc_field_t *arg1,
                                    size_t arg1_offset,
                                    size_t arg1_size,
!                             const cblc_field_t *arg2,
                                    size_t arg2_offset,
                                    size_t arg2_size)
    {
*************** __gg__seconds_from_formatted_time(cblc_f
*** 4670,4676 ****
  extern "C"
  void
  __gg__hex_of(cblc_field_t *dest,
!              cblc_field_t *field,
               size_t field_offset,
               size_t field_size)
    {
--- 4687,4693 ----
  extern "C"
  void
  __gg__hex_of(cblc_field_t *dest,
!        const cblc_field_t *field,
               size_t field_offset,
               size_t field_size)
    {
*************** __gg__hex_of(cblc_field_t *dest,
*** 4688,4694 ****
  extern "C"
  void
  __gg__highest_algebraic(cblc_field_t *dest,
!                         cblc_field_t *var,
                          size_t,
                          size_t)
    {
--- 4705,4711 ----
  extern "C"
  void
  __gg__highest_algebraic(cblc_field_t *dest,
!                   const cblc_field_t *var,
                          size_t,
                          size_t)
    {
*************** __gg__highest_algebraic(cblc_field_t *de
*** 4730,4736 ****
  extern "C"
  void
  __gg__lowest_algebraic( cblc_field_t *dest,
!                         cblc_field_t *var,
                          size_t,
                          size_t)
    {
--- 4747,4753 ----
  extern "C"
  void
  __gg__lowest_algebraic( cblc_field_t *dest,
!                   const cblc_field_t *var,
                          size_t,
                          size_t)
    {
*************** __gg__lowest_algebraic( cblc_field_t *de
*** 4792,4798 ****
    }
  
  static int
! floating_format_tester(char const * const f, char * const f_end)
    {
    int retval = -1;
    char decimal_point = __gg__get_decimal_point();
--- 4809,4815 ----
    }
  
  static int
! floating_format_tester(char const * const f, char const * const f_end)
    {
    int retval = -1;
    char decimal_point = __gg__get_decimal_point();
*************** floating_format_tester(char const * cons
*** 4980,4992 ****
  extern "C"
  void
  __gg__numval_f( cblc_field_t *dest,
!                 cblc_field_t *source,
                  size_t source_offset,
                  size_t source_size)
    {
    GCOB_FP128 value = 0;
!   char *data     = (char * )(source->data + source_offset);
!   char *data_end = data + source_size;
  
    int error = floating_format_tester(data, data_end);
  
--- 4997,5009 ----
  extern "C"
  void
  __gg__numval_f( cblc_field_t *dest,
!           const cblc_field_t *source,
                  size_t source_offset,
                  size_t source_size)
    {
    GCOB_FP128 value = 0;
!   const char *data     = PTRCAST(char, (source->data + source_offset));
!   const char *data_end = data + source_size;
  
    int error = floating_format_tester(data, data_end);
  
*************** __gg__numval_f( cblc_field_t *dest,
*** 5019,5030 ****
  extern "C"
  void
  __gg__test_numval_f(cblc_field_t *dest,
!                     cblc_field_t *source,
                      size_t source_offset,
                      size_t source_size)
    {
!   char *data     = (char * )(source->data + source_offset);
!   char *data_end = data + source_size;
  
    int error = floating_format_tester(data, data_end);
  
--- 5036,5047 ----
  extern "C"
  void
  __gg__test_numval_f(cblc_field_t *dest,
!               const cblc_field_t *source,
                      size_t source_offset,
                      size_t source_size)
    {
!   const char *data     = PTRCAST(char, (source->data + source_offset));
!   const char *data_end = data + source_size;
  
    int error = floating_format_tester(data, data_end);
  
*************** __gg__test_numval_f(cblc_field_t *dest,
*** 5036,5042 ****
    }
  
  static bool
! ismatch(char *a1, char *a2, char *b1, char *b2)
    {
    bool retval = true;
    while( a1 < a2 && b1 < b2 )
--- 5053,5059 ----
    }
  
  static bool
! ismatch(const char *a1, const char *a2, const char *b1, const char *b2)
    {
    bool retval = true;
    while( a1 < a2 && b1 < b2 )
*************** ismatch(char *a1, char *a2, char *b1, ch
*** 5050,5056 ****
    }
  
  static bool
! iscasematch(char *a1, char *a2, char *b1, char *b2)
    {
    bool retval = true;
    while( a1 < a2 && b1 < b2 )
--- 5067,5073 ----
    }
  
  static bool
! iscasematch(const char *a1, const char *a2, const char *b1, const char *b2)
    {
    bool retval = true;
    while( a1 < a2 && b1 < b2 )
*************** iscasematch(char *a1, char *a2, char *b1
*** 5063,5073 ****
    return retval;
    }
  
! static char *
! strstr(char *haystack, char *haystack_e, char *needle, char *needle_e)
    {
!   char *retval = NULL;
!   char *pend = haystack_e - (needle_e - needle);
    while( haystack <= pend )
      {
      if(ismatch(haystack, haystack_e, needle, needle_e))
--- 5080,5094 ----
    return retval;
    }
  
! static
! const char *
! strstr( const char *haystack,
!         const char *haystack_e,
!         const char *needle,
!         const char *needle_e)
    {
!   const char *retval = NULL;
!   const char *pend = haystack_e - (needle_e - needle);
    while( haystack <= pend )
      {
      if(ismatch(haystack, haystack_e, needle, needle_e))
*************** strstr(char *haystack, char *haystack_e,
*** 5080,5090 ****
    return retval;
    }
  
! static char *
! strcasestr(char *haystack, char *haystack_e, char *needle, char *needle_e)
    {
!   char *retval = NULL;
!   char *pend = haystack_e - (needle_e - needle);
    while( haystack <= pend )
      {
      if(iscasematch(haystack, haystack_e, needle, needle_e))
--- 5101,5115 ----
    return retval;
    }
  
! static
! const char *
! strcasestr( const char *haystack,
!             const char *haystack_e,
!             const char *needle,
!             const char *needle_e)
    {
!   const char *retval = NULL;
!   const char *pend = haystack_e - (needle_e - needle);
    while( haystack <= pend )
      {
      if(iscasematch(haystack, haystack_e, needle, needle_e))
*************** strcasestr(char *haystack, char *haystac
*** 5097,5107 ****
    return retval;
    }
  
! static char *
! strlaststr(char *haystack, char *haystack_e, char *needle, char *needle_e)
    {
!   char *retval = NULL;
!   char *pend = haystack_e - (needle_e - needle);
    while( haystack <= pend )
      {
      if(ismatch(haystack, haystack_e, needle, needle_e))
--- 5122,5136 ----
    return retval;
    }
  
! static 
! const char *
! strlaststr( const char *haystack,
!             const char *haystack_e,
!             const char *needle,
!             const char *needle_e)
    {
!   const char *retval = NULL;
!   const char *pend = haystack_e - (needle_e - needle);
    while( haystack <= pend )
      {
      if(ismatch(haystack, haystack_e, needle, needle_e))
*************** strlaststr(char *haystack, char *haystac
*** 5113,5123 ****
    return retval;
    }
  
! static char *
! strcaselaststr(char *haystack, char *haystack_e, char *needle, char *needle_e)
    {
!   char *retval = NULL;
!   char *pend = haystack_e - (needle_e - needle);
    while( haystack <= pend )
      {
      if(iscasematch(haystack, haystack_e, needle, needle_e))
--- 5142,5156 ----
    return retval;
    }
  
! static 
! const char *
! strcaselaststr( const char *haystack,
!                 const char *haystack_e,
!                 const char *needle,
!                 const char *needle_e)
    {
!   const char *retval = NULL;
!   const char *pend = haystack_e - (needle_e - needle);
    while( haystack <= pend )
      {
      if(iscasematch(haystack, haystack_e, needle, needle_e))
*************** strcaselaststr(char *haystack, char *hay
*** 5131,5143 ****
  
  
  extern "C"
! void __gg__substitute(cblc_field_t *dest,
!                       cblc_field_t *arg1_f,
!                       size_t        arg1_o,
!                       size_t        arg1_s,
!                       size_t        N,
!                       uint8_t      *control
!                       )
    {
    // arg2 is the Group 1 triplet.
    // arg3 is the Group 2 triplet
--- 5164,5176 ----
  
  
  extern "C"
! void 
! __gg__substitute( cblc_field_t *dest,
!             const cblc_field_t *arg1_f,
!                   size_t        arg1_o,
!                   size_t        arg1_s,
!                   size_t        N,
!             const uint8_t      *control)
    {
    // arg2 is the Group 1 triplet.
    // arg3 is the Group 2 triplet
*************** void __gg__substitute(cblc_field_t *dest
*** 5145,5163 ****
    size_t        *arg2_o = __gg__treeplet_1o;
    size_t        *arg2_s = __gg__treeplet_1s;
    cblc_field_t **arg3_f = __gg__treeplet_2f;
!   size_t        *arg3_o = __gg__treeplet_2o;
!   size_t        *arg3_s = __gg__treeplet_2s;
  
!   ssize_t retval_size = 256;
!   char  *retval = (char *)malloc(retval_size);
    *retval = '\0';
  
!   char *haystack   = (char *)(arg1_f->data + arg1_o);
!   char *haystack_e = haystack + arg1_s;
  
    ssize_t outdex = 0;
  
!   char **pflasts = (char **)malloc(N * sizeof(char *));
  
    if( arg1_s == 0 )
      {
--- 5178,5199 ----
    size_t        *arg2_o = __gg__treeplet_1o;
    size_t        *arg2_s = __gg__treeplet_1s;
    cblc_field_t **arg3_f = __gg__treeplet_2f;
!   const size_t  *arg3_o = __gg__treeplet_2o;
!   const size_t  *arg3_s = __gg__treeplet_2s;
  
!   ssize_t retval_size;
!   retval_size = 256;
!   char  *retval = static_cast<char *>(malloc(retval_size));
!   massert(retval);
    *retval = '\0';
  
!   const char *haystack   = PTRCAST(char, (arg1_f->data + arg1_o));
!   const char *haystack_e = haystack + arg1_s;
  
    ssize_t outdex = 0;
  
!   const char **pflasts = static_cast<const char **>(malloc(N * sizeof(char *)));
!   massert(pflasts);
  
    if( arg1_s == 0 )
      {
*************** void __gg__substitute(cblc_field_t *dest
*** 5178,5192 ****
          {
          pflasts[i] = strcasestr(haystack,
                                  haystack_e,
!                                 (char *)(arg2_f[i]->data+arg2_o[i]),
!                                 (char *)(arg2_f[i]->data+arg2_o[i]) + arg2_s[i]);
          }
        else if( control[i] & substitute_last_e)
          {
          pflasts[i] = strcaselaststr(haystack,
                                  haystack_e,
!                                 (char *)(arg2_f[i]->data+arg2_o[i]),
!                                 (char *)(arg2_f[i]->data+arg2_o[i]) + arg2_s[i]);
          }
        else
          {
--- 5214,5228 ----
          {
          pflasts[i] = strcasestr(haystack,
                                  haystack_e,
!                                 PTRCAST(char, (arg2_f[i]->data+arg2_o[i])),
!                                 PTRCAST(char, (arg2_f[i]->data+arg2_o[i])) + arg2_s[i]);
          }
        else if( control[i] & substitute_last_e)
          {
          pflasts[i] = strcaselaststr(haystack,
                                  haystack_e,
!                                 PTRCAST(char, (arg2_f[i]->data+arg2_o[i])),
!                                 PTRCAST(char, (arg2_f[i]->data+arg2_o[i])) + arg2_s[i]);
          }
        else
          {
*************** void __gg__substitute(cblc_field_t *dest
*** 5199,5213 ****
          {
          pflasts[i] = strstr(haystack,
                              haystack_e,
!                             (char *)(arg2_f[i]->data+arg2_o[i]),
!                             (char *)(arg2_f[i]->data+arg2_o[i]) + arg2_s[i]);
          }
        else if( control[i] & substitute_last_e)
          {
          pflasts[i] = strlaststr(haystack,
                                  haystack_e,
!                                 (char *)(arg2_f[i]->data+arg2_o[i]),
!                                 (char *)(arg2_f[i]->data+arg2_o[i]) + arg2_s[i]);
          }
        else
          {
--- 5235,5249 ----
          {
          pflasts[i] = strstr(haystack,
                              haystack_e,
!                             PTRCAST(char, (arg2_f[i]->data+arg2_o[i])),
!                             PTRCAST(char, (arg2_f[i]->data+arg2_o[i])) + arg2_s[i]);
          }
        else if( control[i] & substitute_last_e)
          {
          pflasts[i] = strlaststr(haystack,
                                  haystack_e,
!                                 PTRCAST(char, (arg2_f[i]->data+arg2_o[i])),
!                                 PTRCAST(char, (arg2_f[i]->data+arg2_o[i])) + arg2_s[i]);
          }
        else
          {
*************** void __gg__substitute(cblc_field_t *dest
*** 5227,5233 ****
                                                                   > retval_size )
          {
          retval_size *= 2;
!         retval = (char *)realloc(retval, retval_size);
          }
  
        // We checked earlier for FIRST/LAST matches
--- 5263,5270 ----
                                                                   > retval_size )
          {
          retval_size *= 2;
!         retval = static_cast<char *>(realloc(retval, retval_size));
!         massert(retval);
          }
  
        // We checked earlier for FIRST/LAST matches
*************** void __gg__substitute(cblc_field_t *dest
*** 5242,5249 ****
            continue;
            }
  
!         char *needle   = (char *)(arg2_f[i]->data+arg2_o[i]);
!         char *needle_e = (char *)(arg2_f[i]->data+arg2_o[i]) + arg2_s[i];
          matched = (control[i] & substitute_anycase_e) && iscasematch(
                                                                   haystack,
                                                                   haystack_e,
--- 5279,5286 ----
            continue;
            }
  
!         const char *needle   = PTRCAST(char, arg2_f[i]->data+arg2_o[i]);
!         const char *needle_e = PTRCAST(char, arg2_f[i]->data+arg2_o[i]) + arg2_s[i];
          matched = (control[i] & substitute_anycase_e) && iscasematch(
                                                                   haystack,
                                                                   haystack_e,
*************** void __gg__substitute(cblc_field_t *dest
*** 5271,5277 ****
        while( outdex + 1 > retval_size )
          {
          retval_size *= 2;
!         retval = (char *)realloc(retval, retval_size);
          }
        retval[outdex++] = *haystack++;
        }
--- 5308,5315 ----
        while( outdex + 1 > retval_size )
          {
          retval_size *= 2;
!         retval = static_cast<char *>(realloc(retval, retval_size));
!         massert(retval);
          }
        retval[outdex++] = *haystack++;
        }
*************** void __gg__substitute(cblc_field_t *dest
*** 5288,5300 ****
  extern "C"
  void
  __gg__locale_compare( cblc_field_t *dest,
!                       cblc_field_t *arg1,
                        size_t        arg1_o,
                        size_t        arg1_s,
!                       cblc_field_t *arg2,
                        size_t        arg2_o,
                        size_t        arg2_s,
!                       cblc_field_t *arg_locale,
                        size_t        /*arg_locale_o*/,
                        size_t        /*arg_locale_s*/
                        )
--- 5326,5338 ----
  extern "C"
  void
  __gg__locale_compare( cblc_field_t *dest,
!                 const cblc_field_t *arg1,
                        size_t        arg1_o,
                        size_t        arg1_s,
!                 const cblc_field_t *arg2,
                        size_t        arg2_o,
                        size_t        arg2_s,
!                 const cblc_field_t *arg_locale,
                        size_t        /*arg_locale_o*/,
                        size_t        /*arg_locale_s*/
                        )
*************** __gg__locale_compare( cblc_field_t *dest
*** 5345,5354 ****
  extern "C"
  void
  __gg__locale_date(cblc_field_t *dest,
!                   cblc_field_t *arg1,
                    size_t        arg1_o,
                    size_t        /*arg1_s*/,
!                   cblc_field_t *arg_locale,
                    size_t        /*arg_locale_o*/,
                    size_t        /*arg_locale_s*/)
    {
--- 5383,5392 ----
  extern "C"
  void
  __gg__locale_date(cblc_field_t *dest,
!             const cblc_field_t *arg1,
                    size_t        arg1_o,
                    size_t        /*arg1_s*/,
!             const cblc_field_t *arg_locale,
                    size_t        /*arg_locale_o*/,
                    size_t        /*arg_locale_s*/)
    {
*************** __gg__locale_date(cblc_field_t *dest,
*** 5381,5390 ****
  extern "C"
  void
  __gg__locale_time(cblc_field_t *dest,
!                   cblc_field_t *arg1,
                    size_t        arg1_o,
                    size_t        /*arg1_s*/,
!                   cblc_field_t *arg_locale,
                    size_t        /*arg_locale_o*/,
                    size_t        /*arg_locale_s*/)
  
--- 5419,5428 ----
  extern "C"
  void
  __gg__locale_time(cblc_field_t *dest,
!             const cblc_field_t *arg1,
                    size_t        arg1_o,
                    size_t        /*arg1_s*/,
!             const cblc_field_t *arg_locale,
                    size_t        /*arg_locale_o*/,
                    size_t        /*arg_locale_s*/)
  
*************** __gg__locale_time(cblc_field_t *dest,
*** 5417,5426 ****
  extern "C"
  void
  __gg__locale_time_from_seconds( cblc_field_t *dest,
!                                 cblc_field_t *arg1,
                                  size_t        arg1_o,
                                  size_t        arg1_s,
!                                 cblc_field_t *arg_locale,
                                  size_t        /*arg_locale_o*/,
                                  size_t        /*arg_locale_s*/)
    {
--- 5455,5464 ----
  extern "C"
  void
  __gg__locale_time_from_seconds( cblc_field_t *dest,
!                           const cblc_field_t *arg1,
                                  size_t        arg1_o,
                                  size_t        arg1_s,
!                           const cblc_field_t *arg_locale,
                                  size_t        /*arg_locale_o*/,
                                  size_t        /*arg_locale_s*/)
    {
*************** __gg__locale_time_from_seconds( cblc_fie
*** 5436,5442 ****
      // Default locale
      tm tm = {};
  
!     int rdigits;
      long seconds = (long)__gg__binary_value_from_qualified_field(&rdigits,
                                                                   arg1,
                                                                   arg1_o,
--- 5474,5480 ----
      // Default locale
      tm tm = {};
  
!     int rdigits=0;
      long seconds = (long)__gg__binary_value_from_qualified_field(&rdigits,
                                                                   arg1,
                                                                   arg1_o,
diff -Nrcpad gcc-15-20250726/libgcobol/io.cc gcc-15-20250809/libgcobol/io.cc
*** gcc-15-20250726/libgcobol/io.cc	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/io.cc	Sat Aug  9 22:33:00 2025
***************
*** 31,41 ****
  #include "config.h"
  
  #include "io.h"
! #include "stdio.h"
! #include "stdlib.h"
! #include <errno.h>
! #include <stdbool.h>
! #include <stdint.h>
  
  /*
   * The Cobol runtime support is responsible to set the file status
--- 31,42 ----
  #include "config.h"
  
  #include "io.h"
! 
! #include <cstdio>
! #include <cstdlib>
! #include <cerrno>
! #include <cstdbool>
! #include <cstdint>
  
  /*
   * The Cobol runtime support is responsible to set the file status
diff -Nrcpad gcc-15-20250726/libgcobol/libgcobol.cc gcc-15-20250809/libgcobol/libgcobol.cc
*** gcc-15-20250726/libgcobol/libgcobol.cc	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/libgcobol.cc	Sat Aug  9 22:33:00 2025
***************
*** 27,53 ****
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
- #include <ctype.h>
- #include <err.h>
- #include <errno.h>
- #include <fcntl.h>
- #include <math.h>
- #include <fenv.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <unistd.h>
- #include <vector>
  #include <algorithm>
! #include <unordered_map>
  #include <set>
  #include <string>
  #include <setjmp.h>
  #include <signal.h>
! #include <dlfcn.h>
! #include <dirent.h>
! #include <sys/resource.h>
  
  #include "config.h"
  #include "libgcobol-fp.h"
--- 27,58 ----
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  #include <algorithm>
! #include <cctype>
! #include <cstdio>
! #include <cstdlib>
! #include <cstring>
! #include <ctime>
  #include <set>
+ #include <stack>
  #include <string>
+ #include <unordered_map>
+ #include <vector>
+ 
+ #include <dirent.h>
+ #include <dlfcn.h>
+ #include <err.h>
+ #include <fcntl.h>
+ #include <fenv.h>
+ #include <math.h> // required for fpclassify(3), not in cmath
  #include <setjmp.h>
  #include <signal.h>
! #include <syslog.h>
! #include <unistd.h>
! #include <stdarg.h>
! #if __has_include(<errno.h>)
! # include <errno.h> // for program_invocation_short_name
! #endif
  
  #include "config.h"
  #include "libgcobol-fp.h"
***************
*** 60,74 ****
  #include "gfileio.h"
  #include "charmaps.h"
  #include "valconv.h"
- 
  #include <sys/mman.h>
  #include <sys/stat.h>
  #include <sys/types.h>
! 
  #include <execinfo.h>
- 
  #include "exceptl.h"
  
  #if !defined (HAVE_STRFROMF32)
  # if __FLT_MANT_DIG__ == 24 && __FLT_MAX_EXP__ == 128
  static int
--- 65,83 ----
  #include "gfileio.h"
  #include "charmaps.h"
  #include "valconv.h"
  #include <sys/mman.h>
+ #include <sys/resource.h>
  #include <sys/stat.h>
  #include <sys/types.h>
! #include <sys/time.h>
  #include <execinfo.h>
  #include "exceptl.h"
  
+ /* BSD extension.  */
+ #if !defined(LOG_PERROR)
+ #define LOG_PERROR 0
+ #endif
+ 
  #if !defined (HAVE_STRFROMF32)
  # if __FLT_MANT_DIG__ == 24 && __FLT_MAX_EXP__ == 128
  static int
*************** strfromf64 (char *s, size_t n, const cha
*** 93,98 ****
--- 102,115 ----
  # endif
  #endif
  
+ // Enable Declarative tracing via "match_declarative" environment variable.
+ #if defined(MATCH_DECLARATIVE) || true
+ # undef  MATCH_DECLARATIVE
+ # define MATCH_DECLARATIVE getenv("match_declarative")
+ #else
+ # define MATCH_DECLARATIVE (nullptr)
+ #endif
+ 
  // This couldn't be defined in symbols.h because it conflicts with a LEVEL66
  // in parse.h
  #define LEVEL66 (66)
*************** strfromf64 (char *s, size_t n, const cha
*** 107,114 ****
  
  // These global values are established as the COBOL program executes
  int         __gg__exception_code              = 0    ;
- int         __gg__exception_handled           = 0    ;
- int         __gg__exception_file_number       = 0    ;
  int         __gg__exception_file_status       = 0    ;
  const char *__gg__exception_file_name         = NULL ;
  const char *__gg__exception_program_id        = NULL ;
--- 124,129 ----
*************** int         __gg__exception_line_number
*** 119,128 ****
  const char *__gg__exception_statement         = NULL ;
  int         __gg__default_compute_error       = 0    ;
  int         __gg__rdigits                     = 0    ;
- int         __gg__odo_violation               = 0    ;
  int         __gg__nop                         = 0    ;
  int         __gg__main_called                 = 0    ;
  
  // What follows are arrays that are used by features like INSPECT, STRING,
  // UNSTRING, and, particularly, arithmetic_operation.  These features are
  // characterized by having unknown, and essentially unlimited, numbers of
--- 134,147 ----
  const char *__gg__exception_statement         = NULL ;
  int         __gg__default_compute_error       = 0    ;
  int         __gg__rdigits                     = 0    ;
  int         __gg__nop                         = 0    ;
  int         __gg__main_called                 = 0    ;
  
+ // During SORT operations, we don't want the end-of-file condition, which
+ // happens as a matter of course, from setting the EOF exception condition.
+ // Setting this variable to 'true' suppresses the error condition.
+ static bool sv_suppress_eof_ec = false;
+ 
  // What follows are arrays that are used by features like INSPECT, STRING,
  // UNSTRING, and, particularly, arithmetic_operation.  These features are
  // characterized by having unknown, and essentially unlimited, numbers of
*************** size_t       *  __gg__treeplet_4s
*** 171,188 ****
  // used to keep track of local variables.
  size_t      __gg__unique_prog_id              = 0    ;
  
! // These values are the persistent stashed versions of the global values
! static int         stashed_exception_code;
! static int         stashed_exception_handled;
! static int         stashed_exception_file_number;
! static int         stashed_exception_file_status;
! static const char *stashed_exception_file_name;
! static const char *stashed_exception_program_id;
! static const char *stashed_exception_section;
! static const char *stashed_exception_paragraph;
! static const char *stashed_exception_source_file;
! static int         stashed_exception_line_number;
! static const char *stashed_exception_statement;
  
  static int sv_from_raise_statement = 0;
  
--- 190,212 ----
  // used to keep track of local variables.
  size_t      __gg__unique_prog_id              = 0    ;
  
! // Whenever an exception status is set, a snapshot of the current statement
! // location information are established in the "last_exception..." variables.
! // This is in accordance with the ISO requirements of "14.6.13.1.1 General" that
! // describe how a "last exception status" is maintained.
! // other "location" information
! static int         last_exception_code;
! static const char *last_exception_program_id;
! static const char *last_exception_section;
! static const char *last_exception_paragraph;
! static const char *last_exception_source_file;
! static int         last_exception_line_number;
! static const char *last_exception_statement;
! // These variables are similar, and are established when an exception is
! // raised for a file I-O operation.
! static cblc_file_prior_op_t last_exception_file_operation;
! static file_status_t        last_exception_file_status;
! static const char          *last_exception_file_name;
  
  static int sv_from_raise_statement = 0;
  
*************** void       *__gg__entry_location = NULL;
*** 205,222 ****
--- 229,383 ----
  // nested PERFORM PROC statements.
  void       *__gg__exit_address = NULL;
  
+ /*
+  * ec_status_t represents the runtime exception condition status for
+  * any statement.  There are 4 states:
+  *   1.  initial, all zeros
+  *   2.  updated, copy global EC state for by Declarative and/or default
+  *   3.  matched, Declarative found, isection nonzero
+  *   4.  handled, where handled == type
+  *
+  * If the statement includes some kind of ON ERROR
+  * clause that covers it, the generated code does not raise an EC.
+  *
+  * The status is updated by __gg_match_exception if it runs, else
+  * __gg__check_fatal_exception.
+  *
+  * If a Declarative is matched, its section number is passed to handled_by(),
+  * which does two things:
+  *  1. sets isection to record the declarative
+  *  2. for a nonfatal EC, sets handled, indication no further action is needed
+  *
+  * A Declarative may use RESUME, which clears ec_status, which is a "handled" state.
+  *
+  * Default processing ensures return to initial state.
+  */
+ class ec_status_t {
+  public:
+   struct file_status_t {
+     size_t ifile;
+     cblc_file_prior_op_t operation;
+     cbl_file_mode_t mode;
+     cblc_field_t *user_status;
+     const char * filename;
+     file_status_t()
+                     : ifile(0)
+                     ,  operation(file_op_none)
+                     ,  mode(file_mode_none_e)
+                     ,  user_status(nullptr)
+                     ,  filename(nullptr)
+                       {}
+     explicit file_status_t( const cblc_file_t *file )
+                     : ifile(file->symbol_table_index)
+                     , operation(file->prior_op)
+                     , mode(cbl_file_mode_t(file->mode_char))
+                     , user_status(file->user_status)
+                     , filename(file->filename)
+                       {}
+     const char * op_str() const {
+       switch( operation ) {
+       case file_op_none: return "none";
+       case file_op_open: return "open";
+       case file_op_close: return "close";
+       case file_op_start: return "start";
+       case file_op_read: return "read";
+       case file_op_write: return "write";
+       case file_op_rewrite: return "rewrite";
+       case file_op_delete: return "delete";
+       }
+       return "???";
+     }
+   };
+  private:
+   char msg[132];
+   ec_type_t type, handled;
+   size_t isection;
+   cbl_enabled_exceptions_t enabled;
+   cbl_declaratives_t declaratives;
+   struct file_status_t file;
+  public:
+   int lineno;
+   const char *source_file;
+   cbl_name_t statement; // e.g., "ADD"
+ 
+   ec_status_t()
+     : type(ec_none_e)
+     , handled(ec_none_e)
+     , isection(0)
+     , lineno(0)
+     , source_file(NULL)
+   {
+     msg[0] = statement[0] = '\0';
+   }
+ 
+   bool is_fatal() const;
+   ec_status_t& update();
+ 
+   bool is_enabled() const { return enabled.match(type); }
+   bool is_enabled( ec_type_t ec) const { return enabled.match(ec); }
+   ec_status_t& handled_by( size_t declarative_section ) {
+     isection = declarative_section;
+     // A fatal exception remains unhandled unless RESUME clears it.
+     if( ! is_fatal() ) {
+       handled = type;
+     }
+     return *this;
+   }
+   ec_status_t& clear() {
+     handled = type = ec_none_e;
+     isection = 0;
+     lineno = 0;
+     msg[0] = statement[0] = '\0';
+     return *this;
+   }
+   bool unset() const { return isection == 0 && lineno == 0; }
+ 
+   void reset_environment() const;
+   ec_status_t& copy_environment();
+ 
+   // Return the EC's type if it is *not* handled.
+   ec_type_t unhandled() const {
+     bool was_handled = ec_cmp(type, handled);
+     return was_handled? ec_none_e : type;
+   }
+ 
+   bool done() const { return unhandled() == ec_none_e; }
+ 
+   const file_status_t& file_status() const { return file; }
+ 
+   const char * exception_location() {
+     snprintf(msg, sizeof(msg), "%s:%d: '%s'", source_file, lineno, statement);
+     return msg;
+   }
+ };
+ 
+ /*
+  * Capture the global EC status at the beginning of Declarative matching. While
+  * executing the Declarative, push the current status on a stack. When the
+  * Declarative returns, restore EC status from the stack.
+  *
+  * If the Declarative includes a RESUME statement, it clears the on-stack
+  * status, thus avoiding any default handling.
+  */
  static ec_status_t ec_status;
+ static std::stack<ec_status_t> ec_stack;
+ 
+ static cbl_enabled_exceptions_t enabled_ECs;
+ static cbl_declaratives_t declaratives;
  
  static const ec_descr_t *
  local_ec_type_descr( ec_type_t type ) {
    auto p = std::find( __gg__exception_table, __gg__exception_table_end, type );
    if( p == __gg__exception_table_end )
      {
+       warnx("%s:%d: no such EC value %08x", __func__, __LINE__, type);
      __gg__abort("Fell off the end of the __gg__exception_table");
      }
    return p;
  }
  
+ cblc_file_t * __gg__file_stashed();
+ 
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wunused-function"
  // Keep this debugging function around for when it is needed
*************** local_ec_type_str( ec_type_t type ) {
*** 228,248 ****
  }
  #pragma GCC diagnostic pop
  
! ec_status_t& ec_status_t::update() {
!   handled =   ec_type_t(__gg__exception_handled);
!   type    =   ec_type_t(__gg__exception_code);
!   __gg__exception_code = ec_none_e;
!   source_file = __gg__exception_source_file;
!   lineno = __gg__exception_line_number;
    if( __gg__exception_statement ) {
      snprintf(statement, sizeof(statement), "%s", __gg__exception_statement);
    }
  
    return *this;
  }
  
  static cbl_truncation_mode truncation_mode = trunc_std_e;
  
  struct program_state
    {
    // These are the run-time values of these characters.
--- 389,449 ----
  }
  #pragma GCC diagnostic pop
  
! bool
! ec_status_t::is_fatal() const {
!   auto descr = local_ec_type_descr(type);
!   return descr->disposition == ec_category_fatal_e;
! }
! 
! ec_status_t&
! ec_status_t::update() {
!   handled =   ec_none_e;
!   type =      ec_type_t(__gg__exception_code);
!   source_file =         __gg__exception_source_file;
!   lineno =              __gg__exception_line_number;
    if( __gg__exception_statement ) {
      snprintf(statement, sizeof(statement), "%s", __gg__exception_statement);
    }
+   cblc_file_t *stashed = __gg__file_stashed();
+   this->file = stashed? file_status_t(stashed) : file_status_t();
+ 
+   if( type != ec_none_e && MATCH_DECLARATIVE ) {
+     warnx( "ec_status_t::update:%d: EC %s by %s (handled %s) " , __LINE__,
+            local_ec_type_str(type),
+            __gg__exception_statement? statement : "<none>",
+            local_ec_type_str(handled) );
+   }
+ 
+   this->enabled = ::enabled_ECs;
+   this->declaratives = ::declaratives;
+ 
+   return *this;
+ }
  
+ ec_status_t&
+ ec_status_t::copy_environment() {
+   this->enabled = ::enabled_ECs;
+   this->declaratives = ::declaratives;
    return *this;
  }
  
+ void
+ ec_status_t::reset_environment() const {
+   ::enabled_ECs = enabled;
+   ::declaratives = declaratives;
+ }
+ 
+ 
+ // This is the default truncation mode
  static cbl_truncation_mode truncation_mode = trunc_std_e;
  
+ extern "C"
+ void
+ __gg__set_truncation_mode(cbl_truncation_mode trunc_mode)
+   {
+   truncation_mode = trunc_mode;
+   }
+ 
  struct program_state
    {
    // These are the run-time values of these characters.
*************** void *malloc(size_t a)
*** 348,354 ****
    void *retval = malloc(a);
    fprintf(stderr, " --malloc(%p)-- ", retval);
    return retval;
-   return retval;
    }
  #endif
  
--- 549,554 ----
*************** __gg__abort(const char *msg)
*** 359,364 ****
--- 559,570 ----
    abort();
    }
  
+ void
+ __gg__mabort()
+   {
+   __gg__abort("Memory allocation error\n");
+   }
+ 
  extern "C"
  char
  __gg__get_decimal_point()
*************** __gg__resize_int_p( size_t *size,
*** 389,395 ****
    if( new_size > *size )
      {
      *size = new_size;
!     *block = (int *)realloc(*block, new_size * sizeof(int));
      }
    }
  
--- 595,601 ----
    if( new_size > *size )
      {
      *size = new_size;
!     *block = static_cast<int *>(realloc(*block, new_size * sizeof(int)));
      }
    }
  
*************** __gg__resize_treeplet(int     ngroup,
*** 404,439 ****
        if( new_size > treeplet_1_size )
          {
          treeplet_1_size = new_size;
!         __gg__treeplet_1f = (cblc_field_t **)realloc(__gg__treeplet_1f, new_size * sizeof(cblc_field_t *));
!         __gg__treeplet_1o = (size_t *)realloc(__gg__treeplet_1o, new_size * sizeof(size_t));
!         __gg__treeplet_1s = (size_t *)realloc(__gg__treeplet_1s, new_size * sizeof(size_t));
          }
      break;
      case 2:
        if( new_size > treeplet_2_size )
          {
          treeplet_2_size = new_size;
!         __gg__treeplet_2f = (cblc_field_t **)realloc(__gg__treeplet_2f, new_size * sizeof(cblc_field_t *));
!         __gg__treeplet_2o = (size_t *)realloc(__gg__treeplet_2o, new_size * sizeof(size_t));
!         __gg__treeplet_2s = (size_t *)realloc(__gg__treeplet_2s, new_size * sizeof(size_t));
          }
      break;
      case 3:
        if( new_size > treeplet_3_size )
          {
          treeplet_3_size = new_size;
!         __gg__treeplet_3f = (cblc_field_t **)realloc(__gg__treeplet_3f, new_size * sizeof(cblc_field_t *));
!         __gg__treeplet_3o = (size_t *)realloc(__gg__treeplet_3o, new_size * sizeof(size_t));
!         __gg__treeplet_3s = (size_t *)realloc(__gg__treeplet_3s, new_size * sizeof(size_t));
          }
      break;
      case 4:
        if( new_size > treeplet_4_size )
          {
          treeplet_4_size = new_size;
!         __gg__treeplet_4f = (cblc_field_t **)realloc(__gg__treeplet_4f, new_size * sizeof(cblc_field_t *));
!         __gg__treeplet_4o = (size_t *)realloc(__gg__treeplet_4o, new_size * sizeof(size_t));
!         __gg__treeplet_4s = (size_t *)realloc(__gg__treeplet_4s, new_size * sizeof(size_t));
          }
      break;
      }
--- 610,645 ----
        if( new_size > treeplet_1_size )
          {
          treeplet_1_size = new_size;
!         __gg__treeplet_1f = static_cast<cblc_field_t **>(realloc(__gg__treeplet_1f, new_size * sizeof(cblc_field_t *)));
!         __gg__treeplet_1o = static_cast<size_t *>(realloc(__gg__treeplet_1o, new_size * sizeof(size_t)));
!         __gg__treeplet_1s = static_cast<size_t *>(realloc(__gg__treeplet_1s, new_size * sizeof(size_t)));
          }
      break;
      case 2:
        if( new_size > treeplet_2_size )
          {
          treeplet_2_size = new_size;
!         __gg__treeplet_2f = static_cast<cblc_field_t **>(realloc(__gg__treeplet_2f, new_size * sizeof(cblc_field_t *)));
!         __gg__treeplet_2o = static_cast<size_t *>(realloc(__gg__treeplet_2o, new_size * sizeof(size_t)));
!         __gg__treeplet_2s = static_cast<size_t *>(realloc(__gg__treeplet_2s, new_size * sizeof(size_t)));
          }
      break;
      case 3:
        if( new_size > treeplet_3_size )
          {
          treeplet_3_size = new_size;
!         __gg__treeplet_3f = static_cast<cblc_field_t **>(realloc(__gg__treeplet_3f, new_size * sizeof(cblc_field_t *)));
!         __gg__treeplet_3o = static_cast<size_t *>(realloc(__gg__treeplet_3o, new_size * sizeof(size_t)));
!         __gg__treeplet_3s = static_cast<size_t *>(realloc(__gg__treeplet_3s, new_size * sizeof(size_t)));
          }
      break;
      case 4:
        if( new_size > treeplet_4_size )
          {
          treeplet_4_size = new_size;
!         __gg__treeplet_4f = static_cast<cblc_field_t **>(realloc(__gg__treeplet_4f, new_size * sizeof(cblc_field_t *)));
!         __gg__treeplet_4o = static_cast<size_t *>(realloc(__gg__treeplet_4o, new_size * sizeof(size_t)));
!         __gg__treeplet_4s = static_cast<size_t *>(realloc(__gg__treeplet_4s, new_size * sizeof(size_t)));
          }
      break;
      }
*************** __gg__init_program_state()
*** 551,557 ****
    }
  
  static int
! var_is_refmod( cblc_field_t *var )
    {
    return (var->attr & refmod_e) != 0;
    }
--- 757,763 ----
    }
  
  static int
! var_is_refmod( const cblc_field_t *var )
    {
    return (var->attr & refmod_e) != 0;
    }
*************** __gg__binary_to_string_internal(char *re
*** 720,728 ****
    }
  
  static bool
! value_is_too_big(   cblc_field_t *var,
!                     __int128 value,
!                     int source_rdigits)
    {
    // This routine is in support of arithmetic ON SIZE ERROR.  It returns
    // TRUE if var hasn't enough bytes to hold the decimal representation
--- 926,934 ----
    }
  
  static bool
! value_is_too_big(const cblc_field_t *var,
!                  __int128            value,
!                  int                 source_rdigits)
    {
    // This routine is in support of arithmetic ON SIZE ERROR.  It returns
    // TRUE if var hasn't enough bytes to hold the decimal representation
*************** is_sign_bit_on(char ch)
*** 859,870 ****
  
  extern "C"
  void
! __gg__string_to_alpha_edited_ascii( char *dest,
!                                     char *source,
!                                     int slength,
!                                     char *picture)
    {
!   char *dupe = (char *)malloc(slength);
    memcpy(dupe, source, slength);
    ascii_to_internal_str(dupe, slength);
    __gg__string_to_alpha_edited(dest, dupe, slength, picture);
--- 1065,1077 ----
  
  extern "C"
  void
! __gg__string_to_alpha_edited_ascii( char       *dest,
!                                     const char *source,
!                                     int         slength,
!                                     const char *picture)
    {
!   char *dupe = static_cast<char *>(malloc(slength));
!   massert(dupe);
    memcpy(dupe, source, slength);
    ascii_to_internal_str(dupe, slength);
    __gg__string_to_alpha_edited(dest, dupe, slength, picture);
*************** int128_to_field(cblc_field_t   *var,
*** 1219,1225 ****
            {
            float tvalue = (float)value;
            tvalue /= (float)__gg__power_of_ten(source_rdigits);
!           *(float *)location = tvalue;
            break;
            }
  
--- 1426,1432 ----
            {
            float tvalue = (float)value;
            tvalue /= (float)__gg__power_of_ten(source_rdigits);
!           *PTRCAST(float, location) = tvalue;
            break;
            }
  
*************** int128_to_field(cblc_field_t   *var,
*** 1227,1233 ****
            {
            double tvalue = (double)value;
            tvalue /= (double)__gg__power_of_ten(source_rdigits);
!           *(double *)location = tvalue;
            break;
            }
  
--- 1434,1440 ----
            {
            double tvalue = (double)value;
            tvalue /= (double)__gg__power_of_ten(source_rdigits);
!           *PTRCAST(double, location) = tvalue;
            break;
            }
  
*************** int128_to_field(cblc_field_t   *var,
*** 1291,1298 ****
  
      default:
        {
-       bool size_error = false;
- 
        int target_rdigits = var->rdigits;
        if( var->attr & intermediate_e && var->type == FldNumericBin5)
          {
--- 1498,1503 ----
*************** int128_to_field(cblc_field_t   *var,
*** 1382,1387 ****
--- 1587,1593 ----
        else
          {
          // Value is now scaled to the target's target_rdigits
+         bool size_error = false;
  
          int is_negative = value < 0 ;
  
*************** int128_to_field(cblc_field_t   *var,
*** 1411,1418 ****
  
              // Note that sending a signed value to an alphanumeric strips off
              // any plus or minus signs.
!             size_error = __gg__binary_to_string_internal( (char *)location,
!                          length, value);
              break;
  
            case FldNumericDisplay:
--- 1617,1625 ----
  
              // Note that sending a signed value to an alphanumeric strips off
              // any plus or minus signs.
!             size_error = __gg__binary_to_string_internal(
!                           PTRCAST(char, location),
!                           length, value);
              break;
  
            case FldNumericDisplay:
*************** int128_to_field(cblc_field_t   *var,
*** 1428,1434 ****
                    {
                    // The sign character goes into the first location
                    size_error =
!                     __gg__binary_to_string_internal((char *)(location+1),
                                                      length-1, value);
                    location[0] = sign_ch;
                    }
--- 1635,1641 ----
                    {
                    // The sign character goes into the first location
                    size_error =
!                     __gg__binary_to_string_internal(PTRCAST(char, location+1),
                                                      length-1, value);
                    location[0] = sign_ch;
                    }
*************** int128_to_field(cblc_field_t   *var,
*** 1436,1443 ****
                    {
                    // The sign character goes into the last location
                    size_error =
!                     __gg__binary_to_string_internal(  (char *)location,
!                                                       length-1, value);
                    location[length-1] = sign_ch;
                    }
                  }
--- 1643,1650 ----
                    {
                    // The sign character goes into the last location
                    size_error =
!                     __gg__binary_to_string_internal(PTRCAST(char, location),
!                                                     length-1, value);
                    location[length-1] = sign_ch;
                    }
                  }
*************** int128_to_field(cblc_field_t   *var,
*** 1446,1452 ****
                  // The sign information is not separate, so we put it into
                  // the number
                  size_error =
!                   __gg__binary_to_string_internal(( char *)location,
                                                    length, value);
  
                  if( size_error && is_negative )
--- 1653,1659 ----
                  // The sign information is not separate, so we put it into
                  // the number
                  size_error =
!                   __gg__binary_to_string_internal(PTRCAST(char, location),
                                                    length, value);
  
                  if( size_error && is_negative )
*************** int128_to_field(cblc_field_t   *var,
*** 1482,1488 ****
              else
                {
                // It's a simple positive number
!               size_error = __gg__binary_to_string_internal( (char *)location,
                             length, value);
                }
  
--- 1689,1696 ----
              else
                {
                // It's a simple positive number
!               size_error = __gg__binary_to_string_internal( PTRCAST(char,
!                                                                     location),
                             length, value);
                }
  
*************** int128_to_field(cblc_field_t   *var,
*** 1505,1516 ****
  
                // Convert that string according to the PICTURE clause
                size_error |= __gg__string_to_numeric_edited(
!                                 (char *)location,
                                  ach,
                                  target_rdigits,
                                  is_negative,
                                  var->picture);
!               ascii_to_internal_str((char *)location, var->capacity);
                }
  
              break;
--- 1713,1724 ----
  
                // Convert that string according to the PICTURE clause
                size_error |= __gg__string_to_numeric_edited(
!                                  PTRCAST(char, location),
                                  ach,
                                  target_rdigits,
                                  is_negative,
                                  var->picture);
!               ascii_to_internal_str( PTRCAST(char, location), var->capacity);
                }
  
              break;
*************** int128_to_field(cblc_field_t   *var,
*** 1546,1552 ****
  
              // Convert that string according to the PICTURE clause
              __gg__string_to_alpha_edited(
!               (char *)location,
                ach,
                strlen(ach),
                var->picture);
--- 1754,1760 ----
  
              // Convert that string according to the PICTURE clause
              __gg__string_to_alpha_edited(
!               PTRCAST(char, location),
                ach,
                strlen(ach),
                var->picture);
*************** int128_to_field(cblc_field_t   *var,
*** 1662,1672 ****
    }
  
  static __int128
! edited_to_binary( const char *ps_,
                    int length,
                    int *rdigits)
    {
!   const unsigned char *ps = (const unsigned char *)ps_;
    // This routine is used for converting NumericEdited strings to
    // binary.
  
--- 1870,1880 ----
    }
  
  static __int128
! edited_to_binary( char *ps_,
                    int length,
                    int *rdigits)
    {
!   const unsigned char *ps = const_cast<const unsigned char *>(PTRCAST(unsigned char, ps_));
    // This routine is used for converting NumericEdited strings to
    // binary.
  
*************** edited_to_binary( const char *ps_,
*** 1692,1699 ****
  
    __int128 result = 0;
  
-   unsigned char ch;
- 
    // We need to check the last two characters.  If CR or DB, then the result
    // is negative:
    if( length >= 2)
--- 1900,1905 ----
*************** edited_to_binary( const char *ps_,
*** 1714,1720 ****
  
    while( index < length )
      {
!     ch = ps[index++] & 0xFF;
      if( ch == ascii_to_internal(__gg__decimal_point) )
        {
        delta_r = 1;
--- 1920,1926 ----
  
    while( index < length )
      {
!     unsigned char ch = ps[index++] & 0xFF;
      if( ch == ascii_to_internal(__gg__decimal_point) )
        {
        delta_r = 1;
*************** edited_to_binary( const char *ps_,
*** 1736,1746 ****
        }
      }
  
!   if( result == 0 )
!     {
!     hyphen = 0;
!     }
!   else if( hyphen )
      {
      result = -result;
      }
--- 1942,1948 ----
        }
      }
  
!   if( hyphen )
      {
      result = -result;
      }
*************** big_endian_to_binary_signed(
*** 1770,1776 ****
      }
  
    // move the bytes of psource into retval, flipping them end-to-end
!   unsigned char *dest = (unsigned char *)&retval;
    while(capacity > 0)
      {
      *dest++ = psource[--capacity];
--- 1972,1978 ----
      }
  
    // move the bytes of psource into retval, flipping them end-to-end
!   unsigned char *dest = PTRCAST(unsigned char, &retval);
    while(capacity > 0)
      {
      *dest++ = psource[--capacity];
*************** big_endian_to_binary_unsigned(
*** 1834,1840 ****
    __int128 retval = 0 ;
  
    // move the bytes of psource into retval, flipping them end-to-end
!   unsigned char *dest = (unsigned char *)&retval;
    while(capacity > 0)
      {
      *dest++ = psource[--capacity];
--- 2036,2042 ----
    __int128 retval = 0 ;
  
    // move the bytes of psource into retval, flipping them end-to-end
!   unsigned char *dest = PTRCAST(unsigned char, &retval);
    while(capacity > 0)
      {
      *dest++ = psource[--capacity];
*************** big_endian_to_binary_unsigned(
*** 1844,1853 ****
  
  static
  __int128
! get_binary_value_local(  int           *rdigits,
!                          cblc_field_t  *resolved_var,
!                          unsigned char *resolved_location,
!                          size_t         resolved_length)
    {
    __int128 retval = 0;
  
--- 2046,2055 ----
  
  static
  __int128
! get_binary_value_local(  int                 *rdigits,
!                          const cblc_field_t  *resolved_var,
!                          unsigned char       *resolved_location,
!                          size_t               resolved_length)
    {
    __int128 retval = 0;
  
*************** get_binary_value_local(  int           *
*** 1868,1874 ****
      case FldGroup :
      case FldAlphanumeric :
        // Read the data area as a dirty string:
!       retval = __gg__dirty_to_binary_internal( (const char *)resolved_location,
                 resolved_length,
                 rdigits );
        break;
--- 2070,2077 ----
      case FldGroup :
      case FldAlphanumeric :
        // Read the data area as a dirty string:
!       retval = __gg__dirty_to_binary_internal( PTRCAST(const char,
!                                                        resolved_location),
                 resolved_length,
                 rdigits );
        break;
*************** get_binary_value_local(  int           *
*** 1895,1902 ****
          // Turn all the bits on
          memset( &retval, 0xFF, sizeof(retval) );
  
!         // Make it positive
!         ((unsigned char *)&retval)[sizeof(retval)-1] = 0x3F;
          *rdigits = resolved_var->rdigits;
          }
        else
--- 2098,2105 ----
          // Turn all the bits on
          memset( &retval, 0xFF, sizeof(retval) );
  
!         // Make it positive by turning off the highest order bit:
!         (PTRCAST(unsigned char, &retval))[sizeof(retval)-1] = 0x3F;
          *rdigits = resolved_var->rdigits;
          }
        else
*************** get_binary_value_local(  int           *
*** 1933,1939 ****
          // We know where the decimal point is because of rdigits.  Because
          // we know that it a clean string of ASCII digits, we can use the
          // dirty converter:
!         retval = __gg__dirty_to_binary_internal((const char *)resolved_location,
                   resolved_length,
                   rdigits );
          *rdigits = resolved_var->rdigits;
--- 2136,2143 ----
          // We know where the decimal point is because of rdigits.  Because
          // we know that it a clean string of ASCII digits, we can use the
          // dirty converter:
!         retval = __gg__dirty_to_binary_internal(PTRCAST(const char,
!                                                         resolved_location),
                   resolved_length,
                   rdigits );
          *rdigits = resolved_var->rdigits;
*************** get_binary_value_local(  int           *
*** 1949,1955 ****
        break;
  
      case FldNumericEdited :
!       retval = edited_to_binary(  (const char *)resolved_location,
                                    resolved_length,
                                    rdigits);
        break;
--- 2153,2159 ----
        break;
  
      case FldNumericEdited :
!       retval = edited_to_binary(  PTRCAST(char, resolved_location),
                                    resolved_length,
                                    rdigits);
        break;
*************** get_binary_value_local(  int           *
*** 1958,1970 ****
        if( resolved_var->attr & signable_e)
          {
          retval = big_endian_to_binary_signed(
!                         (const unsigned char *)resolved_location,
                          resolved_length);
          }
        else
          {
          retval = big_endian_to_binary_unsigned(
!                         (const unsigned char *)resolved_location,
                          resolved_length);
          }
        *rdigits = resolved_var->rdigits;
--- 2162,2174 ----
        if( resolved_var->attr & signable_e)
          {
          retval = big_endian_to_binary_signed(
!                         PTRCAST(const unsigned char, resolved_location),
                          resolved_length);
          }
        else
          {
          retval = big_endian_to_binary_unsigned(
!                         PTRCAST(const unsigned char, resolved_location),
                          resolved_length);
          }
        *rdigits = resolved_var->rdigits;
*************** get_binary_value_local(  int           *
*** 1992,2004 ****
        if( resolved_var->attr & signable_e)
          {
          retval = little_endian_to_binary_signed(
!                       (const unsigned char *)resolved_location,
                        resolved_length);
          }
        else
          {
          retval = little_endian_to_binary_unsigned(
!                       (const unsigned char *)resolved_location,
                        resolved_length);
          }
        *rdigits = resolved_var->rdigits;
--- 2196,2208 ----
        if( resolved_var->attr & signable_e)
          {
          retval = little_endian_to_binary_signed(
!                       PTRCAST(const unsigned char, resolved_location),
                        resolved_length);
          }
        else
          {
          retval = little_endian_to_binary_unsigned(
!                       PTRCAST(const unsigned char, resolved_location),
                        resolved_length);
          }
        *rdigits = resolved_var->rdigits;
*************** get_binary_value_local(  int           *
*** 2086,2093 ****
  static time_t
  cobol_time()
    {
!   struct timespec tp;
!   __gg__clock_gettime(CLOCK_REALTIME, &tp);
    return tp.tv_sec;
    }
  
--- 2290,2297 ----
  static time_t
  cobol_time()
    {
!   struct cbl_timespec tp;
!   __gg__clock_gettime(&tp);
    return tp.tv_sec;
    }
  
*************** __gg__get_date_yymmdd()
*** 2098,2104 ****
    char ach[32];
  
    time_t t = cobol_time();
!   struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%2.2d%2.2d%2.2d",
--- 2302,2308 ----
    char ach[32];
  
    time_t t = cobol_time();
!   const struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%2.2d%2.2d%2.2d",
*************** __gg__get_date_yyyymmdd()
*** 2117,2123 ****
    char ach[32];
  
    time_t t = cobol_time();
!   struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%4.4d%2.2d%2.2d",
--- 2321,2327 ----
    char ach[32];
  
    time_t t = cobol_time();
!   const struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%4.4d%2.2d%2.2d",
*************** __gg__get_date_yyddd()
*** 2136,2142 ****
    char ach[32];
  
    time_t t = cobol_time();
!   struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%2.2d%3.3d",
--- 2340,2346 ----
    char ach[32];
  
    time_t t = cobol_time();
!   const struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%2.2d%3.3d",
*************** __gg__get_yyyyddd()
*** 2154,2160 ****
    char ach[32];
  
    time_t t = cobol_time();
!   struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%4.4d%3.3d",
--- 2358,2364 ----
    char ach[32];
  
    time_t t = cobol_time();
!   const struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%4.4d%3.3d",
*************** __gg__get_date_dow()
*** 2172,2178 ****
    char ach[32];
  
    time_t t = cobol_time();
!   struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%1.1d",
--- 2376,2382 ----
    char ach[32];
  
    time_t t = cobol_time();
!   const struct tm *local = localtime(&t);
  
    sprintf(ach,
            "%1.1d",
*************** int_from_digits(const char * &p, int ndi
*** 2199,2208 ****
    return retval;
    }
  
  
  extern "C"
  void
! __gg__clock_gettime(clockid_t clk_id, struct timespec *tp)
    {
    const char *p = getenv("GCOBOL_CURRENT_DATE");
  
--- 2403,2451 ----
    return retval;
    }
  
+ // For testing purposes, this undef causes the use of gettimeofday().
+ // #undef HAVE_CLOCK_GETTIME
+ 
+ static uint64_t
+ get_time_nanoseconds_local()
+ {
+   // This code was unabashedly stolen from gcc/timevar.cc.
+   // It returns the Unix epoch with nine decimal places.
+ 
+   /*  Note:  I am perplexed.  I have been examining the gcc Makefiles and
+       configure.ac files, and I am unable to locate where HAVE_GETTIMEOFDAY
+       is established.  There have been issues compiling on MacOS, where
+       apparently clock_gettime() is not available.  But I don't see exactly
+       how gettimeofday() gets used, instead.  But without the ability to
+       compile on a MacOS system, I am fumbling along as best I can.
+ 
+       I decided to simply replace clock_gettime() with getttimeofday() when
+       clock_gettime() isn't available, even though gcc/timevar.cc handles
+       the situation differently.
+ 
+            -- Bob Dubner, 2025-06-11*/
+ 
+   uint64_t retval = 0;
+ 
+ #ifdef HAVE_CLOCK_GETTIME
+   struct timespec ts;
+   clock_gettime (CLOCK_REALTIME, &ts);
+   retval = ts.tv_sec * 1000000000 + ts.tv_nsec;
+   return retval;
+ //#endif
+ //#ifdef HAVE_GETTIMEOFDAY
+ #else
+   struct timeval tv;
+   gettimeofday (&tv, NULL);
+   retval = tv.tv_sec * 1000000000 + tv.tv_usec * 1000;
+   return retval;
+ #endif
+   return retval;
+ }
  
  extern "C"
  void
! __gg__clock_gettime(struct cbl_timespec *tp)
    {
    const char *p = getenv("GCOBOL_CURRENT_DATE");
  
*************** __gg__clock_gettime(clockid_t clk_id, st
*** 2232,2238 ****
      }
    else
      {
!     clock_gettime(clk_id, tp);
      }
    }
  
--- 2475,2483 ----
      }
    else
      {
!     uint64_t ns = get_time_nanoseconds_local();
!     tp->tv_sec  = ns/1000000000;
!     tp->tv_nsec = ns%1000000000;
      }
    }
  
*************** __gg__get_date_hhmmssff()
*** 2242,2249 ****
    {
    char ach[32];
  
!   struct timespec tv;
!   __gg__clock_gettime(CLOCK_REALTIME, &tv);
  
    struct tm tm;
    localtime_r(&tv.tv_sec, &tm);
--- 2487,2494 ----
    {
    char ach[32];
  
!   struct cbl_timespec tv;
!   __gg__clock_gettime(&tv);
  
    struct tm tm;
    localtime_r(&tv.tv_sec, &tm);
*************** int
*** 2272,2291 ****
  __gg__setop_compare(
    const char *candidate,
    int capacity,
!   const char *domain)
    {
    // This routine is called to compare the characters of 'candidate'
    // against the list of character pairs in 'domain'
  
    int retval = 0;
-   int ch;
    int l;
    int h;
!   const char *d;
  
    for(int i=0; i<capacity; i++)
      {
!     ch = (*candidate++ & 0xFF);
      d = domain;
      while(*d)
        {
--- 2517,2535 ----
  __gg__setop_compare(
    const char *candidate,
    int capacity,
!   char *domain)
    {
    // This routine is called to compare the characters of 'candidate'
    // against the list of character pairs in 'domain'
  
    int retval = 0;
    int l;
    int h;
!   char *d;
  
    for(int i=0; i<capacity; i++)
      {
!     int ch = (*candidate++ & 0xFF);
      d = domain;
      while(*d)
        {
*************** __gg__setop_compare(
*** 2297,2303 ****
        // See the comments in genapi.cc::get_class_condition_string
        // to see how this string was encoded.
  
!       l = (int)strtoll(d, (char **)&d, 16);
        if( l < 0 )
          {
          l = -l;
--- 2541,2547 ----
        // See the comments in genapi.cc::get_class_condition_string
        // to see how this string was encoded.
  
!       l = (int)strtoll(d, reinterpret_cast<char **>(&d), 16);
        if( l < 0 )
          {
          l = -l;
*************** __gg__setop_compare(
*** 2306,2312 ****
        if( *d == '/' )
          {
          d += 1;
!         h = (int)strtoll(d, (char **)&d, 16);
          if( h < 0 )
            {
            h = -h;
--- 2550,2556 ----
        if( *d == '/' )
          {
          d += 1;
!         h = (int)strtoll(d, reinterpret_cast<char **>(&d), 16);
          if( h < 0 )
            {
            h = -h;
*************** void psz_to_internal(char *psz)
*** 2756,2762 ****
    }
  
  static int
! get_scaled_rdigits(cblc_field_t *field)
    {
    int retval;
    if( !(field->attr & scaled_e) )
--- 3000,3006 ----
    }
  
  static int
! get_scaled_rdigits(const cblc_field_t *field)
    {
    int retval;
    if( !(field->attr & scaled_e) )
*************** format_for_display_internal(char **dest,
*** 2861,2867 ****
          break;
          }
  
!       unsigned char *running_location = actual_location;
  
        // We need the counts of digits to the left and right of the decimal point
        int rdigits = get_scaled_rdigits(var);
--- 3105,3111 ----
          break;
          }
  
!       const unsigned char *running_location = actual_location;
  
        // We need the counts of digits to the left and right of the decimal point
        int rdigits = get_scaled_rdigits(var);
*************** format_for_display_internal(char **dest,
*** 2876,2882 ****
          rdigits += ldigits;
          }
  
-       int index = 0;  // This is the running index into our output destination
        if( rdigits )
          {
          // We need room for the inside decimal point
--- 3120,3125 ----
*************** format_for_display_internal(char **dest,
*** 2893,2898 ****
--- 3136,3142 ----
  
        if( actual_location )
          {
+         int index = 0;  // This is the running index into our output destination
          if( var->attr & signable_e )
            {
            if( var->attr & separate_e )
*************** format_for_display_internal(char **dest,
*** 2937,2943 ****
              // the user.
              if( (*dest)[index-1] != (char)DEGENERATE_HIGH_VALUE )
                {
!               turn_sign_bit_off((unsigned char *)&ch);
                }
              (*dest)[index++] = ch;
              }
--- 3181,3187 ----
              // the user.
              if( (*dest)[index-1] != (char)DEGENERATE_HIGH_VALUE )
                {
!               turn_sign_bit_off( PTRCAST(unsigned char, &ch));
                }
              (*dest)[index++] = ch;
              }
*************** format_for_display_internal(char **dest,
*** 2961,2967 ****
                char ch = *running_location++;
                if( (*dest)[index-1] != (char)DEGENERATE_HIGH_VALUE )
                  {
!                 turn_sign_bit_off((unsigned char *)&ch);
                  }
                (*dest)[index++] = ch;
                }
--- 3205,3211 ----
                char ch = *running_location++;
                if( (*dest)[index-1] != (char)DEGENERATE_HIGH_VALUE )
                  {
!                 turn_sign_bit_off(PTRCAST(unsigned char, &ch));
                  }
                (*dest)[index++] = ch;
                }
*************** format_for_display_internal(char **dest,
*** 3070,3080 ****
          }
        __gg__realloc_if_necessary(dest, dest_size, nsize);
  
-       bool is_signed = value < 0;
- 
        if( var->attr & signable_e )
          {
!         if( is_signed )
            {
            (*dest)[index++] = internal_minus;
            }
--- 3314,3322 ----
          }
        __gg__realloc_if_necessary(dest, dest_size, nsize);
  
        if( var->attr & signable_e )
          {
!         if( value < 0 )
            {
            (*dest)[index++] = internal_minus;
            }
*************** format_for_display_internal(char **dest,
*** 3106,3112 ****
                                                actual_location,
                                                actual_length);
        char ach[64];
!       sprintf(ach, "%lu", (size_t)value);
        __gg__realloc_if_necessary(dest, dest_size, strlen(ach)+1);
        strcpy(*dest, ach);
        }
--- 3348,3354 ----
                                                actual_location,
                                                actual_length);
        char ach[64];
!       sprintf(ach, "%lu", (unsigned long)value);
        __gg__realloc_if_necessary(dest, dest_size, strlen(ach)+1);
        strcpy(*dest, ach);
        }
*************** format_for_display_internal(char **dest,
*** 3162,3168 ****
            // side, and 9999999 and then 1E+7 on the high side
            // 10,000,000 = 1E7
            char ach[64];
!           _Float32 floatval = *(_Float32 *)actual_location;
            strfromf32(ach, sizeof(ach), "%.9E", floatval);
            char *p = strchr(ach, 'E');
            if( !p )
--- 3404,3410 ----
            // side, and 9999999 and then 1E+7 on the high side
            // 10,000,000 = 1E7
            char ach[64];
!           _Float32 floatval = *PTRCAST(_Float32, actual_location);
            strfromf32(ach, sizeof(ach), "%.9E", floatval);
            char *p = strchr(ach, 'E');
            if( !p )
*************** format_for_display_internal(char **dest,
*** 3202,3208 ****
            // We will also format numbers so that we produce 0.01 and 1E-3 on the low
            // side, and 9999999 and then 1E+15 on the high side
            char ach[64];
!           _Float64 floatval = *(_Float64 *)actual_location;
            strfromf64(ach, sizeof(ach), "%.17E", floatval);
            char *p = strchr(ach, 'E');
            if( !p )
--- 3444,3450 ----
            // We will also format numbers so that we produce 0.01 and 1E-3 on the low
            // side, and 9999999 and then 1E+15 on the high side
            char ach[64];
!           _Float64 floatval = *PTRCAST(_Float64, actual_location);
            strfromf64(ach, sizeof(ach), "%.17E", floatval);
            char *p = strchr(ach, 'E');
            if( !p )
*************** format_for_display_internal(char **dest,
*** 3296,3302 ****
    if( var->attr & scaled_e && var->type != FldNumericDisplay )
      {
      static size_t buffer_size = MINIMUM_ALLOCATION_SIZE;
!     static char * buffer = (char *)malloc(buffer_size);
      if( var->rdigits > 0)
        {
        // We have something like 123 or +123.  We need to insert a decimal
--- 3538,3545 ----
    if( var->attr & scaled_e && var->type != FldNumericDisplay )
      {
      static size_t buffer_size = MINIMUM_ALLOCATION_SIZE;
!     static char  *buffer = static_cast<char *>(malloc(buffer_size));
!     massert(buffer);
      if( var->rdigits > 0)
        {
        // We have something like 123 or +123.  We need to insert a decimal
*************** format_for_display_internal(char **dest,
*** 3355,3361 ****
        {
        p2 += 1;
        }
!     strcpy((char *)p1, (char *)p2);
      }
  
    done:
--- 3598,3604 ----
        {
        p2 += 1;
        }
!     strcpy(PTRCAST(char, p1), PTRCAST(char, p2));
      }
  
    done:
*************** compare_88( const char    *list,
*** 3404,3410 ****
      {
      // We are working with a figurative constant
  
!     test = (char *)malloc(conditional_length);
      test_len = conditional_length;
      // This is where we handle the zero-length strings that
      // nonetheless can magically be expanded into figurative
--- 3647,3654 ----
      {
      // We are working with a figurative constant
  
!     test = static_cast<char *>(malloc(conditional_length));
!     massert(test);
      test_len = conditional_length;
      // This is where we handle the zero-length strings that
      // nonetheless can magically be expanded into figurative
*************** compare_88( const char    *list,
*** 3441,3454 ****
    else if( list_len < conditional_length )
      {
      // 'list' is too short; we have to right-fill with spaces:
!     test = (char *)malloc(conditional_length);
      test_len = conditional_length;
      memset(test, internal_space, conditional_length);
      memcpy(test, list, list_len);
      }
    else
      {
!     test = (char *)malloc(list_len);
      test_len = list_len;
      memcpy(test, list, list_len);
      }
--- 3685,3700 ----
    else if( list_len < conditional_length )
      {
      // 'list' is too short; we have to right-fill with spaces:
!     test = static_cast<char *>(malloc(conditional_length));
!     massert(test);
      test_len = conditional_length;
      memset(test, internal_space, conditional_length);
      memcpy(test, list, list_len);
      }
    else
      {
!     test = static_cast<char *>(malloc(list_len));
!     massert(test);
      test_len = list_len;
      memcpy(test, list, list_len);
      }
*************** compare_88( const char    *list,
*** 3461,3467 ****
      }
    else
      {
!     cmpval = cstrncmp(test, (char *)conditional_location, conditional_length);
      if( cmpval == 0 && (int)strlen(test) != conditional_length )
        {
        // When strncmp returns 0, the actual smaller string is the
--- 3707,3715 ----
      }
    else
      {
!     cmpval = cstrncmp (test,
!                       PTRCAST(char, conditional_location),
!                       conditional_length);
      if( cmpval == 0 && (int)strlen(test) != conditional_length )
        {
        // When strncmp returns 0, the actual smaller string is the
*************** compare_88( const char    *list,
*** 3484,3490 ****
    }
  
  static GCOB_FP128
! get_float128( cblc_field_t *field,
                unsigned char *location )
    {
    GCOB_FP128 retval=0;
--- 3732,3738 ----
    }
  
  static GCOB_FP128
! get_float128( const cblc_field_t *field,
                unsigned char *location )
    {
    GCOB_FP128 retval=0;
*************** get_float128( cblc_field_t *field,
*** 3493,3502 ****
      switch( field->capacity )
        {
        case 4:
!         retval = *(_Float32 *)location;
          break;
        case 8:
!         retval = *(_Float64 *)location;
          break;
        case 16:
          // retval = *(_Float128 *)location; doesn't work, because the SSE
--- 3741,3750 ----
      switch( field->capacity )
        {
        case 4:
!         retval = *PTRCAST(_Float32 , location);
          break;
        case 8:
!         retval = *PTRCAST(_Float64 , location);
          break;
        case 16:
          // retval = *(_Float128 *)location; doesn't work, because the SSE
*************** get_float128( cblc_field_t *field,
*** 3516,3527 ****
        {
        // We need to replace any commas with periods
        static size_t size = 128;
!       static char *buffer = (char *)malloc(size);
        while( strlen(field->initial)+1 > size )
          {
          size *= 2;
!         buffer = (char *)malloc(size);
          }
        strcpy(buffer, field->initial);
        char *p = strchr(buffer, ',');
        if(p)
--- 3764,3776 ----
        {
        // We need to replace any commas with periods
        static size_t size = 128;
!       static char *buffer = static_cast<char *>(malloc(size));
        while( strlen(field->initial)+1 > size )
          {
          size *= 2;
!         buffer = static_cast<char *>(malloc(size));
          }
+       massert(buffer);
        strcpy(buffer, field->initial);
        char *p = strchr(buffer, ',');
        if(p)
*************** compare_field_class(cblc_field_t  *condi
*** 3566,3572 ****
                                        conditional,
                                        conditional_location,
                                        conditional_length);
!       char *walker = list->initial;
        while(*walker)
          {
          char   left_flag;
--- 3815,3821 ----
                                        conditional,
                                        conditional_location,
                                        conditional_length);
!       const char *walker = list->initial;
        while(*walker)
          {
          char   left_flag;
*************** compare_field_class(cblc_field_t  *condi
*** 3712,3719 ****
  
      case FldFloat:
        {
!       GCOB_FP128 value = get_float128(conditional, conditional_location) ;
!       char *walker = list->initial;
        while(*walker)
          {
          char   left_flag;
--- 3961,3968 ----
  
      case FldFloat:
        {
!       GCOB_FP128 fp128 = get_float128(conditional, conditional_location) ;
!       const char *walker = list->initial;
        while(*walker)
          {
          char   left_flag;
*************** compare_field_class(cblc_field_t  *condi
*** 3758,3764 ****
                                                right_len);
            }
  
!         if( left_value <= value && value <= right_value )
            {
            retval = 0;
            break;
--- 4007,4013 ----
                                                right_len);
            }
  
!         if( left_value <= fp128 && fp128 <= right_value )
            {
            retval = 0;
            break;
*************** local_is_alpha(int type, bool address_of
*** 3838,3849 ****
  
  static
  int
! compare_strings(char   *left_string,
!                 size_t  left_length,
!                 bool    left_all,
!                 char   *right_string,
!                 size_t  right_length,
!                 bool    right_all)
    {
    int retval = 0;
    size_t i = 0;
--- 4087,4098 ----
  
  static
  int
! compare_strings(const char   *left_string,
!                 size_t        left_length,
!                 bool          left_all,
!                 const char   *right_string,
!                 size_t        right_length,
!                 bool          right_all)
    {
    int retval = 0;
    size_t i = 0;
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4097,4102 ****
--- 4346,4352 ----
              retval = 0;
              retval = value < 0 ? -1 : retval;
              retval = value > 0 ?  1 : retval;
+             compare = true;
              break;
              }
  
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4107,4112 ****
--- 4357,4363 ----
              retval = 0;
              retval = value < 0 ? -1 : retval;
              retval = value > 0 ?  1 : retval;
+             compare = true;
              break;
              }
  
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4125,4133 ****
              compare = true;
              break;
            }
-         compare = true;
          goto fixup_retval;
-         break;
          }
        }
      }
--- 4376,4382 ----
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4142,4151 ****
      if(    local_is_alpha(left_side->type,  left_address_of)
          && local_is_alpha(right_side->type, right_address_of) )
        {
!       retval = compare_strings(   (char *)left_location,
                                    left_length,
                                    left_all,
!                                   (char *)right_location,
                                    right_length,
                                    right_all );
  
--- 4391,4400 ----
      if(    local_is_alpha(left_side->type,  left_address_of)
          && local_is_alpha(right_side->type, right_address_of) )
        {
!       retval = compare_strings(   reinterpret_cast<char *>(left_location),
                                    left_length,
                                    left_all,
!                                   reinterpret_cast<char *>(right_location),
                                    right_length,
                                    right_all );
  
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4181,4192 ****
            // literal to be the same flavor as the left side:
            // We need to replace any commas with periods
            static size_t size = 128;
!           static char *buffer = (char *)malloc(size);
            while( strlen(right_side->initial)+1 > size )
              {
              size *= 2;
!             buffer = (char *)malloc(size);
              }
            strcpy(buffer, right_side->initial);
            if( __gg__decimal_point == ',' )
              {
--- 4430,4442 ----
            // literal to be the same flavor as the left side:
            // We need to replace any commas with periods
            static size_t size = 128;
!           static char *buffer = static_cast<char *>(malloc(size));
            while( strlen(right_side->initial)+1 > size )
              {
              size *= 2;
!             buffer = static_cast<char *>(malloc(size));
              }
+           massert(buffer);
            strcpy(buffer, right_side->initial);
            if( __gg__decimal_point == ',' )
              {
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4204,4234 ****
              {
              case 4:
                {
!               _Float32 left_value  = *(_Float32 *)left_location;
!               _Float32 right_value = strtof(buffer, NULL);
                retval = 0;
!               retval = left_value < right_value ? -1 : retval;
!               retval = left_value > right_value ?  1 : retval;
                break;
                }
              case 8:
                {
!               _Float64 left_value  = *(_Float64 *)left_location;
!               _Float64 right_value = strtod(buffer, NULL);
                retval = 0;
!               retval = left_value < right_value ? -1 : retval;
!               retval = left_value > right_value ?  1 : retval;
                break;
                }
              case 16:
                {
                //_Float128 left_value  = *(_Float128 *)left_location;
!               GCOB_FP128 left_value;
!               memcpy(&left_value, left_location, 16);
!               GCOB_FP128 right_value = strtofp128(buffer, NULL);
                retval = 0;
!               retval = left_value < right_value ? -1 : retval;
!               retval = left_value > right_value ?  1 : retval;
                break;
                }
              }
--- 4454,4484 ----
              {
              case 4:
                {
!               _Float32 left_value4  = *PTRCAST(_Float32, left_location);
!               _Float32 right_value4 = strtof(buffer, NULL);
                retval = 0;
!               retval = left_value4 < right_value4 ? -1 : retval;
!               retval = left_value4 > right_value4 ?  1 : retval;
                break;
                }
              case 8:
                {
!               _Float64 left_value8  = *PTRCAST(_Float64, left_location);
!               _Float64 right_value8 = strtod(buffer, NULL);
                retval = 0;
!               retval = left_value8 < right_value8 ? -1 : retval;
!               retval = left_value8 > right_value8 ?  1 : retval;
                break;
                }
              case 16:
                {
                //_Float128 left_value  = *(_Float128 *)left_location;
!               GCOB_FP128 left_value16;
!               memcpy(&left_value16, left_location, 16);
!               GCOB_FP128 right_value16 = strtofp128(buffer, NULL);
                retval = 0;
!               retval = left_value16 < right_value16 ? -1 : retval;
!               retval = left_value16 > right_value16 ?  1 : retval;
                break;
                }
              }
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4310,4322 ****
        // The right side is numeric.  Sometimes people write code where they
        // take the refmod of a numeric displays.  If somebody did that here,
        // just do a complete straight-up character by character comparison:
!       
        if( right_refmod )
          {
!         retval = compare_strings(   (char *)left_location,
                                      left_length,
                                      left_all,
!                                     (char *)right_location,
                                      right_length,
                                      right_all);
          compare = true;
--- 4560,4572 ----
        // The right side is numeric.  Sometimes people write code where they
        // take the refmod of a numeric displays.  If somebody did that here,
        // just do a complete straight-up character by character comparison:
! 
        if( right_refmod )
          {
!         retval = compare_strings(   reinterpret_cast<char *>(left_location),
                                      left_length,
                                      left_all,
!                                     reinterpret_cast<char *>(right_location),
                                      right_length,
                                      right_all);
          compare = true;
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4334,4345 ****
        // VAL5 EQUAL "005" is TRUE
        if( left_side->type == FldLiteralA )
          {
!         left_location = (unsigned char *)left_side->data;
          left_length   = left_side->capacity;
          }
  
        static size_t right_string_size = MINIMUM_ALLOCATION_SIZE;
!       static char *right_string = (char *)malloc(right_string_size);
  
        right_string = format_for_display_internal(
                               &right_string,
--- 4584,4596 ----
        // VAL5 EQUAL "005" is TRUE
        if( left_side->type == FldLiteralA )
          {
!         left_location = reinterpret_cast<unsigned char *>(left_side->data);
          left_length   = left_side->capacity;
          }
  
        static size_t right_string_size = MINIMUM_ALLOCATION_SIZE;
!       static char *right_string
!                               = static_cast<char *>(malloc(right_string_size));
  
        right_string = format_for_display_internal(
                               &right_string,
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4363,4369 ****
          left_length -= 1;
          }
  
!       char *right_fixed;
        if( *right_string == internal_plus || *right_string == internal_minus )
          {
          right_fixed = right_string + 1;
--- 4614,4620 ----
          left_length -= 1;
          }
  
!       const char *right_fixed;
        if( *right_string == internal_plus || *right_string == internal_minus )
          {
          right_fixed = right_string + 1;
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4373,4379 ****
          right_fixed = right_string;
          }
  
!       retval = compare_strings(   (char *)left_location,
                                    left_length,
                                    left_all,
                                    right_fixed,
--- 4624,4630 ----
          right_fixed = right_string;
          }
  
!       retval = compare_strings(   reinterpret_cast<char *>(left_location),
                                    left_length,
                                    left_all,
                                    right_fixed,
*************** sort_contents(unsigned char       *conte
*** 4606,4621 ****
  
  extern "C"
  void
! __gg__sort_table( cblc_field_t    *table,
!                   size_t           table_o,
!                   size_t          depending_on,
!                   size_t          nkeys,
!                   cblc_field_t  **keys,
!                   size_t         *ascending,
!                   int             duplicates )
    {
    size_t buffer_size = 128;
!   unsigned char *contents = (unsigned char *)malloc(buffer_size);
    size_t offset = 0;
    std::vector<size_t>offsets;
    size_t record_size = table->capacity;
--- 4857,4872 ----
  
  extern "C"
  void
! __gg__sort_table( const cblc_field_t    *table,
!                   size_t                 table_o,
!                   size_t                 depending_on,
!                   size_t                 nkeys,
!                   cblc_field_t         **keys,
!                   size_t                *ascending,
!                   int                    duplicates )
    {
    size_t buffer_size = 128;
!   unsigned char *contents = static_cast<unsigned char *>(malloc(buffer_size));
    size_t offset = 0;
    std::vector<size_t>offsets;
    size_t record_size = table->capacity;
*************** __gg__sort_table( cblc_field_t    *table
*** 4627,4633 ****
      while( offset + sizeof(size_t) + record_size > buffer_size )
        {
        buffer_size *= 2;
!       contents = (unsigned char *)realloc(contents, buffer_size);
        }
      offsets.push_back(offset);
      memcpy(contents+offset, &record_size, sizeof(size_t));
--- 4878,4884 ----
      while( offset + sizeof(size_t) + record_size > buffer_size )
        {
        buffer_size *= 2;
!       contents = static_cast<unsigned char *>(realloc(contents, buffer_size));
        }
      offsets.push_back(offset);
      memcpy(contents+offset, &record_size, sizeof(size_t));
*************** init_var_both(cblc_field_t  *var,
*** 4707,4713 ****
      {
      //fprintf(stderr, "ABORTING on %2.2d %s %d\n", var->level, var->name, var->type);
      //abort();
!     var->data = (unsigned char *)malloc(var->capacity);
      }
  
    // Set the "initialized" bit, which is tested in parser_symbol_add to make
--- 4958,4964 ----
      {
      //fprintf(stderr, "ABORTING on %2.2d %s %d\n", var->level, var->name, var->type);
      //abort();
!     var->data = static_cast<unsigned char *>(malloc(var->capacity));
      }
  
    // Set the "initialized" bit, which is tested in parser_symbol_add to make
*************** init_var_both(cblc_field_t  *var,
*** 4733,4743 ****
      // We need to convert the options to the internal native codeset
  
      size_t buffer_size = 4;
!     char *buffer = (char *)malloc(buffer_size);
  
      size_t index = 0;
  
!     cblc_field_t *parent = var->parent;
      switch(parent->type)
        {
        case FldGroup:
--- 4984,4994 ----
      // We need to convert the options to the internal native codeset
  
      size_t buffer_size = 4;
!     char *buffer = static_cast<char *>(malloc(buffer_size));
  
      size_t index = 0;
  
!     const cblc_field_t *parent = var->parent;
      switch(parent->type)
        {
        case FldGroup:
*************** init_var_both(cblc_field_t  *var,
*** 4747,4755 ****
          while(*walker)
            {
            static size_t first_size = MINIMUM_ALLOCATION_SIZE;
!           static char *first = (char *)malloc(first_size);
            static size_t last_size = MINIMUM_ALLOCATION_SIZE;
!           static char *last = (char *)malloc(last_size);
            if( (*walker & 0xFF) == 0xFF )
              {
              strcpy(first, walker);
--- 4998,5006 ----
          while(*walker)
            {
            static size_t first_size = MINIMUM_ALLOCATION_SIZE;
!           static char *first = static_cast<char *>(malloc(first_size));
            static size_t last_size = MINIMUM_ALLOCATION_SIZE;
!           static char *last = static_cast<char *>(malloc(last_size));
            if( (*walker & 0xFF) == 0xFF )
              {
              strcpy(first, walker);
*************** init_var_both(cblc_field_t  *var,
*** 4772,4778 ****
            while(index + strlen(first) + strlen(last) + 3 > buffer_size)
              {
              buffer_size *= 2;
!             buffer = (char *)realloc(buffer, buffer_size);
              }
            strcpy(buffer+index, first);
            index += strlen(first) + 1;
--- 5023,5029 ----
            while(index + strlen(first) + strlen(last) + 3 > buffer_size)
              {
              buffer_size *= 2;
!             buffer = static_cast<char *>(realloc(buffer, buffer_size));
              }
            strcpy(buffer+index, first);
            index += strlen(first) + 1;
*************** init_var_both(cblc_field_t  *var,
*** 4785,4791 ****
        }
      if( index > 0 )
        {
!       buffer = (char *)realloc(buffer, index);
        local_initial = buffer;
        }
      }
--- 5036,5042 ----
        }
      if( index > 0 )
        {
!       buffer = static_cast<char *>(realloc(buffer, index));
        local_initial = buffer;
        }
      }
*************** init_var_both(cblc_field_t  *var,
*** 4825,4831 ****
    // memory to the default.  But if a parent has been initialized, we must not
    // touch our memory:
    bool a_parent_initialized = false;
!   if( var->data && !explicitly )
      {
      while(parent)
        {
--- 5076,5082 ----
    // memory to the default.  But if a parent has been initialized, we must not
    // touch our memory:
    bool a_parent_initialized = false;
!   if( !explicitly )
      {
      while(parent)
        {
*************** init_var_both(cblc_field_t  *var,
*** 5041,5047 ****
          __gg__abort("Unknown variable type");
        }
  
!     char *location = (char *)save_the_location;
  
      there_is_more = false;
      size_t i=0;
--- 5292,5298 ----
          __gg__abort("Unknown variable type");
        }
  
!     char *location = reinterpret_cast<char *>(save_the_location);
  
      there_is_more = false;
      size_t i=0;
*************** init_var_both(cblc_field_t  *var,
*** 5067,5073 ****
          }
        }
  
!     outer_location = (unsigned char *)location;
      } while(there_is_more);
  
    var->data = save_the_location;
--- 5318,5324 ----
          }
        }
  
!     outer_location = reinterpret_cast<unsigned char *>(location);
      } while(there_is_more);
  
    var->data = save_the_location;
*************** alpha_to_alpha_move_from_location(cblc_f
*** 5114,5120 ****
    // and dest are alphanumeric
    dest_length = dest_length ? dest_length : field->capacity;
  
!   char *to         = (char *)field->data + dest_offset;
    const char *from = source_location;
    size_t count     = std::min(dest_length, source_length);
  
--- 5365,5371 ----
    // and dest are alphanumeric
    dest_length = dest_length ? dest_length : field->capacity;
  
!   char *to         = reinterpret_cast<char *>(field->data + dest_offset);
    const char *from = source_location;
    size_t count     = std::min(dest_length, source_length);
  
*************** static void
*** 5210,5216 ****
  alpha_to_alpha_move(cblc_field_t *dest,
                      size_t dest_offset,
                      size_t dest_size,
!                     cblc_field_t *source,
                      size_t source_offset,
                      size_t source_size,
                      bool source_move_all)
--- 5461,5467 ----
  alpha_to_alpha_move(cblc_field_t *dest,
                      size_t dest_offset,
                      size_t dest_size,
!                     const cblc_field_t *source,
                      size_t source_offset,
                      size_t source_size,
                      bool source_move_all)
*************** alpha_to_alpha_move(cblc_field_t *dest,
*** 5218,5224 ****
    alpha_to_alpha_move_from_location(  dest,
                                        dest_offset,
                                        dest_size,
!                                       (char *)(source->data + source_offset),
                                        source_size,
                                        source_move_all);
    }
--- 5469,5475 ----
    alpha_to_alpha_move_from_location(  dest,
                                        dest_offset,
                                        dest_size,
!                                       reinterpret_cast<char *>(source->data + source_offset),
                                        source_size,
                                        source_move_all);
    }
*************** __gg__move( cblc_field_t        *fdest,
*** 5252,5264 ****
    {
    int size_error = 0; // This is the return value
  
-   bool moved = true;
- 
    __int128 value;
    int rdigits;
  
-   size_t min_length;
- 
    cbl_figconst_t source_figconst =
                          (cbl_figconst_t)(fsource->attr & FIGCONST_MASK);
    cbl_field_type_t dest_type   = (cbl_field_type_t)fdest->type;
--- 5503,5511 ----
*************** __gg__move( cblc_field_t        *fdest,
*** 5302,5308 ****
       *  standard COBOL and its use should be avoided
       */
  
!     int special_char;
      if( source_figconst == low_value_e )
        {
        special_char = ascii_to_internal(__gg__low_value_character);
--- 5549,5555 ----
       *  standard COBOL and its use should be avoided
       */
  
!     int special_char = 0; // quiets cppcheck
      if( source_figconst == low_value_e )
        {
        special_char = ascii_to_internal(__gg__low_value_character);
*************** __gg__move( cblc_field_t        *fdest,
*** 5325,5330 ****
--- 5572,5579 ----
      }
    else
      {
+     size_t min_length;
+     bool moved = true;
      switch( dest_type )
        {
        case FldGroup:
*************** __gg__move( cblc_field_t        *fdest,
*** 5405,5413 ****
                // alphanumeric.  We ignore any sign bit, and just
                // move the characters:
  
-               int rdigits;
-               __int128 value;
- 
                size_t source_digits
                  = fsource->digits
                    + ( fsource->rdigits < 0
--- 5654,5659 ----
*************** __gg__move( cblc_field_t        *fdest,
*** 5573,5579 ****
                                                              fsource,
                                                              source_offset,
                                                              source_size);
!             sprintf(ach, "%lu", (size_t)value);
  
              char *pach = ach;
  
--- 5819,5825 ----
                                                              fsource,
                                                              source_offset,
                                                              source_size);
!             sprintf(ach, "%lu", (unsigned long)value);
  
              char *pach = ach;
  
*************** __gg__move( cblc_field_t        *fdest,
*** 5697,5727 ****
              {
              rdigits = get_scaled_rdigits(fdest);
              bool negative = false;
!             __int128 value=0;
              switch(fsource->capacity)
                {
                case 4:
                  {
!                 _Float32 val = *(_Float32 *)(fsource->data+source_offset);
                  if(val < 0)
                    {
                    negative = true;
                    val = -val;
                    }
!                 val *= (_Float32)__gg__power_of_ten(rdigits);
!                 value = (__int128)val;
                  break;
                  }
                case 8:
                  {
!                 _Float64 val = *(_Float64 *)(fsource->data+source_offset);
                  if(val < 0)
                    {
                    negative = true;
                    val = -val;
                    }
                  val *= (_Float32)__gg__power_of_ten(rdigits);
!                 value = (__int128)val;
                  break;
                  }
                case 16:
--- 5943,5973 ----
              {
              rdigits = get_scaled_rdigits(fdest);
              bool negative = false;
!             __int128 value128 = 0;
              switch(fsource->capacity)
                {
                case 4:
                  {
!                 _Float32 val = *PTRCAST(_Float32, fsource->data+source_offset);
                  if(val < 0)
                    {
                    negative = true;
                    val = -val;
                    }
!                 val *= static_cast<_Float32>(__gg__power_of_ten(rdigits));
!                 value128 = (__int128)val;
                  break;
                  }
                case 8:
                  {
!                 _Float64 val = *PTRCAST(_Float64, fsource->data+source_offset);
                  if(val < 0)
                    {
                    negative = true;
                    val = -val;
                    }
                  val *= (_Float32)__gg__power_of_ten(rdigits);
!                 value128 = (__int128)val;
                  break;
                  }
                case 16:
*************** __gg__move( cblc_field_t        *fdest,
*** 5735,5753 ****
                    val = -val;
                    }
                  val *= (_Float32)__gg__power_of_ten(rdigits);
!                 value = (__int128)val;
                  break;
                  }
                }
              if( negative )
                {
!               value = -value;
                }
              __gg__int128_to_qualified_field(
                                    fdest,
                                    dest_offset,
                                    dest_size,
!                                   value,
                                    rdigits,
                                    rounded,
                                    &size_error );
--- 5981,5999 ----
                    val = -val;
                    }
                  val *= (_Float32)__gg__power_of_ten(rdigits);
!                 value128 = (__int128)val;
                  break;
                  }
                }
              if( negative )
                {
!               value128 = -value128;
                }
              __gg__int128_to_qualified_field(
                                    fdest,
                                    dest_offset,
                                    dest_size,
!                                   value128,
                                    rdigits,
                                    rounded,
                                    &size_error );
*************** __gg__move( cblc_field_t        *fdest,
*** 5815,5844 ****
              // We are converted a floating-point value fixed-point
  
              rdigits = get_scaled_rdigits(fdest);
!             GCOB_FP128 value=0;
              switch(fsource->capacity)
                {
                case 4:
                  {
!                 value = *(_Float32 *)(fsource->data+source_offset);
                  break;
                  }
                case 8:
                  {
!                 value = *(_Float64 *)(fsource->data+source_offset);
                  break;
                  }
                case 16:
                  {
                  // value = *(_Float128 *)(fsource->data+source_offset);
!                 memcpy(&value, fsource->data+source_offset, 16);
                  break;
                  }
                }
              __gg__float128_to_qualified_field(
                                      fdest,
                                      dest_offset,
!                                     value,
                                      rounded,
                                      &size_error);
              break;
--- 6061,6090 ----
              // We are converted a floating-point value fixed-point
  
              rdigits = get_scaled_rdigits(fdest);
!             GCOB_FP128 fp128=0;
              switch(fsource->capacity)
                {
                case 4:
                  {
!                 fp128 = *reinterpret_cast<_Float32 *>(fsource->data+source_offset);
                  break;
                  }
                case 8:
                  {
!                 fp128 = *reinterpret_cast<_Float64 *>(fsource->data+source_offset);
                  break;
                  }
                case 16:
                  {
                  // value = *(_Float128 *)(fsource->data+source_offset);
!                 memcpy(&fp128, fsource->data+source_offset, 16);
                  break;
                  }
                }
              __gg__float128_to_qualified_field(
                                      fdest,
                                      dest_offset,
!                                     fp128,
                                      rounded,
                                      &size_error);
              break;
*************** __gg__move( cblc_field_t        *fdest,
*** 5869,5877 ****
  
            case FldNumericDisplay:
              {
-             int rdigits;
-             __int128 value;
- 
              int source_digits = fsource->digits + (fsource->rdigits<0 ? -fsource->rdigits : 0) ;
  
              // Pick up the absolute value of the source
--- 6115,6120 ----
*************** __gg__move( cblc_field_t        *fdest,
*** 5892,5898 ****
                }
  
              // And move them into place:
!             __gg__string_to_alpha_edited( (char *)(fdest->data+dest_offset),
                                            ach,
                                            source_digits,
                                            fdest->picture);
--- 6135,6141 ----
                }
  
              // And move them into place:
!             __gg__string_to_alpha_edited( reinterpret_cast<char *>(fdest->data+dest_offset),
                                            ach,
                                            source_digits,
                                            fdest->picture);
*************** __gg__move( cblc_field_t        *fdest,
*** 5902,5908 ****
            default:
              {
              static size_t display_string_size = MINIMUM_ALLOCATION_SIZE;
!             static char *display_string = (char *)malloc(display_string_size);
  
              size_t display_string_length = dest_size;
              __gg__realloc_if_necessary( &display_string,
--- 6145,6151 ----
            default:
              {
              static size_t display_string_size = MINIMUM_ALLOCATION_SIZE;
!             static char *display_string = static_cast<char *>(malloc(display_string_size));
  
              size_t display_string_length = dest_size;
              __gg__realloc_if_necessary( &display_string,
*************** __gg__move( cblc_field_t        *fdest,
*** 5935,5946 ****
                                  &display_string,
                                  &display_string_size,
                                  fsource,
!                                 (unsigned char *)(fsource->data+source_offset),
                                  source_size,
                                  source_flags && REFER_T_ADDRESS_OF);
                display_string_length = strlen(display_string);
                }
!             __gg__string_to_alpha_edited( (char *)(fdest->data+dest_offset),
                                            display_string,
                                            display_string_length,
                                            fdest->picture);
--- 6178,6189 ----
                                  &display_string,
                                  &display_string_size,
                                  fsource,
!                                 reinterpret_cast<unsigned char *>(fsource->data+source_offset),
                                  source_size,
                                  source_flags && REFER_T_ADDRESS_OF);
                display_string_length = strlen(display_string);
                }
!             __gg__string_to_alpha_edited( reinterpret_cast<char *>(fdest->data+dest_offset),
                                            display_string,
                                            display_string_length,
                                            fdest->picture);
*************** __gg__move( cblc_field_t        *fdest,
*** 5965,5976 ****
                {
                case 4:
                  {
!                 *(float *)(fdest->data+dest_offset) = strtof(ach, NULL);
                  break;
                  }
                case 8:
                  {
!                 *(double *)(fdest->data+dest_offset) = strtod(ach, NULL);
                  break;
                  }
                case 16:
--- 6208,6219 ----
                {
                case 4:
                  {
!                 *PTRCAST(float, fdest->data+dest_offset) = strtod(ach, NULL);
                  break;
                  }
                case 8:
                  {
!                 *PTRCAST(double, fdest->data+dest_offset) = strtod(ach, NULL);
                  break;
                  }
                case 16:
*************** __gg__move( cblc_field_t        *fdest,
*** 5980,5986 ****
                  memcpy(fdest->data+dest_offset, &t, 16);
                  break;
                  }
-               break;
                }
              break;
              }
--- 6223,6228 ----
*************** __gg__move_literala(cblc_field_t *field,
*** 6109,6115 ****
      case FldAlphaEdited:
        {
        static size_t display_string_size = MINIMUM_ALLOCATION_SIZE;
!       static char *display_string = (char *)malloc(display_string_size);
  
        __gg__realloc_if_necessary( &display_string,
                                    &display_string_size,
--- 6351,6357 ----
      case FldAlphaEdited:
        {
        static size_t display_string_size = MINIMUM_ALLOCATION_SIZE;
!       static char *display_string = static_cast<char *>(malloc(display_string_size));
  
        __gg__realloc_if_necessary( &display_string,
                                    &display_string_size,
*************** __gg__move_literala(cblc_field_t *field,
*** 6118,6124 ****
        memset(display_string, internal_space, display_string_size);
        size_t len = std::min(display_string_size, strlen);
        memcpy(display_string, str, len);
!       __gg__string_to_alpha_edited( (char *)(field->data+field_offset),
                                      display_string,
                                      field_size,
                                      field->picture);
--- 6360,6366 ----
        memset(display_string, internal_space, display_string_size);
        size_t len = std::min(display_string_size, strlen);
        memcpy(display_string, str, len);
!       __gg__string_to_alpha_edited( reinterpret_cast<char *>(field->data+field_offset),
                                      display_string,
                                      field_size,
                                      field->picture);
*************** __gg__move_literala(cblc_field_t *field,
*** 6135,6146 ****
          {
          case 4:
            {
!           *(float *)(field->data+field_offset) = strtof(ach, NULL);
            break;
            }
          case 8:
            {
!           *(double *)(field->data+field_offset) = strtod(ach, NULL);
            break;
            }
          case 16:
--- 6377,6388 ----
          {
          case 4:
            {
!           *PTRCAST(float, field->data+field_offset) = strtod(ach, NULL);
            break;
            }
          case 8:
            {
!           *PTRCAST(double, field->data+field_offset) = strtod(ach, NULL);
            break;
            }
          case 16:
*************** __gg__move_literala(cblc_field_t *field,
*** 6149,6155 ****
            memcpy(field->data+field_offset, &t, 16);
            break;
            }
-         break;
          }
        break;
        }
--- 6391,6396 ----
*************** __gg__file_sort_ff_input(   cblc_file_t
*** 6181,6186 ****
--- 6422,6428 ----
    // We are going to read records from input and write them to workfile.  These
    // files are already open.
  
+   sv_suppress_eof_ec = true;
    for(;;)
      {
      // Read the data from the input file into its record_area
*************** __gg__file_sort_ff_input(   cblc_file_t
*** 6213,6218 ****
--- 6455,6461 ----
                          before_advancing,
                          0); // non-random
      }
+   sv_suppress_eof_ec = false;
    }
  
  extern "C"
*************** __gg__file_sort_ff_output(  cblc_file_t
*** 6227,6232 ****
--- 6470,6476 ----
    // Make sure workfile is positioned at the beginning
    __gg__file_reopen(workfile, 'r');
  
+   sv_suppress_eof_ec = true;
    for(;;)
      {
      __gg__file_read(  workfile,
*************** __gg__file_sort_ff_output(  cblc_file_t
*** 6248,6253 ****
--- 6492,6498 ----
                          advancing,
                          0); // 1 would be is_random
      }
+   sv_suppress_eof_ec = false;
    }
  
  extern "C"
*************** __gg__sort_workfile(cblc_file_t    *work
*** 6266,6277 ****
  
    // Read the file into memory
    size_t buffer_size = 128;
!   unsigned char *contents = (unsigned char *)malloc(buffer_size);
    size_t offset = 0;
    std::vector<size_t>offsets;
    size_t bytes_read;
    size_t bytes_to_write;
  
    for(;;)
      {
      __gg__file_read(workfile,
--- 6511,6523 ----
  
    // Read the file into memory
    size_t buffer_size = 128;
!   unsigned char *contents = static_cast<unsigned char *>(malloc(buffer_size));
    size_t offset = 0;
    std::vector<size_t>offsets;
    size_t bytes_read;
    size_t bytes_to_write;
  
+   sv_suppress_eof_ec = true;
    for(;;)
      {
      __gg__file_read(workfile,
*************** __gg__sort_workfile(cblc_file_t    *work
*** 6295,6301 ****
      while( offset + sizeof(size_t) + bytes_read > buffer_size )
        {
        buffer_size *= 2;
!       contents = (unsigned char *)realloc(contents, buffer_size);
        }
      offsets.push_back(offset);
  
--- 6541,6547 ----
      while( offset + sizeof(size_t) + bytes_read > buffer_size )
        {
        buffer_size *= 2;
!       contents = static_cast<unsigned char *>(realloc(contents, buffer_size));
        }
      offsets.push_back(offset);
  
*************** __gg__sort_workfile(cblc_file_t    *work
*** 6307,6312 ****
--- 6553,6559 ----
      memcpy(contents+offset, workfile->default_record->data, bytes_read);
      offset += bytes_read;
      }
+   sv_suppress_eof_ec = false;
  
    sort_contents(contents,
                  offsets,
*************** __gg__merge_files( cblc_file_t   *workfi
*** 6393,6399 ****
      return;
      }
  
!   unsigned char *prior_winner = (unsigned char *)malloc(the_biggest);
    *prior_winner = '\0';
  
    for(;;)
--- 6640,6647 ----
      return;
      }
  
!   unsigned char *prior_winner = static_cast<unsigned char *>(malloc(the_biggest));
!   massert(prior_winner);
    *prior_winner = '\0';
  
    for(;;)
*************** normalize_id( const cblc_field_t *refer,
*** 6573,6579 ****
  
    if( refer )
      {
!     unsigned char *data = refer->data + refer_o;
      cbl_figconst_t figconst
        = (cbl_figconst_t)(refer->attr & FIGCONST_MASK);
  
--- 6821,6827 ----
  
    if( refer )
      {
!     const unsigned char *data = refer->data + refer_o;
      cbl_figconst_t figconst
        = (cbl_figconst_t)(refer->attr & FIGCONST_MASK);
  
*************** the_alpha_and_omega_backward( const norm
*** 6814,6820 ****
  
  static
  void
! inspect_backward_format_1(size_t integers[])
    {
    size_t int_index = 0;
    size_t cblc_index = 0;
--- 7062,7068 ----
  
  static
  void
! inspect_backward_format_1(const size_t integers[])
    {
    size_t int_index = 0;
    size_t cblc_index = 0;
*************** inspect_backward_format_1(size_t integer
*** 6827,6835 ****
    std::vector<id_2_result> id_2_results(n_identifier_2);
  
    // Pick up identifier_1, which is the string being inspected
!   cblc_field_t *id1   = __gg__treeplet_1f[cblc_index];
!   size_t        id1_o = __gg__treeplet_1o[cblc_index];
!   size_t        id1_s = __gg__treeplet_1s[cblc_index];
    cblc_index += 1;
    // normalize it, according to the language specification.
    normalized_operand normalized_id_1 = normalize_id(id1, id1_o, id1_s);
--- 7075,7083 ----
    std::vector<id_2_result> id_2_results(n_identifier_2);
  
    // Pick up identifier_1, which is the string being inspected
!   const cblc_field_t *id1   = __gg__treeplet_1f[cblc_index];
!   size_t              id1_o = __gg__treeplet_1o[cblc_index];
!   size_t              id1_s = __gg__treeplet_1s[cblc_index];
    cblc_index += 1;
    // normalize it, according to the language specification.
    normalized_operand normalized_id_1 = normalize_id(id1, id1_o, id1_s);
*************** inspect_backward_format_1(size_t integer
*** 6862,6880 ****
            // We are counting characters.  There is no identifier-3,
            // but we we hard-code the length to one to represent a
            // single character.
!           comparand next_comparand;
            next_comparand.id_2_index = i;
            next_comparand.operation = operation;
            next_comparand.identifier_3.length = 1;
  
!           cblc_field_t *id4_before   = __gg__treeplet_1f  [cblc_index];
!           size_t        id4_before_o = __gg__treeplet_1o[cblc_index];
!           size_t        id4_before_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           cblc_field_t *id4_after   = __gg__treeplet_1f  [cblc_index];
!           size_t        id4_after_o = __gg__treeplet_1o[cblc_index];
!           size_t        id4_after_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
            normalized_operand normalized_id_4_before
--- 7110,7128 ----
            // We are counting characters.  There is no identifier-3,
            // but we we hard-code the length to one to represent a
            // single character.
!           comparand next_comparand = {};
            next_comparand.id_2_index = i;
            next_comparand.operation = operation;
            next_comparand.identifier_3.length = 1;
  
!           const cblc_field_t *id4_before   = __gg__treeplet_1f  [cblc_index];
!           size_t              id4_before_o = __gg__treeplet_1o[cblc_index];
!           size_t              id4_before_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           const cblc_field_t *id4_after   = __gg__treeplet_1f  [cblc_index];
!           size_t              id4_after_o = __gg__treeplet_1o[cblc_index];
!           size_t              id4_after_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
            normalized_operand normalized_id_4_before
*************** inspect_backward_format_1(size_t integer
*** 6906,6928 ****
  
            for(size_t k=0; k<pair_count; k++)
              {
!             comparand next_comparand;
              next_comparand.id_2_index = i;
              next_comparand.operation = operation;
  
!             cblc_field_t *id3   = __gg__treeplet_1f[cblc_index];
!             size_t        id3_o = __gg__treeplet_1o[cblc_index];
!             size_t        id3_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
!             cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!             size_t        id4_before_o = __gg__treeplet_1o[cblc_index];
!             size_t        id4_before_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
!             cblc_field_t *id4_after   = __gg__treeplet_1f[cblc_index];
!             size_t        id4_after_o = __gg__treeplet_1o[cblc_index];
!             size_t        id4_after_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
              next_comparand.identifier_3
--- 7154,7176 ----
  
            for(size_t k=0; k<pair_count; k++)
              {
!             comparand next_comparand = {};
              next_comparand.id_2_index = i;
              next_comparand.operation = operation;
  
!             const cblc_field_t *id3   = __gg__treeplet_1f[cblc_index];
!             size_t              id3_o = __gg__treeplet_1o[cblc_index];
!             size_t              id3_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
!             const cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!             size_t              id4_before_o = __gg__treeplet_1o[cblc_index];
!             size_t              id4_before_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
!             const cblc_field_t *id4_after   = __gg__treeplet_1f[cblc_index];
!             size_t              id4_after_o = __gg__treeplet_1o[cblc_index];
!             size_t              id4_after_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
              next_comparand.identifier_3
*************** __gg__inspect_format_1(int backward, siz
*** 7163,7171 ****
    std::vector<id_2_result> id_2_results(n_identifier_2);
  
    // Pick up identifier_1, which is the string being inspected
!   cblc_field_t *id1   = __gg__treeplet_1f[cblc_index];
!   size_t        id1_o = __gg__treeplet_1o[cblc_index];
!   size_t        id1_s = __gg__treeplet_1s[cblc_index];
    cblc_index += 1;
    // normalize it, according to the language specification.
    normalized_operand normalized_id_1
--- 7411,7419 ----
    std::vector<id_2_result> id_2_results(n_identifier_2);
  
    // Pick up identifier_1, which is the string being inspected
!   const cblc_field_t *id1   = __gg__treeplet_1f[cblc_index];
!   size_t              id1_o = __gg__treeplet_1o[cblc_index];
!   size_t              id1_s = __gg__treeplet_1s[cblc_index];
    cblc_index += 1;
    // normalize it, according to the language specification.
    normalized_operand normalized_id_1
*************** __gg__inspect_format_1(int backward, siz
*** 7199,7217 ****
            // We are counting characters.  There is no identifier-3,
            // but we we hard-code the length to one to represent a
            // single character.
!           comparand next_comparand;
            next_comparand.id_2_index = i;
            next_comparand.operation = operation;
            next_comparand.identifier_3.length = 1;
  
!           cblc_field_t *id4_before   = __gg__treeplet_1f  [cblc_index];
!           size_t        id4_before_o = __gg__treeplet_1o[cblc_index];
!           size_t        id4_before_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           cblc_field_t *id4_after   = __gg__treeplet_1f  [cblc_index];
!           size_t        id4_after_o = __gg__treeplet_1o[cblc_index];
!           size_t        id4_after_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
            normalized_operand normalized_id_4_before
--- 7447,7465 ----
            // We are counting characters.  There is no identifier-3,
            // but we we hard-code the length to one to represent a
            // single character.
!           comparand next_comparand = {};
            next_comparand.id_2_index = i;
            next_comparand.operation = operation;
            next_comparand.identifier_3.length = 1;
  
!           const cblc_field_t *id4_before   = __gg__treeplet_1f  [cblc_index];
!           size_t              id4_before_o = __gg__treeplet_1o[cblc_index];
!           size_t              id4_before_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           const cblc_field_t *id4_after   = __gg__treeplet_1f  [cblc_index];
!           size_t              id4_after_o = __gg__treeplet_1o[cblc_index];
!           size_t              id4_after_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
            normalized_operand normalized_id_4_before
*************** __gg__inspect_format_1(int backward, siz
*** 7243,7265 ****
  
            for(size_t k=0; k<pair_count; k++)
              {
!             comparand next_comparand;
              next_comparand.id_2_index = i;
              next_comparand.operation = operation;
  
!             cblc_field_t *id3   = __gg__treeplet_1f[cblc_index];
!             size_t        id3_o = __gg__treeplet_1o[cblc_index];
!             size_t        id3_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
!             cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!             size_t        id4_before_o = __gg__treeplet_1o[cblc_index];
!             size_t        id4_before_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
!             cblc_field_t *id4_after   = __gg__treeplet_1f[cblc_index];
!             size_t        id4_after_o = __gg__treeplet_1o[cblc_index];
!             size_t        id4_after_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
              next_comparand.identifier_3
--- 7491,7513 ----
  
            for(size_t k=0; k<pair_count; k++)
              {
!             comparand next_comparand = {};
              next_comparand.id_2_index = i;
              next_comparand.operation = operation;
  
!             const cblc_field_t *id3   = __gg__treeplet_1f[cblc_index];
!             size_t              id3_o = __gg__treeplet_1o[cblc_index];
!             size_t              id3_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
!             const cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!             size_t              id4_before_o = __gg__treeplet_1o[cblc_index];
!             size_t              id4_before_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
!             const cblc_field_t *id4_after   = __gg__treeplet_1f[cblc_index];
!             size_t              id4_after_o = __gg__treeplet_1o[cblc_index];
!             size_t              id4_after_s = __gg__treeplet_1s[cblc_index];
              cblc_index += 1;
  
              next_comparand.identifier_3
*************** __gg__inspect_format_1(int backward, siz
*** 7488,7494 ****
  
  static
  void
! inspect_backward_format_2(size_t integers[])
    {
    size_t int_index = 0;
    size_t cblc_index = 0;
--- 7736,7742 ----
  
  static
  void
! inspect_backward_format_2(const size_t integers[])
    {
    size_t int_index = 0;
    size_t cblc_index = 0;
*************** inspect_backward_format_2(size_t integer
*** 7518,7539 ****
        {
        case bound_characters_e:
          {
!         comparand next_comparand;
          next_comparand.operation = operation;
  
!         cblc_field_t *id5   = __gg__treeplet_1f[cblc_index];
!         size_t        id5_o = __gg__treeplet_1o[cblc_index];
!         size_t        id5_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
!         cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!         size_t        id4_before_o = __gg__treeplet_1o[cblc_index];
!         size_t        id4_before_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
!         cblc_field_t *id4_after   = __gg__treeplet_1f  [cblc_index];
!         size_t        id4_after_o = __gg__treeplet_1o[cblc_index];
!         size_t        id4_after_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
          next_comparand.identifier_5
--- 7766,7787 ----
        {
        case bound_characters_e:
          {
!         comparand next_comparand = {};
          next_comparand.operation = operation;
  
!         const cblc_field_t *id5   = __gg__treeplet_1f[cblc_index];
!         size_t              id5_o = __gg__treeplet_1o[cblc_index];
!         size_t              id5_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
!         const cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!         size_t              id4_before_o = __gg__treeplet_1o[cblc_index];
!         size_t              id4_before_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
!         const cblc_field_t *id4_after   = __gg__treeplet_1f  [cblc_index];
!         size_t              id4_after_o = __gg__treeplet_1o[cblc_index];
!         size_t              id4_after_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
          next_comparand.identifier_5
*************** inspect_backward_format_2(size_t integer
*** 7569,7595 ****
  
          for(size_t k=0; k<pair_count; k++)
            {
!           comparand next_comparand;
            next_comparand.operation = operation;
  
!           cblc_field_t *id3   = __gg__treeplet_1f[cblc_index];
!           size_t        id3_o = __gg__treeplet_1o[cblc_index];
!           size_t        id3_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           cblc_field_t *id5   = __gg__treeplet_1f[cblc_index];
!           size_t        id5_o = __gg__treeplet_1o[cblc_index];
!           size_t        id5_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!           size_t        id4_before_o = __gg__treeplet_1o[cblc_index];
!           size_t        id4_before_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           cblc_field_t *id4_after   = __gg__treeplet_1f[cblc_index];
!           size_t        id4_after_o = __gg__treeplet_1o[cblc_index];
!           size_t        id4_after_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
            next_comparand.identifier_3 = normalize_id(id3, id3_o, id3_s);
--- 7817,7843 ----
  
          for(size_t k=0; k<pair_count; k++)
            {
!           comparand next_comparand = {};
            next_comparand.operation = operation;
  
!           const cblc_field_t *id3   = __gg__treeplet_1f[cblc_index];
!           size_t              id3_o = __gg__treeplet_1o[cblc_index];
!           size_t              id3_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           const cblc_field_t *id5   = __gg__treeplet_1f[cblc_index];
!           size_t              id5_o = __gg__treeplet_1o[cblc_index];
!           size_t              id5_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           const cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!           size_t              id4_before_o = __gg__treeplet_1o[cblc_index];
!           size_t              id4_before_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           const cblc_field_t *id4_after   = __gg__treeplet_1f[cblc_index];
!           size_t              id4_after_o = __gg__treeplet_1o[cblc_index];
!           size_t              id4_after_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
            next_comparand.identifier_3 = normalize_id(id3, id3_o, id3_s);
*************** __gg__inspect_format_2(int backward, siz
*** 7866,7887 ****
        {
        case bound_characters_e:
          {
!         comparand next_comparand;
          next_comparand.operation = operation;
  
!         cblc_field_t *id5   = __gg__treeplet_1f[cblc_index];
!         size_t        id5_o = __gg__treeplet_1o[cblc_index];
!         size_t        id5_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
!         cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!         size_t        id4_before_o = __gg__treeplet_1o[cblc_index];
!         size_t        id4_before_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
!         cblc_field_t *id4_after   = __gg__treeplet_1f  [cblc_index];
!         size_t        id4_after_o = __gg__treeplet_1o[cblc_index];
!         size_t        id4_after_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
          next_comparand.identifier_5
--- 8114,8135 ----
        {
        case bound_characters_e:
          {
!         comparand next_comparand = {} ;
          next_comparand.operation = operation;
  
!         const cblc_field_t *id5   = __gg__treeplet_1f[cblc_index];
!         size_t              id5_o = __gg__treeplet_1o[cblc_index];
!         size_t              id5_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
!         const cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!         size_t              id4_before_o = __gg__treeplet_1o[cblc_index];
!         size_t              id4_before_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
!         const cblc_field_t *id4_after   = __gg__treeplet_1f  [cblc_index];
!         size_t              id4_after_o = __gg__treeplet_1o[cblc_index];
!         size_t              id4_after_s = __gg__treeplet_1s[cblc_index];
          cblc_index += 1;
  
          next_comparand.identifier_5
*************** __gg__inspect_format_2(int backward, siz
*** 7917,7943 ****
  
          for(size_t k=0; k<pair_count; k++)
            {
!           comparand next_comparand;
            next_comparand.operation = operation;
  
!           cblc_field_t *id3   = __gg__treeplet_1f[cblc_index];
!           size_t        id3_o = __gg__treeplet_1o[cblc_index];
!           size_t        id3_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           cblc_field_t *id5   = __gg__treeplet_1f[cblc_index];
!           size_t        id5_o = __gg__treeplet_1o[cblc_index];
!           size_t        id5_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!           size_t        id4_before_o = __gg__treeplet_1o[cblc_index];
!           size_t        id4_before_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           cblc_field_t *id4_after   = __gg__treeplet_1f[cblc_index];
!           size_t        id4_after_o = __gg__treeplet_1o[cblc_index];
!           size_t        id4_after_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
            next_comparand.identifier_3 = normalize_id(id3, id3_o, id3_s);
--- 8165,8191 ----
  
          for(size_t k=0; k<pair_count; k++)
            {
!           comparand next_comparand = {};
            next_comparand.operation = operation;
  
!           const cblc_field_t *id3   = __gg__treeplet_1f[cblc_index];
!           size_t              id3_o = __gg__treeplet_1o[cblc_index];
!           size_t              id3_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           const cblc_field_t *id5   = __gg__treeplet_1f[cblc_index];
!           size_t              id5_o = __gg__treeplet_1o[cblc_index];
!           size_t              id5_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           const cblc_field_t *id4_before   = __gg__treeplet_1f[cblc_index];
!           size_t              id4_before_o = __gg__treeplet_1o[cblc_index];
!           size_t              id4_before_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
!           const cblc_field_t *id4_after   = __gg__treeplet_1f[cblc_index];
!           size_t              id4_after_o = __gg__treeplet_1o[cblc_index];
!           size_t              id4_after_s = __gg__treeplet_1s[cblc_index];
            cblc_index += 1;
  
            next_comparand.identifier_3 = normalize_id(id3, id3_o, id3_s);
*************** __gg__inspect_format_4( int backward,
*** 8212,8223 ****
    static size_t psz_before_size      = MINIMUM_ALLOCATION_SIZE;
    static size_t psz_figstring_size   = MINIMUM_ALLOCATION_SIZE;
  
!   static char *psz_input       = (char *)malloc(psz_input_size      );
!   static char *psz_original    = (char *)malloc(psz_original_size   );
!   static char *psz_replacement = (char *)malloc(psz_replacement_size);
!   static char *psz_after       = (char *)malloc(psz_after_size      );
!   static char *psz_before      = (char *)malloc(psz_before_size     );
!   static char *psz_figstring   = (char *)malloc(psz_figstring_size  );
  
    bool all = replacement_size == (size_t)(-1LL);
    if( all )
--- 8460,8471 ----
    static size_t psz_before_size      = MINIMUM_ALLOCATION_SIZE;
    static size_t psz_figstring_size   = MINIMUM_ALLOCATION_SIZE;
  
!   static char *psz_input       = static_cast<char *>(malloc(psz_input_size      ));
!   static char *psz_original    = static_cast<char *>(malloc(psz_original_size   ));
!   static char *psz_replacement = static_cast<char *>(malloc(psz_replacement_size));
!   static char *psz_after       = static_cast<char *>(malloc(psz_after_size      ));
!   static char *psz_before      = static_cast<char *>(malloc(psz_before_size     ));
!   static char *psz_figstring   = static_cast<char *>(malloc(psz_figstring_size  ));
  
    bool all = replacement_size == (size_t)(-1LL);
    if( all )
*************** __gg__inspect_format_4( int backward,
*** 8311,8317 ****
      }
  
    char *pstart = NULL;
!   char *pend = NULL;
    if( backward )
      {
      if( strlen(psz_before) )
--- 8559,8565 ----
      }
  
    char *pstart = NULL;
!   const char *pend = NULL;
    if( backward )
      {
      if( strlen(psz_before) )
*************** move_string(cblc_field_t *field,
*** 8404,8410 ****
      case FldAlphanumeric:
      case FldAlphaEdited:
        {
!       char *to = (char *)(field->data + offset);
        size_t dest_length = length ? length : field->capacity;
        size_t source_length = strlen_from;
        size_t count = std::min(dest_length, source_length);
--- 8652,8658 ----
      case FldAlphanumeric:
      case FldAlphaEdited:
        {
!       char *to = reinterpret_cast<char *>(field->data + offset);
        size_t dest_length = length ? length : field->capacity;
        size_t source_length = strlen_from;
        size_t count = std::min(dest_length, source_length);
*************** brute_force_trim(char *str)
*** 8513,8519 ****
  
  extern "C"
  int
! __gg__string(size_t integers[])
    {
    // The first integer is the count of identifier-2 values.  Call it N
    // The following N integers are the counts of each of the identifier-1 values,
--- 8761,8767 ----
  
  extern "C"
  int
! __gg__string(const size_t integers[])
    {
    // The first integer is the count of identifier-2 values.  Call it N
    // The following N integers are the counts of each of the identifier-1 values,
*************** __gg__string(size_t integers[])
*** 8527,8538 ****
    // And so on
  
    cblc_field_t **ref   = __gg__treeplet_1f;
!   size_t        *ref_o = __gg__treeplet_1o;
!   size_t        *ref_s = __gg__treeplet_1s;
  
    static const int INDEX_OF_POINTER = 1;
  
-   size_t index_int  = 0;
    size_t index_cblc = 0 ;
  
    char figlow[2]   = {ascii_to_internal(__gg__low_value_character), 0x00};
--- 8775,8785 ----
    // And so on
  
    cblc_field_t **ref   = __gg__treeplet_1f;
!   const size_t  *ref_o = __gg__treeplet_1o;
!   const size_t  *ref_s = __gg__treeplet_1s;
  
    static const int INDEX_OF_POINTER = 1;
  
    size_t index_cblc = 0 ;
  
    char figlow[2]   = {ascii_to_internal(__gg__low_value_character), 0x00};
*************** __gg__string(size_t integers[])
*** 8550,8564 ****
      fighigh[0] = ascii_to_internal(__gg__high_value_character);
      }
  
-   // Pick up the number of identifier-2 values
-   size_t N = integers[index_int++];
  
    // Pick up the target
!   cblc_field_t *tgt   = ref[index_cblc];
!   size_t tgt_o        = ref_o[index_cblc];
!   size_t tgt_s        = ref_s[index_cblc];
    index_cblc += 1;
!   char  *dest         = (char *)(tgt->data + tgt_o);
    ssize_t dest_length = tgt_s;
  
    // Skip over the index of POINTER:
--- 8797,8809 ----
      fighigh[0] = ascii_to_internal(__gg__high_value_character);
      }
  
  
    // Pick up the target
!   const cblc_field_t *tgt   = ref[index_cblc];
!   size_t tgt_o              = ref_o[index_cblc];
!   size_t tgt_s              = ref_s[index_cblc];
    index_cblc += 1;
!   char  *dest         = reinterpret_cast<char *>(tgt->data + tgt_o);
    ssize_t dest_length = tgt_s;
  
    // Skip over the index of POINTER:
*************** __gg__string(size_t integers[])
*** 8585,8602 ****
      {
      // We are go for looping through identifier-2 values:
  
      for( size_t i=0; i<N; i++ )
        {
        size_t M = integers[index_int++];
  
        // Pick up the identifier_2 DELIMITED BY value
!       cblc_field_t *id2   = ref[index_cblc];
!       size_t        id2_o = ref_o[index_cblc];
!       size_t        id2_s = ref_s[index_cblc];
        index_cblc += 1;
  
        char *piece;
!       char *piece_end;
        cbl_figconst_t figconst = (cbl_figconst_t) ( id2
                                    ? (id2->attr & FIGCONST_MASK)
                                    : 0 );
--- 8830,8852 ----
      {
      // We are go for looping through identifier-2 values:
  
+     size_t index_int  = 0;
+ 
+     // Pick up the number of identifier-2 values
+     size_t N = integers[index_int++];
+ 
      for( size_t i=0; i<N; i++ )
        {
        size_t M = integers[index_int++];
  
        // Pick up the identifier_2 DELIMITED BY value
!       const cblc_field_t *id2   = ref[index_cblc];
!       size_t              id2_o = ref_o[index_cblc];
!       size_t              id2_s = ref_s[index_cblc];
        index_cblc += 1;
  
        char *piece;
!       const char *piece_end;
        cbl_figconst_t figconst = (cbl_figconst_t) ( id2
                                    ? (id2->attr & FIGCONST_MASK)
                                    : 0 );
*************** __gg__string(size_t integers[])
*** 8623,8646 ****
            piece_end = piece + 1;
            break;
          default:
!           piece = id2 ? (char *)(id2->data + id2_o) : NULL;
            piece_end = id2 ? piece + id2_s : NULL;
            break;
          }
  
!       for(size_t i=0; i<M; i++)
          {
          // Pick up the next identifier-1 source string:
!         cblc_field_t *id1 = ref[index_cblc];
          size_t id1_o = ref_o[index_cblc];
          size_t id1_s = ref_s[index_cblc];
          index_cblc += 1;
  
!         const char *whole = id1 ? (const char *)(id1->data + id1_o): NULL ;
          const char *whole_end = id1 ? whole + id1_s : NULL;
  
          // As usual, we need to cope with figurative constants:
!         cbl_figconst_t figconst = (cbl_figconst_t) ( id1 ? (id1->attr & FIGCONST_MASK) : 0 );
          switch( figconst )
            {
            case low_value_e:
--- 8873,8896 ----
            piece_end = piece + 1;
            break;
          default:
!           piece = id2 ? reinterpret_cast<char *>(id2->data + id2_o) : NULL;
            piece_end = id2 ? piece + id2_s : NULL;
            break;
          }
  
!       for(size_t j=0; j<M; j++)
          {
          // Pick up the next identifier-1 source string:
!         const cblc_field_t *id1 = ref[index_cblc];
          size_t id1_o = ref_o[index_cblc];
          size_t id1_s = ref_s[index_cblc];
          index_cblc += 1;
  
!         const char *whole = id1 ? reinterpret_cast<char *>(id1->data + id1_o): NULL ;
          const char *whole_end = id1 ? whole + id1_s : NULL;
  
          // As usual, we need to cope with figurative constants:
!         figconst = (cbl_figconst_t) ( id1 ? (id1->attr & FIGCONST_MASK) : 0 );
          switch( figconst )
            {
            case low_value_e:
*************** __gg__string(size_t integers[])
*** 8673,8683 ****
                                              whole, whole_end);
            if(found)
              {
! #pragma GCC diagnostic push
! #pragma GCC diagnostic ignored "-Wcast-qual"
!             char *wfound = (char *)found;
! #pragma GCC diagnostic pop
!             whole_end = wfound;
              }
            }
          while(whole < whole_end)
--- 8923,8929 ----
                                              whole, whole_end);
            if(found)
              {
!             whole_end = found;
              }
            }
          while(whole < whole_end)
*************** display_both(cblc_field_t  *field,
*** 8727,8733 ****
               int            advance )
    {
    static size_t display_string_size = MINIMUM_ALLOCATION_SIZE;
!   static char *display_string = (char *)malloc(display_string_size);
  
    format_for_display_internal(&display_string,
                                &display_string_size,
--- 8973,8979 ----
               int            advance )
    {
    static size_t display_string_size = MINIMUM_ALLOCATION_SIZE;
!   static char *display_string = static_cast<char *>(malloc(display_string_size));
  
    format_for_display_internal(&display_string,
                                &display_string_size,
*************** display_both(cblc_field_t  *field,
*** 8738,8744 ****
  
    // Let's honor the locale of the system, as best we can:
    static size_t converted_size = MINIMUM_ALLOCATION_SIZE;
!   static char *converted = (char *)malloc(converted_size);
  
    internal_to_console(&converted, &converted_size, display_string, strlen(display_string));
  
--- 8984,8990 ----
  
    // Let's honor the locale of the system, as best we can:
    static size_t converted_size = MINIMUM_ALLOCATION_SIZE;
!   static char *converted = static_cast<char *>(malloc(converted_size));
  
    internal_to_console(&converted, &converted_size, display_string, strlen(display_string));
  
*************** display_both(cblc_field_t  *field,
*** 8748,8754 ****
    if(ss == -1)
      {
      fprintf(stderr, "__gg__display() %s %p\n", field->name, qual_data);
!     fprintf(stderr, "__gg__display() %zd\n", converted_size);
      fprintf(stderr, "__gg__display() ");
      for(size_t i=0; i<converted_size; i++)
        {
--- 8994,9000 ----
    if(ss == -1)
      {
      fprintf(stderr, "__gg__display() %s %p\n", field->name, qual_data);
!     fprintf(stderr, "__gg__display() %ld\n", static_cast<long>(converted_size));
      fprintf(stderr, "__gg__display() ");
      for(size_t i=0; i<converted_size; i++)
        {
*************** display_both(cblc_field_t  *field,
*** 8760,8768 ****
  
    if( advance )
      {
!     ss = write( file_descriptor,
!                 "\n",
!                 1);
      }
    }
  
--- 9006,9014 ----
  
    if( advance )
      {
!     write( file_descriptor,
!            "\n",
!            1);
      }
    }
  
*************** __gg__display(    cblc_field_t *field,
*** 8776,8782 ****
    {
    display_both( field,
                  field->data + offset,
!                 size ? size : field->capacity,
                  0,
                  file_descriptor,
                  advance);
--- 9022,9028 ----
    {
    display_both( field,
                  field->data + offset,
!                 size,
                  0,
                  file_descriptor,
                  advance);
*************** __gg__display_clean(cblc_field_t *field,
*** 8801,8820 ****
  
  extern "C"
  void
! __gg__display_string( int     file_descriptor,
!                       char   *str,
!                       size_t  length,
!                       int     advance )
    {
    // Let's honor the locale of the system, as best we can:
    static size_t converted_size = MINIMUM_ALLOCATION_SIZE;
!   static char *converted = (char *)malloc(converted_size);
  
    size_t max_possible = 2 * length;
    if( max_possible > converted_size )
      {
      converted_size = max_possible;
!     converted = (char *)realloc(converted, converted_size);
      }
  
    __gg__ascii_to_console(&converted, &converted_size, str, length);
--- 9047,9066 ----
  
  extern "C"
  void
! __gg__display_string( int           file_descriptor,
!                       const char   *str,
!                       size_t        length,
!                       int           advance )
    {
    // Let's honor the locale of the system, as best we can:
    static size_t converted_size = MINIMUM_ALLOCATION_SIZE;
!   static char *converted = static_cast<char *>(malloc(converted_size));
  
    size_t max_possible = 2 * length;
    if( max_possible > converted_size )
      {
      converted_size = max_possible;
!     converted = static_cast<char *>(realloc(converted, converted_size));
      }
  
    __gg__ascii_to_console(&converted, &converted_size, str, length);
*************** __gg__display_string( int     file_descr
*** 8830,8837 ****
      }
    }
  
- #pragma GCC diagnostic push
- 
  static
  char *
  mangler_core(const char *s, const char *eos)
--- 9076,9081 ----
*************** __gg__accept(   enum special_name_t spec
*** 8952,8958 ****
        }
      }
  
!   char *buffer = (char *)malloc(max_chars+1);
    memset(buffer, ascii_space, max_chars);
    buffer[max_chars] = NULLCH;
    size_t i = 0;
--- 9196,9203 ----
        }
      }
  
!   char *buffer = static_cast<char *>(malloc(max_chars+1));
!   massert(buffer);
    memset(buffer, ascii_space, max_chars);
    buffer[max_chars] = NULLCH;
    size_t i = 0;
*************** __gg__binary_value_from_field(   int *rd
*** 9118,9124 ****
  extern "C"
  __int128
  __gg__binary_value_from_qualified_field(int          *rdigits,
!                                         cblc_field_t *var,
                                          size_t        offset,
                                          size_t        size)
    {
--- 9363,9369 ----
  extern "C"
  __int128
  __gg__binary_value_from_qualified_field(int          *rdigits,
!                                         const cblc_field_t *var,
                                          size_t        offset,
                                          size_t        size)
    {
*************** __gg__float128_from_field( cblc_field_t
*** 9151,9157 ****
  
  extern "C"
  GCOB_FP128
! __gg__float128_from_qualified_field( cblc_field_t *field, size_t offset, size_t size)
    {
    GCOB_FP128 retval=0;
    if( field->type == FldFloat || field->type == FldLiteralN )
--- 9396,9402 ----
  
  extern "C"
  GCOB_FP128
! __gg__float128_from_qualified_field(const cblc_field_t *field, size_t offset, size_t size)
    {
    GCOB_FP128 retval=0;
    if( field->type == FldFloat || field->type == FldLiteralN )
*************** __gg__int128_to_qualified_field(cblc_fie
*** 9228,9238 ****
    }
  
  static __int128
! float128_to_int128( int          *rdigits,
!                     cblc_field_t *field,
!                     GCOB_FP128     value,
!                     cbl_round_t   rounded,
!                     int          *compute_error)
    {
    __int128 retval = 0;
    if( value == INFINITY )
--- 9473,9483 ----
    }
  
  static __int128
! float128_to_int128( int                *rdigits,
!                     const cblc_field_t *field,
!                     GCOB_FP128          value,
!                     cbl_round_t         rounded,
!                     int                *compute_error)
    {
    __int128 retval = 0;
    if( value == INFINITY )
*************** float128_to_location( cblc_field_t   *tg
*** 9314,9329 ****
                }
              if( value < 0 )
                {
!               *(float *)(data) = -INFINITY;
                }
              else
                {
!               *(float *)(data) = INFINITY;
                }
              }
            else
              {
!             *(float *)(data) = (float)value;
              }
            break;
  
--- 9559,9574 ----
                }
              if( value < 0 )
                {
!               *PTRCAST(float, data) = -INFINITY;
                }
              else
                {
!               *PTRCAST(float, data) = INFINITY;
                }
              }
            else
              {
!             *PTRCAST(float, data) = static_cast<float>(value);
              }
            break;
  
*************** float128_to_location( cblc_field_t   *tg
*** 9337,9352 ****
                }
              if( value < 0 )
                {
!               *(double *)(data) = -INFINITY;
                }
              else
                {
!               *(double *)(data) = INFINITY;
                }
              }
            else
              {
!             *(double *)(data) = (double)value;
              }
            break;
  
--- 9582,9597 ----
                }
              if( value < 0 )
                {
!               *PTRCAST(double, data) = -INFINITY;
                }
              else
                {
!               *PTRCAST(double, data) = INFINITY;
                }
              }
            else
              {
!             *PTRCAST(double, data) = static_cast<double>(value);
              }
            break;
  
*************** __gg__set_initial_switch_value( )
*** 9547,9553 ****
    __int128 bit = 1;
    char ach[129];
    memset(ach, 0, sizeof(ach));
!   char *p = getenv("UPSI");
    if( p )
      {
      snprintf(ach, sizeof(ach), "%s", p);
--- 9792,9798 ----
    __int128 bit = 1;
    char ach[129];
    memset(ach, 0, sizeof(ach));
!   const char *p = getenv("UPSI");
    if( p )
      {
      snprintf(ach, sizeof(ach), "%s", p);
*************** is_numeric_display_numeric(cblc_field_t
*** 9580,9586 ****
    bool leading  = !!(field->attr & leading_e);
    bool separate = !!(field->attr & separate_e);
  
!   char *digits   = (char *)(field->data + offset);
    char *digits_e = digits + size;
  
    if( leading && separate && signable )
--- 9825,9831 ----
    bool leading  = !!(field->attr & leading_e);
    bool separate = !!(field->attr & separate_e);
  
!   char *digits   = reinterpret_cast<char *>(field->data + offset);
    char *digits_e = digits + size;
  
    if( leading && separate && signable )
*************** is_numeric_display_numeric(cblc_field_t
*** 9652,9664 ****
    }
  
  static int
! is_packed_numeric(cblc_field_t *field, size_t offset, size_t size)
    {
    int retval = 1;
    bool is_comp6 = !!(field->attr&packed_no_sign_e);
    int digits = field->digits;
    bool signable = !!(field->attr & signable_e);
!   unsigned char *bytes   = field->data + offset;
  
    int nybble   = 0;
    int nybble_e = nybble + digits;
--- 9897,9909 ----
    }
  
  static int
! is_packed_numeric(const cblc_field_t *field, size_t offset, size_t size)
    {
    int retval = 1;
    bool is_comp6 = !!(field->attr&packed_no_sign_e);
    int digits = field->digits;
    bool signable = !!(field->attr & signable_e);
!   const unsigned char *bytes   = field->data + offset;
  
    int nybble   = 0;
    int nybble_e = nybble + digits;
*************** is_packed_numeric(cblc_field_t *field, s
*** 9727,9736 ****
    }
  
  static int
! is_alpha_a_number(cblc_field_t *field, size_t offset, size_t size)
    {
    int retval = 1;
!   unsigned char *bytes = (field->data + offset);
    for( size_t i=0; i<size; i++ )
      {
      unsigned char ch = bytes[i];
--- 9972,9983 ----
    }
  
  static int
! is_alpha_a_number(const cblc_field_t *field,
!                   size_t offset,
!                   size_t size)
    {
    int retval = 1;
!   const unsigned char *bytes = (field->data + offset);
    for( size_t i=0; i<size; i++ )
      {
      unsigned char ch = bytes[i];
*************** __gg__classify( classify_t type,
*** 9754,9760 ****
    // The default answer is TRUE
    int retval = 1;
  
!   const unsigned char *alpha = (unsigned char *)(field->data+offset);
  
    size_t str_length = size;
  
--- 10001,10007 ----
    // The default answer is TRUE
    int retval = 1;
  
!   const unsigned char *alpha = reinterpret_cast<unsigned char *>(field->data+offset);
  
    size_t str_length = size;
  
*************** __gg__classify( classify_t type,
*** 9885,9933 ****
    return retval;
    }
  
! extern "C"
  int
! __gg__accept_envar( cblc_field_t *tgt,
!                     size_t        tgt_offset,
!                     size_t        tgt_length,
!                     cblc_field_t *name,
!                     size_t        name_offset,
!                     size_t        name_length)
    {
!   int retval;
!   tgt_length  = tgt_length  ? tgt_length  : tgt->capacity;
!   name_length = name_length ? name_length : name->capacity;
! 
!   // Pick up the environment variable name, which is in teh internal codeset
!   static char   *env        = NULL;
!   static size_t  env_length = 0;
!   if( env_length < name_length+1 )
      {
!     env_length = name_length+1;
!     env = (char *)realloc(env, env_length);
!     }
!   memcpy(env, name->data + name_offset, name_length);
!   env[name_length] = '\0';
  
!   // Get rid of leading and trailing internal_space characters:
!   char *trimmed_env = brute_force_trim(env);
  
!   // Convert the name to the console codeset:
!   __gg__internal_to_console_in_place(trimmed_env, strlen(trimmed_env));
  
!   // Pick up the environment variable, and convert it to the internal codeset
!   char *p = getenv(trimmed_env);
!   if(p)
!     {
!     char *pp = strdup(p);
!     console_to_internal(pp, strlen(pp));
!     retval = 0; // Okay
!     move_string(tgt, tgt_offset, tgt_length, pp);
!     free(pp);
      }
!   else
      {
!     retval = 1; // Could't find it
      exception_raise(ec_argument_imp_environment_e);
      }
  
--- 10132,10176 ----
    return retval;
    }
  
! static
  int
! accept_envar( cblc_field_t *tgt,
!               size_t        tgt_offset,
!               size_t        tgt_length,
!               const char   *psz_name)
    {
!   int retval = 1; // 1 means we couldn't find it
!   if( psz_name )
      {
!     tgt_length = tgt_length  ? tgt_length  : tgt->capacity;
  
!     // Pick up the environment variable name, which is in the internal codeset
!     char *env = strdup(psz_name);
!     massert(env);
  
!     // Get rid of leading and trailing internal_space characters:
!     char *trimmed_env = brute_force_trim(env);
  
!     // Convert the name to the console codeset:
!     __gg__internal_to_console_in_place(trimmed_env, strlen(trimmed_env));
! 
!     // Pick up the environment variable, and convert it to the internal codeset
!     const char *p = getenv(trimmed_env);
!     if(p)
!       {
!       char *pp = strdup(p);
!       massert(pp);
!       console_to_internal(pp, strlen(pp));
!       retval = 0; // Okay
!       move_string(tgt, tgt_offset, tgt_length, pp);
!       free(pp);
!       }
!     free(env);
      }
! 
!   if( retval == 1 )
      {
!     // Could't find it
      exception_raise(ec_argument_imp_environment_e);
      }
  
*************** __gg__accept_envar( cblc_field_t *tgt,
*** 9935,9940 ****
--- 10178,10205 ----
    }
  
  extern "C"
+ int
+ __gg__accept_envar( cblc_field_t *tgt,
+                     size_t        tgt_offset,
+                     size_t        tgt_length,
+               const cblc_field_t *name,
+                     size_t        name_offset,
+                     size_t        name_length)
+   {
+   //  We need the name to be nul-terminated:
+   char *p = static_cast<char *>(malloc(name_length + 1));
+   massert(p);
+   memcpy(p, name->data+name_offset, name_length);
+   p[name_length] = '\0';
+   int retval = accept_envar(tgt,
+                             tgt_offset,
+                             tgt_length,
+                             p);
+   free(p);
+   return retval;
+   }
+ 
+ extern "C"
  bool
  __gg__set_envar(cblc_field_t    *name,
                  size_t           name_offset,
*************** __gg__set_envar(cblc_field_t    *name,
*** 9955,9968 ****
    if( env_length < name_length+1 )
      {
      env_length = name_length+1;
!     env = (char *)realloc(env, env_length);
      }
    if( val_length < value_length+1 )
      {
      val_length = value_length+1;
!     val = (char *)realloc(val, val_length);
      }
  
    // The name and the value arrive in the internal codeset:
    memcpy(env, name->data+name_offset  , name_length);
    env[name_length] = '\0';
--- 10220,10236 ----
    if( env_length < name_length+1 )
      {
      env_length = name_length+1;
!     env = static_cast<char *>(realloc(env, env_length));
      }
    if( val_length < value_length+1 )
      {
      val_length = value_length+1;
!     val = static_cast<char *>(realloc(val, val_length));
      }
  
+   massert(val);
+   massert(env);
+ 
    // The name and the value arrive in the internal codeset:
    memcpy(env, name->data+name_offset  , name_length);
    env[name_length] = '\0';
*************** command_line_plan_b()
*** 10031,10045 ****
        if( bytes_read )
          {
          char *p = input;
!         char *p_end = p + bytes_read;
          char prior_char = '\0';
          while( p < p_end )
            {
            if( prior_char == '\0' )
              {
              stashed_argc += 1;
!             stashed_argv = (char **)realloc(stashed_argv,
!                                             stashed_argc * sizeof(char *));
              stashed_argv[stashed_argc-1] = p;
              }
            prior_char = *p++;
--- 10299,10313 ----
        if( bytes_read )
          {
          char *p = input;
!         const char *p_end = p + bytes_read;
          char prior_char = '\0';
          while( p < p_end )
            {
            if( prior_char == '\0' )
              {
              stashed_argc += 1;
!             stashed_argv = static_cast<char **>(realloc(stashed_argv,
!                                             stashed_argc * sizeof(char *)));
              stashed_argv[stashed_argc-1] = p;
              }
            prior_char = *p++;
*************** __gg__get_command_line( cblc_field_t *fi
*** 10110,10116 ****
    int retcode;
    command_line_plan_b();
    size_t length = 1;
!   char *retval = (char *)malloc(length);
    *retval = NULLCH;
  
    for( int i=1; i<stashed_argc; i++ )
--- 10378,10385 ----
    int retcode;
    command_line_plan_b();
    size_t length = 1;
!   char *retval = static_cast<char *>(malloc(length));
!   massert(retval);
    *retval = NULLCH;
  
    for( int i=1; i<stashed_argc; i++ )
*************** __gg__get_command_line( cblc_field_t *fi
*** 10118,10124 ****
      while( strlen(retval) + strlen(stashed_argv[i]) + 2 > length )
        {
        length *= 2;
!       retval = (char *)realloc(retval, length);
        }
      if( *retval )
        {
--- 10387,10394 ----
      while( strlen(retval) + strlen(stashed_argv[i]) + 2 > length )
        {
        length *= 2;
!       retval = static_cast<char *>(realloc(retval, length));
!       massert(retval);
        }
      if( *retval )
        {
*************** __gg__get_command_line( cblc_field_t *fi
*** 10146,10157 ****
  
  extern "C"
  void
! __gg__set_pointer(cblc_field_t *target,
!                   size_t        target_o,
!                   int           target_flags,
!                   cblc_field_t *source,
!                   size_t        source_o,
!                   int           source_flags)
    {
    void *source_address;
    if( source_flags & REFER_T_ADDRESS_OF )
--- 10416,10427 ----
  
  extern "C"
  void
! __gg__set_pointer(cblc_field_t       *target,
!                   size_t              target_o,
!                   int                 target_flags,
!                   const cblc_field_t *source,
!                   size_t              source_o,
!                   int                 source_flags)
    {
    void *source_address;
    if( source_flags & REFER_T_ADDRESS_OF )
*************** __gg__set_pointer(cblc_field_t *target,
*** 10164,10170 ****
      // This is SET <something> TO POINTER
      if( source )
        {
!       source_address = *(void **)(source->data + source_o);
        }
      else
        {
--- 10434,10440 ----
      // This is SET <something> TO POINTER
      if( source )
        {
!       source_address = *reinterpret_cast<void **>(source->data + source_o);
        }
      else
        {
*************** __gg__set_pointer(cblc_field_t *target,
*** 10177,10183 ****
      {
      // This is SET ADDRESS OF target TO ....
      // We know it has to be an unqualified LINKAGE level 01 or level 77
!     target->data  = (unsigned char *)source_address;
      // The caller will propogate data + offset to their children.
      }
    else
--- 10447,10453 ----
      {
      // This is SET ADDRESS OF target TO ....
      // We know it has to be an unqualified LINKAGE level 01 or level 77
!     target->data  = reinterpret_cast<unsigned char *>(source_address);
      // The caller will propogate data + offset to their children.
      }
    else
*************** __gg__set_pointer(cblc_field_t *target,
*** 10188,10199 ****
        // This is [almost certainly] INITIALIZE <pointer> when -fdefaultbyte
        // was specified.
        memset( target->data+target_o,
!               *(unsigned char *)source_address,
                target->capacity);
        }
      else
        {
!       *(void **)(target->data+target_o) = source_address;
        }
      }
    }
--- 10458,10469 ----
        // This is [almost certainly] INITIALIZE <pointer> when -fdefaultbyte
        // was specified.
        memset( target->data+target_o,
!               *reinterpret_cast<unsigned char *>(source_address),
                target->capacity);
        }
      else
        {
!       *reinterpret_cast<void **>(target->data+target_o) = source_address;
        }
      }
    }
*************** extern "C"
*** 10276,10282 ****
  void
  __gg__ascii_to_internal_field(cblc_field_t *var)
    {
!   ascii_to_internal_str((char *)var->data, var->capacity);
    }
  
  extern "C"
--- 10546,10552 ----
  void
  __gg__ascii_to_internal_field(cblc_field_t *var)
    {
!   ascii_to_internal_str(reinterpret_cast<char *>(var->data), var->capacity);
    }
  
  extern "C"
*************** void
*** 10328,10334 ****
  __gg__internal_to_console_in_place(char *loc, size_t length)
    {
    static size_t dest_size = MINIMUM_ALLOCATION_SIZE;
!   static char *dest = (char *)malloc(dest_size);
  
    internal_to_console(&dest, &dest_size, loc, length);
    memcpy(loc, dest, length);
--- 10598,10604 ----
  __gg__internal_to_console_in_place(char *loc, size_t length)
    {
    static size_t dest_size = MINIMUM_ALLOCATION_SIZE;
!   static char *dest = static_cast<char *>(malloc(dest_size));
  
    internal_to_console(&dest, &dest_size, loc, length);
    memcpy(loc, dest, length);
*************** __gg__internal_to_console_in_place(char
*** 10336,10343 ****
  
  extern "C"
  int
! __gg__routine_to_call(char *name,
!                       int  program_id)
    {
    // The list of names is sorted, so at the very least this should be replaced
    // with a binary search:
--- 10606,10613 ----
  
  extern "C"
  int
! __gg__routine_to_call(const char *name,
!                       int         program_id)
    {
    // The list of names is sorted, so at the very least this should be replaced
    // with a binary search:
*************** __gg__routine_to_call(char *name,
*** 10353,10362 ****
    char **names = *(it->second);
  
    int retval = -1;
-   int i=0;
  
    if( names )
      {
      while(*names)
        {
        if( strstr(*names, name) )
--- 10623,10632 ----
    char **names = *(it->second);
  
    int retval = -1;
  
    if( names )
      {
+     int i=0;
      while(*names)
        {
        if( strstr(*names, name) )
*************** __gg__routine_to_call(char *name,
*** 10378,10391 ****
  
  extern "C"
  __int128
! __gg__fetch_call_by_value_value(cblc_field_t *field,
                                  size_t field_o,
                                  size_t field_s)
  
    {
    int rdigits;
!   unsigned char *data = field->data + field_o;
!   size_t         length = field_s;
  
    __int128 retval = 0;
    switch(field->type)
--- 10648,10661 ----
  
  extern "C"
  __int128
! __gg__fetch_call_by_value_value(const cblc_field_t *field,
                                  size_t field_o,
                                  size_t field_s)
  
    {
    int rdigits;
!   unsigned char *data   = field->data + field_o;
!   const size_t   length = field_s;
  
    __int128 retval = 0;
    switch(field->type)
*************** __gg__fetch_call_by_value_value(cblc_fie
*** 10394,10400 ****
      case FldAlphanumeric:
      case FldAlphaEdited:
      case FldLiteralA:
!       retval = *(char *)data;
        break;
  
      case FldFloat:
--- 10664,10670 ----
      case FldAlphanumeric:
      case FldAlphaEdited:
      case FldLiteralA:
!       retval = *reinterpret_cast<char *>(data);
        break;
  
      case FldFloat:
*************** __gg__fetch_call_by_value_value(cblc_fie
*** 10402,10412 ****
        switch(length)
          {
          case 4:
!           *(float *)(&retval) = *(float *)data;
            break;
  
          case 8:
!           *(double *)(&retval) = *(double *)data;
            break;
  
          case 16:
--- 10672,10682 ----
        switch(length)
          {
          case 4:
!           *PTRCAST(float, &retval) = *PTRCAST(float, data);
            break;
  
          case 8:
!           *PTRCAST(double, &retval) = *PTRCAST(double, data);
            break;
  
          case 16:
*************** __gg__assign_value_from_stack(cblc_field
*** 10463,10473 ****
        switch(dest->capacity)
          {
          case 4:
!           *(float *)(dest->data) = *(float *)&parameter;
            break;
  
          case 8:
!           *(double *)(dest->data) = *(double *)&parameter;
            break;
  
          case 16:
--- 10733,10743 ----
        switch(dest->capacity)
          {
          case 4:
!           *PTRCAST(float, dest->data) = *PTRCAST(float, (&parameter));
            break;
  
          case 8:
!           *PTRCAST(double, dest->data) = *PTRCAST(double, (&parameter));
            break;
  
          case 16:
*************** __gg__assign_value_from_stack(cblc_field
*** 10501,10528 ****
  
  extern "C"
  int
! __gg__literaln_alpha_compare(char *left_side,
!                              cblc_field_t *right,
!                              size_t        offset,
!                              size_t        length,
!                              int  flags)
    {
    int retval;
    if( length == 0 )
      {
      length = right->capacity;
      }
!   retval = compare_strings(   (char *)left_side,
                                strlen(left_side),
                                false,
!                               (char *)right->data + offset,
                                length,
                                !!(flags & REFER_T_MOVE_ALL) );
    return retval;
    }
  
  static char *
! string_in(char *str, char *str_e, char *frag, char *frag_e)
    {
    // This simple routine could be improved.  Instead of using memcmp, we could
    // use established, albeit complex, techniques of string searching:
--- 10771,10801 ----
  
  extern "C"
  int
! __gg__literaln_alpha_compare(const char         *left_side,
!                              const cblc_field_t *right,
!                              size_t              offset,
!                              size_t              length,
!                              int                 flags)
    {
    int retval;
    if( length == 0 )
      {
      length = right->capacity;
      }
!   retval = compare_strings(   left_side,
                                strlen(left_side),
                                false,
!                               reinterpret_cast<char *>((right->data + offset)),
                                length,
                                !!(flags & REFER_T_MOVE_ALL) );
    return retval;
    }
  
  static char *
! string_in(      char *str,
!           const char *str_e,
!           const char *frag,
!           const char *frag_e)
    {
    // This simple routine could be improved.  Instead of using memcmp, we could
    // use established, albeit complex, techniques of string searching:
*************** string_in(char *str, char *str_e, char *
*** 10552,10562 ****
  
  extern "C"
  int
! __gg__unstring( cblc_field_t *id1,        // The string being unstring
!                 size_t        id1_o,
!                 size_t        id1_s,
                  size_t ndelimiteds,       // The number of DELIMITED entries
!                 char *all_flags,          // The number of ALL flags, one per ndelimiteds
                  size_t nreceivers,        // The number of DELIMITER receivers
                  cblc_field_t *id7,        // The index of characters, both for starting updated at end
                  size_t        id7_o,
--- 10825,10835 ----
  
  extern "C"
  int
! __gg__unstring( const cblc_field_t *id1,        // The string being unstring
!                 size_t              id1_o,
!                 size_t              id1_s,
                  size_t ndelimiteds,       // The number of DELIMITED entries
!                 const char *all_flags,          // The number of ALL flags, one per ndelimiteds
                  size_t nreceivers,        // The number of DELIMITER receivers
                  cblc_field_t *id7,        // The index of characters, both for starting updated at end
                  size_t        id7_o,
*************** __gg__unstring( cblc_field_t *id1,
*** 10575,10592 ****
    // resolved.  Each might have an identifier-5 delimiter, and each might have
    // an identifier-6 count.
  
!   cblc_field_t **id2   = __gg__treeplet_1f;      // The delimiting strings; one per ndelimiteds
!   size_t        *id2_o = __gg__treeplet_1o;
!   size_t        *id2_s = __gg__treeplet_1s;
!   cblc_field_t **id4   = __gg__treeplet_2f;      // The delimited string; one per nreceiver
!   size_t        *id4_o = __gg__treeplet_2o;
!   size_t        *id4_s = __gg__treeplet_2s;
!   cblc_field_t **id5   = __gg__treeplet_3f;      // The delimiting string; one per receiver
!   size_t        *id5_o = __gg__treeplet_3o;
!   size_t        *id5_s = __gg__treeplet_3s;
!   cblc_field_t **id6   = __gg__treeplet_4f;      // The count of characters examined;  one per receiver
!   size_t        *id6_o = __gg__treeplet_4o;
!   size_t        *id6_s = __gg__treeplet_4s;
  
    // Initialize the state variables
    int overflow = 0;
--- 10848,10869 ----
    // resolved.  Each might have an identifier-5 delimiter, and each might have
    // an identifier-6 count.
  
!   // The delimiting strings; one per ndelimiteds
!   cblc_field_t **id2         = __gg__treeplet_1f;
!   const size_t        *id2_o = __gg__treeplet_1o;
!   const size_t        *id2_s = __gg__treeplet_1s;
!   // The delimited string; one per nreceiver
!   cblc_field_t **id4         = __gg__treeplet_2f;
!   const size_t        *id4_o = __gg__treeplet_2o;
!   const size_t        *id4_s = __gg__treeplet_2s;
!   // The delimiting string; one per receiver
!   cblc_field_t **id5         = __gg__treeplet_3f;
!   const size_t        *id5_o = __gg__treeplet_3o;
!   const size_t        *id5_s = __gg__treeplet_3s;
!   // The count of characters examined;  one per receiver
!   cblc_field_t **id6         = __gg__treeplet_4f;
!   const size_t        *id6_o = __gg__treeplet_4o;
!   const size_t        *id6_s = __gg__treeplet_4s;
  
    // Initialize the state variables
    int overflow = 0;
*************** __gg__unstring( cblc_field_t *id1,
*** 10629,10636 ****
      goto done;
      }
  
!   left  = (char *)(id1->data+id1_o) + pointer-1;
!   right = (char *)(id1->data+id1_o) + id1_s;
  
    if( ndelimiteds == 0 )
      {
--- 10906,10913 ----
      goto done;
      }
  
!   left  = reinterpret_cast<char *>(id1->data+id1_o) + pointer-1;
!   right = reinterpret_cast<char *>(id1->data+id1_o) + id1_s;
  
    if( ndelimiteds == 0 )
      {
*************** __gg__unstring( cblc_field_t *id1,
*** 10728,10735 ****
          default:
            pfound = string_in( left,
                                right,
!                               (char *)(id2[i]->data+id2_o[i]),
!                               (char *)(id2[i]->data+id2_o[i]) + id2_s[i]);
            break;
          }
  
--- 11005,11013 ----
          default:
            pfound = string_in( left,
                                right,
!                               reinterpret_cast<char *>(id2[i]->data+id2_o[i]),
!                               reinterpret_cast<char *>((id2[i]->data+id2_o[i])
!                                                                  + id2_s[i]));
            break;
          }
  
*************** __gg__unstring( cblc_field_t *id1,
*** 10806,10812 ****
          else
            {
            move_string(id5[nreceiver], id5_o[nreceiver], id5_s[nreceiver],
!                       (char *)(id2[ifound]->data+id2_o[ifound]),
                        id2_s[ifound]);
            }
          }
--- 11084,11090 ----
          else
            {
            move_string(id5[nreceiver], id5_o[nreceiver], id5_s[nreceiver],
!                       reinterpret_cast<char *>(id2[ifound]->data+id2_o[ifound]),
                        id2_s[ifound]);
            }
          }
*************** int __gg__is_canceled(size_t function_po
*** 10900,10956 ****
  static inline ec_type_t
  local_ec_type_of( file_status_t status )
    {
-   ec_type_t retval;
    int status10 = (int)status / 10;
!   if( !(status10 < 10 && status10 >= 0) )
      {
      __gg__abort("local_ec_type_of(): status10 out of range");
      }
-   switch(status10)
-     {
-     case 0:
-       // This actually should be ec_io_warning_e, but that's new for ISO 1989:2013
-       retval = ec_none_e;
-       break;
-     case 1:
-       retval = ec_io_at_end_e;
-       break;
-     case 2:
-       retval = ec_io_invalid_key_e;
-       break;
-     case 3:
-       retval = ec_io_permanent_error_e;
-       break;
-     case 4:
-       retval = ec_io_logic_error_e;
-       break;
-     case 5:
-       retval = ec_io_record_operation_e;
-       break;
-     case 6:
-       retval = ec_io_file_sharing_e;
-       break;
-     case 7:
-       retval = ec_io_record_content_e;
-       break;
-     case 9:
-       retval = ec_io_imp_e;
-       break;
  
!     default:
!       retval = ec_none_e;
!       break;
!     }
!   return retval;
!   }
! 
! bool
! cbl_enabled_exceptions_array_t::match( ec_type_t ec, size_t file ) const {
!   auto output = enabled_exception_match( ecs, ecs + nec, ec, file );
!   return output < ecs + nec? output->enabled : false;
! }
  
! static cbl_enabled_exceptions_array_t enabled_ECs;
  
  /*
   * Store and report the enabled exceptions.
--- 11178,11206 ----
  static inline ec_type_t
  local_ec_type_of( file_status_t status )
    {
    int status10 = (int)status / 10;
!   assert( 0 <= status10 ); // was enum, can't be negative.
!   if( 10 < status10 )
      {
      __gg__abort("local_ec_type_of(): status10 out of range");
      }
  
!   static const std::vector<ec_type_t> ec_by_status {
!     /* 0 */ ec_none_e, // ec_io_warning_e if low byte is nonzero
!     /* 1 */ ec_io_at_end_e,
!     /* 2 */ ec_io_invalid_key_e,
!     /* 3 */ ec_io_permanent_error_e,
!     /* 4 */ ec_io_logic_error_e,
!     /* 5 */ ec_io_record_operation_e,
!     /* 6 */ ec_io_file_sharing_e,
!     /* 7 */ ec_io_record_content_e,
!     /* 8 */ ec_none_e, // unused, not defined by ISO
!     /* 9 */ ec_io_imp_e,
!   };
!   assert(ec_by_status.size() == 10);
  
!   return ec_by_status[status10];
!   }
  
  /*
   * Store and report the enabled exceptions.
*************** static cbl_enabled_exceptions_array_t en
*** 10959,11219 ****
   */
  struct exception_descr_t {
    bool location;
!   std::set<size_t> files;
  };
  
  /*
   * Compare the raised exception, cbl_exception_t, to the USE critera
!  * of a declarative, cbl_declarative_t.  Return FALSE if the exception
!  * raised was already handled by the statement that provoked the
!  * exception, as indicated by the "handled" file status.
!  *
!  * This copes with I/O exceptions: ec_io_e and friends.
   */
! 
! class match_file_declarative {
!   const cbl_exception_t& oops;
!   const ec_type_t handled_type;
!  protected:
!   bool handled() const {
!     return oops.type == handled_type || oops.type == ec_none_e;
    }
!  public:
!   match_file_declarative( const cbl_exception_t& oops, file_status_t handled )
!     : oops(oops), handled_type( local_ec_type_of(handled) )
!   {}
  
!   bool operator()( const cbl_declarative_t& dcl ) {
  
!     // Declarative is for the raised exception and not handled by the statement.
!     if( handled() ) return false;
!     bool matches = enabled_ECs.match(dcl.type);
  
      // I/O declaratives match by file or mode, not EC.
      if( dcl.is_format_1() ) { // declarative is for particular files or mode
!       if( dcl.nfile > 0 ) {
!         matches = dcl.match_file(oops.file);
!       } else {
!         matches = oops.mode == dcl.mode;
        }
      }
  
!     return matches;
    }
! };
  
! cblc_file_t * __gg__file_stashed();
! static ec_type_t ec_raised_and_handled;
  
  static void
! default_exception_handler( ec_type_t ec)
  {
    if( ec != ec_none_e ) {
!     auto p = std::find_if( __gg__exception_table, __gg__exception_table_end,
                             [ec](const ec_descr_t& descr) {
                               return descr.type == ec;
                             } );
!     if( p == __gg__exception_table_end ) {
!       err(EXIT_FAILURE,
!           "logic error: %s:%zu: %s unknown exception %x",
!            ec_status.source_file,
!            ec_status.lineno,
!            ec_status.statement,
!            ec );
      }
  
!     const char *disposition = NULL;
  
!     switch( p->disposition ) {
!     case ec_category_fatal_e:
!       warnx("fatal exception at %s:%zu:%s %s (%s)",
!             ec_status.source_file,
!             ec_status.lineno,
!             ec_status.statement,
!             p->name,
!             p->description );
!       abort();
!       break;
      case ec_category_none_e:
-       disposition = "category none?";
-       break;
-     case ec_category_nonfatal_e:
-       disposition = "nonfatal";
-       break;
-     case ec_category_implementor_e:
-       disposition = "implementor";
-       break;
      case uc_category_none_e:
-       disposition = "uc_category_none_e";
        break;
      case uc_category_fatal_e:
!       disposition = "uc_category_fatal_e";
        break;
      case uc_category_nonfatal_e:
!       disposition = "uc_category_nonfatal_e";
        break;
      case uc_category_implementor_e:
-       disposition = "uc_category_implementor_e";
        break;
      }
  
!     // If the EC was handled by a declarative, keep mum.
!     if( ec == ec_raised_and_handled ) {
!       ec_raised_and_handled = ec_none_e;
!       return;
!     }
! 
!     warnx("%s exception at %s:%zu:%s %s (%s)",
!           disposition,
!           ec_status.source_file,
!           ec_status.lineno,
!           ec_status.statement,
!           p->name,
!           p->description );
    }
  }
  
  extern "C"
  void
  __gg__check_fatal_exception()
  {
!   if( ec_raised_and_handled == ec_none_e ) return;
!   /*
!    * "... if checking for EC-I-O exception conditions is not enabled,
!    * there is no link between EC-I-O exception conditions and I-O
!    * status values."
!    */
!   if( ec_cmp(ec_raised_and_handled, ec_io_e) ) return;
  
!   default_exception_handler(ec_raised_and_handled);
!   ec_raised_and_handled = ec_none_e;
  }
  
  extern "C"
  void
! __gg__clear_exception()
  {
!   ec_raised_and_handled = ec_none_e;
  }
  
! 
! cbl_enabled_exceptions_array_t&
! cbl_enabled_exceptions_array_t::operator=( const cbl_enabled_exceptions_array_t& input )
  {
!   if( nec == input.nec ) {
!     if( nec == 0 || 0 == memcmp(ecs, input.ecs, nbytes()) ) return *this;
!   }
! 
!   if( nec < input.nec ) {
!     if( nec > 0 ) delete[] ecs;
!     ecs = new cbl_enabled_exception_t[1 + input.nec];
!   }
!   if( input.nec > 0 ) {
!     auto pend = std::copy( input.ecs, input.ecs + input.nec, ecs );
!     std::fill(pend, ecs + input.nec, cbl_enabled_exception_t());
!   }
!   nec = input.nec;
!   return *this;
  }
  
! // Update the list of compiler-maintained enabled exceptions.
  extern "C"
  void
! __gg__stash_exceptions( size_t nec, cbl_enabled_exception_t *ecs )
  {
!   enabled_ECs = cbl_enabled_exceptions_array_t(nec, ecs);
! 
!   if( false && getenv("match_declarative") )
!     warnx("%s: %zu exceptions enabled", __func__, nec);
  }
  
  
  /*
!  * Match the raised exception against a declarative handler
   *
!  * ECs unrelated to I/O are not matched to a Declarative unless
!  * enabled.  Declaratives for I/O errors, on the other hand, match
!  * regardless of whether or not any EC is enabled.
   *
!  * Declaratives handle I-O errors with USE Format 1. They don't name a
!  * specific EC.  They're matched based on the file's status,
!  * irrespective of whether or not EC-I-O is enabled.  If EC-I-O is
!  * enabled, and mentioned in a Declarative USE statement, then it is
!  * matched just like any other Format 3 USE statement.
   */
  extern "C"
  void
! __gg__match_exception( cblc_field_t *index,
!                        const cbl_declarative_t *dcls )
  {
!   static const cbl_declarative_t no_declaratives[1] = {};
  
!   size_t ifile = __gg__exception_file_number;
!   // The exception file number is assumed to always be zero, unless it's
!   // been set to a non-zero value.  Having picked up that value it is our job
!   // to immediately set it back to zero:
!   __gg__exception_file_number = 0;
  
!   int  handled = __gg__exception_handled;
!   cblc_file_t *stashed = __gg__file_stashed();
  
!   if( dcls == NULL ) dcls = no_declaratives;
!   size_t ndcl = dcls[0].section;
!   auto eodcls  = dcls + 1 + ndcl, p = eodcls;
  
!   auto ec = ec_status.update().unhandled();
  
!   // We need to set exception handled back to 0.  We do it here because
!   // ec_status.update() looks at it
!   __gg__exception_handled = 0;
  
!   if(__gg__exception_code != ec_none_e) // cleared by ec_status_t::update
!     {
!     __gg__abort("__gg__match_exception(): __gg__exception_code should be ec_none_e");
!     }
!   if( ec == ec_none_e ) {
!     if( ifile == 0) goto set_exception_section;
  
!     if( stashed == nullptr )
!       {
!       __gg__abort("__gg__match_exception(): stashed is null");
!       }
!     ec = local_ec_type_of( stashed->io_status );
!   }
  
!   if( ifile > 0 ) { // an I/O exception is raised
!     if( stashed == nullptr )
!       {
!       __gg__abort("__gg__match_exception(): stashed is null (2)");
        }
!     auto mode = cbl_file_mode_t(stashed->mode_char);
!     cbl_exception_t oops = {0, ifile, ec, mode };
!     p = std::find_if( dcls + 1, eodcls,
!                       match_file_declarative(oops, file_status_t(handled)) );
  
!   } else {  // non-I/O exception
!     auto enabled = enabled_ECs.match(ec);
!     if( enabled ) {
!       p = std::find_if( dcls + 1, eodcls, [ec] (const cbl_declarative_t& dcl) {
!                           if( ! enabled_ECs.match(dcl.type) ) return false;
!                           if( ! ec_cmp(ec, dcl.type) ) return false;
!                           return true;
!                         } );
!       if( p == eodcls ) {
!         default_exception_handler(ec);
        }
-     } else { // not enabled
      }
!   }
! 
!  set_exception_section:
!   size_t retval = p == eodcls? 0 : p->section;
!   ec_raised_and_handled = retval? ec : ec_none_e;
  
    // If a declarative matches the raised exception, return its
    // symbol_table index.
    __gg__int128_to_field(index,
!                         (__int128)retval,
                          0,
                          truncation_e,
                          NULL);
--- 11209,11626 ----
   */
  struct exception_descr_t {
    bool location;
!   //std::set<size_t> files;
! };
! 
! struct cbl_exception_t {
! //  size_t program,
!   size_t file;
!   ec_type_t type;
!   cbl_file_mode_t mode;
  };
  
  /*
   * Compare the raised exception, cbl_exception_t, to the USE critera
!  * of a declarative, cbl_declarative_t.
   */
! static bool
! match_declarative( bool enabled,
!                    const cbl_exception_t& raised,
!                    const cbl_declarative_t& dcl )
! {
!   if( MATCH_DECLARATIVE && raised.type) {
!     warnx("match_declarative: checking:    ec %s vs. dcl %s (%s enabled and %s format_1)",
!           local_ec_type_str(raised.type),
!           local_ec_type_str(dcl.type),
!           enabled? "is" : "not",
!           dcl.is_format_1()? "is" : "not");
    }
!   if( ! (enabled || dcl.is_format_1()) ) return false;
  
!   bool matches = ec_cmp(raised.type, (dcl.type));
  
!   if( matches && dcl.nfile > 0 ) {
!     matches = dcl.match_file(raised.file);
!   }
  
+   // Having matched, the EC must either be enabled, or
+   // the Declarative must be USE Format 1.
+   if( matches ) {
      // I/O declaratives match by file or mode, not EC.
      if( dcl.is_format_1() ) { // declarative is for particular files or mode
!       if( dcl.nfile == 0 ) {
!         matches = raised.mode == dcl.mode;
        }
+     } else {
+       matches = enabled;
      }
  
!     if( matches && MATCH_DECLARATIVE ) {
!       warnx("                   matches exception      %s (file %u mode %s)",
!             local_ec_type_str(raised.type),
!             static_cast<unsigned int>(raised.file),
!             cbl_file_mode_str(raised.mode));
!     }
    }
!   return matches;
! }
  
! static
! void open_syslog(int option, int facility)
! {
!   static bool first_time = true;
!   if( first_time ) {
! #if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
!   /* Declared in errno.h, when available.  */
!     static const char * const ident = program_invocation_short_name;
! #elif defined (HAVE_GETPROGNAME)
!   /* Declared in stdlib.h.  */
!     static const char * const ident = getprogname();
! #else
!   /* Avoid a NULL entry.  */
!     static const char * const ident = "unnamed_COBOL_program";
! #endif
!     // TODO: Program to set option in library via command-line and/or environment.
!     //       Library listens to program, not to the environment.
!     openlog(ident, option, facility);
!     first_time = false;
!   }
! }
  
+ /*
+  * The default exception handler is called if:
+  *   1.  The EC is enabled and was not handled by a Declarative, or
+  *   2.  The EC is EC-I-O and was not handled by a Format-1 Declarative, or
+  *   3.  The EC is EC-I-O, associated with a file, and is not OPEN or CLOSE.
+  */
  static void
! default_exception_handler( ec_type_t ec )
  {
+   static const int priority = LOG_INFO, option = LOG_PERROR, facility = LOG_USER;
+   open_syslog(option, facility);
+ 
+   ec_disposition_t disposition = ec_category_fatal_e;
+ 
+ 
    if( ec != ec_none_e ) {
!     auto pec = std::find_if( __gg__exception_table, __gg__exception_table_end,
                             [ec](const ec_descr_t& descr) {
                               return descr.type == ec;
                             } );
!     if( pec != __gg__exception_table_end ) {
!       disposition = pec->disposition;
!     } else {
!       warnx("logic error: unknown exception %x", ec );
      }
+     /*
+      * An enabled, unhandled fatal EC normally results in termination. But
+      * EC-I-O is a special case:
+      *   OPEN and CLOSE never result in termination.
+      *   A SELECT statement with FILE STATUS indicates the user will handle the error.
+      *   Only I/O statements are considered.
+      * Declaratives are handled first.  We are in the default handler here,
+      * which is reached only if no Declarative was matched.
+      */
+     auto file = ec_status.file_status();
+     const char *filename = nullptr;
  
!     if( file.ifile ) {
!       filename = file.filename;
!       switch( last_exception_file_operation ) {
!       case file_op_none:   // not an I/O statement
!         assert(false);
!         abort();
!       case file_op_open:
!       case file_op_close:  // No OPEN/CLOSE results in a fatal error.
!         disposition = ec_category_none_e;
!         break;
!       default:
!         if( file.user_status ) {
!           // Not fatal if FILE STATUS is part of the file's SELECT statement.
!           disposition = ec_category_none_e;
!         }
!         break;
!       }
!     } else {
!       assert( ec_status.is_enabled() );
!       assert( ec_status.is_enabled(ec) );
!     }
  
!     switch( disposition ) {
      case ec_category_none_e:
      case uc_category_none_e:
        break;
+     case ec_category_fatal_e:
      case uc_category_fatal_e:
!       if( filename ) {
!         syslog(priority, "fatal exception: %s:%d: %s %s: %s (%s)",
!                program_name,
!                ec_status.lineno,
!                ec_status.statement,
!                filename, // show affected file before EC name
!                pec->name,
!                pec->description);
!       } else {
!         syslog(priority, "fatal exception: %s:%d: %s: %s (%s)",
!                program_name,
!                ec_status.lineno,
!                ec_status.statement,
!                pec->name,
!                pec->description);
!       }
!       abort();
        break;
+     case ec_category_nonfatal_e:
      case uc_category_nonfatal_e:
!       syslog(priority, "%s:%d: %s: %s (%s)",
!              program_name,
!              ec_status.lineno,
!              ec_status.statement,
!              pec->name,
!              pec->description);
        break;
+     case ec_category_implementor_e:
      case uc_category_implementor_e:
        break;
      }
  
!     ec_status.clear();
    }
  }
  
+ /*
+  * To reach the default handler, an EC must have effect and not have been
+  * handled by program logic.  To have effect, it must have been enabled
+  * explictly, or be of type EC-I-O.  An EC may be handled by the statement or
+  * by a Declarative.
+  *
+  * Any EC handled by statement's conditional clause (e.g. ON SIZE ERROR)
+  * prevents an EC from being raised.  Because it is not raised, it is handled
+  * neither by a Declarative, nor by the the default handler.
+  *
+  * A nonfatal EC matched to a Declarative is considered handled.  A fatal EC is
+  * considered handled if the Declarative uses RESUME.  For any EC that is
+  * handled (with RESUME for fatal), program control passes to the next
+  * statement. Else control passes here first.
+  *
+  * Any EC explicitly enabled (with >>TURN) must be explicitly handled.  Only
+  * explicitly enabled ECs appear in enabled_ECs.  when EC-I-O is raised as a
+  * byproduct of error status on a file operation, we say it is "implicitly
+  * enabled".  It need not be explicitly handled.
+  *
+  * Implicit EC-I-O not handled by the statement or a Declarative is considered
+  * handled if the statement includes the FILE STATUS phrase.  OPEN and CLOSE
+  * never cause program termination with EC-I-O; for those two statements the
+  * fatal status is ignored.  These conditions are screened out by
+  * __gg__check_fatal_exception(), so that the default handler is not called.
+  *
+  * An unhandled EC reaches the default handler for any of 3 reasons:
+  *   1.  It is EC-I-O (enabled does not matter).
+  *   2.  It is enabled.
+  *   3.  It is fatal and was matched to a Declarative that did not use RESUME.
+  * The default handler, default_exception_handler(), logs the EC.  For a fatal
+  * EC, the process terminated with abort(3).
+  *
+  * Except for OPEN and CLOSE, I/O statements that raise an unhandled fatal EC
+  * cause program termination, consistent with IBM documentation.  See
+  * Enterprise COBOL for z/OS: Enterprise COBOL for z/OS 6.4 Programming Guide,
+  * page 244, "Handling errors in input and output operations".
+  */
  extern "C"
  void
  __gg__check_fatal_exception()
  {
!   if( MATCH_DECLARATIVE )
!     warnx("%s: ec_status is %s", __func__, ec_status.unset()? "unset" : "set");
  
!   if( ec_status.copy_environment().unset() )
!     {
!     ec_status.update();  // __gg__match_exception was not called first
!     // This is a good time to set the exception code back to zero
!     __gg__exception_code = 0;
!     }
! 
!   if( ec_status.done() ) { // false for part-handled fatal
!     if( MATCH_DECLARATIVE )
!       warnx("%s: clearing ec_status", __func__);
!     ec_status.clear();
!     return; // already handled
!   }
! 
!   auto ec = ec_status.unhandled();
! 
!   if( MATCH_DECLARATIVE )
!     warnx("%s: %s was not handled %s enabled", __func__,
!           local_ec_type_str(ec), ec_status.is_enabled(ec)? "is" : "is not");
! 
!   // Look for ways I/O statement might have dealt with EC.
!   auto file = ec_status.file_status();
!   if( file.ifile && ec_cmp(ec, ec_io_e) ) {
!     if( MATCH_DECLARATIVE )
!       warnx("%s: %s with %sFILE STATUS", __func__,
!             file.op_str(), file.user_status? "" : "no ");
!     if( file.user_status ) {
!       ec_status.clear();
!       return; // has FILE STATUS, ok
!     }
!     switch( file.operation ) {
!     case file_op_none:
!       assert(false);
!       abort();
!     case file_op_open: // implicit, no Declarative, no FILE STATUS, but ok
!     case file_op_close:
!       ec_status.clear();
!       return;
!     case file_op_start:
!     case file_op_read:
!     case file_op_write:
!     case file_op_rewrite:
!     case file_op_delete:
!       break;
!     }
!   } else {
!     if( ! ec_status.is_enabled() ) {
!       if( MATCH_DECLARATIVE )
!         warnx("%s: %s is not enabled", __func__, local_ec_type_str(ec));
!       ec_status.clear();
!       return;
!     }
!     if( MATCH_DECLARATIVE )
!       warnx("%s: %s is enabled", __func__, local_ec_type_str(ec));
!   }
! 
!   if( MATCH_DECLARATIVE )
!     warnx("%s: calling default_exception_handler(%s)", __func__,
!           local_ec_type_str(ec));
! 
!   default_exception_handler(ec);
  }
  
+ /*
+  * Preserve the state of the raised EC during Declarative execution.
+  */
  extern "C"
  void
! __gg__exception_push()
  {
!   ec_stack.push(ec_status);
!   if( MATCH_DECLARATIVE )
!     warnx("%s: %s: %u ECs, %u declaratives", __func__,
!           __gg__exception_statement,
! 	  static_cast<unsigned int>(enabled_ECs.size()),
! 	  static_cast<unsigned int>(declaratives.size()));
  }
  
! /*
!  * Restore the state of the raised EC after Declarative execution.
!  */
! extern "C"
! void
! __gg__exception_pop()
  {
!   ec_status = ec_stack.top();
!   ec_stack.pop();
!   ec_status.reset_environment();
!   if( MATCH_DECLARATIVE )
!     warnx("%s: %s: %u ECs, %u declaratives", __func__,
!           __gg__exception_statement,
! 	  static_cast<unsigned int>(enabled_ECs.size()),
! 	  static_cast<unsigned int>(declaratives.size()));
!   __gg__check_fatal_exception();
  }
  
! // Called for RESUME in a Declarative to indicate a fatal EC was handled.
  extern "C"
  void
! __gg__clear_exception()
  {
!   ec_stack.top().clear();
  }
  
+ void
+ cbl_enabled_exception_t::dump( int i ) const {
+   warnx("cbl_enabled_exception_t: %2d  {%s, %s, %u}",
+         i,
+         location? "location" : "    none",
+         local_ec_type_str(ec),
+         static_cast<unsigned int>(file) );
+ }
  
  /*
!  * Match the raised exception against a Declarative.
   *
!  * A Declarative that handles I/O errors with USE Format 1 doesn't name a
!  * specific EC.  It's matched based on the file's status, irrespective of
!  * whether or not EC-I-O is enabled.  USE Format 1 Declaratives are honored
!  * regardless of any >>TURN directive.
   *
!  * An EC is enabled by the >>TURN directive.  The only ECs that can be disabled
!  * are those that were explicitly enabled.  If EC-I-O is enabled, and mentioned
!  * in a Declarative with USE Format 3, then it is matched just like any other.
   */
  extern "C"
  void
! __gg__match_exception( cblc_field_t *index )
  {
!   size_t isection = 0;
  
!   if( MATCH_DECLARATIVE ) enabled_ECs.dump("match_exception begin");
  
!   auto ec = ec_status.update().unhandled();
  
!   if( ec != ec_none_e ) {
!     /*
!      * An EC was raised and was not handled by the statement.
!      * We know the EC and, for I/O, the current file and its mode.
!      * Scan declaratives for a match:
!      *   - EC is enabled or program has a Format 1 Declarative
!      *   - EC matches the Declarative's USE statement
!      * Format 1 declaratives apply only to EC-I-O, whether or not enabled.
!      * Format 1 may be restricted to a particular mode (for all files).
!      * Format 1 and 3 may be restricted to a set of files.
!      */
  
!     // This is a good time to set the actual exception code back to zero.
!     __gg__exception_code = 0;
  
!     auto f = ec_status.file_status();
!     cbl_exception_t raised = { /*0,*/ f.ifile, ec, f.mode };
!     bool enabled = enabled_ECs.match(ec);
  
!     if( MATCH_DECLARATIVE ) enabled_ECs.dump("match_exception enabled");
  
!     auto p = std::find_if( declaratives.begin(), declaratives.end(),
!                            [enabled, raised]( const cbl_declarative_t& dcl ) {
!                              return match_declarative(enabled, raised, dcl);
!                            } );
  
!     if( p == declaratives.end() ) {
!       if( MATCH_DECLARATIVE ) {
!         warnx("__gg__match_exception:%d: raised exception "
!               "%s not matched (%u enabled)", __LINE__,
!               local_ec_type_str(ec),
! 	      static_cast<unsigned int>(enabled_ECs.size()));
        }
!     } else {
!       isection = p->section;
!       ec_status.handled_by(isection);
  
!       if( MATCH_DECLARATIVE ) {
!         warnx("__gg__match_exception:%d: matched "
!               "%s against mask %s for section #%u",
!               __LINE__,
!               local_ec_type_str(ec),
!               local_ec_type_str(p->type),
!               static_cast<unsigned int>(p->section));
        }
      }
!     assert(ec != ec_none_e);
!   } // end EC match logic
  
    // If a declarative matches the raised exception, return its
    // symbol_table index.
    __gg__int128_to_field(index,
!                         (__int128)isection,
                          0,
                          truncation_e,
                          NULL);
*************** __gg__pseudo_return_flush()
*** 11282,11301 ****
  
  extern "C"
  GCOB_FP128
! __gg__float128_from_location(cblc_field_t *var, unsigned char *location)
    {
    GCOB_FP128 retval = 0;
    switch( var->capacity )
      {
      case 4:
        {
!       retval = *(_Float32 *)location;
        break;
        }
  
      case 8:
        {
!       retval = *(_Float64 *)location;
        break;
        }
  
--- 11689,11711 ----
  
  extern "C"
  GCOB_FP128
! __gg__float128_from_location( const cblc_field_t *var,
!                               const unsigned char *location)
    {
    GCOB_FP128 retval = 0;
    switch( var->capacity )
      {
      case 4:
        {
!       retval = *reinterpret_cast<_Float32 *>(
!                                     const_cast<unsigned char *>(location));
        break;
        }
  
      case 8:
        {
!       retval = *reinterpret_cast<_Float64 *>(
!                                     const_cast<unsigned char *>(location));
        break;
        }
  
*************** __gg__float128_from_location(cblc_field_
*** 11311,11317 ****
  
  extern "C"
  __int128
! __gg__integer_from_float128(cblc_field_t *field)
    {
    GCOB_FP128 fvalue = __gg__float128_from_location(field, field->data);
    // we round() to take care of the possible 2.99999999999... problem.
--- 11721,11727 ----
  
  extern "C"
  __int128
! __gg__integer_from_float128(const cblc_field_t *field)
    {
    GCOB_FP128 fvalue = __gg__float128_from_location(field, field->data);
    // we round() to take care of the possible 2.99999999999... problem.
*************** void
*** 11342,11382 ****
  __gg__func_exception_location(cblc_field_t *dest)
    {
    char ach[512] = " ";
!   if( stashed_exception_code )
      {
      ach[0] = '\0';
!     if( stashed_exception_program_id )
        {
!       strcat(ach, stashed_exception_program_id);
        strcat(ach, "; ");
        }
  
!     if( stashed_exception_paragraph )
        {
!       strcat(ach, stashed_exception_paragraph );
!       if( stashed_exception_section )
          {
          strcat(ach, " OF ");
!         strcat(ach, stashed_exception_section);
          }
        }
      else
        {
!       if( stashed_exception_section )
          {
!         strcat(ach, stashed_exception_section);
          }
        }
      strcat(ach, "; ");
  
!     if( stashed_exception_source_file )
        {
        char achSource[128] = "";
        snprintf( achSource,
                  sizeof(achSource),
                  "%s:%d ",
!                 stashed_exception_source_file,
!                 stashed_exception_line_number);
        strcat(ach, achSource);
        }
      else
--- 11752,11792 ----
  __gg__func_exception_location(cblc_field_t *dest)
    {
    char ach[512] = " ";
!   if( last_exception_code )
      {
      ach[0] = '\0';
!     if( last_exception_program_id )
        {
!       strcat(ach, last_exception_program_id);
        strcat(ach, "; ");
        }
  
!     if( last_exception_paragraph )
        {
!       strcat(ach, last_exception_paragraph );
!       if( last_exception_section )
          {
          strcat(ach, " OF ");
!         strcat(ach, last_exception_section);
          }
        }
      else
        {
!       if( last_exception_section )
          {
!         strcat(ach, last_exception_section);
          }
        }
      strcat(ach, "; ");
  
!     if( last_exception_source_file )
        {
        char achSource[128] = "";
        snprintf( achSource,
                  sizeof(achSource),
                  "%s:%d ",
!                 last_exception_source_file,
!                 last_exception_line_number);
        strcat(ach, achSource);
        }
      else
*************** void
*** 11393,11401 ****
  __gg__func_exception_statement(cblc_field_t *dest)
    {
    char ach[128] = " ";
!   if(stashed_exception_statement)
      {
!     snprintf(ach, sizeof(ach), "%s", stashed_exception_statement);
      ach[sizeof(ach)-1] = '\0';
      }
    __gg__adjust_dest_size(dest, strlen(ach));
--- 11803,11811 ----
  __gg__func_exception_statement(cblc_field_t *dest)
    {
    char ach[128] = " ";
!   if(last_exception_statement)
      {
!     snprintf(ach, sizeof(ach), "%s", last_exception_statement);
      ach[sizeof(ach)-1] = '\0';
      }
    __gg__adjust_dest_size(dest, strlen(ach));
*************** void
*** 11407,11418 ****
  __gg__func_exception_status(cblc_field_t *dest)
    {
    char ach[128] = "<not in table?>";
!   if(stashed_exception_code)
      {
      ec_descr_t *p = __gg__exception_table;
      while(p < __gg__exception_table_end )
        {
!       if( p->type == (ec_type_t)stashed_exception_code )
          {
          snprintf(ach, sizeof(ach), "%s", p->name);
          break;
--- 11817,11828 ----
  __gg__func_exception_status(cblc_field_t *dest)
    {
    char ach[128] = "<not in table?>";
!   if(last_exception_code)
      {
      ec_descr_t *p = __gg__exception_table;
      while(p < __gg__exception_table_end )
        {
!       if( p->type == (ec_type_t)last_exception_code )
          {
          snprintf(ach, sizeof(ach), "%s", p->name);
          break;
*************** __gg__func_exception_status(cblc_field_t
*** 11428,11470 ****
    memcpy(dest->data, ach, strlen(ach));
    }
  
- static cblc_file_t *recent_file = NULL;
- 
  extern "C"
  void
! __gg__set_exception_file(cblc_file_t *file)
    {
-   recent_file = file;
    ec_type_t ec = local_ec_type_of( file->io_status );
    if( ec )
      {
!     exception_raise(ec);
      }
    }
  
- 
  extern "C"
  void
! __gg__func_exception_file(cblc_field_t *dest, cblc_file_t *file)
    {
    char ach[128];
    if( !file )
      {
      // This is where we process FUNCTION EXCEPTION-FILE <no parameter>
!     if( !(stashed_exception_code & ec_io_e) || !recent_file)
        {
!       // There is no EC-I-O exception code, so we return two spaces
        strcpy(ach, "00");
        }
      else
        {
        if( sv_from_raise_statement )
          {
          strcpy(ach, "  ");
          }
        else
          {
!         snprintf(ach, sizeof(ach), "%2.2d%s", recent_file->io_status, recent_file->name);
          }
        }
      }
--- 11838,11889 ----
    memcpy(dest->data, ach, strlen(ach));
    }
  
  extern "C"
  void
! __gg__set_exception_file(const cblc_file_t *file)
    {
    ec_type_t ec = local_ec_type_of( file->io_status );
    if( ec )
      {
!     // During SORT operations, which routinely read files until they end, we
!     // need to suppress them.
!     if( ec != ec_io_at_end_e || !sv_suppress_eof_ec )
!       {
!       last_exception_file_operation = file->prior_op;
!       last_exception_file_status    = file->io_status;
!       last_exception_file_name      = file->name;
!       exception_raise(ec);
!       }
      }
    }
  
  extern "C"
  void
! __gg__func_exception_file(cblc_field_t      *dest,
!                           const cblc_file_t *file)
    {
    char ach[128];
    if( !file )
      {
      // This is where we process FUNCTION EXCEPTION-FILE <no parameter>
!     if( !(last_exception_code & ec_io_e) )
        {
!       // There is no EC-I-O exception code, so we return two alphanumeric zeros.
        strcpy(ach, "00");
        }
      else
        {
+       // The last exception code is an EC-I-O
        if( sv_from_raise_statement )
          {
          strcpy(ach, "  ");
          }
        else
          {
!         snprintf( ach,
!                   sizeof(ach), "%2.2d%s",
!                   last_exception_file_status,
!                   last_exception_file_name);
          }
        }
      }
*************** extern "C"
*** 11490,11525 ****
  void
  __gg__set_exception_code(ec_type_t ec, int from_raise_statement)
    {
    sv_from_raise_statement = from_raise_statement;
  
    __gg__exception_code = ec;
    if( ec == ec_none_e)
      {
!     stashed_exception_code          = 0    ;
!     stashed_exception_handled       = 0    ;
!     stashed_exception_file_number   = 0    ;
!     stashed_exception_file_status   = 0    ;
!     stashed_exception_file_name     = NULL ;
!     stashed_exception_program_id    = NULL ;
!     stashed_exception_section       = NULL ;
!     stashed_exception_paragraph     = NULL ;
!     stashed_exception_source_file   = NULL ;
!     stashed_exception_line_number   = 0    ;
!     stashed_exception_statement     = NULL ;
      }
    else
      {
!     stashed_exception_code          = __gg__exception_code         ;
!     stashed_exception_handled       = __gg__exception_handled      ;
!     stashed_exception_file_number   = __gg__exception_file_number  ;
!     stashed_exception_file_status   = __gg__exception_file_status  ;
!     stashed_exception_file_name     = __gg__exception_file_name    ;
!     stashed_exception_program_id    = __gg__exception_program_id   ;
!     stashed_exception_section       = __gg__exception_section      ;
!     stashed_exception_paragraph     = __gg__exception_paragraph    ;
!     stashed_exception_source_file   = __gg__exception_source_file  ;
!     stashed_exception_line_number   = __gg__exception_line_number  ;
!     stashed_exception_statement     = __gg__exception_statement    ;
      }
    }
  
--- 11909,11958 ----
  void
  __gg__set_exception_code(ec_type_t ec, int from_raise_statement)
    {
+   if( MATCH_DECLARATIVE )
+     {
+     warnx("%s: %s:%u: %s: %s",
+           __func__,
+           __gg__exception_source_file,
+           __gg__exception_line_number,
+           __gg__exception_statement,
+           local_ec_type_str(ec));
+     }
    sv_from_raise_statement = from_raise_statement;
  
    __gg__exception_code = ec;
    if( ec == ec_none_e)
      {
!     last_exception_code           = 0            ;
!     last_exception_program_id     = NULL         ;
!     last_exception_section        = NULL         ;
!     last_exception_paragraph      = NULL         ;
!     last_exception_source_file    = NULL         ;
!     last_exception_line_number    = 0            ;
!     last_exception_statement      = NULL         ;
!     last_exception_file_operation = file_op_none ;
!     last_exception_file_status    = FsSuccess    ;
!     last_exception_file_name      = NULL         ;
      }
    else
      {
!     last_exception_code           = __gg__exception_code         ;
!     last_exception_program_id     = __gg__exception_program_id   ;
!     last_exception_section        = __gg__exception_section      ;
!     last_exception_paragraph      = __gg__exception_paragraph    ;
!     last_exception_source_file    = __gg__exception_source_file  ;
!     last_exception_line_number    = __gg__exception_line_number  ;
!     last_exception_statement      = __gg__exception_statement    ;
! 
!     // These are set in __gg__set_exception_file just before this routine is
!     // called.  In cases where the ec is not a file-i-o operation, we clear
!     // them here:
!     if( !(ec & ec_io_e) )
!       {
!       last_exception_file_operation = file_op_none ;
!       last_exception_file_status    = FsSuccess  ;
!       last_exception_file_name      = NULL    ;
!       }
      }
    }
  
*************** __gg__float128_from_int128(cblc_field_t
*** 11611,11626 ****
  
  extern "C"
  int
! __gg__is_float_infinite(cblc_field_t *source, size_t offset)
    {
    int retval = 0;
    switch(source->capacity)
      {
      case 4:
!       retval = fpclassify(  *(_Float32*)(source->data+offset)) == FP_INFINITE;
        break;
      case 8:
!       retval = fpclassify(  *(_Float64*)(source->data+offset)) == FP_INFINITE;
        break;
      case 16:
        // retval = *(_Float128*)(source->data+offset) == INFINITY;
--- 12044,12059 ----
  
  extern "C"
  int
! __gg__is_float_infinite(const cblc_field_t *source, size_t offset)
    {
    int retval = 0;
    switch(source->capacity)
      {
      case 4:
!       retval = fpclassify(  *reinterpret_cast<_Float32*>(source->data+offset)) == FP_INFINITE;
        break;
      case 8:
!       retval = fpclassify(  *reinterpret_cast<_Float64*>(source->data+offset)) == FP_INFINITE;
        break;
      case 16:
        // retval = *(_Float128*)(source->data+offset) == INFINITY;
*************** __gg__is_float_infinite(cblc_field_t *so
*** 11634,11643 ****
  
  extern "C"
  int
! __gg__float32_from_128( cblc_field_t *dest,
!                         size_t        dest_offset,
!                         cblc_field_t *source,
!                         size_t        source_offset)
    {
    int retval = 0;
    //_Float128 value = *(_Float128*)(source->data+source_offset);
--- 12067,12076 ----
  
  extern "C"
  int
! __gg__float32_from_128( const cblc_field_t *dest,
!                         size_t              dest_offset,
!                         const cblc_field_t *source,
!                         size_t              source_offset)
    {
    int retval = 0;
    //_Float128 value = *(_Float128*)(source->data+source_offset);
*************** __gg__float32_from_128( cblc_field_t *de
*** 11649,11685 ****
      }
    else
      {
!     *(_Float32 *)(dest->data+dest_offset) = (_Float32)value;
      }
    return retval;
    }
  
  extern "C"
  int
! __gg__float32_from_64(  cblc_field_t *dest,
!                         size_t        dest_offset,
!                         cblc_field_t *source,
!                         size_t        source_offset)
    {
    int retval = 0;
!   _Float64 value = *(_Float64*)(source->data+source_offset);
    if( FP128_FUNC(fabs)(value) > GCOB_FP128_LITERAL (3.4028235E38) )
      {
      retval = 1;
      }
    else
      {
!     *(_Float32 *)(dest->data+dest_offset) = (_Float32)value;
      }
    return retval;
    }
  
  extern "C"
  int
! __gg__float64_from_128( cblc_field_t *dest,
!                         size_t        dest_offset,
!                         cblc_field_t *source,
!                         size_t        source_offset)
    {
    int retval = 0;
    // _Float128 value = *(_Float128*)(source->data+source_offset);
--- 12082,12118 ----
      }
    else
      {
!     *reinterpret_cast<_Float32 *>(dest->data+dest_offset) = (_Float32)value;
      }
    return retval;
    }
  
  extern "C"
  int
! __gg__float32_from_64(  const cblc_field_t *dest,
!                         size_t              dest_offset,
!                         const cblc_field_t *source,
!                         size_t              source_offset)
    {
    int retval = 0;
!   _Float64 value = *reinterpret_cast<_Float64*>(source->data+source_offset);
    if( FP128_FUNC(fabs)(value) > GCOB_FP128_LITERAL (3.4028235E38) )
      {
      retval = 1;
      }
    else
      {
!     *reinterpret_cast<_Float32 *>(dest->data+dest_offset) = (_Float32)value;
      }
    return retval;
    }
  
  extern "C"
  int
! __gg__float64_from_128( const cblc_field_t *dest,
!                         size_t              dest_offset,
!                         const cblc_field_t *source,
!                         size_t              source_offset)
    {
    int retval = 0;
    // _Float128 value = *(_Float128*)(source->data+source_offset);
*************** __gg__float64_from_128( cblc_field_t *de
*** 11691,11697 ****
      }
    else
      {
!     *(_Float64 *)(dest->data+dest_offset) = (_Float64)value;
      }
    return retval;
    }
--- 12124,12130 ----
      }
    else
      {
!     *reinterpret_cast<_Float64 *>(dest->data+dest_offset) = (_Float64)value;
      }
    return retval;
    }
*************** __gg__pop_local_variables()
*** 11763,11769 ****
  
  extern "C"
  void
! __gg__copy_as_big_endian(unsigned char *dest, unsigned char *source)
    {
    // copy eight bytes of source to dest, flipping the endianness
    for(size_t i=0; i<8; i++)
--- 12196,12203 ----
  
  extern "C"
  void
! __gg__copy_as_big_endian( unsigned char *dest,
!                           const unsigned char *source)
    {
    // copy eight bytes of source to dest, flipping the endianness
    for(size_t i=0; i<8; i++)
*************** __gg__codeset_figurative_constants()
*** 11786,11792 ****
  
  extern "C"
  unsigned char *
! __gg__get_figconst_data(cblc_field_t *field)
    {
    unsigned char *retval = NULL;
    cbl_figconst_t figconst = (cbl_figconst_t)(size_t)(field->initial);
--- 12220,12226 ----
  
  extern "C"
  unsigned char *
! __gg__get_figconst_data(const cblc_field_t *field)
    {
    unsigned char *retval = NULL;
    cbl_figconst_t figconst = (cbl_figconst_t)(size_t)(field->initial);
*************** find_in_dirs(const char *dirs, char *unm
*** 11871,11877 ****
          {
          while( !retval )
            {
!           dirent *entry = readdir(dir);
            if( !entry )
              {
              break;
--- 12305,12311 ----
          {
          while( !retval )
            {
!           const dirent *entry = readdir(dir);
            if( !entry )
              {
              break;
*************** __gg__function_handle_from_cobpath( char
*** 11927,11933 ****
      {
      handle_executable = dlopen(NULL, RTLD_LAZY);
      }
!   if( !retval )
      {
      retval = dlsym(handle_executable, unmangled_name);
      }
--- 12361,12367 ----
      {
      handle_executable = dlopen(NULL, RTLD_LAZY);
      }
!   //if( !retval )
      {
      retval = dlsym(handle_executable, unmangled_name);
      }
*************** __gg__function_handle_from_cobpath( char
*** 11951,11964 ****
  
  extern "C"
  void
! __gg__just_mangle_name( cblc_field_t *field,
!                         char        **mangled_name
                          )
    {
    static char ach_name[1024];
    static char ach_unmangled[1024];
    static char ach_mangled[1024];
  
    size_t         length;
    length = field->capacity;
    memcpy(ach_name, field->data, length);
--- 12385,12401 ----
  
  extern "C"
  void
! __gg__just_mangle_name( const cblc_field_t  *field,
!                         char               **mangled_name
                          )
    {
    static char ach_name[1024];
    static char ach_unmangled[1024];
    static char ach_mangled[1024];
  
+   assert(field);
+   assert(field->data);
+ 
    size_t         length;
    length = field->capacity;
    memcpy(ach_name, field->data, length);
*************** __gg__just_mangle_name( cblc_field_t *fi
*** 11972,11978 ****
  
    bool is_pointer = false;
  
!   if( (field && field->type == FldPointer) )
      {
      is_pointer = true;
      }
--- 12409,12415 ----
  
    bool is_pointer = false;
  
!   if( field->type == FldPointer )
      {
      is_pointer = true;
      }
*************** __gg__just_mangle_name( cblc_field_t *fi
*** 11996,12003 ****
  
  extern "C"
  void *
! __gg__function_handle_from_literal(int   program_id,
!                                    char *literal)
    {
    void *retval = NULL;
    static char ach_unmangled[1024];
--- 12433,12440 ----
  
  extern "C"
  void *
! __gg__function_handle_from_literal(int         program_id,
!                                    const char *literal)
    {
    void *retval = NULL;
    static char ach_unmangled[1024];
*************** __gg__function_handle_from_literal(int
*** 12025,12031 ****
        }
      PFUNC **pointers_p = it->second;
      PFUNC  *pointers   = *pointers_p;
!     retval = (void *)pointers[function_index];
      }
    else
      {
--- 12462,12468 ----
        }
      PFUNC **pointers_p = it->second;
      PFUNC  *pointers   = *pointers_p;
!     retval = reinterpret_cast<void *>(pointers[function_index]);
      }
    else
      {
*************** __gg__function_handle_from_literal(int
*** 12037,12046 ****
  
  extern "C"
  void *
! __gg__function_handle_from_name(int           program_id,
!                                 cblc_field_t *field,
!                                 size_t        offset,
!                                 size_t        length )
    {
    void *retval = NULL;
    static char ach_name[1024];
--- 12474,12483 ----
  
  extern "C"
  void *
! __gg__function_handle_from_name(int                 program_id,
!                                 const cblc_field_t *field,
!                                 size_t              offset,
!                                 size_t              length )
    {
    void *retval = NULL;
    static char ach_name[1024];
*************** __gg__function_handle_from_name(int
*** 12078,12084 ****
        }
      PFUNC **pointers_p = it->second;
      PFUNC  *pointers   = *pointers_p;
!     retval = (void *)pointers[function_index];
      }
    else
      {
--- 12515,12521 ----
        }
      PFUNC **pointers_p = it->second;
      PFUNC  *pointers   = *pointers_p;
!     retval = reinterpret_cast<void *>(pointers[function_index]);
      }
    else
      {
*************** __gg__mirror_range( size_t         nrows
*** 12114,12123 ****
                      cblc_field_t  *src,     // The row
                      size_t         src_o,
                      size_t         nspans,  // The number of spans
!                     size_t        *spans,
                      size_t         table,
                      size_t         ntbl,
!                     size_t        *tbls)
    {
    static std::unordered_map<size_t, size_t> rows_in_table;
    static std::unordered_map<size_t, size_t> widths_of_table;
--- 12551,12560 ----
                      cblc_field_t  *src,     // The row
                      size_t         src_o,
                      size_t         nspans,  // The number of spans
!                     const size_t  *spans,
                      size_t         table,
                      size_t         ntbl,
!                     const size_t  *tbls)
    {
    static std::unordered_map<size_t, size_t> rows_in_table;
    static std::unordered_map<size_t, size_t> widths_of_table;
*************** __gg__mirror_range( size_t         nrows
*** 12138,12144 ****
    // We need to know the width of one row of this table, which is different
    // depending on type of src:
  
!   cblc_field_t *parent = src;
    while( parent )
      {
      if( parent->occurs_upper )
--- 12575,12581 ----
    // We need to know the width of one row of this table, which is different
    // depending on type of src:
  
!   const cblc_field_t *parent = src;
    while( parent )
      {
      if( parent->occurs_upper )
*************** __gg__mirror_range( size_t         nrows
*** 12260,12266 ****
          std::vector<size_t> subtable_spans
                                  = spans_in_table [subtable_index];
  
!         unsigned char *subtable_source = source + subtable_offset;
  
          if( subtable_spans.size() == 0 )
            {
--- 12697,12703 ----
          std::vector<size_t> subtable_spans
                                  = spans_in_table [subtable_index];
  
!         const unsigned char *subtable_source = source + subtable_offset;
  
          if( subtable_spans.size() == 0 )
            {
*************** __gg__deallocate( cblc_field_t *target,
*** 12345,12359 ****
      {
      // Target is a pointer.  Free the data location
      int rdigits;
!     void *ptr = (void *)get_binary_value_local(&rdigits,
                                                 target,
                                                 target->data + offset,
                                                 sizeof(void *));
      if( ptr )
        {
        free(ptr);
        // And set the data location to zero
!       *(char **)(target->data + offset) = NULL;
        }
      }
    }
--- 12782,12798 ----
      {
      // Target is a pointer.  Free the data location
      int rdigits;
!     size_t addrv =  get_binary_value_local(&rdigits,
                                                 target,
                                                 target->data + offset,
                                                 sizeof(void *));
+     void *ptr = reinterpret_cast<void *>(addrv);
      if( ptr )
        {
        free(ptr);
        // And set the data location to zero
!       *static_cast<char **>(static_cast<void *>(target->data + offset))
!                                                                       = NULL;
        }
      }
    }
*************** get_the_byte(cblc_field_t *field)
*** 12395,12411 ****
  
  extern "C"
  void
! __gg__allocate( cblc_field_t *first,
!                 size_t        first_offset,
!                 int           initialized,
!                 int           default_byte,
!                 cblc_field_t *f_working_byte,
!                 cblc_field_t *f_local_byte,
!                 cblc_field_t *returning,
!                 size_t        returning_offset)
    {
    int working_byte = get_the_byte(f_working_byte);
    int local_byte   = get_the_byte(f_local_byte);
  
    unsigned char *retval = NULL;
    if( first->attr & based_e )
--- 12834,12851 ----
  
  extern "C"
  void
! __gg__allocate( cblc_field_t       *first,
!                 size_t              first_offset,
!                 int                 initialized,
!                 int                 default_byte,
!                 cblc_field_t       *f_working_byte,
!                 cblc_field_t       *f_local_byte,
!                 const cblc_field_t *returning,
!                 size_t              returning_offset)
    {
    int working_byte = get_the_byte(f_working_byte);
    int local_byte   = get_the_byte(f_local_byte);
+   int fill_char;
  
    unsigned char *retval = NULL;
    if( first->attr & based_e )
*************** __gg__allocate( cblc_field_t *first,
*** 12413,12424 ****
      // first is the BASED variable we are allocating memory for
      if( first->capacity )
        {
!       retval = (unsigned char *)malloc(first->capacity);
  
        if( initialized )
          {
          // This is ISO 2023 ALLOCATE rule 7 (ALL TO VALUE)
-         int fill_char = 0;
          if( default_byte >= 0 )
            {
            fill_char = default_byte;
--- 12853,12864 ----
      // first is the BASED variable we are allocating memory for
      if( first->capacity )
        {
!       retval = static_cast<unsigned char *>(malloc(first->capacity));
  
+       fill_char = 0;
        if( initialized )
          {
          // This is ISO 2023 ALLOCATE rule 7 (ALL TO VALUE)
          if( default_byte >= 0 )
            {
            fill_char = default_byte;
*************** __gg__allocate( cblc_field_t *first,
*** 12428,12434 ****
        else
          {
          // This is ISO 2023 ALLOCATE rule 9 (pointers NULL, otherwise OPT_INIT)
-         int fill_char = 0;
          if( default_byte >= 0 )
            {
            fill_char = default_byte;
--- 12868,12873 ----
*************** __gg__allocate( cblc_field_t *first,
*** 12472,12480 ****
      tsize /= pof10;
      if( tsize )
        {
!       retval = (unsigned char *)malloc(tsize);
  
!       int fill_char = 0;
        if( initialized )
          {
          // This is ISO 2023 rule 6 (defaultbyte if specified, else zero)
--- 12911,12923 ----
      tsize /= pof10;
      if( tsize )
        {
!       retval = static_cast<unsigned char *>(malloc(tsize));
!       if(!retval)
!         {
!         abort();
!         }
  
!       fill_char = 0;
        if( initialized )
          {
          // This is ISO 2023 rule 6 (defaultbyte if specified, else zero)
*************** __gg__allocate( cblc_field_t *first,
*** 12513,12519 ****
    if( returning )
      {
      // 'returning' has to be a FldPointer variable; assign the retval to it.
!     *(unsigned char **)(returning->data + returning_offset) = retval;
      }
    }
  
--- 12956,12962 ----
    if( returning )
      {
      // 'returning' has to be a FldPointer variable; assign the retval to it.
!     *reinterpret_cast<unsigned char **>(returning->data + returning_offset) = retval;
      }
    }
  
*************** void
*** 12542,12548 ****
  __gg__module_name(cblc_field_t *dest, module_type_t type)
    {
    static size_t result_size = 64;
!   static char *result = (char *)malloc(result_size);
  
    strcpy(result, "");
  
--- 12985,12992 ----
  __gg__module_name(cblc_field_t *dest, module_type_t type)
    {
    static size_t result_size = 64;
!   static char *result = static_cast<char *>(malloc(result_size));
!   massert(result);
  
    strcpy(result, "");
  
*************** __gg__module_name(cblc_field_t *dest, mo
*** 12631,12637 ****
            if( strlen(result) + module_name_stack[i].substr(1).length() + 4 > result_size)
              {
              result_size *= 2;
!             result = (char *)realloc(result, result_size);
              }
            strcat(result, module_name_stack[i].substr(1).c_str());
            strcat(result, ";");
--- 13075,13081 ----
            if( strlen(result) + module_name_stack[i].substr(1).length() + 4 > result_size)
              {
              result_size *= 2;
!             result = static_cast<char *>(realloc(result, result_size));
              }
            strcat(result, module_name_stack[i].substr(1).c_str());
            strcat(result, ";");
*************** __gg__module_name(cblc_field_t *dest, mo
*** 12657,12659 ****
--- 13101,13411 ----
    memcpy(dest->data, result, strlen(result)+1);
    }
  
+ /*
+  * Runtime functions defined for cbl_enabled_exceptions_t
+  */
+ cbl_enabled_exceptions_t&
+ cbl_enabled_exceptions_t::decode( const std::vector<uint64_t>& encoded ) {
+   auto p = encoded.begin();
+   while( p != encoded.end() ) {
+     auto location = static_cast<bool>(*p++);
+     auto ec = static_cast<ec_type_t>(*p++);
+     auto file = *p++;
+     cbl_enabled_exception_t enabled(location, ec, file);
+     insert(enabled);
+   }
+   return *this;
+ }
+ const cbl_enabled_exception_t *
+ cbl_enabled_exceptions_t::match( ec_type_t type, size_t file ) const {
+   auto output = enabled_exception_match( begin(), end(), type, file );
+ 
+   if( output != end() ) {
+     if( MATCH_DECLARATIVE )
+       warnx("          enabled_exception_match found %x in input\n", type);
+     return &*output;
+   }
+   return nullptr;
+ }
+ 
+ void
+ cbl_enabled_exceptions_t::dump( const char tag[] ) const {
+   if( empty() ) {
+     warnx("%s:  no enabled exceptions", tag );
+     return;
+   }
+   int i = 1;
+   for( auto& elem : *this ) {
+     warnx("%s: %2d  {%s, %04x %s, %u}", tag,
+ 	  i++,
+ 	  elem.location? "with location" : "  no location",
+ 	  elem.ec,
+ 	  local_ec_type_str(elem.ec),
+ 	  static_cast<unsigned int>(elem.file) );
+   }
+ }
+ 
+ 
+ static std::vector<cbl_declarative_t>&
+ decode( std::vector<cbl_declarative_t>& dcls,
+         const std::vector<uint64_t>& encoded ) {
+   auto p = encoded.begin();
+   while( p != encoded.end() ) {
+     auto section = static_cast<size_t>(*p++);
+     auto global = static_cast<bool>(*p++);
+     auto type = static_cast<ec_type_t>(*p++);
+     auto nfile = static_cast<uint32_t>(*p++);
+     std::list<size_t> files;
+     assert(nfile <= cbl_declarative_t::files_max);
+     auto pend = p + nfile;
+     std::copy(p, pend, std::back_inserter(files));
+     p += cbl_declarative_t::files_max;
+     auto mode = cbl_file_mode_t(*p++);
+     cbl_declarative_t dcl( section, type, files, mode, global );
+     dcls.push_back(dcl);
+   }
+   return dcls;
+ }
+ 
+ static std::vector<cbl_declarative_t>&
+ operator<<( std::vector<cbl_declarative_t>& dcls,
+             const std::vector<uint64_t>& encoded ) {
+   return decode( dcls, encoded );
+ }
+ 
+ // The first element of each array is the number of elements that follow
+ // The first element of each array is the number of elements that follow
+ extern "C"
+ void
+ __gg__set_exception_environment( uint64_t *ecs, uint64_t *dcls )
+   {
+   static struct prior_t {
+     uint64_t *ecs = nullptr, *dcls = nullptr;
+   } prior;
+ 
+   if( MATCH_DECLARATIVE )
+     if( prior.ecs != ecs || prior.dcls != dcls )
+       warnx("set_exception_environment: %s: %p, %p",
+             __gg__exception_statement, ecs, dcls);
+ 
+   if( ecs ) {
+     if( prior.ecs != ecs ) {
+       uint64_t *ecs_begin = ecs + 1, *ecs_end = ecs_begin + ecs[0];
+       if( MATCH_DECLARATIVE ) {
+         warnx("%u elements implies %u ECs",
+ 	      static_cast<unsigned int>(ecs[0]),
+ 	      static_cast<unsigned int>(ecs[0] / 3));
+       }
+       cbl_enabled_exceptions_t enabled;
+       enabled_ECs = enabled.decode( std::vector<uint64_t>(ecs_begin, ecs_end) );
+       if( MATCH_DECLARATIVE ) enabled_ECs.dump("set_exception_environment");
+     }
+   } else {
+     enabled_ECs.clear();
+   }
+ 
+   if( dcls ) {
+     if( prior.dcls != dcls ) {
+       uint64_t *dcls_begin = dcls + 1, *dcls_end = dcls_begin + dcls[0];
+       if( MATCH_DECLARATIVE ) {
+         warnx("%u elements implies %u declaratives",
+ 	      static_cast<unsigned int>(dcls[0]),
+ 	      static_cast<unsigned int>(dcls[0] / 21));
+       }
+       declaratives.clear();
+       declaratives << std::vector<uint64_t>( dcls_begin, dcls_end );
+     }
+   } else {
+     declaratives.clear();
+   }
+ 
+   __gg__exception_code = ec_none_e;
+ 
+   prior.ecs = ecs;
+   prior.dcls = dcls;
+   }
+ 
+ static char *sv_envname = NULL;
+ 
+ extern "C"
+ void
+ __gg__set_env_name( const cblc_field_t *var,
+                     size_t              offset,
+                     size_t              length )
+   {
+   // implements DISPLAY UPON ENVIRONMENT-NAME
+   free(sv_envname);
+   sv_envname = static_cast<char *>(malloc(length+1));
+   massert(sv_envname);
+   memcpy(sv_envname, var->data+offset, length);
+   sv_envname[length] = '\0';
+   }
+ 
+ 
+ extern "C"
+ void
+ __gg__get_env_name( cblc_field_t *dest,
+                     size_t dest_offset,
+                     size_t dest_length)
+   {
+   // Implements ACCEPT FROM ENVIRONMENT-NAME
+   // It returns the value previously established by __gg__set_env_name.
+   if( sv_envname )
+     {
+     sv_envname = strdup("");
+     }
+   move_string(dest, dest_offset, dest_length, sv_envname);
+   }
+ 
+ extern "C"
+ int
+ __gg__get_env_value(cblc_field_t *dest,
+                     size_t dest_offset,
+                     size_t dest_length)
+   {
+   return accept_envar(dest,
+                       dest_offset,
+                       dest_length,
+                       sv_envname);
+   }
+ 
+ extern "C"
+ void
+ __gg__set_env_value(const cblc_field_t *value,
+                     size_t              offset,
+                     size_t              length )
+   {
+   // implements DISPLAY UPON ENVIRONMENT-VALUE
+   size_t name_length  = strlen(sv_envname);
+   size_t value_length = length;
+ 
+   static size_t  env_length = 16;
+   static char   *env        = static_cast<char *>(malloc(env_length+1));
+   static size_t  val_length = 16;
+   static char   *val        = static_cast<char *>(malloc(val_length+1));
+   if( env_length < name_length+1 )
+     {
+     env_length = name_length+1;
+     env = static_cast<char *>(realloc(env, env_length));
+     }
+   if( val_length < value_length+1 )
+     {
+     val_length = value_length+1;
+     val = static_cast<char *>(realloc(val, val_length));
+     }
+   massert(env);
+   massert(val);
+ 
+   // The name and the value arrive in the internal codeset:
+   memcpy(env, sv_envname, name_length);
+   env[name_length] = '\0';
+   memcpy(val, value->data+offset, value_length);
+   val[value_length] = '\0';
+ 
+   // Get rid of leading and trailing internal_space characters
+   char *trimmed_env = brute_force_trim(env);
+   char *trimmed_val = brute_force_trim(val);
+ 
+   // Conver them to the console codeset
+   __gg__internal_to_console_in_place(trimmed_env, strlen(trimmed_env));
+   __gg__internal_to_console_in_place(trimmed_val, strlen(trimmed_val));
+ 
+   // And now, anticlimactically, set the variable:
+   setenv(trimmed_env, trimmed_val, 1);
+   }
+ 
+ extern "C"
+ void
+ __gg__fprintf_stderr(const char *format_string, ...)
+   __attribute__ ((__format__ (__printf__, 1, 2)));
+ 
+ extern "C"
+ void
+ __gg__fprintf_stderr(const char *format_string, ...)
+   {
+   /*  This routine allows the compiler to send stuff to stderr in a way
+       that is straightforward to use..  */
+   va_list ap;
+   va_start(ap, format_string);
+   vfprintf(stderr, format_string, ap);
+   va_end(ap);
+   }
+ 
+ 
+ static int sv_argument_number = 0;
+ 
+ extern "C"
+ void
+ __gg__set_arg_num( const cblc_field_t *index,
+                    size_t              index_offset,
+                    size_t              index_size )
+   {
+   // Implements DISPLAY UPON ARGUMENT-NUMBER.
+   int rdigits;
+   __int128 N = get_binary_value_local(&rdigits,
+                                       index,
+                                       index->data + index_offset,
+                                       index_size);
+   // If he gives us fractional digits, just truncate
+   N /= __gg__power_of_ten(rdigits);
+ 
+   // N is 1-based, per normal COBOL.  We have to decrement it here:
+   N -= 1;
+   sv_argument_number = static_cast<int>(N);
+   }
+ 
+ extern "C"
+ int
+ __gg__accept_arg_value( cblc_field_t *dest,
+                         size_t dest_offset,
+                         size_t dest_length)
+   {
+   // Implements ACCEPT FROM ARGUMENT-VALUE
+   int retcode;
+   command_line_plan_b();
+   if( sv_argument_number >= stashed_argc || sv_argument_number < 0 )
+     {
+     exception_raise(ec_argument_imp_command_e);
+     retcode = 1;  // Error
+     }
+   else
+     {
+     char *retval = strdup(stashed_argv[sv_argument_number]);
+     console_to_internal(retval, strlen(retval));
+     move_string(dest, dest_offset, dest_length, retval);
+     free(retval);
+     retcode = 0;  // Okay
+ 
+     // The Fujitsu spec says bump this value by one.
+     sv_argument_number += 1;
+     }
+   return retcode;
+   }
+ 
+ extern "C"
+ int
+ __gg__get_file_descriptor(const char *device)
+   {
+   int retval = open(device, O_WRONLY);
+   
+   if( retval == -1 )
+     {
+     char *msg;
+     int ec = asprintf(&msg,
+                       "Trying to open %s.  Got error %s",
+                       device,
+                       strerror(errno));
+     if( ec != -1 )
+       {
+       static const int priority = LOG_INFO,
+                          option = LOG_PERROR,
+                        facility = LOG_USER;
+       open_syslog(option, facility);
+       syslog(priority, "%s", msg);
+       }
+     
+     // Open a new handle to /dev/stdout, since our caller will be closing it
+     retval = open("/dev/stdout", O_WRONLY);
+     }
+   return retval;
+   }
diff -Nrcpad gcc-15-20250726/libgcobol/libgcobol.h gcc-15-20250809/libgcobol/libgcobol.h
*** gcc-15-20250726/libgcobol/libgcobol.h	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/libgcobol.h	Sat Aug  9 22:33:00 2025
***************
*** 39,44 ****
--- 39,52 ----
      Some are also called between source code modules in libgcobol, hence the
      need here for declarations. */
  
+ extern void __gg__mabort();
+ 
+ 
+ // The unnecessary abort() that follows is necessary to make cppcheck be 
+ // aware that massert() actually terminates processing after a failed
+ // malloc().
+ #define massert(p) if(!p){__gg__mabort();abort();}
+ 
  extern "C" __int128 __gg__power_of_ten(int n);
  
  extern "C" __int128 __gg__dirty_to_binary_source( const char *dirty,
*************** extern "C" char __gg__get_decimal_separa
*** 89,110 ****
  extern "C" char __gg__get_decimal_point();
  extern "C" char * __gg__get_default_currency_string();
  
! extern "C" void __gg__clock_gettime(clockid_t clk_id, struct timespec *tp);
  
! extern "C" GCOB_FP128 __gg__float128_from_location(cblc_field_t *var,
!                                                   unsigned char *location);
  extern "C" void __gg__adjust_dest_size(cblc_field_t *dest, size_t ncount);
  
  extern "C" void __gg__realloc_if_necessary( char **dest,
                                              size_t *dest_size,
                                              size_t new_size);
! extern "C" void __gg__set_exception_file(cblc_file_t *file);
  extern "C" void __gg__internal_to_console_in_place(char *loc, size_t length);
! extern "C" __int128 __gg__binary_value_from_qualified_field(int        *rdigits,
!                                                             cblc_field_t *var,
                                                              size_t     offset,
                                                              size_t     size);
! extern "C"  GCOB_FP128 __gg__float128_from_qualified_field(cblc_field_t *field,
                                                            size_t offset,
                                                            size_t size);
  extern "C"  __int128 __gg__integer_from_qualified_field(cblc_field_t *var,
--- 97,127 ----
  extern "C" char __gg__get_decimal_point();
  extern "C" char * __gg__get_default_currency_string();
  
! struct cbl_timespec
!   {
!   /*  You keep using that word "portability".  I do not think it means what
!       you think it means. */
!   time_t  tv_sec;    // Seconds.
!   long    tv_nsec;   // Nanoseconds.
!   } ;
  
! extern "C" void __gg__clock_gettime(struct cbl_timespec *tp);
! 
! extern "C" GCOB_FP128 __gg__float128_from_location(
!                                         const cblc_field_t *var,
!                                         const unsigned char *location);
  extern "C" void __gg__adjust_dest_size(cblc_field_t *dest, size_t ncount);
  
  extern "C" void __gg__realloc_if_necessary( char **dest,
                                              size_t *dest_size,
                                              size_t new_size);
! extern "C" void __gg__set_exception_file(const cblc_file_t *file);
  extern "C" void __gg__internal_to_console_in_place(char *loc, size_t length);
! extern "C" __int128 __gg__binary_value_from_qualified_field(int     *rdigits,
!                                                             const cblc_field_t *var,
                                                              size_t     offset,
                                                              size_t     size);
! extern "C"  GCOB_FP128 __gg__float128_from_qualified_field(const cblc_field_t *field,
                                                            size_t offset,
                                                            size_t size);
  extern "C"  __int128 __gg__integer_from_qualified_field(cblc_field_t *var,
diff -Nrcpad gcc-15-20250726/libgcobol/valconv.cc gcc-15-20250809/libgcobol/valconv.cc
*** gcc-15-20250726/libgcobol/valconv.cc	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/valconv.cc	Sat Aug  9 22:33:00 2025
***************
*** 29,39 ****
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
! #include <ctype.h>
! #include <stdio.h>
! #include <string.h>
  #include <algorithm>
  #include <unordered_map>
  
  #include "ec.h"
  #include "common-defs.h"
--- 29,41 ----
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
! #include <cctype>
! #include <cstdio>
! #include <cstring>
! 
  #include <algorithm>
  #include <unordered_map>
+ #include <vector>
  
  #include "ec.h"
  #include "common-defs.h"
*************** __gg__realloc_if_necessary(char **dest,
*** 67,75 ****
      new_size |= new_size>>4;
      new_size |= new_size>>8;
      new_size |= new_size>>16;
!     new_size |= new_size>>32;
      *dest_size = new_size + 1;
!     *dest = (char *)realloc(*dest, *dest_size);
      }
    }
  
--- 69,77 ----
      new_size |= new_size>>4;
      new_size |= new_size>>8;
      new_size |= new_size>>16;
!     new_size |= (new_size>>16)>>16;
      *dest_size = new_size + 1;
!     *dest = static_cast<char *>(realloc(*dest, *dest_size));
      }
    }
  
*************** extern "C"
*** 77,83 ****
  void
  __gg__alphabet_create(  cbl_encoding_t encoding,
                          size_t alphabet_index,
!                         unsigned char *alphabet,
                          int low_char,
                          int high_char )
    {
--- 79,85 ----
  void
  __gg__alphabet_create(  cbl_encoding_t encoding,
                          size_t alphabet_index,
!                         const unsigned char *alphabet,
                          int low_char,
                          int high_char )
    {
*************** Rindex(const char *dest, int length, cha
*** 220,226 ****
  extern "C"
  bool
  __gg__string_to_numeric_edited( char * const dest,
!                                 char *source,       // In source characters
                                  int rdigits,
                                  int is_negative,
                                  const char *picture)
--- 222,228 ----
  extern "C"
  bool
  __gg__string_to_numeric_edited( char * const dest,
!                                 const char *source,     // In source characters
                                  int rdigits,
                                  int is_negative,
                                  const char *picture)
*************** got_float:
*** 1220,1228 ****
  extern "C"
  void
  __gg__string_to_alpha_edited(   char *dest,
!                                 char *source,
                                  int slength,
!                                 char *picture)
    {
    // Put the PICTURE into the data area.  If the caller didn't leave enough
    // room, well, poo on them.  Said another way; if they specify disaster,
--- 1222,1230 ----
  extern "C"
  void
  __gg__string_to_alpha_edited(   char *dest,
!                                 const char *source,
                                  int slength,
!                                 const char *picture)
    {
    // Put the PICTURE into the data area.  If the caller didn't leave enough
    // room, well, poo on them.  Said another way; if they specify disaster,
diff -Nrcpad gcc-15-20250726/libgcobol/valconv.h gcc-15-20250809/libgcobol/valconv.h
*** gcc-15-20250726/libgcobol/valconv.h	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgcobol/valconv.h	Sat Aug  9 22:33:00 2025
*************** extern "C"
*** 60,77 ****
    void __gg__realloc_if_necessary(char **dest, size_t *dest_size, size_t new_size);
    void  __gg__alphabet_create(cbl_encoding_t encoding,
                                size_t alphabet_index,
!                               unsigned char *alphabet,
                                int low_char,
                                int high_char );
    bool __gg__string_to_numeric_edited(char * const dest,
!                                       char *source,       // ASCII
                                        int rdigits,
                                        int is_negative,
                                        const char *picture);
    void __gg__string_to_alpha_edited(char *dest,
!                                     char *source,
                                      int slength,
!                                     char *picture);
    void __gg__currency_sign_init();
    void __gg__currency_sign(int symbol, const char *sign);
    void __gg__remove_trailing_zeroes(char *p);
--- 60,77 ----
    void __gg__realloc_if_necessary(char **dest, size_t *dest_size, size_t new_size);
    void  __gg__alphabet_create(cbl_encoding_t encoding,
                                size_t alphabet_index,
!                               const unsigned char *alphabet,
                                int low_char,
                                int high_char );
    bool __gg__string_to_numeric_edited(char * const dest,
!                                       const char *source,       // ASCII
                                        int rdigits,
                                        int is_negative,
                                        const char *picture);
    void __gg__string_to_alpha_edited(char *dest,
!                                     const char *source,
                                      int slength,
!                                     const char *picture);
    void __gg__currency_sign_init();
    void __gg__currency_sign(int symbol, const char *sign);
    void __gg__remove_trailing_zeroes(char *p);
diff -Nrcpad gcc-15-20250726/libgfortran/ChangeLog gcc-15-20250809/libgfortran/ChangeLog
*** gcc-15-20250726/libgfortran/ChangeLog	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgfortran/ChangeLog	Sat Aug  9 22:33:00 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-06-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/libgm2/ChangeLog gcc-15-20250809/libgm2/ChangeLog
*** gcc-15-20250726/libgm2/ChangeLog	Sat Jul 26 22:33:50 2025
--- gcc-15-20250809/libgm2/ChangeLog	Sat Aug  9 22:33:00 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/libgomp/ChangeLog gcc-15-20250809/libgomp/ChangeLog
*** gcc-15-20250726/libgomp/ChangeLog	Sat Jul 26 22:33:54 2025
--- gcc-15-20250809/libgomp/ChangeLog	Sat Aug  9 22:33:03 2025
***************
*** 1,3 ****
--- 1,21 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
+ 2025-08-07  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-06-19  Tobias Burnus  <tburnus@baylibre.com>
+ 		    waffl3x  <waffl3x@baylibre.com>
+ 
+ 	* libgomp.texi (omp_init_allocator): Refer to 'Memory allocation'
+ 	for available memory spaces.
+ 	(OMP_ALLOCATOR): Move list of traits and predefined memspaces
+ 	and allocators to ...
+ 	(Memory allocation): ... here. Document omp(x)::allocator::*;
+ 	minor wording tweaks, be more explicit about memkind, pinned and
+ 	pool_size.
+ 
  2025-07-22  Tobias Burnus  <tburnus@baylibre.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/libgomp/libgomp.texi gcc-15-20250809/libgomp/libgomp.texi
*** gcc-15-20250726/libgomp/libgomp.texi	Sat Jul 26 22:33:54 2025
--- gcc-15-20250809/libgomp/libgomp.texi	Sat Aug  9 22:33:03 2025
*************** traits; if an allocator that fulfills th
*** 3327,3333 ****
  @code{omp_null_allocator} is returned.
  
  The predefined memory spaces and available traits can be found at
! @ref{OMP_ALLOCATOR}, where the trait names have to be prefixed by
  @code{omp_atk_} (e.g. @code{omp_atk_pinned}) and the named trait values by
  @code{omp_atv_} (e.g. @code{omp_atv_true}); additionally, @code{omp_atv_default}
  may be used as trait value to specify that the default value should be used.
--- 3327,3333 ----
  @code{omp_null_allocator} is returned.
  
  The predefined memory spaces and available traits can be found at
! @ref{Memory allocation}, where the trait names have to be prefixed by
  @code{omp_atk_} (e.g. @code{omp_atk_pinned}) and the named trait values by
  @code{omp_atv_} (e.g. @code{omp_atv_true}); additionally, @code{omp_atv_default}
  may be used as trait value to specify that the default value should be used.
*************** may be used as trait value to specify th
*** 3350,3356 ****
  @end multitable
  
  @item @emph{See also}:
! @ref{OMP_ALLOCATOR}, @ref{Memory allocation}, @ref{omp_destroy_allocator}
  
  @item @emph{Reference}:
  @uref{https://www.openmp.org, OpenMP specification v5.0}, Section 3.7.2
--- 3350,3356 ----
  @end multitable
  
  @item @emph{See also}:
! @ref{Memory allocation}, @ref{OMP_ALLOCATOR}, @ref{omp_destroy_allocator}
  
  @item @emph{Reference}:
  @uref{https://www.openmp.org, OpenMP specification v5.0}, Section 3.7.2
*************** The value can either be a predefined all
*** 3931,3993 ****
  or a predefined memory space followed by a colon and a comma-separated list
  of memory trait and value pairs, separated by @code{=}.
  
  Note: The corresponding device environment variables are currently not
  supported.  Therefore, the non-host @var{def-allocator-var} ICVs are always
  initialized to @code{omp_default_mem_alloc}.  However, on all devices,
  the @code{omp_set_default_allocator} API routine can be used to change
  value.
  
- @multitable @columnfractions .45 .45
- @headitem Predefined allocators @tab Associated predefined memory spaces
- @item omp_default_mem_alloc     @tab omp_default_mem_space
- @item omp_large_cap_mem_alloc   @tab omp_large_cap_mem_space
- @item omp_const_mem_alloc       @tab omp_const_mem_space
- @item omp_high_bw_mem_alloc     @tab omp_high_bw_mem_space
- @item omp_low_lat_mem_alloc     @tab omp_low_lat_mem_space
- @item omp_cgroup_mem_alloc      @tab omp_low_lat_mem_space (implementation defined)
- @item omp_pteam_mem_alloc       @tab omp_low_lat_mem_space (implementation defined)
- @item omp_thread_mem_alloc      @tab omp_low_lat_mem_space (implementation defined)
- @item ompx_gnu_pinned_mem_alloc @tab omp_default_mem_space (GNU extension)
- @end multitable
- 
- The predefined allocators use the default values for the traits,
- as listed below.  Except that the last three allocators have the
- @code{access} trait set to @code{cgroup}, @code{pteam}, and
- @code{thread}, respectively.
- 
- @multitable @columnfractions .25 .40 .25
- @headitem Trait @tab Allowed values @tab Default value
- @item @code{sync_hint} @tab @code{contended}, @code{uncontended},
-                             @code{serialized}, @code{private}
-                        @tab @code{contended}
- @item @code{alignment} @tab Positive integer being a power of two
-                        @tab 1 byte
- @item @code{access}    @tab @code{all}, @code{cgroup},
-                             @code{pteam}, @code{thread}
-                        @tab @code{all}
- @item @code{pool_size} @tab Positive integer
-                        @tab See @ref{Memory allocation}
- @item @code{fallback}  @tab @code{default_mem_fb}, @code{null_fb},
-                             @code{abort_fb}, @code{allocator_fb}
-                        @tab See below
- @item @code{fb_data}   @tab @emph{unsupported as it needs an allocator handle}
-                        @tab (none)
- @item @code{pinned}    @tab @code{true}, @code{false}
-                        @tab See below
- @item @code{partition} @tab @code{environment}, @code{nearest},
-                             @code{blocked}, @code{interleaved}
-                        @tab @code{environment}
- @end multitable
- 
- For the @code{fallback} trait, the default value is @code{null_fb} for the
- @code{omp_default_mem_alloc} allocator and any allocator that is associated
- with device memory; for all other allocators, it is @code{default_mem_fb}
- by default.
- 
- For the @code{pinned} trait, the default value is @code{true} for
- predefined allocator @code{ompx_gnu_pinned_mem_alloc} (a GNU extension), and
- @code{false} for all others.
- 
  Examples:
  @smallexample
  OMP_ALLOCATOR=omp_high_bw_mem_alloc
--- 3931,3945 ----
  or a predefined memory space followed by a colon and a comma-separated list
  of memory trait and value pairs, separated by @code{=}.
  
+ See @ref{Memory allocation} for a list of supported prefedined allocators,
+ memory spaces, and traits.
+ 
  Note: The corresponding device environment variables are currently not
  supported.  Therefore, the non-host @var{def-allocator-var} ICVs are always
  initialized to @code{omp_default_mem_alloc}.  However, on all devices,
  the @code{omp_set_default_allocator} API routine can be used to change
  value.
  
  Examples:
  @smallexample
  OMP_ALLOCATOR=omp_high_bw_mem_alloc
*************** on more architectures, GCC currently doe
*** 6718,6723 ****
--- 6670,6676 ----
        @tab See @code{-march=} in ``Nvidia PTX Options''
  @end multitable
  
+ 
  @node Memory allocation
  @section Memory allocation
  
*************** The description below applies to:
*** 6752,6762 ****
        @code{_Alignof} and C++'s @code{alignof}.
  @end itemize
  
! For the available predefined allocators and, as applicable, their associated
! predefined memory spaces and for the available traits and their default values,
! see @ref{OMP_ALLOCATOR}.  Predefined allocators without an associated memory
! space use the @code{omp_default_mem_space} memory space.  See additionally
! @ref{Offload-Target Specifics}.
  
  For the memory spaces, the following applies:
  @itemize
--- 6705,6798 ----
        @code{_Alignof} and C++'s @code{alignof}.
  @end itemize
  
! GCC supports the following predefined allocators and predefined memory spaces:
! 
! @multitable @columnfractions .45 .45
! @headitem Predefined allocators @tab Associated predefined memory spaces
! @item omp_default_mem_alloc     @tab omp_default_mem_space
! @item omp_large_cap_mem_alloc   @tab omp_large_cap_mem_space
! @item omp_const_mem_alloc       @tab omp_const_mem_space
! @item omp_high_bw_mem_alloc     @tab omp_high_bw_mem_space
! @item omp_low_lat_mem_alloc     @tab omp_low_lat_mem_space
! @item omp_cgroup_mem_alloc      @tab omp_low_lat_mem_space (implementation defined)
! @item omp_pteam_mem_alloc       @tab omp_low_lat_mem_space (implementation defined)
! @item omp_thread_mem_alloc      @tab omp_low_lat_mem_space (implementation defined)
! @item ompx_gnu_pinned_mem_alloc @tab omp_default_mem_space (GNU extension)
! @end multitable
! 
! Each predefined allocator, including @code{omp_null_allocator}, has a corresponding
! allocator class template that meet the C++ allocator completeness requirements.
! These are located in the @code{omp::allocator} namespace, and the
! @code{ompx::allocator} namespace for gnu extensions.  This allows the
! allocator-aware C++ standard library containers to use OpenMP allocation routines;
! for instance:
! 
! @smallexample
! std::vector<int, omp::allocator::cgroup_mem<int>> vec;
! @end smallexample
! 
! The following allocator templates are supported:
! 
! @multitable @columnfractions .45 .45
! @headitem Predefined allocators @tab Associated allocator template
! @item omp_null_allocator        @tab omp::allocator::null_allocator
! @item omp_default_mem_alloc     @tab omp::allocator::default_mem
! @item omp_large_cap_mem_alloc   @tab omp::allocator::large_cap_mem
! @item omp_const_mem_alloc       @tab omp::allocator::const_mem
! @item omp_high_bw_mem_alloc     @tab omp::allocator::high_bw_mem
! @item omp_low_lat_mem_alloc     @tab omp::allocator::low_lat_mem
! @item omp_cgroup_mem_alloc      @tab omp::allocator::cgroup_mem
! @item omp_pteam_mem_alloc       @tab omp::allocator::pteam_mem
! @item omp_thread_mem_alloc      @tab omp::allocator::thread_mem
! @item ompx_gnu_pinned_mem_alloc @tab ompx::allocator::gnu_pinned_mem
! @end multitable
! 
! The following traits are available when constructing a new allocator;
! if a trait is not specified or with the value @code{default}, the
! specified default value is used for that trait.  The predefined
! allocators use the default values of each trait, except that the
! @code{omp_cgroup_mem_alloc}, @code{omp_pteam_mem_alloc}, and
! @code{omp_thread_mem_alloc} allocators have the @code{access} trait
! set to @code{cgroup}, @code{pteam}, and @code{thread}, respectively.
! For each trait, a named constant prefixed by @code{omp_atk_} exists;
! for each non-numeric value, a named constant prefixed by @code{omp_atv_}
! exists.
! 
! @multitable @columnfractions .25 .40 .25
! @headitem Trait @tab Allowed values @tab Default value
! @item @code{sync_hint} @tab @code{contended}, @code{uncontended},
!                             @code{serialized}, @code{private}
!                        @tab @code{contended}
! @item @code{alignment} @tab Positive integer being a power of two
!                        @tab 1 byte
! @item @code{access}    @tab @code{all}, @code{cgroup},
!                             @code{pteam}, @code{thread}
!                        @tab @code{all}
! @item @code{pool_size} @tab Positive integer (bytes)
!                        @tab See below.
! @item @code{fallback}  @tab @code{default_mem_fb}, @code{null_fb},
!                             @code{abort_fb}, @code{allocator_fb}
!                        @tab See below
! @item @code{fb_data}   @tab @emph{allocator handle}
!                        @tab (none)
! @item @code{pinned}    @tab @code{true}, @code{false}
!                        @tab See below
! @item @code{partition} @tab @code{environment}, @code{nearest},
!                             @code{blocked}, @code{interleaved}
!                        @tab @code{environment}
! @end multitable
! 
! For the @code{fallback} trait, the default value is @code{null_fb} for the
! @code{omp_default_mem_alloc} allocator and any allocator that is associated
! with device memory; for all other allocators, it is @code{default_mem_fb}
! by default.
! 
! For the @code{pinned} trait, the default value is @code{true} for
! predefined allocator @code{ompx_gnu_pinned_mem_alloc} (a GNU extension), and
! @code{false} for all others.
! 
! The following description applies to the initial device (the host) and largely
! also to non-host devices; for the latter, also see @ref{Offload-Target Specifics}.
  
  For the memory spaces, the following applies:
  @itemize
*************** For the memory spaces, the following app
*** 6771,6784 ****
  @end itemize
  
  On Linux systems, where the @uref{https://github.com/memkind/memkind, memkind
! library} (@code{libmemkind.so.0}) is available at runtime, it is used when
! creating memory allocators requesting
  
  @itemize
! @item the memory space @code{omp_high_bw_mem_space}
! @item the memory space @code{omp_large_cap_mem_space}
! @item the @code{partition} trait @code{interleaved}; note that for
!       @code{omp_large_cap_mem_space} the allocation will not be interleaved
  @end itemize
  
  On Linux systems, where the @uref{https://github.com/numactl/numactl, numa
--- 6807,6822 ----
  @end itemize
  
  On Linux systems, where the @uref{https://github.com/memkind/memkind, memkind
! library} (@code{libmemkind.so.0}) is available at runtime and the respective
! memkind kind is supported, it is used when creating memory allocators requesting
  
  @itemize
! @item the @code{partition} trait @code{interleaved} except when the memory space
!       is @code{omp_large_cap_mem_space} (uses @code{MEMKIND_HBW_INTERLEAVE})
! @item the memory space is @code{omp_high_bw_mem_space}  (uses
!       @code{MEMKIND_HBW_PREFERRED})
! @item the memory space is @code{omp_large_cap_mem_space} (uses
!       @code{MEMKIND_DAX_KMEM_ALL} or, if not available, @code{MEMKIND_DAX_KMEM})
  @end itemize
  
  On Linux systems, where the @uref{https://github.com/numactl/numactl, numa
*************** a @code{nearest} allocation.
*** 6804,6813 ****
  Additional notes regarding the traits:
  @itemize
  @item The @code{pinned} trait is supported on Linux hosts, but is subject to
!       the OS @code{ulimit}/@code{rlimit} locked memory settings.
  @item The default for the @code{pool_size} trait is no pool and for every
        (re)allocation the associated library routine is called, which might
!       internally use a memory pool.
  @item For the @code{partition} trait, the partition part size will be the same
        as the requested size (i.e. @code{interleaved} or @code{blocked} has no
        effect), except for @code{interleaved} when the memkind library is
--- 6842,6856 ----
  Additional notes regarding the traits:
  @itemize
  @item The @code{pinned} trait is supported on Linux hosts, but is subject to
!       the OS @code{ulimit}/@code{rlimit} locked memory settings.  It currently
!       uses @code{mmap} and is therefore optimized for few allocations, including
!       large data.  If the conditions for numa or memkind allocations are
!       fulfilled, those allocators are used instead.
  @item The default for the @code{pool_size} trait is no pool and for every
        (re)allocation the associated library routine is called, which might
!       internally use a memory pool.  Currently, the same applies when a
!       @code{pool_size} has been specified, except that once allocations exceed
!       the the pool size, the action of the @code{fallback} trait applies.
  @item For the @code{partition} trait, the partition part size will be the same
        as the requested size (i.e. @code{interleaved} or @code{blocked} has no
        effect), except for @code{interleaved} when the memkind library is
*************** Additional notes regarding the traits:
*** 6816,6828 ****
        that allocated the memory; on Linux, this is in particular the case when
        the memory placement policy is set to preferred.
  @item The @code{access} trait has no effect such that memory is always
!       accessible by all threads.
  @item The @code{sync_hint} trait has no effect.
  @end itemize
  
  See also:
  @ref{Offload-Target Specifics}
  
  @c ---------------------------------------------------------------------
  @c Offload-Target Specifics
  @c ---------------------------------------------------------------------
--- 6859,6873 ----
        that allocated the memory; on Linux, this is in particular the case when
        the memory placement policy is set to preferred.
  @item The @code{access} trait has no effect such that memory is always
!       accessible by all threads. (Except on supported no-host devices.)
  @item The @code{sync_hint} trait has no effect.
  @end itemize
  
  See also:
  @ref{Offload-Target Specifics}
  
+ 
+ 
  @c ---------------------------------------------------------------------
  @c Offload-Target Specifics
  @c ---------------------------------------------------------------------
diff -Nrcpad gcc-15-20250726/libgrust/ChangeLog gcc-15-20250809/libgrust/ChangeLog
*** gcc-15-20250726/libgrust/ChangeLog	Sat Jul 26 22:33:55 2025
--- gcc-15-20250809/libgrust/ChangeLog	Sat Aug  9 22:33:05 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libiberty/ChangeLog gcc-15-20250809/libiberty/ChangeLog
*** gcc-15-20250726/libiberty/ChangeLog	Sat Jul 26 22:33:55 2025
--- gcc-15-20250809/libiberty/ChangeLog	Sat Aug  9 22:33:05 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libitm/ChangeLog gcc-15-20250809/libitm/ChangeLog
*** gcc-15-20250726/libitm/ChangeLog	Sat Jul 26 22:33:56 2025
--- gcc-15-20250809/libitm/ChangeLog	Sat Aug  9 22:33:05 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libobjc/ChangeLog gcc-15-20250809/libobjc/ChangeLog
*** gcc-15-20250726/libobjc/ChangeLog	Sat Jul 26 22:33:56 2025
--- gcc-15-20250809/libobjc/ChangeLog	Sat Aug  9 22:33:05 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libphobos/ChangeLog gcc-15-20250809/libphobos/ChangeLog
*** gcc-15-20250726/libphobos/ChangeLog	Sat Jul 26 22:33:56 2025
--- gcc-15-20250809/libphobos/ChangeLog	Sat Aug  9 22:33:05 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libquadmath/ChangeLog gcc-15-20250809/libquadmath/ChangeLog
*** gcc-15-20250726/libquadmath/ChangeLog	Sat Jul 26 22:33:57 2025
--- gcc-15-20250809/libquadmath/ChangeLog	Sat Aug  9 22:33:06 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libsanitizer/ChangeLog gcc-15-20250809/libsanitizer/ChangeLog
*** gcc-15-20250726/libsanitizer/ChangeLog	Sat Jul 26 22:33:57 2025
--- gcc-15-20250809/libsanitizer/ChangeLog	Sat Aug  9 22:33:06 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-05-02  Florian Weimer  <fweimer@redhat.com>
  	    Tom Stellard  <tstellar@redhat.com>
  
diff -Nrcpad gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_linux.cpp gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_linux.cpp
*** gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_linux.cpp	Sat Jul 26 22:33:57 2025
--- gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_linux.cpp	Sat Aug  9 22:33:06 2025
***************
*** 86,91 ****
--- 86,95 ----
  #    include <sys/sysmacros.h>
  #  endif
  
+ #  if SANITIZER_LINUX && defined(__powerpc64__)
+ #    include <asm/ptrace.h>
+ #  endif
+ 
  #  if SANITIZER_FREEBSD
  #    include <machine/atomic.h>
  #    include <sys/exec.h>
diff -Nrcpad gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
*** gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp	Sat Jul 26 22:33:57 2025
--- gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp	Sat Aug  9 22:33:06 2025
*************** static void GetTls(uptr *addr, uptr *siz
*** 619,639 ****
    *addr = tp - RoundUpTo(*size, align);
    *size = tp - *addr + ThreadDescriptorSize();
  #      else
!   if (SANITIZER_GLIBC)
!     *size += 1664;
!   else if (SANITIZER_FREEBSD)
!     *size += 128;  // RTLD_STATIC_TLS_EXTRA
! #        if defined(__mips__) || defined(__powerpc64__) || SANITIZER_RISCV64
    const uptr pre_tcb_size = TlsPreTcbSize();
    *addr -= pre_tcb_size;
    *size += pre_tcb_size;
! #        else
    // arm and aarch64 reserve two words at TP, so this underestimates the range.
    // However, this is sufficient for the purpose of finding the pointers to
    // thread-specific data keys.
    const uptr tcb_size = ThreadDescriptorSize();
    *addr -= tcb_size;
    *size += tcb_size;
  #        endif
  #      endif
  #    elif SANITIZER_NETBSD
--- 619,640 ----
    *addr = tp - RoundUpTo(*size, align);
    *size = tp - *addr + ThreadDescriptorSize();
  #      else
! #        if SANITIZER_GLIBC
!   *size += 1664;
! #        elif SANITIZER_FREEBSD
!   *size += 128;  // RTLD_STATIC_TLS_EXTRA
! #          if defined(__mips__) || defined(__powerpc64__) || SANITIZER_RISCV64
    const uptr pre_tcb_size = TlsPreTcbSize();
    *addr -= pre_tcb_size;
    *size += pre_tcb_size;
! #          else
    // arm and aarch64 reserve two words at TP, so this underestimates the range.
    // However, this is sufficient for the purpose of finding the pointers to
    // thread-specific data keys.
    const uptr tcb_size = ThreadDescriptorSize();
    *addr -= tcb_size;
    *size += tcb_size;
+ #          endif
  #        endif
  #      endif
  #    elif SANITIZER_NETBSD
diff -Nrcpad gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
*** gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp	Sat Jul 26 22:33:57 2025
--- gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp	Sat Aug  9 22:33:06 2025
***************
*** 96,102 ****
  # include <sys/ptrace.h>
  #    if defined(__mips64) || defined(__aarch64__) || defined(__arm__) ||       \
          defined(__hexagon__) || defined(__loongarch__) || SANITIZER_RISCV64 || \
!         defined(__sparc__)
  #      include <asm/ptrace.h>
  #      ifdef __arm__
  typedef struct user_fpregs elf_fpregset_t;
--- 96,102 ----
  # include <sys/ptrace.h>
  #    if defined(__mips64) || defined(__aarch64__) || defined(__arm__) ||       \
          defined(__hexagon__) || defined(__loongarch__) || SANITIZER_RISCV64 || \
!         defined(__sparc__) || defined(__powerpc64__)
  #      include <asm/ptrace.h>
  #      ifdef __arm__
  typedef struct user_fpregs elf_fpregset_t;
*************** unsigned struct_ElfW_Phdr_sz = sizeof(El
*** 762,774 ****
    unsigned IOCTL_SOUND_PCM_WRITE_FILTER = SOUND_PCM_WRITE_FILTER;
  #endif // SOUND_VERSION
    unsigned IOCTL_TCFLSH = TCFLSH;
-   unsigned IOCTL_TCGETA = TCGETA;
    unsigned IOCTL_TCGETS = TCGETS;
    unsigned IOCTL_TCSBRK = TCSBRK;
    unsigned IOCTL_TCSBRKP = TCSBRKP;
-   unsigned IOCTL_TCSETA = TCSETA;
-   unsigned IOCTL_TCSETAF = TCSETAF;
-   unsigned IOCTL_TCSETAW = TCSETAW;
    unsigned IOCTL_TCSETS = TCSETS;
    unsigned IOCTL_TCSETSF = TCSETSF;
    unsigned IOCTL_TCSETSW = TCSETSW;
--- 762,770 ----
diff -Nrcpad gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
*** gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	Sat Jul 26 22:33:57 2025
--- gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	Sat Aug  9 22:33:06 2025
*************** extern unsigned IOCTL_SNDCTL_COPR_SENDMS
*** 1274,1286 ****
  extern unsigned IOCTL_SNDCTL_COPR_WCODE;
  extern unsigned IOCTL_SNDCTL_COPR_WDATA;
  extern unsigned IOCTL_TCFLSH;
- extern unsigned IOCTL_TCGETA;
  extern unsigned IOCTL_TCGETS;
  extern unsigned IOCTL_TCSBRK;
  extern unsigned IOCTL_TCSBRKP;
- extern unsigned IOCTL_TCSETA;
- extern unsigned IOCTL_TCSETAF;
- extern unsigned IOCTL_TCSETAW;
  extern unsigned IOCTL_TCSETS;
  extern unsigned IOCTL_TCSETSF;
  extern unsigned IOCTL_TCSETSW;
--- 1274,1282 ----
diff -Nrcpad gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
*** gcc-15-20250726/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp	Sat Jul 26 22:33:57 2025
--- gcc-15-20250809/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp	Sat Aug  9 22:33:06 2025
***************
*** 31,37 ****
  #include <sys/types.h> // for pid_t
  #include <sys/uio.h> // for iovec
  #include <elf.h> // for NT_PRSTATUS
! #if (defined(__aarch64__) || SANITIZER_RISCV64 || SANITIZER_LOONGARCH64) && \
       !SANITIZER_ANDROID
  // GLIBC 2.20+ sys/user does not include asm/ptrace.h
  # include <asm/ptrace.h>
--- 31,38 ----
  #include <sys/types.h> // for pid_t
  #include <sys/uio.h> // for iovec
  #include <elf.h> // for NT_PRSTATUS
! #if (defined(__aarch64__) || defined(__powerpc64__) || \
!      SANITIZER_RISCV64 || SANITIZER_LOONGARCH64) &&    \
       !SANITIZER_ANDROID
  // GLIBC 2.20+ sys/user does not include asm/ptrace.h
  # include <asm/ptrace.h>
diff -Nrcpad gcc-15-20250726/libssp/ChangeLog gcc-15-20250809/libssp/ChangeLog
*** gcc-15-20250726/libssp/ChangeLog	Sat Jul 26 22:33:57 2025
--- gcc-15-20250809/libssp/ChangeLog	Sat Aug  9 22:33:07 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/libstdc++-v3/ChangeLog gcc-15-20250809/libstdc++-v3/ChangeLog
*** gcc-15-20250726/libstdc++-v3/ChangeLog	Sat Jul 26 22:33:57 2025
--- gcc-15-20250809/libstdc++-v3/ChangeLog	Sat Aug  9 22:33:07 2025
***************
*** 1,3 ****
--- 1,26 ----
+ 2025-08-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-08-04  Jakub Jelinek  <jakub@redhat.com>
+ 		    hexne  <printfne@gmail.com>
+ 
+ 	PR libstdc++/121373
+ 	* src/c++23/std.cc.in (std::ranges::shift_left,
+ 	std::ranges::shift_right): Only export for C++23 and later.
+ 	(std::ranges::fold_left_first_with_iter_result,
+ 	std::ranges::fold_left_with_iter_result): Export.
+ 	(std::byteswap): Export for C++23 and later.
+ 	(std::ranges::iter_move, std::ranges::iter_swap): Export.
+ 	(std::projected_value_t): Export for C++26 and later.
+ 	(std::out_ptr_t, std::inout_ptr_t): Export.
+ 	(std::ranges::iota_result): Export.
+ 	(std::regex_constants): Export a lot of constants.
+ 	(std::is_scoped_enum, std::is_scoped_enum_v): Export.
+ 
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-07-24  Patrick Palka  <ppalka@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/libstdc++-v3/src/c++23/std.cc.in gcc-15-20250809/libstdc++-v3/src/c++23/std.cc.in
*** gcc-15-20250726/libstdc++-v3/src/c++23/std.cc.in	Sat Jul 26 22:33:59 2025
--- gcc-15-20250809/libstdc++-v3/src/c++23/std.cc.in	Sat Aug  9 22:33:08 2025
*************** export namespace std
*** 496,502 ****
--- 496,504 ----
      using ranges::fold_left;
      using ranges::fold_left_first;
      using ranges::fold_left_first_with_iter;
+     using ranges::fold_left_first_with_iter_result;
      using ranges::fold_left_with_iter;
+     using ranges::fold_left_with_iter_result;
      using ranges::fold_right;
      using ranges::fold_right_last;
      using ranges::in_value_result;
*************** export namespace std
*** 666,671 ****
--- 668,676 ----
    using std::popcount;
    using std::rotl;
    using std::rotr;
+ #if __cpp_lib_byteswap // >= C++23
+   using std::byteswap;
+ #endif
  }
  
  // 22.9 <bitset>
*************** export namespace std
*** 1726,1731 ****
--- 1731,1739 ----
    using std::make_const_iterator;
    using std::make_const_sentinel;
  #endif
+ #if __glibcxx_algorithm_default_value_type // >= C++26
+   using std::projected_value_t;
+ #endif
  }
  // FIXME these should be friends of __normal_iterator to avoid exporting
  // __gnu_cxx.
*************** export namespace std
*** 1946,1951 ****
--- 1954,1961 ----
  #if __cpp_lib_out_ptr
    using std::out_ptr;
    using std::inout_ptr;
+   using std::out_ptr_t;
+   using std::inout_ptr_t;
  #endif
  }
  
*************** export namespace std
*** 2062,2068 ****
    using std::lcm;
    using std::midpoint;
  #if __cpp_lib_ranges_iota
!   namespace ranges { using ranges::iota; }
  #endif
  #if __cpp_lib_saturation_arithmetic
    using std::add_sat;
--- 2072,2082 ----
    using std::lcm;
    using std::midpoint;
  #if __cpp_lib_ranges_iota
!   namespace ranges
!   {
!     using ranges::iota;
!     using ranges::iota_result;
!   }
  #endif
  #if __cpp_lib_saturation_arithmetic
    using std::add_sat;
*************** export namespace std
*** 2473,2478 ****
--- 2487,2529 ----
      using std::regex_constants::operator|;
      using std::regex_constants::operator|=;
      using std::regex_constants::operator~;
+     using std::regex_constants::awk;
+     using std::regex_constants::basic;
+     using std::regex_constants::collate;
+     using std::regex_constants::ECMAScript;
+     using std::regex_constants::egrep;
+     using std::regex_constants::extended;
+     using std::regex_constants::grep;
+     using std::regex_constants::icase;
+     using std::regex_constants::multiline;
+     using std::regex_constants::nosubs;
+     using std::regex_constants::optimize;
+     using std::regex_constants::format_default;
+     using std::regex_constants::format_first_only;
+     using std::regex_constants::format_no_copy;
+     using std::regex_constants::format_sed;
+     using std::regex_constants::match_any;
+     using std::regex_constants::match_continuous;
+     using std::regex_constants::match_default;
+     using std::regex_constants::match_not_bol;
+     using std::regex_constants::match_not_bow;
+     using std::regex_constants::match_not_eol;
+     using std::regex_constants::match_not_eow;
+     using std::regex_constants::match_not_null;
+     using std::regex_constants::match_prev_avail;
+     using std::regex_constants::error_backref;
+     using std::regex_constants::error_badbrace;
+     using std::regex_constants::error_badrepeat;
+     using std::regex_constants::error_brace;
+     using std::regex_constants::error_brack;
+     using std::regex_constants::error_collate;
+     using std::regex_constants::error_complexity;
+     using std::regex_constants::error_ctype;
+     using std::regex_constants::error_escape;
+     using std::regex_constants::error_paren;
+     using std::regex_constants::error_range;
+     using std::regex_constants::error_space;
+     using std::regex_constants::error_stack;
    }
    using std::basic_regex;
    using std::csub_match;
*************** export namespace std
*** 3114,3119 ****
--- 3165,3174 ----
    using std::is_pointer_interconvertible_base_of_v;
    using std::is_pointer_interconvertible_with_class;
  #endif
+ #if __cpp_lib_is_scoped_enum
+   using std::is_scoped_enum;
+   using std::is_scoped_enum_v;
+ #endif
  }
  
  // <typeindex>
diff -Nrcpad gcc-15-20250726/libvtv/ChangeLog gcc-15-20250809/libvtv/ChangeLog
*** gcc-15-20250726/libvtv/ChangeLog	Sat Jul 26 22:34:22 2025
--- gcc-15-20250809/libvtv/ChangeLog	Sat Aug  9 22:33:18 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/lto-plugin/ChangeLog gcc-15-20250809/lto-plugin/ChangeLog
*** gcc-15-20250726/lto-plugin/ChangeLog	Sat Jul 26 22:34:23 2025
--- gcc-15-20250809/lto-plugin/ChangeLog	Sat Aug  9 22:33:18 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250726/maintainer-scripts/ChangeLog gcc-15-20250809/maintainer-scripts/ChangeLog
*** gcc-15-20250726/maintainer-scripts/ChangeLog	Sat Jul 26 22:34:23 2025
--- gcc-15-20250809/maintainer-scripts/ChangeLog	Sat Aug  9 22:33:18 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250726/zlib/ChangeLog gcc-15-20250809/zlib/ChangeLog
*** gcc-15-20250726/zlib/ChangeLog	Sat Jul 26 22:34:23 2025
--- gcc-15-20250809/zlib/ChangeLog	Sat Aug  9 22:33:18 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-08  Release Manager
+ 
+ 	* GCC 15.2.0 released.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
