1/* { dg-do run } */
2/* { dg-options "-O2" } */
3
4/* The tail call optimization would inapproriately tail call the
5   destructors due to not recognizing a call clobbered variable */
6namespace std
7{
8	class locale
9	{
10		public:
11			locale();
12			~locale();
13	};
14}
15
16struct B
17{
18	std::locale _M_buf_locale;
19	virtual ~B() {}
20};
21
22struct C : public B
23{
24	char *s;
25};
26
27void foo ()
28{
29	C c;
30}
31
32int main()
33{
34	foo ();
35	return 0;
36}
37
38