diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-02-08 18:41:35 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-02-08 18:41:35 +0100 |
commit | cfac5ed23659ca3f2fd168e5a639a14a71880461 (patch) | |
tree | 385c809578ecf0410a4337cc75fc0dc7fd50c105 | |
parent | 44714d8ce1ec1b5ac5dc9a2ed3d57713b9253e81 (diff) | |
download | gcc-cfac5ed23659ca3f2fd168e5a639a14a71880461.zip gcc-cfac5ed23659ca3f2fd168e5a639a14a71880461.tar.gz gcc-cfac5ed23659ca3f2fd168e5a639a14a71880461.tar.bz2 |
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
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ipa/pr69239.C | 71 |
2 files changed, 76 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 82521ec..c289126 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-02-08 Jakub Jelinek <jakub@redhat.com> + + PR ipa/69239 + * g++.dg/ipa/pr69239.C: New test. + 2016-02-08 David Malcolm <dmalcolm@redhat.com> 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 0000000..913e4b1 --- /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 (); +} |