// { dg-do compile } // { dg-options "-O2 -Wno-pmf-conversions -fno-checking" } class c { long b; }; class B { public: typedef void *d; }; class aa { public: aa(B::d); }; class e : public B { public: e(); }; unsigned int f; struct g { struct h : c { h(unsigned int &i) : c(reinterpret_cast(i)) {} unsigned int ad(); }; }; class n : g { public: n(int); void j() { unsigned int a; h k(a); __atomic_compare_exchange_n(&f, &a, k.ad(), true, 3, 0); } }; int l; class m : e { void ar() { n b(l); b.j(); } virtual void bd() { aa(d(&m::ar)); } }; void o() { new m; }