From cfac5ed23659ca3f2fd168e5a639a14a71880461 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 8 Feb 2016 18:41:35 +0100 Subject: [PATCH] re PR ipa/69239 (g++.dg/ipa/devirt-c-3.C FAILs with -O2 -fPIC --param=early-inlining-insns=196) PR ipa/69239 * g++.dg/ipa/pr69239.C: New test. From-SVN: r233224 --- gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/g++.dg/ipa/pr69239.C | 71 ++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ipa/pr69239.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 82521ec2935..c28912668c9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-02-08 Jakub Jelinek + + PR ipa/69239 + * g++.dg/ipa/pr69239.C: New test. + 2016-02-08 David Malcolm PR preprocessor/69664 diff --git a/gcc/testsuite/g++.dg/ipa/pr69239.C b/gcc/testsuite/g++.dg/ipa/pr69239.C new file mode 100644 index 00000000000..913e4b198c0 --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr69239.C @@ -0,0 +1,71 @@ +// PR ipa/69239 +// { dg-do run } +// { dg-options "-O2 --param=early-inlining-insns=196" } +// { dg-additional-options "-fPIC" { target fpic } } + +struct D +{ + float f; + D () {} + virtual float bar (float z); +}; + +struct A +{ + A (); + virtual int foo (int i); +}; + +struct B : public D, public A +{ + virtual int foo (int i); +}; + +float +D::bar (float) +{ + return f / 2; +} + +int +A::foo (int i) +{ + return i + 1; +} + +int +B::foo (int i) +{ + return i + 2; +} + +int __attribute__ ((noinline,noclone)) +baz () +{ + return 1; +} + +static int __attribute__ ((noinline)) +fn (A *obj, int i) +{ + return obj->foo (i); +} + +inline __attribute__ ((always_inline)) +A::A () +{ + if (fn (this, baz ()) != 2) + __builtin_abort (); +} + +static void +bah () +{ + B b; +} + +int +main () +{ + bah (); +} -- 2.30.2