From 960639dc9a23db586d10319a5368d218d5171368 Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 3 Aug 2018 15:10:32 +0000 Subject: [PATCH] PR c++/86706 * class.c (build_base_path): Use currently_open_class. * g++.dg/template/pr86706.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263293 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/class.c | 3 +++ gcc/testsuite/ChangeLog | 21 +++++++++++++-------- gcc/testsuite/g++.dg/template/pr86706.C | 16 ++++++++++++++++ 4 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/g++.dg/template/pr86706.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 77fbed67476..17f9821b939 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2018-08-03 Jason Merrill + + PR c++/86706 + * class.c (build_base_path): Use currently_open_class. + 2018-08-02 David Malcolm * error.c (cxx_print_error_function): Duplicate "file" before diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 76a9e186c26..7b10b20ede5 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -278,6 +278,9 @@ build_base_path (enum tree_code code, probe = TYPE_MAIN_VARIANT (TREE_TYPE (expr)); if (want_pointer) probe = TYPE_MAIN_VARIANT (TREE_TYPE (probe)); + if (dependent_type_p (probe)) + if (tree open = currently_open_class (probe)) + probe = open; if (code == PLUS_EXPR && !SAME_BINFO_TYPE_P (BINFO_TYPE (d_binfo), probe)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 25a59801a26..966c13b33cf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-08-03 Jason Merrill + + PR c++/86706 + * g++.dg/template/pr86706.C: New test. + 2018-08-03 Richard Sandiford * gcc.dg/vect/bb-slp-over-widen-1.c: Expect AVG_FLOOR to be used @@ -9,13 +14,13 @@ 2018-08-03 Martin Liska * gcc.dg/predict-1.c: Adjust scanned pattern to cover 2 digits. - * gcc.dg/predict-13.c:Likewise. - * gcc.dg/predict-3.c:Likewise. - * gcc.dg/predict-4.c:Likewise. - * gcc.dg/predict-5.c:Likewise. - * gcc.dg/predict-6.c:Likewise. - * gcc.dg/predict-9.c:Likewise. - * gfortran.dg/predict-1.f90:Likewise. + * gcc.dg/predict-13.c: Likewise. + * gcc.dg/predict-3.c: Likewise. + * gcc.dg/predict-4.c: Likewise. + * gcc.dg/predict-5.c: Likewise. + * gcc.dg/predict-6.c: Likewise. + * gcc.dg/predict-9.c: Likewise. + * gfortran.dg/predict-1.f90: Likewise. 2018-08-02 Richard Biener @@ -11397,7 +11402,7 @@ 2018-02-01 Marek Polacek PR c++/84125 - * g++.dg/cpp1y/lambda-generic-84125.C:New test. + * g++.dg/cpp1y/lambda-generic-84125.C: New test. 2018-01-30 Jeff Law diff --git a/gcc/testsuite/g++.dg/template/pr86706.C b/gcc/testsuite/g++.dg/template/pr86706.C new file mode 100644 index 00000000000..86af18a9974 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pr86706.C @@ -0,0 +1,16 @@ +// PR c++/86706 +// { dg-do compile } + +class A { int b; }; + +template +class C : A { C (); static C *f; }; + +template +C *C::f; + +template +C::C () +{ + f->b; +} -- 2.11.4.GIT