diff options
author | Jason Merrill <jason@redhat.com> | 2018-08-03 17:10:32 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-08-03 17:10:32 +0200 |
commit | d198fc5a69964c1d1cf55dd30d1696e531dc12d9 (patch) | |
tree | 80793bfc8bf2afb72b0ab73555975e986d30a825 | |
parent | 0b0c7dc60217c5d240cc87cf2f4b778efb8717f8 (diff) | |
download | gcc-d198fc5a69964c1d1cf55dd30d1696e531dc12d9.zip gcc-d198fc5a69964c1d1cf55dd30d1696e531dc12d9.tar.gz gcc-d198fc5a69964c1d1cf55dd30d1696e531dc12d9.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/class.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 21 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/pr86706.C | 16 |
4 files changed, 37 insertions, 8 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 77fbed6..17f9821 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2018-08-03 Jason Merrill <jason@redhat.com> + + PR c++/86706 + * class.c (build_base_path): Use currently_open_class. + 2018-08-02 David Malcolm <dmalcolm@redhat.com> * error.c (cxx_print_error_function): Duplicate "file" before diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 76a9e18..7b10b20 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 25a5980..966c13b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-08-03 Jason Merrill <jason@redhat.com> + + PR c++/86706 + * g++.dg/template/pr86706.C: New test. + 2018-08-03 Richard Sandiford <richard.sandiford@arm.com> * gcc.dg/vect/bb-slp-over-widen-1.c: Expect AVG_FLOOR to be used @@ -9,13 +14,13 @@ 2018-08-03 Martin Liska <mliska@suse.cz> * 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 <rguenther@suse.de> @@ -11397,7 +11402,7 @@ 2018-02-01 Marek Polacek <polacek@redhat.com> 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 <law@redhat.com> diff --git a/gcc/testsuite/g++.dg/template/pr86706.C b/gcc/testsuite/g++.dg/template/pr86706.C new file mode 100644 index 0000000..86af18a --- /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, typename> +class C : A { C (); static C *f; }; + +template <class T, typename U> +C<T, U> *C<T, U>::f; + +template <class T, typename U> +C<T, U>::C () +{ + f->b; +} |