diff options
author | Marco Antognini <marco.antognini@arm.com> | 2019-07-22 09:39:13 +0000 |
---|---|---|
committer | Marco Antognini <marco.antognini@arm.com> | 2019-07-22 09:39:13 +0000 |
commit | 88559637641e993895337e1047a0bd787fecc647 (patch) | |
tree | 639b057daba633db68b8fa4d34a957913786c64f /clang/lib/CodeGen/CodeGenFunction.h | |
parent | 6771a89fa01ffb1ea8702d7b07e259750ae62f1c (diff) | |
download | bcm5719-llvm-88559637641e993895337e1047a0bd787fecc647.tar.gz bcm5719-llvm-88559637641e993895337e1047a0bd787fecc647.zip |
[OpenCL] Improve destructor support in C++ for OpenCL
This re-applies r366422 with a fix for Bug PR42665 and a new regression
test.
llvm-svn: 366670
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index 06ef2dff7e9..c3060d1fb35 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -675,7 +675,8 @@ public: /// PushDestructorCleanup - Push a cleanup to call the /// complete-object variant of the given destructor on the object at /// the given address. - void PushDestructorCleanup(const CXXDestructorDecl *Dtor, Address Addr); + void PushDestructorCleanup(const CXXDestructorDecl *Dtor, QualType T, + Address Addr); /// PopCleanupBlock - Will pop the cleanup entry on the stack and /// process all branch fixups. @@ -2554,8 +2555,8 @@ public: static Destroyer destroyCXXObject; void EmitCXXDestructorCall(const CXXDestructorDecl *D, CXXDtorType Type, - bool ForVirtualBase, bool Delegating, - Address This); + bool ForVirtualBase, bool Delegating, Address This, + QualType ThisTy); void EmitNewArrayInitializer(const CXXNewExpr *E, QualType elementType, llvm::Type *ElementTy, Address NewPtr, @@ -3677,9 +3678,9 @@ public: llvm::Value *ImplicitParam, QualType ImplicitParamTy, const CallExpr *E, CallArgList *RtlArgs); - RValue EmitCXXDestructorCall(GlobalDecl Dtor, - const CGCallee &Callee, - llvm::Value *This, llvm::Value *ImplicitParam, + RValue EmitCXXDestructorCall(GlobalDecl Dtor, const CGCallee &Callee, + llvm::Value *This, QualType ThisTy, + llvm::Value *ImplicitParam, QualType ImplicitParamTy, const CallExpr *E); RValue EmitCXXMemberCallExpr(const CXXMemberCallExpr *E, ReturnValueSlot ReturnValue); |