| // { dg-do compile } |
| // { dg-options "-O1 -fdevirtualize -finline-small-functions -fipa-cp -fipa-cp-clone --param ipa-cp-eval-threshold=125 --param max-inline-insns-single=4" } |
| |
| extern "C" int printf (const char *, ...); |
| enum E { vf_request, vf_event } want; |
| |
| int errs = 0; |
| |
| class ivResource { |
| public: |
| virtual ~ivResource () { } |
| }; |
| |
| class ivHandler : public ivResource { |
| public: |
| virtual void event() { } |
| }; |
| |
| class ivGlyph : public ivResource { |
| public: |
| virtual ~ivGlyph () { } |
| virtual void request () { |
| if (want!=vf_request) |
| ++errs; |
| } |
| }; |
| |
| class ItemView : public ivGlyph, public ivHandler { |
| public: |
| virtual void event () { |
| if (want!=vf_event) |
| ++errs; |
| } |
| } a; |
| |
| ivGlyph *bar() { |
| return &a; |
| } |
| |
| ivHandler *bar2() { |
| return &a; |
| } |
| |
| int main() { |
| want=vf_request; |
| bar()->request(); |
| want=vf_event; |
| bar2()->event(); |
| if (errs) { |
| printf("FAIL\n"); |
| return 1; |
| } |
| printf("PASS\n"); |
| return 0; |
| } |