| // { 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; |
| } |