diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2019-06-26 08:51:50 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2019-06-26 08:51:50 +0000 |
commit | 2bca2d6a7274f4119d36285f386cd8a1e7f72334 (patch) | |
tree | 093dbc6372d65478cb8397143e7e994636c979c0 /gcc | |
parent | d55c1ffd497193b56ee9f7540d5b0eadf6717c42 (diff) | |
download | gcc-2bca2d6a7274f4119d36285f386cd8a1e7f72334.zip gcc-2bca2d6a7274f4119d36285f386cd8a1e7f72334.tar.gz gcc-2bca2d6a7274f4119d36285f386cd8a1e7f72334.tar.bz2 |
re PR c++/67184 (Missed optimization with C++11 final specifier)
2019-06-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/67184
PR c++/69445
* g++.dg/other/final3.C: New.
* g++.dg/other/final5.C: Likewise.
From-SVN: r272675
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/final3.C | 28 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/final5.C | 19 |
3 files changed, 54 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a77eb7e..4fbc331 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2019-06-26 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/67184 + PR c++/69445 + * g++.dg/other/final3.C: New. + * g++.dg/other/final5.C: Likewise. + 2019-06-26 Jakub Jelinek <jakub@redhat.com> PR target/90991 diff --git a/gcc/testsuite/g++.dg/other/final3.C b/gcc/testsuite/g++.dg/other/final3.C new file mode 100644 index 0000000..a49dc22 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/final3.C @@ -0,0 +1,28 @@ +// PR c++/67184 +// { dg-do compile { target c++11 } } +// { dg-options "-fdump-tree-original" } + +struct V { + virtual void foo(); +}; + +struct wV final : V { +}; + +struct oV final : V { + void foo(); +}; + +void call(wV& x) +{ + x.foo(); + x.V::foo(); +} + +void call(oV& x) +{ + x.foo(); + x.V::foo(); +} + +// { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "original" } } diff --git a/gcc/testsuite/g++.dg/other/final5.C b/gcc/testsuite/g++.dg/other/final5.C new file mode 100644 index 0000000..8a3e608 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/final5.C @@ -0,0 +1,19 @@ +// PR c++/69445 +// { dg-do compile { target c++11 } } +// { dg-options "-fdump-tree-original" } + +struct Base { + virtual void foo() const = 0; + virtual void bar() const {} +}; + +struct C final : Base { + void foo() const { } +}; + +void func(const C & c) { + c.bar(); + c.foo(); +} + +// { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "original" } } |