// { dg-do run } // GROUPS passed construct-destruct /* g++ constructs j 13 times, and destructs it once. */ extern "C" { int printf (const char *, ...); void exit(int); } void foo() { } class C { int val; public: static int count; C(int ii) { val = ii; ++count; printf("up\n"); } ~C() { --count; printf("down\n"); } int operator ++() { return ++val; } operator int() { return val; } }; int C::count = 0; void bar() { for (int ii=0; ii<13; ++ii) for (C j=1; j<9; ++j) foo(); } int main() { bar(); if (C::count) { printf("FAIL\n"); exit(1); } else { printf("PASS\n"); } return 0; }