1// { dg-do run }
2
3extern "C" void abort ();
4
5class A {
6public:
7  virtual A* getThis() { return this; }
8};
9
10class B {
11int a;
12public:
13  virtual B* getThis() { return this; }
14};
15
16class AB : public A, public B {
17public:
18  virtual AB* getThis() { return this; }
19};
20
21int main ()
22{
23  AB ab;
24
25  A* a = &ab;
26  B* b = &ab;
27
28  if (a->getThis() != a
29      || b->getThis() != b)
30    abort ();
31
32  return 0;
33}
34