| // { dg-do run } |
| // This one check for objects being destroyed twice. The bug it is |
| // looking for is the extra dtor call on C() even though it is never |
| // built. |
| // prms-id: 783 |
| |
| extern "C" int printf (const char *, ...); |
| extern "C" void exit (int); |
| |
| class C { |
| int i; |
| public: |
| // C() {printf ("C ctor at %x\n", this);} |
| // ~C() {printf ("C dtor at %x\n", this);} |
| C() { |
| i = 1; |
| } |
| ~C() { |
| if (i != 1) { |
| exit(1); |
| } |
| i = 0; |
| } |
| }; |
| |
| C g; |
| |
| C func() { |
| return g; |
| } |
| |
| int main(int argc, char**argv) { |
| C c,d; |
| // printf ("\n"); |
| c = (argc != 1) ? C() : d; |
| // printf ("\n"); |
| return 0; |
| } |