OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.old-deja/] [g++.brendan/] [dtors3.C] - Blame information for rev 699

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 699 jeremybenn
// { dg-do run  }
2
// GROUPS passed destructors
3
// Check that member and base classes get properly destructed
4
// when an object of a derived class is destructed via a pointer
5
// to it which only has a "compile-time" type of "pointer-to-base".
6
//
7
// Note that in order for this test to work properly, the destructor
8
// for the base class should be explicitly declared to be virtual.
9
 
10
extern "C" int printf (const char *, ...);
11
 
12
int member_destructor_calls = 0;
13
int middle_destructor_calls = 0;
14
 
15
struct member_type {
16
        int data_member;
17
        member_type () {}
18
        ~member_type ();
19
};
20
 
21
struct base {
22
        int data_member;
23
        base () {}
24
        virtual ~base ();
25
};
26
 
27
struct middle : public base {
28
        member_type member1;
29
        member_type member2;
30
        middle () {}
31
        ~middle ();             // should be implicitly virtual
32
};
33
 
34
struct derived : public middle {
35
        member_type member1;
36
        member_type member2;
37
        //~derived () {}
38
};
39
 
40
int main ()
41
{
42
        base* bp = new derived;
43
        delete bp;
44
        derived *dp = new derived;
45
        delete dp;
46
 
47
        if ((member_destructor_calls != 8) || (middle_destructor_calls != 2))
48
          { printf ("FAIL\n"); return 1; }
49
        else
50
          printf ("PASS\n");
51
 
52
        return 0;
53
}
54
 
55
member_type::~member_type ()
56
{
57
        member_destructor_calls++;
58
}
59
 
60
base::~base ()
61
{
62
}
63
 
64
middle::~middle ()
65
{
66
        middle_destructor_calls++;
67
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.