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