The warning reported in PR 98835 is a true positive but there was
no test for this aspect of it.  I have added one on the attached
diff.

Martin
commit c2f8e378d64f65645e5f9c41a8221ca102c71208
Author: Martin Sebor <mse...@redhat.com>
Date:   Mon Feb 1 08:42:58 2021 -0700

    Verify a warning for a class with a ref-qualified assignment (PR c++/98835).
    
    gcc/testsuite/ChangeLog:
            PR c++/98835
            * g++.dg/Wclass-memaccess-6.C: New test.

diff --git a/gcc/testsuite/g++.dg/Wclass-memaccess-6.C b/gcc/testsuite/g++.dg/Wclass-memaccess-6.C
new file mode 100644
index 00000000000..7f6fe03a939
--- /dev/null
+++ b/gcc/testsuite/g++.dg/Wclass-memaccess-6.C
@@ -0,0 +1,18 @@
+/* PR c++/98835 - -Wclass-memaccess with class with ref-qualified
+   copy-assignment operator
+   { dg-do compile { target { c++11 } } }
+   { dg-options "-Wall" } */
+
+struct Bad
+{
+  Bad* operator& () { return this; }
+  Bad & operator=(Bad const &) & = default;
+};
+
+void test ()
+{
+  static_assert (__has_trivial_copy (Bad));
+
+  // T () = T ();                                      // error
+  __builtin_memcpy (&Bad (), &Bad (), sizeof (Bad));   // { dg-warning "\\\[-Wclass-memaccess" }
+}

Reply via email to