| // The VxWorks kernel has no implementation of atexit, so local statics |
| // are never destroyed. |
| // { dg-do run { xfail vxworks_kernel } } |
| // This is a poor test case, it is meant to ensure that function local |
| // statics are destroyed at the right time. See PR 2736 for details. |
| // prms-id: 2736 |
| |
| #include <stdlib.h> |
| |
| int count; |
| |
| struct A { |
| int which; |
| A(int i) :which(i) { |
| // printf("ctor %x\n", this); |
| } |
| ~A() { |
| // printf("dtor %x\n", this); |
| if (++count != which) |
| abort (); |
| } |
| }; |
| |
| void |
| foo() { |
| static A a(1); |
| } |
| |
| A a(2); |
| |
| int main() { |
| foo(); |
| } |