From 3cedc9d8ecaa9ab1412fbcac70a82b874e03a95f Mon Sep 17 00:00:00 2001 From: Mark Mitchell <mark@codesourcery.com> Date: Tue, 17 Jun 2003 22:24:58 +0000 Subject: [PATCH] re PR c++/10712 (ICE in constructor_name_full, at cp/decl2.c:1255) PR c++/1255 * class.c (handle_using_decl): Robustify. PR c++/1255 * g++.dg/lookup/using3.C: New test. From-SVN: r68118 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/class.c | 3 +++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/lookup/using7.C | 11 +++++++++++ 4 files changed, 22 insertions(+) create mode 100644 gcc/testsuite/g++.dg/lookup/using7.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a3585fce330f..cf67ace445a6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2003-06-17 Mark Mitchell <mark@codesourcery.com> + PR c++/1255 + * class.c (handle_using_decl): Robustify. + PR c++/11105 * cp-tree.h (DECL_CONV_FN_TYPE): New method. * mangle.c (struct globals): Remove internal_mangling_p. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index c4887f1bb8d1..53f097b2bdf4 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -1108,6 +1108,9 @@ handle_using_decl (tree using_decl, tree t) tree flist = NULL_TREE; tree old_value; + if (ctype == error_mark_node) + return; + binfo = lookup_base (t, ctype, ba_any, NULL); if (! binfo) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9c1fcd25707b..ef4631370751 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-06-17 Mark Mitchell <mark@codesourcery.com> + + PR c++/1255 + * g++.dg/lookup/using7.C: New test. + 2003-06-17 Mark Mitchell <mark@codesourcery.com> PR c++/11105 diff --git a/gcc/testsuite/g++.dg/lookup/using7.C b/gcc/testsuite/g++.dg/lookup/using7.C new file mode 100644 index 000000000000..5f187fef5648 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/using7.C @@ -0,0 +1,11 @@ +template <typename T, bool=T::X> struct A +{ + int i; +}; + +template <typename T> struct B : A<T> +{ + using A<T>::i; // { dg-error "" } +}; + +B<void> b; // { dg-error "" } -- GitLab