aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2016-12-11 18:15:31 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2016-12-11 18:15:31 +0000
commita1f7d967aa8425806836bdf291cacecb8a636df0 (patch)
treef5c1aa5090e7cf4acf7a9e1653b335f3c5639f1d /gcc
parenta2cb05ed72fea4dda63b1d879970f430765e3db7 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/parser.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/parse/namespace14.C6
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" }