aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2018-10-24 18:06:14 +0000
committerMartin Sebor <msebor@gcc.gnu.org>2018-10-24 12:06:14 -0600
commitfd85b88869cca061959582783d5ec75b0da8b1d7 (patch)
tree1c99d2dbe268075a094a5b67daf1873d2a6f8ea8
parent313c39912b384687f8098bdf4614650a55ba939b (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/call.c9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/Wclass-memaccess-4.C2
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)