view gcc/testsuite/g++.dg/Wclass-memaccess-4.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line source

/* 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;
}