aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2009-02-11 21:01:07 -0500
committerJason Merrill <jason@gcc.gnu.org>2009-02-11 21:01:07 -0500
commitbff54b198738a1abe0aa043beda37794c040e604 (patch)
treea4bc695b6e1383f25859570fa7dca93a6ce5d072 /gcc
parentc8619fe9649b315e9f816ab3027fc576cc3f9ed0 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/defaulted9.C17
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;
+}