diff options
| author | John McCall <rjmccall@apple.com> | 2010-08-22 06:43:33 +0000 |
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2010-08-22 06:43:33 +0000 |
| commit | 1c456c89dc9792e5dc50ccdfc0b738c888de8ca4 (patch) | |
| tree | 57609fbd3ebf83ce657ede53bbbd2a0476d8041e /clang/lib/CodeGen/CGExprConstant.cpp | |
| parent | 84fa510aa9ee3ee97ded906fe4635c2952596fe9 (diff) | |
| download | bcm5719-llvm-1c456c89dc9792e5dc50ccdfc0b738c888de8ca4.tar.gz bcm5719-llvm-1c456c89dc9792e5dc50ccdfc0b738c888de8ca4.zip | |
Abstract out member-pointer creation. I'm really unhappy about the current
duplication between the constant and non-constant paths in all of this.
Implement ARM ABI semantics for member pointer constants and conversion.
llvm-svn: 111772
Diffstat (limited to 'clang/lib/CodeGen/CGExprConstant.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGExprConstant.cpp | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/clang/lib/CodeGen/CGExprConstant.cpp b/clang/lib/CodeGen/CGExprConstant.cpp index e72e7fd1d1c..e0335b6559b 100644 --- a/clang/lib/CodeGen/CGExprConstant.cpp +++ b/clang/lib/CodeGen/CGExprConstant.cpp @@ -455,22 +455,7 @@ public: } llvm::Constant *EmitMemberFunctionPointer(CXXMethodDecl *MD) { - assert(MD->isInstance() && "Member function must not be static!"); - - MD = MD->getCanonicalDecl(); - - const llvm::Type *PtrDiffTy = - CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType()); - - llvm::Constant *Values[2]; - - Values[0] = CGM.GetCXXMemberFunctionPointerValue(MD); - - // The adjustment will always be 0. - Values[1] = llvm::ConstantInt::get(PtrDiffTy, 0); - - return llvm::ConstantStruct::get(CGM.getLLVMContext(), - Values, 2, /*Packed=*/false); + return CGM.getCXXABI().EmitMemberFunctionPointer(MD); } llvm::Constant *VisitUnaryAddrOf(UnaryOperator *E) { |

