Lines Matching refs:Destructor
10550 bool Sema::CheckDestructor(CXXDestructorDecl *Destructor) { in CheckDestructor() argument
10551 CXXRecordDecl *RD = Destructor->getParent(); in CheckDestructor()
10553 if (!Destructor->getOperatorDelete() && Destructor->isVirtual()) { in CheckDestructor()
10556 if (!Destructor->isImplicit()) in CheckDestructor()
10557 Loc = Destructor->getLocation(); in CheckDestructor()
10575 ContextRAII SwitchContext(*this, Destructor); in CheckDestructor()
10592 Destructor->setOperatorDelete(OperatorDelete, ThisArg); in CheckDestructor()
13716 CXXDestructorDecl *Destructor = CXXDestructorDecl::Create( in DeclareImplicitDestructor() local
13723 Destructor->setAccess(AS_public); in DeclareImplicitDestructor()
13724 Destructor->setDefaulted(); in DeclareImplicitDestructor()
13726 setupImplicitSpecialMemberType(Destructor, Context.VoidTy, None); in DeclareImplicitDestructor()
13730 Destructor, in DeclareImplicitDestructor()
13736 Destructor->setTrivial(ClassDecl->hasTrivialDestructor()); in DeclareImplicitDestructor()
13737 Destructor->setTrivialForCall(ClassDecl->hasAttr<TrivialABIAttr>() || in DeclareImplicitDestructor()
13744 CheckImplicitSpecialMemberDeclaration(S, Destructor); in DeclareImplicitDestructor()
13750 ShouldDeleteSpecialMember(Destructor, CXXDestructor)) in DeclareImplicitDestructor()
13751 SetDeclDeleted(Destructor, ClassLoc); in DeclareImplicitDestructor()
13755 PushOnScopeChains(Destructor, S, false); in DeclareImplicitDestructor()
13756 ClassDecl->addDecl(Destructor); in DeclareImplicitDestructor()
13758 return Destructor; in DeclareImplicitDestructor()
13762 CXXDestructorDecl *Destructor) { in DefineImplicitDestructor() argument
13763 assert((Destructor->isDefaulted() && in DefineImplicitDestructor()
13764 !Destructor->doesThisDeclarationHaveABody() && in DefineImplicitDestructor()
13765 !Destructor->isDeleted()) && in DefineImplicitDestructor()
13767 if (Destructor->willHaveBody() || Destructor->isInvalidDecl()) in DefineImplicitDestructor()
13770 CXXRecordDecl *ClassDecl = Destructor->getParent(); in DefineImplicitDestructor()
13773 SynthesizedFunctionScope Scope(*this, Destructor); in DefineImplicitDestructor()
13778 Destructor->getType()->castAs<FunctionProtoType>()); in DefineImplicitDestructor()
13784 MarkBaseAndMemberDestructorsReferenced(Destructor->getLocation(), in DefineImplicitDestructor()
13785 Destructor->getParent()); in DefineImplicitDestructor()
13787 if (CheckDestructor(Destructor)) { in DefineImplicitDestructor()
13788 Destructor->setInvalidDecl(); in DefineImplicitDestructor()
13792 SourceLocation Loc = Destructor->getEndLoc().isValid() in DefineImplicitDestructor()
13793 ? Destructor->getEndLoc() in DefineImplicitDestructor()
13794 : Destructor->getLocation(); in DefineImplicitDestructor()
13795 Destructor->setBody(new (Context) CompoundStmt(Loc)); in DefineImplicitDestructor()
13796 Destructor->markUsed(Context); in DefineImplicitDestructor()
13799 L->CompletedImplicitDefinition(Destructor); in DefineImplicitDestructor()
13804 CXXDestructorDecl *Destructor) { in CheckCompleteDestructorVariant() argument
13805 if (Destructor->isInvalidDecl()) in CheckCompleteDestructorVariant()
13808 CXXRecordDecl *ClassDecl = Destructor->getParent(); in CheckCompleteDestructorVariant()
13814 SynthesizedFunctionScope Scope(*this, Destructor); in CheckCompleteDestructorVariant()
13819 MarkVirtualBaseDestructorsReferenced(Destructor->getLocation(), ClassDecl); in CheckCompleteDestructorVariant()
13866 void Sema::AdjustDestructorExceptionSpec(CXXDestructorDecl *Destructor) { in AdjustDestructorExceptionSpec() argument
13870 if (Destructor->isDependentContext()) in AdjustDestructorExceptionSpec()
13877 const auto *DtorType = Destructor->getType()->castAs<FunctionProtoType>(); in AdjustDestructorExceptionSpec()
13886 EPI.ExceptionSpec.SourceDecl = Destructor; in AdjustDestructorExceptionSpec()
13887 Destructor->setType(Context.getFunctionType(Context.VoidTy, None, EPI)); in AdjustDestructorExceptionSpec()
15624 CXXDestructorDecl *Destructor = LookupDestructor(ClassDecl); in FinalizeVarWithDestructor() local
15630 MarkFunctionReferenced(VD->getLocation(), Destructor); in FinalizeVarWithDestructor()
15631 CheckDestructorAccess(VD->getLocation(), Destructor, in FinalizeVarWithDestructor()
15634 DiagnoseUseOfDecl(Destructor, VD->getLocation()); in FinalizeVarWithDestructor()
15637 if (Destructor->isTrivial()) return; in FinalizeVarWithDestructor()
15641 if (Destructor->isConstexpr()) { in FinalizeVarWithDestructor()
17953 if (CXXDestructorDecl *Destructor = LookupDestructor(RD)) { in SetIvarInitializers() local
17954 MarkFunctionReferenced(Field->getLocation(), Destructor); in SetIvarInitializers()
17955 CheckDestructorAccess(Field->getLocation(), Destructor, in SetIvarInitializers()