Lines Matching refs:Dtor
135 // TODO: if we're currently emitting a complete-object ctor/dtor,
478 // If the record matches the base, this is the complete ctor/dtor
481 "doing no-op VTT offset in base dtor/ctor?");
775 // Emit code in ctor (Prologue==true) or dtor (Prologue==false)
1425 const CXXDestructorDecl *Dtor) {
1426 const CXXRecordDecl *ClassDecl = Dtor->getParent();
1430 if (!Dtor->hasTrivialBody())
1443 const CXXDestructorDecl *Dtor = cast<CXXDestructorDecl>(CurGD.getDecl());
1451 if (DtorType != Dtor_Base && Dtor->getParent()->isAbstract()) {
1460 Stmt *Body = Dtor->getBody();
1470 EnterDtorCleanups(Dtor, Dtor_Deleting);
1472 QualType ThisTy = Dtor->getThisObjectType();
1473 EmitCXXDestructorCall(Dtor, Dtor_Complete, /*ForVirtualBase=*/false,
1500 "can't emit a dtor without a body for non-Microsoft ABIs");
1503 EnterDtorCleanups(Dtor, Dtor_Complete);
1506 QualType ThisTy = Dtor->getThisObjectType();
1507 EmitCXXDestructorCall(Dtor, Dtor_Base, /*ForVirtualBase=*/false,
1519 EnterDtorCleanups(Dtor, Dtor_Base);
1522 if (!CanSkipVTablePointerInitialization(*this, Dtor)) {
1528 InitializeVTablePointers(Dtor->getParent());
1536 assert(Dtor->isImplicit() && "bodyless dtor not implicit");
1539 // -fapple-kext must inline any call to this dtor into
1584 const CXXDestructorDecl *Dtor = cast<CXXDestructorDecl>(CGF.CurCodeDecl);
1585 const CXXRecordDecl *ClassDecl = Dtor->getParent();
1586 CGF.EmitDeleteCall(Dtor->getOperatorDelete(),
1587 LoadThisForDtorDelete(CGF, Dtor),
1595 llvm::BasicBlock *callDeleteBB = CGF.createBasicBlock("dtor.call_delete");
1596 llvm::BasicBlock *continueBB = CGF.createBasicBlock("dtor.continue");
1602 const CXXDestructorDecl *Dtor = cast<CXXDestructorDecl>(CGF.CurCodeDecl);
1603 const CXXRecordDecl *ClassDecl = Dtor->getParent();
1604 CGF.EmitDeleteCall(Dtor->getOperatorDelete(),
1605 LoadThisForDtorDelete(CGF, Dtor),
1607 assert(Dtor->getOperatorDelete()->isDestroyingOperatorDelete() ==
1675 const CXXDestructorDecl *Dtor;
1678 SanitizeDtorMembers(const CXXDestructorDecl *Dtor) : Dtor(Dtor) {}
1685 CGF.getContext().getASTRecordLayout(Dtor->getParent());
1698 const RecordDecl *Decl = Dtor->getParent();
1736 Context.getASTRecordLayout(Dtor->getParent());
1766 const CXXDestructorDecl *Dtor;
1769 SanitizeDtorVTable(const CXXDestructorDecl *Dtor) : Dtor(Dtor) {}
1773 assert(Dtor->getParent()->isDynamicClass());
1774 (void)Dtor;
1797 "Should not emit dtor epilogue for non-exported trivial dtor!");
1805 // If there is an implicit param to the deleting dtor, it's a boolean
2047 const CXXDestructorDecl *dtor = record->getDestructor();
2048 assert(!dtor->isTrivial());
2049 CGF.EmitCXXDestructorCall(dtor, Dtor_Complete, /*for vbase*/ false,
2193 // FIXME: If vtable is used by ctor/dtor, or if vtable is external and we are
2391 const CXXDestructorDecl *Dtor;
2397 : Dtor(D), Addr(Addr), Type(Type) {}
2402 QualType ThisTy = Dtor->getThisObjectType();
2403 CGF.EmitCXXDestructorCall(Dtor, Type, /*ForVirtualBase=*/false,
2450 const CXXDestructorDecl *Dtor;
2455 : Dtor(D), Addr(Addr), Ty(Ty) {}
2458 CGF.EmitCXXDestructorCall(Dtor, Dtor_Complete,