https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114917
--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Nathaniel Shead <nsh...@gcc.gnu.org>: https://gcc.gnu.org/g:7317d62a1200dbd3685015e5d6b811497a27fe5f commit r15-114-g7317d62a1200dbd3685015e5d6b811497a27fe5f Author: Nathaniel Shead <nathanielosh...@gmail.com> Date: Thu May 2 12:55:24 2024 +1000 c++: Clear is_unbraced_* when parsing declaration_seq_opt [PR114917] Currently we incorrectly retain "in_unbraced_linkage_specification_p" and "in_unbraced_export_declaration_p" when parsing a (braced) declaration-seq. This patch ensures that we clear these flags before parsing the toplevel declarations. Strictly speaking we don't need to save and restore the flags around the parsing because there's currently no way to provide new declarations within the unbraced context after the closing brace, but this patch does it anyway in case this ever changes and for consistency with other places that these flags are adjusted. PR c++/114917 gcc/cp/ChangeLog: * parser.cc (cp_parser_declaration_seq_opt): Clear parser->in_unbraced_* flags when parsing toplevel declarations. gcc/testsuite/ChangeLog: * g++.dg/modules/export-5_a.C: New test. * g++.dg/modules/export-5_b.C: New test. * g++.dg/parse/linkage4.C: New test. Signed-off-by: Nathaniel Shead <nathanielosh...@gmail.com>