(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
warn/
Wclass-memaccess-4.C
/* 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;
}