diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2016-12-11 18:15:31 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2016-12-11 18:15:31 +0000 |
commit | a1f7d967aa8425806836bdf291cacecb8a636df0 (patch) | |
tree | f5c1aa5090e7cf4acf7a9e1653b335f3c5639f1d | |
parent | a2cb05ed72fea4dda63b1d879970f430765e3db7 (diff) | |
download | gcc-a1f7d967aa8425806836bdf291cacecb8a636df0.zip gcc-a1f7d967aa8425806836bdf291cacecb8a636df0.tar.gz gcc-a1f7d967aa8425806836bdf291cacecb8a636df0.tar.bz2 |
re PR c++/78637 (ICE on invalid C++ code on x86_64-linux-gnu (internal compiler error: in pop_namespace, at cp/name-lookup.c:3826))
/cp
2016-12-11 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/78637
* parser.c (cp_parser_namespace_definition): Increment
nested_definition_count only if push_namespace succeeds.
/testsuite
2016-12-11 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/78637
* g++.dg/parse/namespace14.C: New.
From-SVN: r243529
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/namespace14.C | 6 |
4 files changed, 19 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4b203b2..56803bf 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2016-12-11 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/78637 + * parser.c (cp_parser_namespace_definition): Increment + nested_definition_count only if push_namespace succeeds. + 2016-12-08 Nathan Sidwell <nathan@acm.org> PR c++/78551 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 70e5fb3..8ed75c7 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -18184,8 +18184,8 @@ cp_parser_namespace_definition (cp_parser* parser) cp_parser_error (parser, "nested identifier required"); break; } - ++nested_definition_count; - push_namespace (identifier); + if (push_namespace (identifier)) + ++nested_definition_count; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9bd7389..8603a02 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-12-11 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/78637 + * g++.dg/parse/namespace14.C: New. + 2016-12-10 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/78720 diff --git a/gcc/testsuite/g++.dg/parse/namespace14.C b/gcc/testsuite/g++.dg/parse/namespace14.C new file mode 100644 index 0000000..a6fa69b --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/namespace14.C @@ -0,0 +1,6 @@ +// PR c++/78637 + +namespace X { +class Y; +} +namespace X::Y z; // { dg-error "namespace|expected|type" } |