diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.other/dtor10.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/dtor10.C | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.other/dtor10.C b/gcc/testsuite/g++.old-deja/g++.other/dtor10.C new file mode 100644 index 000000000..81ed0c1ac --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/dtor10.C @@ -0,0 +1,41 @@ +// { 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); +} + |