diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-06-11 00:20:57 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-06-11 00:20:57 +0000 |
commit | 01b9bb42d43a041bbe75c56d3dd70c15e3cdc3a6 (patch) | |
tree | 2ec522d2663bec308c7ff82d546fddb5762de707 /clang/lib/CodeGen/MicrosoftCXXABI.cpp | |
parent | 6bd006f31a7f18a32e45ea436fb08f64bdf669b1 (diff) | |
download | bcm5719-llvm-01b9bb42d43a041bbe75c56d3dd70c15e3cdc3a6.tar.gz bcm5719-llvm-01b9bb42d43a041bbe75c56d3dd70c15e3cdc3a6.zip |
[MS ABI] Allow memfn pointers with unconvertible types to be formed
Remove the restriction which forbade forming pointers to member
functions which had parameter types or return types which were not
convertible.
llvm-svn: 239499
Diffstat (limited to 'clang/lib/CodeGen/MicrosoftCXXABI.cpp')
-rw-r--r-- | clang/lib/CodeGen/MicrosoftCXXABI.cpp | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp index de30883c545..bb95a123c55 100644 --- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp +++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp @@ -2423,12 +2423,7 @@ MicrosoftCXXABI::BuildMemberPointer(const CXXRecordDecl *RD, FirstField = CGM.GetAddrOfFunction(MD, Ty); FirstField = llvm::ConstantExpr::getBitCast(FirstField, CGM.VoidPtrTy); } else { - if (!CGM.getTypes().isFuncTypeConvertible( - MD->getType()->castAs<FunctionType>())) { - CGM.ErrorUnsupported(MD, "pointer to virtual member function with " - "incomplete return or parameter type"); - FirstField = llvm::Constant::getNullValue(CGM.VoidPtrTy); - } else if (FPT->getCallConv() == CC_X86FastCall) { + if (FPT->getCallConv() == CC_X86FastCall) { CGM.ErrorUnsupported(MD, "pointer to fastcall virtual member function"); FirstField = llvm::Constant::getNullValue(CGM.VoidPtrTy); } else { |