diff options
| author | Reid Kleckner <reid@kleckner.net> | 2013-10-17 21:30:27 +0000 |
|---|---|---|
| committer | Reid Kleckner <reid@kleckner.net> | 2013-10-17 21:30:27 +0000 |
| commit | 5a823d5f05c2fec385ab810007db926721fbba0d (patch) | |
| tree | e8c39e446e63a0086aae9b0af552697c2b7661c5 | |
| parent | 0a558357553641dd8b336bdb4bf5d128f90811cf (diff) | |
| download | bcm5719-llvm-5a823d5f05c2fec385ab810007db926721fbba0d.tar.gz bcm5719-llvm-5a823d5f05c2fec385ab810007db926721fbba0d.zip | |
[ms-cxxabi] Error out on virtual function memptrs
These are uncommon and this is better than miscompiling.
llvm-svn: 192923
| -rw-r--r-- | clang/lib/CodeGen/MicrosoftCXXABI.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp index a8e074c7b37..ba7de89b2fc 100644 --- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp +++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp @@ -1277,6 +1277,7 @@ MicrosoftCXXABI::BuildMemberPointer(const CXXRecordDecl *RD, if (MD->isVirtual()) { // FIXME: We have to instantiate a thunk that loads the vftable and jumps to // the right offset. + CGM.ErrorUnsupported(MD, "pointer to virtual member function"); FirstField = llvm::Constant::getNullValue(CGM.VoidPtrTy); } else { const FunctionProtoType *FPT = MD->getType()->castAs<FunctionProtoType>(); |

