1 // { dg-do run  }
2 // prms-id: 4736
3 
4 int did_fail;
5 
6 class Rep {
7 public:
~Rep()8   virtual ~Rep() { }
9 };
10 
11 class Rep_1 : public Rep {
12 };
13 
14 class VBaseMain {
15 public:
~VBaseMain()16   virtual ~VBaseMain() { }
17 };
18 
19 class OtherVBase {
20 public:
~OtherVBase()21   virtual ~OtherVBase() { }
22 };
23 
24 class Rep_2 : public Rep {
25 };
26 
27 class DVBase : public VBaseMain, public Rep_2, public OtherVBase {
28 public:
~DVBase()29   virtual ~DVBase() { }
30 };
31 
32 class Main : public Rep_1, virtual public DVBase {
33 public:
~Main()34   virtual ~Main() { did_fail = 0; }
35 };
36 
main()37 int main() {
38   Main* m;
39   did_fail = 1;
40   delete new Main;
41   if (did_fail)
42     return 1;
43   did_fail = 1;
44   delete (Rep*)(Rep_1*)new Main;
45   if (did_fail)
46     return 2;
47   did_fail = 1;
48   delete (DVBase*)new Main;
49   if (did_fail)
50     return 3;
51   did_fail = 1;
52   delete (VBaseMain*)(DVBase*)new Main;
53   if (did_fail)
54     return 4;
55   did_fail = 1;
56   delete (Rep*)(Rep_2*)(DVBase*)new Main;
57   if (did_fail)
58     return 5;
59   did_fail = 1;
60   delete (OtherVBase*)(DVBase*)new Main;
61   if (did_fail)
62     return 6;
63 }
64