diff options
author | Jason Merrill <jason@redhat.com> | 2011-05-27 15:32:14 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-05-27 15:32:14 -0400 |
commit | 1fbbe7d6b21bcfd89b0d4722bb1f4b90c2b4965c (patch) | |
tree | c8e3515da5825a29b14fc3f1a5c94f7a06a129c3 /gcc | |
parent | 6d258f3157f2e035d491929a9b819cae3b24a8e9 (diff) | |
download | gcc-1fbbe7d6b21bcfd89b0d4722bb1f4b90c2b4965c.zip gcc-1fbbe7d6b21bcfd89b0d4722bb1f4b90c2b4965c.tar.gz gcc-1fbbe7d6b21bcfd89b0d4722bb1f4b90c2b4965c.tar.bz2 |
re PR c++/47277 ([C++0x] pseudo destructor code that cause an internal compiler error with std=gnu++0x)
PR c++/47277
* parser.c (cp_parser_unqualified_id): Don't check
constructor_name_p for enums.
From-SVN: r174355
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/parser.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/enum18.C | 8 |
4 files changed, 16 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index edc1421..7a579c6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2011-05-27 Jason Merrill <jason@redhat.com> + PR c++/47277 + * parser.c (cp_parser_unqualified_id): Don't check + constructor_name_p for enums. + PR c++/47687 * pt.c (dependent_type_p_r): Avoid infinite recursion. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 135ab14..a16ba89 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -4069,7 +4069,8 @@ cp_parser_unqualified_id (cp_parser* parser, && (cp_lexer_peek_nth_token (parser->lexer, 2)->type != CPP_LESS) && (token->u.value == TYPE_IDENTIFIER (scope) - || constructor_name_p (token->u.value, scope))) + || (CLASS_TYPE_P (scope) + && constructor_name_p (token->u.value, scope)))) { cp_lexer_consume_token (parser->lexer); return build_nt (BIT_NOT_EXPR, scope); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 841a202..319fc28 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2011-05-27 Jason Merrill <jason@redhat.com> + * g++.dg/cpp0x/enum18.C: New. + * g++.dg/cpp0x/lambda/lambda-nested4.C: New. * g++.dg/cpp0x/error6.C: New. diff --git a/gcc/testsuite/g++.dg/cpp0x/enum18.C b/gcc/testsuite/g++.dg/cpp0x/enum18.C new file mode 100644 index 0000000..5575ca6 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/enum18.C @@ -0,0 +1,8 @@ +// PR c++/47277 +// { dg-options -std=c++0x } + +int main(void) { + enum e {}; + e ev; + ev.e::~e_u(); // { dg-error "" } +} |