diff options
author | Jason Merrill <jason@redhat.com> | 2009-02-11 21:01:07 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2009-02-11 21:01:07 -0500 |
commit | bff54b198738a1abe0aa043beda37794c040e604 (patch) | |
tree | a4bc695b6e1383f25859570fa7dca93a6ce5d072 /gcc | |
parent | c8619fe9649b315e9f816ab3027fc576cc3f9ed0 (diff) | |
download | gcc-bff54b198738a1abe0aa043beda37794c040e604.zip gcc-bff54b198738a1abe0aa043beda37794c040e604.tar.gz gcc-bff54b198738a1abe0aa043beda37794c040e604.tar.bz2 |
re PR c++/39153 (virtual default dtor not defined)
PR c++/39153
* decl2.c (cp_write_global_declarations):
Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL.
From-SVN: r144119
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/defaulted9.C | 17 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 58bffd7..7a764b1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2009-02-11 Jason Merrill <jason@redhat.com> + PR c++/39153 + * decl2.c (cp_write_global_declarations): + Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL. + PR c++/30111 * init.c (build_value_init_noctor): Split out from... (build_value_init): ...here. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index c888725..2cafc83 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -3487,7 +3487,7 @@ cp_write_global_declarations (void) for (i = 0; VEC_iterate (tree, deferred_fns, i, decl); ++i) { /* Does it need synthesizing? */ - if (DECL_ARTIFICIAL (decl) && ! DECL_INITIAL (decl) + if (DECL_DEFAULTED_FN (decl) && ! DECL_INITIAL (decl) && (! DECL_REALLY_EXTERN (decl) || possibly_inlined_p (decl))) { /* Even though we're already at the top-level, we push diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7c08865..b140c2f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2009-02-11 Jason Merrill <jason@redhat.com> + PR c++/39153 + * g++.dg/cpp0x/defaulted9.C: New test. + PR c++/30111 * g++.dg/init/value7.C: New test. diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted9.C b/gcc/testsuite/g++.dg/cpp0x/defaulted9.C new file mode 100644 index 0000000..c067065 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/defaulted9.C @@ -0,0 +1,17 @@ +// PR c++/39153 + +struct _Impl_base +{ + _Impl_base() = default; + virtual ~_Impl_base() = default; +}; + +template<typename _Tp> +class _Impl : public _Impl_base +{ }; + +int main() +{ + _Impl<int> i; + return 0; +} |