// { 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;
}
