1// { dg-do run  }
2// GROUPS passed vtable
3extern "C" int printf (const char *, ...);
4enum E { vf_request, vf_event } want;
5
6int errs = 0;
7
8class ivResource {
9public:
10  virtual ~ivResource () { }
11};
12
13class ivHandler   : public ivResource   {
14public:
15  virtual void event() { }
16};
17
18class ivGlyph   : public ivResource   {
19public:
20  virtual ~ivGlyph  () { }
21  virtual void request () {
22    if (want!=vf_request)
23      ++errs;
24  }
25};
26
27class ItemView : public ivGlyph, public ivHandler {
28public:
29  virtual void event () {
30    if (want!=vf_event)
31      ++errs;
32  }
33} a;
34
35ivGlyph *bar() {
36  return &a;
37}
38
39ivHandler *bar2() {
40  return &a;
41}
42
43int main() {
44  want=vf_request;
45  bar()->request();
46  want=vf_event;
47  bar2()->event();
48  if (errs) {
49    printf("FAIL\n");
50    return 1;
51  }
52  printf("PASS\n");
53  return 0;
54}
55