| /* We shall devirtualize to unreachable. No anonymous type method should surivve |
| reachability. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-ipa-whole-program-details" } */ |
| namespace { |
| class B { |
| public: |
| virtual int foo(void) |
| { |
| return 0; |
| } |
| }; |
| class A : public B { |
| public: |
| virtual int foo(void) |
| { |
| return 1; |
| } |
| }; |
| } |
| class B *b; |
| int main() |
| { |
| int c; |
| if (c) |
| { |
| class A a; |
| a.foo(); |
| class B b; |
| b.foo(); |
| } |
| return b->foo(); |
| } |
| |
| /* { dg-final { scan-ipa-dump "builtin_unreachable" "whole-program"} } */ |
| /* { dg-final { scan-ipa-dump-not "A::foo" "whole-program"} } */ |
| /* { dg-final { scan-ipa-dump-not "A::foo" "whole-program"} } */ |