// Bug: We were calling f() twice, for both the placement new and placement // delete calls. // { dg-do run } void* operator new (__SIZE_TYPE__ sz, void*) { return operator new (sz); } void operator delete (void* p, void*) { operator delete (p); } struct A { A() { throw 1; } }; int c; void *f() { ++c; return 0; } int main() { try { new (f()) A; } catch (...) {} return c != 1; }