summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGClass.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-12-13 00:53:54 +0000
committerReid Kleckner <reid@kleckner.net>2013-12-13 00:53:54 +0000
commit6fe771ad9ba220e35217aa3ee2927af396e6079a (patch)
treea9e09dddc750d3028b03609f735aed4a187d1c4c /clang/lib/CodeGen/CGClass.cpp
parent25e1a5e7e325e68c46b63594ca85d467b4b00126 (diff)
downloadbcm5719-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.cpp19
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 {
OpenPOWER on IntegriCloud