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