// { dg-do run } // InterViews (ibuild) requires this to work. extern "C" void exit(int); void *old; class c1 { int i; public: c1 () {} }; class c2 { int j; public: c2 () {} }; class c3 : public c1, public c2 { public: c3 () { old = this; // printf("new object c3 at %x\n", (int)this); } } }; c2* f () { c2* n = new c3 (); // printf ("new object c3 casted to c2 at %x\n", (int)n); return n; } int main () { c3* o = (c3*)f (); // printf("new object c3, upcasted from c2 at %x\n", (int)o); // if old and o are not the same, fail the test case. if (old != o) exit(1); return 0; }