1 // { dg-do run } 2 // GROUPS passed construct-destruct 3 /* g++ constructs j 13 times, and destructs it once. */ 4 5 extern "C" { 6 int printf (const char *, ...); 7 void exit(int); 8 } 9 foo()10void foo() { 11 } 12 13 class C { 14 int val; 15 public: 16 static int count; C(int ii)17 C(int ii) { 18 val = ii; 19 ++count; 20 printf("up\n"); 21 } ~C()22 ~C() { 23 --count; 24 printf("down\n"); 25 } 26 int operator ++() { 27 return ++val; 28 } 29 operator int() { 30 return val; 31 } 32 }; 33 34 int C::count = 0; 35 bar()36void bar() { 37 for (int ii=0; ii<13; ++ii) 38 for (C j=1; j<9; ++j) 39 foo(); 40 } 41 main()42int main() { 43 bar(); 44 if (C::count) 45 { 46 printf("FAIL\n"); 47 exit(1); 48 } 49 else 50 { 51 printf("PASS\n"); 52 } 53 return 0; 54 } 55