aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2019-06-17 13:46:59 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2019-06-17 13:46:59 +0000
commit41d93b16cac5b348b7883e259f7880b4a0addc23 (patch)
tree402d5a220f3ffed7dc376786229270646c1ddd75 /gcc
parent07c8304c06be23ce4eb580b637cda9be3784baff (diff)
downloadgcc-41d93b16cac5b348b7883e259f7880b4a0addc23.zip
gcc-41d93b16cac5b348b7883e259f7880b4a0addc23.tar.gz
gcc-41d93b16cac5b348b7883e259f7880b4a0addc23.tar.bz2
[PR c++/90754] name lookup ICE
https://gcc.gnu.org/ml/gcc-patches/2019-06/msg00952.html PR c++/90754 * name-lookup.c (lookup_type_scope_1): Calll qualify_lookup before checking context. PR c++/90754 * g++.dg/lookup/pr90754.C: New. From-SVN: r272384
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/name-lookup.c18
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/lookup/pr90754.C11
4 files changed, 31 insertions, 9 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ad35314..4e6d626 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2019-06-17 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/90754
+ * name-lookup.c (lookup_type_scope_1): Calll qualify_lookup before
+ checking context.
+
2019-06-14 Marek Polacek <polacek@redhat.com>
PR c++/90884 - stray note with -Wctor-dtor-privacy.
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index 632253a..f4c34ed 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -6487,15 +6487,15 @@ lookup_type_scope_1 (tree name, tag_scope scope)
typedef struct C {} C;
correctly. */
if (tree type = iter->type)
- if ((scope != ts_current
- || LOCAL_BINDING_P (iter)
- || DECL_CONTEXT (type) == iter->scope->this_entity)
- && qualify_lookup (iter->type, LOOKUP_PREFER_TYPES))
- return iter->type;
-
- if ((scope != ts_current
- || !INHERITED_VALUE_BINDING_P (iter))
- && qualify_lookup (iter->value, LOOKUP_PREFER_TYPES))
+ if (qualify_lookup (type, LOOKUP_PREFER_TYPES)
+ && (scope != ts_current
+ || LOCAL_BINDING_P (iter)
+ || DECL_CONTEXT (type) == iter->scope->this_entity))
+ return type;
+
+ if (qualify_lookup (iter->value, LOOKUP_PREFER_TYPES)
+ && (scope != ts_current
+ || !INHERITED_VALUE_BINDING_P (iter)))
return iter->value;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index aba3d20..13cd469 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-17 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/90754
+ * g++.dg/lookup/pr90754.C: New.
+
2019-06-17 Wilco Dijkstra <wdijkstr@arm.com>
PR middle-end/64242
diff --git a/gcc/testsuite/g++.dg/lookup/pr90754.C b/gcc/testsuite/g++.dg/lookup/pr90754.C
new file mode 100644
index 0000000..f68f6d4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/pr90754.C
@@ -0,0 +1,11 @@
+// PR c++/90754 ICE in type lookup.
+
+class A {
+ struct COMTypeInfo;
+};
+class B {
+ struct COMTypeInfo;
+};
+class C : A, B {
+ struct COMTypeInfo;
+};