From: Jason Merrill Date: Fri, 3 Aug 2018 15:10:32 +0000 (+0200) Subject: re PR c++/86706 (ICE in build_base_path, at cp/class.c:294) X-Git-Tag: basepoints/gcc-10~4910 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d198fc5a69964c1d1cf55dd30d1696e531dc12d9;p=thirdparty%2Fgcc.git re PR c++/86706 (ICE in build_base_path, at cp/class.c:294) PR c++/86706 * class.c (build_base_path): Use currently_open_class. * g++.dg/template/pr86706.C: New test. From-SVN: r263293 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 77fbed674762..17f9821b9399 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 76a9e186c269..7b10b20ede5e 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 25a59801a262..966c13b33cfd 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 000000000000..86af18a99747 --- /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; +}