// { dg-do assemble } // { dg-options "-O1" } // Origin: Jakub Jelinek class Type; template class X { public: X(); inline X(int); inline ~X(); }; template const Type &foo(const X *); template inline X::X(int x) { const Type &a = foo(this); } template inline X::~X() { const Type &a = foo(this); } class Y { X a; public: Y(const X &x = X()); }; Y::Y(const X &x) : a(1) { }