diff options
author | Reid Kleckner <reid@kleckner.net> | 2013-12-13 00:53:54 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2013-12-13 00:53:54 +0000 |
commit | 6fe771ad9ba220e35217aa3ee2927af396e6079a (patch) | |
tree | a9e09dddc750d3028b03609f735aed4a187d1c4c /clang/lib/CodeGen/CGClass.cpp | |
parent | 25e1a5e7e325e68c46b63594ca85d467b4b00126 (diff) | |
download | bcm5719-llvm-6fe771ad9ba220e35217aa3ee2927af396e6079a.tar.gz bcm5719-llvm-6fe771ad9ba220e35217aa3ee2927af396e6079a.zip |
Move C++ destructor emission into CGCXXABI
No functionality change. Only Itanium C++ destructors have implicit VTT
parameters.
llvm-svn: 197194
Diffstat (limited to 'clang/lib/CodeGen/CGClass.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGClass.cpp | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp index d503d332e7d..7a0391b9b9c 100644 --- a/clang/lib/CodeGen/CGClass.cpp +++ b/clang/lib/CodeGen/CGClass.cpp @@ -1814,23 +1814,8 @@ void CodeGenFunction::EmitCXXDestructorCall(const CXXDestructorDecl *DD, bool ForVirtualBase, bool Delegating, llvm::Value *This) { - GlobalDecl GD(DD, Type); - llvm::Value *VTT = GetVTTParameter(GD, ForVirtualBase, Delegating); - llvm::Value *Callee = 0; - if (getLangOpts().AppleKext) - Callee = BuildAppleKextVirtualDestructorCall(DD, Type, - DD->getParent()); - - if (!Callee) - Callee = CGM.GetAddrOfCXXDestructor(DD, Type); - - if (DD->isVirtual()) - This = CGM.getCXXABI().adjustThisArgumentForVirtualCall(*this, GD, This); - - // FIXME: Provide a source location here. - EmitCXXMemberCall(DD, SourceLocation(), Callee, ReturnValueSlot(), This, - VTT, getContext().getPointerType(getContext().VoidPtrTy), - 0, 0); + CGM.getCXXABI().EmitDestructorCall(*this, DD, Type, ForVirtualBase, + Delegating, This); } namespace { |