Home | History | Annotate | Download | only in jni
      1 // PR c++/4460
      2 // Test that the cleanup for fully-constructed subobjects when a
      3 // constructor throws gets the right address for a virtual base.
      4 
      5 // { dg-do run }
      6 
      7 int r;
      8 void *p;
      9 
     10 struct VBase
     11 {
     12   virtual void f () {}
     13   VBase() { p = this; }
     14   ~VBase() { if (p != this) r = 1; }
     15 };
     16 
     17 struct  StreamBase
     18 {
     19   virtual ~StreamBase() {}
     20 };
     21 
     22 struct  Stream : public virtual VBase, public StreamBase
     23 {
     24   Stream() {}
     25   virtual ~Stream() {}
     26 };
     27 
     28 struct DerivedStream : public Stream
     29 {
     30   DerivedStream() { throw 1; }
     31 };
     32 
     33 int main() {
     34 
     35   try
     36     {
     37       DerivedStream str;
     38     }
     39   catch (...) { }
     40 
     41   return r;
     42 }
     43