Now that we have stopped treating *this as a dependent scope, we need
to avoid giving errors for not finding things when we have dependent
bases.
Tested x86_64-pc-linux-gnu, applying to trunk.
commit d553bc7ff104a8d973c3f48c005457038422db26
Author: Jason Merrill <ja...@redhat.com>
Date: Fri Jun 17 12:16:00 2016 -0400
PR c++/71209 - wrong error with dependent base
* typeck.c (finish_class_member_access_expr): Avoid "not a base"
warning when there are dependent bases.
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 2ccd2da..3704b88 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -2797,6 +2797,8 @@ finish_class_member_access_expr (cp_expr object, tree
name, bool template_p,
return error_mark_node;
if (!access_path)
{
+ if (any_dependent_bases_p (object_type))
+ goto dependent;
if (complain & tf_error)
error ("%qT is not a base of %qT", scope, object_type);
return error_mark_node;
diff --git a/gcc/testsuite/g++.dg/template/dependent-base1.C
b/gcc/testsuite/g++.dg/template/dependent-base1.C
new file mode 100644
index 0000000..392305b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/dependent-base1.C
@@ -0,0 +1,10 @@
+// PR c++/71209
+
+struct A {
+ int table_clear;
+};
+
+template <typename T>
+struct B : T {
+ B() { this->A::table_clear; }
+};