/* { 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; | |
} | |