diff options
author | Martin Sebor <msebor@redhat.com> | 2018-10-24 18:06:14 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2018-10-24 12:06:14 -0600 |
commit | fd85b88869cca061959582783d5ec75b0da8b1d7 (patch) | |
tree | 1c99d2dbe268075a094a5b67daf1873d2a6f8ea8 | |
parent | 313c39912b384687f8098bdf4614650a55ba939b (diff) | |
download | gcc-fd85b88869cca061959582783d5ec75b0da8b1d7.zip gcc-fd85b88869cca061959582783d5ec75b0da8b1d7.tar.gz gcc-fd85b88869cca061959582783d5ec75b0da8b1d7.tar.bz2 |
PR c++/84851 - missing -Wclass-memaccess for a memcpy in a copy ctor with a non-trivial member
gcc/cp/ChangeLog:
PR c++/84851
* call.c (maybe_warn_class_memaccess): Tighten up.
gcc/testsuite/ChangeLog:
PR c++/84851
* g++.dg/Wclass-memaccess-4.C: Remove XFAIL.
From-SVN: r265467
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/call.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/Wclass-memaccess-4.C | 2 |
4 files changed, 11 insertions, 10 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c04dbe8..fad8690 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2018-10-24 Martin Sebor <msebor@redhat.com> + + PR c++/84851 + * call.c (maybe_warn_class_memaccess): Tighten up. + 2018-10-17 David Malcolm <dmalcolm@redhat.com> * Make-lang.in (selftest-c++): New. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 0baf26e..cd0c0f6 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -8665,15 +8665,6 @@ maybe_warn_class_memaccess (location_t loc, tree fndecl, bool special = same_type_ignoring_top_level_qualifiers_p (ctx, desttype); tree binfo = TYPE_BINFO (ctx); - /* FIXME: The following if statement is overly permissive (see - bug 84851). Remove it in GCC 9. */ - if (special - && !BINFO_VTABLE (binfo) - && !BINFO_N_BASE_BINFOS (binfo) - && (DECL_CONSTRUCTOR_P (current_function_decl) - || DECL_DESTRUCTOR_P (current_function_decl))) - return; - if (special && !BINFO_VTABLE (binfo) && !first_non_trivial_field (desttype)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e167901..6f9ba884 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-10-24 Martin Sebor <msebor@redhat.com> + + PR c++/84851 + * g++.dg/Wclass-memaccess-4.C: Remove XFAIL. + 2018-10-24 Martin Liska <mliska@suse.cz> PR tree-optimization/84436 diff --git a/gcc/testsuite/g++.dg/Wclass-memaccess-4.C b/gcc/testsuite/g++.dg/Wclass-memaccess-4.C index 8c33421..69b8c78 100644 --- a/gcc/testsuite/g++.dg/Wclass-memaccess-4.C +++ b/gcc/testsuite/g++.dg/Wclass-memaccess-4.C @@ -29,7 +29,7 @@ struct C C::C (const C &c) { - memcpy (this, &c, sizeof c); // { dg-warning "\\\[-Wclass-memaccess]" "pr84851" { xfail *-*-*} } + memcpy (this, &c, sizeof c); // { dg-warning "\\\[-Wclass-memaccess]" } } C& C::operator= (const C &c) |