aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2018-08-03 17:10:32 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2018-08-03 17:10:32 +0200
commitd198fc5a69964c1d1cf55dd30d1696e531dc12d9 (patch)
tree80793bfc8bf2afb72b0ab73555975e986d30a825
parent0b0c7dc60217c5d240cc87cf2f4b778efb8717f8 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/class.c3
-rw-r--r--gcc/testsuite/ChangeLog21
-rw-r--r--gcc/testsuite/g++.dg/template/pr86706.C16
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;
+}