From: jakub Date: Fri, 9 Jan 2009 14:45:44 +0000 (+0000) Subject: PR c++/37877 X-Git-Tag: upstream/4.9.2~38194 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f04755301385186ff70270c700a7f68cc1e01968;p=platform%2Fupstream%2Flinaro-gcc.git PR c++/37877 * parser.c (cp_parser_class_specifier): Clear parser->in_unbraced_linkage_specification_p while parsing class specifiers. * g++.dg/parse/linkage3.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143206 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a0be740..6d09faf 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2009-01-09 John F. Carr + + PR c++/37877 + * parser.c (cp_parser_class_specifier): Clear + parser->in_unbraced_linkage_specification_p while parsing class + specifiers. + 2009-01-07 Jakub Jelinek PR c++/38725 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 545d3dd..f497d66 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -14873,6 +14873,7 @@ cp_parser_class_specifier (cp_parser* parser) bool nested_name_specifier_p; unsigned saved_num_template_parameter_lists; bool saved_in_function_body; + bool saved_in_unbraced_linkage_specification_p; tree old_scope = NULL_TREE; tree scope = NULL_TREE; tree bases; @@ -14924,6 +14925,10 @@ cp_parser_class_specifier (cp_parser* parser) /* We are not in a function body. */ saved_in_function_body = parser->in_function_body; parser->in_function_body = false; + /* We are not immediately inside an extern "lang" block. */ + saved_in_unbraced_linkage_specification_p + = parser->in_unbraced_linkage_specification_p; + parser->in_unbraced_linkage_specification_p = false; /* Start the class. */ if (nested_name_specifier_p) @@ -15036,6 +15041,8 @@ cp_parser_class_specifier (cp_parser* parser) parser->in_function_body = saved_in_function_body; parser->num_template_parameter_lists = saved_num_template_parameter_lists; + parser->in_unbraced_linkage_specification_p + = saved_in_unbraced_linkage_specification_p; return type; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 199cd6e..a86c18c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-01-09 John F. Carr + + PR c++/37877 + * g++.dg/parse/linkage3.C: New test. + 2009-01-09 Jakub Jelinek PR middle-end/38771 diff --git a/gcc/testsuite/g++.dg/parse/linkage3.C b/gcc/testsuite/g++.dg/parse/linkage3.C new file mode 100644 index 0000000..0d952d1 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/linkage3.C @@ -0,0 +1,7 @@ +// PR c++/37877 +// { dg-do compile } + +extern "C++" struct S +{ + static int x; +} s;