diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.mike/init1.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.mike/init1.C | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/init1.C b/gcc/testsuite/g++.old-deja/g++.mike/init1.C new file mode 100644 index 000000000..5bc1ea4a9 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.mike/init1.C @@ -0,0 +1,28 @@ +// The VxWorks kernel has no implementation of atexit, so local statics +// are never destroyed. +// { dg-do run { xfail vxworks_kernel } } +int count; + +extern "C" void _exit(int); + +struct C { + ~C() { if (count != 1) _exit(1); } +} c; + +class A { +public: + ~A () { ++count; } +}; + +void f() { + static A a; +} + +void g() { + // Since this isn't constructed, we can't destruct it. + static A a; +} + +int main () { + f(); +} |