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()37int 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