diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/friend11.C | 6 |
4 files changed, 19 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8bd4a73..70156eb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,11 @@ 2014-06-11 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/19200 + * parser.c (cp_parser_init_declarator): Actually pass friend_p + to cp_parser_declarator. + +2014-06-11 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/60265 * parser.c (cp_parser_using_declaration): Handle unscoped enums. * name-lookup.c (validate_nonmember_using_decl): Adjust error diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 4dff139..1079832 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -16545,7 +16545,7 @@ cp_parser_init_declarator (cp_parser* parser, bool is_direct_init = false; bool is_non_constant_init; int ctor_dtor_or_conv_p; - bool friend_p; + bool friend_p = cp_parser_friend_p (decl_specifiers); tree pushed_scope = NULL_TREE; bool range_for_decl_p = false; bool saved_default_arg_ok_p = parser->default_arg_ok_p; @@ -16574,7 +16574,7 @@ cp_parser_init_declarator (cp_parser* parser, = cp_parser_declarator (parser, CP_PARSER_DECLARATOR_NAMED, &ctor_dtor_or_conv_p, /*parenthesized_p=*/NULL, - member_p, /*friend_p=*/false); + member_p, friend_p); /* Gather up the deferred checks. */ stop_deferring_access_checks (); @@ -16746,9 +16746,6 @@ cp_parser_init_declarator (cp_parser* parser, decl_specifiers->type = integer_type_node; } - /* Check to see whether or not this declaration is a friend. */ - friend_p = cp_parser_friend_p (decl_specifiers); - /* Enter the newly declared entry in the symbol table. If we're processing a declaration in a class-specifier, we wait until after processing the initializer. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2a506f5..3e92395 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2014-06-11 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/19200 + * g++.dg/parse/friend11.C: New. + +2014-06-11 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/60265 * g++.dg/cpp0x/using-enum-1.C: New. * g++.dg/cpp0x/using-enum-2.C: Likewise. diff --git a/gcc/testsuite/g++.dg/parse/friend11.C b/gcc/testsuite/g++.dg/parse/friend11.C new file mode 100644 index 0000000..61aae4e --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/friend11.C @@ -0,0 +1,6 @@ +// PR c++/19200 + +struct S { + struct T{}; + template<typename> friend void S(T); +}; |