// { dg-do run } | |
// Origin: Mark Mitchell <mark@codesourcery.com> | |
extern "C" void abort (); | |
int j; | |
struct S { | |
static S* s[5]; | |
S () { s[j++] = this; } | |
S (const S&) { s[j++] = this; } | |
~S () { | |
for (int k = 0; k < j; ++k) | |
if (s[k] == this) | |
return; | |
abort (); | |
} | |
}; | |
S* S::s[5]; | |
struct T { | |
int i; | |
S s; | |
}; | |
T t; | |
T f () { | |
return t; | |
} | |
void g (S) { | |
} | |
int main () | |
{ | |
g (f ().s); | |
} | |