diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.brendan/dtors3.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.brendan/dtors3.C | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/dtors3.C b/gcc/testsuite/g++.old-deja/g++.brendan/dtors3.C deleted file mode 100644 index a1ca853cf91..00000000000 --- a/gcc/testsuite/g++.old-deja/g++.brendan/dtors3.C +++ /dev/null @@ -1,66 +0,0 @@ -// GROUPS passed destructors -// Check that member and base classes get properly destructed -// when an object of a derived class is destructed via a pointer -// to it which only has a "compile-time" type of "pointer-to-base". -// -// Note that in order for this test to work properly, the destructor -// for the base class should be explicitly declared to be virtual. - -extern "C" void printf (char *, ...); - -int member_destructor_calls = 0; -int middle_destructor_calls = 0; - -struct member_type { - int data_member; - member_type () {} - ~member_type (); -}; - -struct base { - int data_member; - base () {} - virtual ~base (); -}; - -struct middle : public base { - member_type member1; - member_type member2; - middle () {} - ~middle (); // should be implicitly virtual -}; - -struct derived : public middle { - member_type member1; - member_type member2; - //~derived () {} -}; - -int main () -{ - base* bp = new derived; - delete bp; - derived *dp = new derived; - delete dp; - - if ((member_destructor_calls != 8) || (middle_destructor_calls != 2)) - printf ("FAIL\n"); - else - printf ("PASS\n"); - - return 0; -} - -member_type::~member_type () -{ - member_destructor_calls++; -} - -base::~base () -{ -} - -middle::~middle () -{ - middle_destructor_calls++; -} |