diff options
author | Anders Carlsson <andersca@mac.com> | 2011-01-29 05:04:11 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2011-01-29 05:04:11 +0000 |
commit | 268ab8c6b92dc40c678d8458a335698fa34915c9 (patch) | |
tree | 0c8fc26f8ab9044d2d4b416853966ea1f1b46514 /test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp | |
parent | 1679f5a84ae1e578b0de347c89eaf31e0465f33c (diff) |
When trying to get the most derived class, don't assume that we can ignore all casts. We can only ignore derived-to-base and no-op casts. Fixes selfhost.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124528 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp')
-rw-r--r-- | test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp b/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp index 08a94903d5..3de75ed3db 100644 --- a/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp +++ b/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp @@ -36,4 +36,16 @@ namespace Test3 { // CHECK: call i32 @_ZN5Test31A1fEv return b->f(); } + + // CHECK: define i32 @_ZN5Test31fERNS_1BE + int f(B &b) { + // CHECK: call i32 @_ZN5Test31A1fEv + return b.f(); + } + + // CHECK: define i32 @_ZN5Test31fEPv + int f(void *v) { + // CHECK: call i32 @_ZN5Test31A1fEv + return static_cast<B*>(v)->f(); + } } |