Lines Matching defs:Dtor
115 // TODO: if we're currently emitting a complete-object ctor/dtor,
443 // If the record matches the base, this is the complete ctor/dtor
446 "doing no-op VTT offset in base dtor/ctor?");
850 // Emit code in ctor (Prologue==true) or dtor (Prologue==false)
1489 const CXXDestructorDecl *Dtor) {
1490 const CXXRecordDecl *ClassDecl = Dtor->getParent();
1494 if (!Dtor->hasTrivialBody())
1507 const CXXDestructorDecl *Dtor = cast<CXXDestructorDecl>(CurGD.getDecl());
1510 Stmt *Body = Dtor->getBody();
1519 EnterDtorCleanups(Dtor, Dtor_Deleting);
1520 EmitCXXDestructorCall(Dtor, Dtor_Complete, /*ForVirtualBase=*/false,
1549 "can't emit a dtor without a body for non-Microsoft ABIs");
1552 EnterDtorCleanups(Dtor, Dtor_Complete);
1555 EmitCXXDestructorCall(Dtor, Dtor_Base, /*ForVirtualBase=*/false,
1565 EnterDtorCleanups(Dtor, Dtor_Base);
1568 if (!CanSkipVTablePointerInitialization(*this, Dtor)) {
1574 InitializeVTablePointers(Dtor->getParent());
1582 assert(Dtor->isImplicit() && "bodyless dtor not implicit");
1585 // -fapple-kext must inline any call to this dtor into
1622 const CXXDestructorDecl *Dtor = cast<CXXDestructorDecl>(CGF.CurCodeDecl);
1623 const CXXRecordDecl *ClassDecl = Dtor->getParent();
1624 CGF.EmitDeleteCall(Dtor->getOperatorDelete(), CGF.LoadCXXThis(),
1638 llvm::BasicBlock *callDeleteBB = CGF.createBasicBlock("dtor.call_delete");
1639 llvm::BasicBlock *continueBB = CGF.createBasicBlock("dtor.continue");
1645 const CXXDestructorDecl *Dtor = cast<CXXDestructorDecl>(CGF.CurCodeDecl);
1646 const CXXRecordDecl *ClassDecl = Dtor->getParent();
1647 CGF.EmitDeleteCall(Dtor->getOperatorDelete(), CGF.LoadCXXThis(),
1696 const CXXDestructorDecl *Dtor;
1699 SanitizeDtorMembers(const CXXDestructorDecl *Dtor) : Dtor(Dtor) {}
1706 CGF.getContext().getASTRecordLayout(Dtor->getParent());
1721 for (const FieldDecl *Field : Dtor->getParent()->fields()) {
1752 Context.getASTRecordLayout(Dtor->getParent());
1784 const CXXDestructorDecl *Dtor;
1787 SanitizeDtorVTable(const CXXDestructorDecl *Dtor) : Dtor(Dtor) {}
1791 assert(Dtor->getParent()->isDynamicClass());
1792 (void)Dtor;
1812 "Should not emit dtor epilogue for non-exported trivial dtor!");
1820 // If there is an implicit param to the deleting dtor, it's a boolean
1821 // telling whether we should call delete at the end of the dtor.
2042 const CXXDestructorDecl *dtor = record->getDestructor();
2043 assert(!dtor->isTrivial());
2044 CGF.EmitCXXDestructorCall(dtor, Dtor_Complete, /*for vbase*/ false,
2106 // FIXME: If vtable is used by ctor/dtor, or if vtable is external and we are
2228 const CXXDestructorDecl *Dtor;
2234 : Dtor(D), Addr(Addr), Type(Type) {}
2237 CGF.EmitCXXDestructorCall(Dtor, Type, /*ForVirtualBase=*/false,
2280 const CXXDestructorDecl *Dtor;
2284 : Dtor(D), Addr(Addr) {}
2287 CGF.EmitCXXDestructorCall(Dtor, Dtor_Complete,