| /* { dg-do compile } */ | |
| /* { dg-options "-O2 -fdump-ipa-devirt" } */ | |
| struct Interface { | |
| virtual ~Interface() {} | |
| virtual void virtualFunc() = 0; | |
| virtual void virtualFunc2() = 0; | |
| }; | |
| struct Concrete : Interface { | |
| int counter_; | |
| Concrete() : counter_(0) {} | |
| void virtualFunc() { counter_++; } | |
| void virtualFunc2() { counter_++; } | |
| }; | |
| void test(Interface &c) { | |
| c.virtualFunc(); | |
| c.virtualFunc2(); | |
| } | |
| /* { dg-final { scan-ipa-dump "2 speculatively devirtualized" "devirt" } } */ |