/* { dg-do run } */
/* { dg-options "-O2" } */
/* The tail call optimization would inapproriately tail call the 
   destructors due to not recognizing a call clobbered variable */
namespace std
{
	class locale
	{
		public:
			locale();
			~locale();
	};
}
struct B
{
	std::locale _M_buf_locale;
	virtual ~B() {}
};
struct C : public B
{
	char *s;
};
void foo ()
{
	C c;
}
int main()
{
	foo ();
	return 0;
}