// { dg-do run { xfail sparc64-*-elf arm-*-pe } } // { dg-options "-fexceptions" } // prms-id: 9706 #include <stdlib.h> int count, acount; void *operator new(size_t sz) { ++count; return malloc (sz); } void operator delete(void *p) throw() { --count; free (p); } class A { public: A() { ++acount; } A(const A&) { ++acount; } ~A() { --acount; } }; int main() { int i; // The standard library may have called new and/or delete during // startup, so we have to reset the counter here. count = 0; for( i = 0; i < 10; i++ ) { try { throw A(); } catch (A& a) { } } if (acount) return 1; if (count) return 2; }