aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo@gcc.gnu.org>2019-03-18 09:38:27 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2019-03-18 09:38:27 +0000
commite6da0bf1f15cdb0d641b77af75b7cb511ef9b553 (patch)
treec1e1a5e5d1027ca35f0cbbb2b6b32c48d0d91f68 /gcc
parentf5d56cf957f9235d43f4dc4cec511b042e0b18de (diff)
downloadgcc-e6da0bf1f15cdb0d641b77af75b7cb511ef9b553.zip
gcc-e6da0bf1f15cdb0d641b77af75b7cb511ef9b553.tar.gz
gcc-e6da0bf1f15cdb0d641b77af75b7cb511ef9b553.tar.bz2
re PR c++/85014 (internal compiler error: in lookup_base, at cp/search.c:185)
/cp 2019-03-18 Paolo Carlini <paolo.carlini@oracle.com> PR c++/85014 * semantics.c (finish_non_static_data_member): Check return value of context_for_name_lookup and immediately return error_mark_node if isn't a type. /testsuite 2019-03-18 Paolo Carlini <paolo.carlini@oracle.com> PR c++/85014 * g++.dg/cpp0x/pr85014.C: New. From-SVN: r269759
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/semantics.c10
-rw-r--r--gcc/testsuite/ChangeLog10
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr85014.C10
4 files changed, 34 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 34e9c79..fa569bc 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2019-03-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85014
+ * semantics.c (finish_non_static_data_member): Check return value
+ of context_for_name_lookup and immediately return error_mark_node
+ if isn't a type.
+
2019-03-17 Jason Merrill <jason@redhat.com>
PR c++/89571 - ICE with ill-formed noexcept on constructor.
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index fcf0606..599e0e3 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -1828,7 +1828,15 @@ finish_non_static_data_member (tree decl, tree object, tree qualifying_scope)
{
tree scope = qualifying_scope;
if (scope == NULL_TREE)
- scope = context_for_name_lookup (decl);
+ {
+ scope = context_for_name_lookup (decl);
+ if (!TYPE_P (scope))
+ {
+ /* Can happen during error recovery (c++/85014). */
+ gcc_assert (seen_error ());
+ return error_mark_node;
+ }
+ }
object = maybe_dummy_object (scope, NULL);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 585cba50..30014e6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-03-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/85014
+ * g++.dg/cpp0x/pr85014.C: New.
+
2019-03-18 Jakub Jelinek <jakub@redhat.com>
PR middle-end/86979
@@ -6,11 +11,12 @@
2019-03-17 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/88008
- * gfortran.dg/typebound_call_31.f90: New test.
+ * gfortran.dg/typebound_call_31.f90: New test.
2019-03-03-17 John David Anglin <danglin@gcc.gnu.org>
- * gcc.dg/compat/pr83487-1_x.c: Use -fno-common option on hppa*-*-hpux*.
+ * gcc.dg/compat/pr83487-1_x.c: Use -fno-common option on
+ hppa*-*-hpux*.
* gcc.dg/compat/pr83487-1_y.c: Likewise.
* gfortran.dg/pointer_init_10.f90: Require visibility support.
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr85014.C b/gcc/testsuite/g++.dg/cpp0x/pr85014.C
new file mode 100644
index 0000000..0a3b241
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr85014.C
@@ -0,0 +1,10 @@
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+struct {
+ short a[__builtin_constant_p([] {
+ struct {
+ int b = b;
+ }; // { dg-error "abstract declarator" }
+ })];
+}; // { dg-error "abstract declarator" }