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;
          }
       }

Reply via email to