diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/ipa/pr46053.C')
-rw-r--r-- | gcc/testsuite/g++.dg/ipa/pr46053.C | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/ipa/pr46053.C b/gcc/testsuite/g++.dg/ipa/pr46053.C new file mode 100644 index 000000000..7be6fc3a0 --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr46053.C @@ -0,0 +1,41 @@ +/* { 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; +} |