1// { dg-do run  }
2void *vp;
3
4class silly {
5public:
6  virtual int b() { return 1; }
7};
8class solly : silly {
9public:
10  virtual int b() { return 2; }
11};
12class thing {
13public:
14  virtual int a() { return 3; }
15};
16class thong : public solly, public thing {
17public:
18  virtual int a() {
19    if (this != vp) return 4;
20    else return 0;
21  }
22};
23
24typedef int(thing::*ping)();
25ping qq = &thing::a;
26
27int main() {
28  thong b;
29  vp = &b;
30  return (b.*qq)();
31}
32