| /* { dg-do run } */ | |
| /* { dg-options "-O -fipa-cp -fno-early-inlining" } */ | |
| extern "C" void abort (); | |
| struct A | |
| { | |
| virtual void foo () = 0; | |
| }; | |
| struct B : A | |
| { | |
| virtual void foo () = 0; | |
| }; | |
| struct C : A | |
| { | |
| }; | |
| struct D : C, B | |
| { | |
| int i; | |
| D () : i(0xaaaa) {} | |
| virtual void foo () | |
| { | |
| if (i != 0xaaaa) | |
| abort(); | |
| } | |
| }; | |
| static inline void bar (B &b) | |
| { | |
| b.foo (); | |
| } | |
| int main() | |
| { | |
| D d; | |
| bar (d); | |
| return 0; | |
| } |