// { dg-do compile }
/* { dg-require-profiling "-fprofile-generate" } */
// { dg-options "-fprofile-generate" }

// GCC used to ICE with some EH edge missing.

inline void* operator new(__SIZE_TYPE__, void* p) throw() { return p; }
inline void operator delete (void*, void*) throw() { }

template<typename T> void foo(void* p, T t)
{
  new(p) T(t);
}

void bar();

template<typename T> struct A
{
  T* p;

  A() { try { foo(p, T()); } catch(...) {} }

  A(const A&) { try { bar(); } catch(...) { throw; } }
};

A<A<int> > a;

