diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2014-02-03 18:22:46 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2014-02-03 18:22:46 +0000 |
commit | f344f525193bd4e271ea50c5eb7a4e92c57dbc67 (patch) | |
tree | ef34bcaa01238eb23ee38cda1888df3188a6be29 | |
parent | cf5b2be2a4b13c3fb806033840581cd02080375c (diff) | |
download | gcc-f344f525193bd4e271ea50c5eb7a4e92c57dbc67.zip gcc-f344f525193bd4e271ea50c5eb7a4e92c57dbc67.tar.gz gcc-f344f525193bd4e271ea50c5eb7a4e92c57dbc67.tar.bz2 |
re PR c++/58871 ([c++11] ICE with defaulted copy constructor in broken template class hierarchy)
/cp
2014-02-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58871
* method.c (synthesized_method_walk): If vbases is non-null but
is_empty is true, likewise don't worry about the virtual bases.
/testsuite
2014-02-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58871
* g++.dg/cpp0x/pr58871.C: New.
From-SVN: r207434
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/method.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr58871.C | 12 |
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2e09c88..e73246a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-02-03 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/58871 + * method.c (synthesized_method_walk): If vbases is non-null but + is_empty is true, likewise don't worry about the virtual bases. + 2014-02-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/51219 diff --git a/gcc/cp/method.c b/gcc/cp/method.c index a1a1051..b1fa943 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1366,7 +1366,7 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p, } vbases = CLASSTYPE_VBASECLASSES (ctype); - if (vbases == NULL) + if (vec_safe_is_empty (vbases)) /* No virtual bases to worry about. */; else if (!assign_p) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d896017..8c7af49 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-02-03 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/58871 + * g++.dg/cpp0x/pr58871.C: New. + 2014-02-03 Cong Hou <congh@google.com> PR tree-optimization/60000 diff --git a/gcc/testsuite/g++.dg/cpp0x/pr58871.C b/gcc/testsuite/g++.dg/cpp0x/pr58871.C new file mode 100644 index 0000000..5920f5c --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr58871.C @@ -0,0 +1,12 @@ +// PR c++/59111 +// { dg-do compile { target c++11 } } + +template<typename T> struct A : virtual T // { dg-error "base type" } +{ + A(); + A(const A&); +}; + +template<typename T> A<T>::A(const A<T>&) = default; + +A<int> a = A<int>(); |