https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104113
--- Comment #5 from qingzhe huang <nickhuang99 at hotmail dot com> --- Created attachment 52257 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52257&action=edit cp_parser_simulate_error logic diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index b262b765a9a..988631a4248 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -24206,8 +24206,9 @@ cp_parser_type_id_1 (cp_parser *parser, cp_parser_flags flags, /* OK */; else { - if (!cp_parser_simulate_error (parser)) - { + if (parser->context && parser->context->status == CP_PARSER_STATUS_KIND_ERROR + && cp_parser_simulate_error (parser)) + return error_mark_node; location_t loc = type_specifier_seq.locations[ds_type_spec]; if (tree tmpl = CLASS_PLACEHOLDER_TEMPLATE (auto_node)) { @@ -24221,8 +24222,6 @@ cp_parser_type_id_1 (cp_parser *parser, cp_parser_flags flags, auto_node); else error_at (loc, "invalid use of %qT", auto_node); - } - return error_mark_node; } }