diff options
| author | Anders Carlsson <andersca@mac.com> | 2011-01-29 03:52:01 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2011-01-29 03:52:01 +0000 |
| commit | 1ae64c5a9d1de20e0f321649f17708e95b3fda1a (patch) | |
| tree | 2e16c40a601246c0d4db80d8093a7748deea033d /clang/test/CodeGenCXX | |
| parent | a376b536951f892bcc31928a7a9cc205d5d9bc1b (diff) | |
| download | bcm5719-llvm-1ae64c5a9d1de20e0f321649f17708e95b3fda1a.tar.gz bcm5719-llvm-1ae64c5a9d1de20e0f321649f17708e95b3fda1a.zip | |
When calling a virtual member function on a base class and the most derived class is marked 'final', we can devirtualize the call.
llvm-svn: 124524
Diffstat (limited to 'clang/test/CodeGenCXX')
| -rw-r--r-- | clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp b/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp index f6f2a491339..08a94903d52 100644 --- a/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp +++ b/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp @@ -23,3 +23,17 @@ namespace Test2 { return a->f(); } } + +namespace Test3 { + struct A { + virtual int f(); + }; + + struct B final : A { }; + + // CHECK: define i32 @_ZN5Test31fEPNS_1BE + int f(B *b) { + // CHECK: call i32 @_ZN5Test31A1fEv + return b->f(); + } +} |

