blob: 5e1e322344af89573d1a90c60bdca4d74a1bb50a [file] [log] [blame]
// { dg-do run }
// { dg-options "-O2" }
struct X {
static struct X saved;
int *p;
X() { __builtin_memcpy (this, &saved, sizeof (X)); }
};
X X::saved;
void __attribute__((noinline)) operator delete (void *p)
{
__builtin_memcpy (&X::saved, p, sizeof (X));
}
int main()
{
int y = 1;
X *p = new X;
p->p = &y;
::operator delete (p);
X *q = new X;
*(q->p) = 2;
if (y != 2)
__builtin_abort ();
}