https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91416

--- Comment #8 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
This patch seems to fix the problem.  It follows cp_parser_lambda_body in its
handling of function_depth.

--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -28934,6 +28934,8 @@ cp_parser_late_parsing_for_member (cp_parser* parser,
tree member_function)
       function_scope = current_function_decl;
       if (function_scope)
    push_function_context ();
+      else
+   ++function_depth;

       /* Push the body of the function onto the lexer stack.  */
       cp_parser_push_lexer_for_tokens (parser, tokens);
@@ -28966,6 +28968,9 @@ cp_parser_late_parsing_for_member (cp_parser* parser,
tree member_function)
       /* Leave the scope of the containing function.  */
       if (function_scope)
    pop_function_context ();
+      else
+   --function_depth;
+
       cp_parser_pop_lexer (parser);
     }


More tomorrow...

Reply via email to