| /* PR c++/84850 - missing -Wclass-memaccess for a memcpy in a copy ctor |
| with a non-trivial member |
| { dg-do compile } |
| { dg-options "-Wclass-memaccess -ftrack-macro-expansion=0" } */ |
| |
| typedef __SIZE_TYPE__ size_t; |
| |
| extern "C" void* memcpy (void*, const void*, size_t); |
| |
| struct A |
| { |
| const int &r; |
| |
| A (); |
| |
| A (const A&); |
| |
| virtual ~A (); |
| }; |
| |
| struct C |
| { |
| A a; |
| |
| C (const C&); |
| |
| C& operator= (const C&); |
| }; |
| |
| C::C (const C &c) |
| { |
| memcpy (this, &c, sizeof c); // { dg-warning "\\\[-Wclass-memaccess]" } |
| } |
| |
| C& C::operator= (const C &c) |
| { |
| memcpy (this, &c, sizeof c); // { dg-warning "\\\[-Wclass-memaccess]" } |
| return *this; |
| } |