1 // Bug: We were calling f() twice, for both the placement new and placement
2 // delete calls.
3
4 // { dg-do run }
5
operator new(__SIZE_TYPE__ sz,void *)6 void* operator new (__SIZE_TYPE__ sz, void*) { return operator new (sz); }
operator delete(void * p,void *)7 void operator delete (void* p, void*) { operator delete (p); }
8
AA9 struct A { A() { throw 1; } };
10
11 int c;
f()12 void *f() { ++c; return 0; }
13
main()14 int main()
15 {
16 try
17 {
18 new (f()) A;
19 }
20 catch (...) {}
21 return c != 1;
22 }
23