Lines Matching refs:FD

1432   FunctionDecl *FD = D->getAsFunction();  in ActOnReenterFunctionContext()  local
1433 if (!FD) in ActOnReenterFunctionContext()
1438 assert(CurContext == FD->getLexicalParent() && in ActOnReenterFunctionContext()
1440 CurContext = FD; in ActOnReenterFunctionContext()
1443 for (unsigned P = 0, NumParams = FD->getNumParams(); P < NumParams; ++P) { in ActOnReenterFunctionContext()
1444 ParmVarDecl *Param = FD->getParamDecl(P); in ActOnReenterFunctionContext()
1840 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in ShouldWarnIfUnusedFileScopedDecl() local
1841 if (FD->getTemplateSpecializationKind() == TSK_ImplicitInstantiation) in ShouldWarnIfUnusedFileScopedDecl()
1845 if (FD->getTemplateSpecializationKind() == TSK_ExplicitSpecialization && in ShouldWarnIfUnusedFileScopedDecl()
1846 FD->getMemberSpecializationInfo() && !FD->isOutOfLine()) in ShouldWarnIfUnusedFileScopedDecl()
1849 if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) { in ShouldWarnIfUnusedFileScopedDecl()
1854 if (FD->isInlined() && !isMainFileLoc(*this, FD->getLocation())) in ShouldWarnIfUnusedFileScopedDecl()
1858 if (FD->doesThisDeclarationHaveABody() && in ShouldWarnIfUnusedFileScopedDecl()
1859 Context.DeclMustBeEmitted(FD)) in ShouldWarnIfUnusedFileScopedDecl()
1895 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in MarkUnusedFileScopedDecl() local
1896 const FunctionDecl *First = FD->getFirstDecl(); in MarkUnusedFileScopedDecl()
1897 if (FD != First && ShouldWarnIfUnusedFileScopedDecl(First)) in MarkUnusedFileScopedDecl()
2236 if (const auto *FD = dyn_cast<FieldDecl>(ShadowI->second)) { in ActOnPopScope() local
2237 addDiagWithPrev(D->getLocation(), FD->getLocation(), in ActOnPopScope()
2239 << D << FD << FD->getParent()); in ActOnPopScope()
2893 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in getDefinition() local
2895 if (FD->isDefined(Def, true)) in getDefinition()
2923 if (FunctionDecl *FD = dyn_cast<FunctionDecl>(New)) { in checkNewAttributesAfterDef() local
2925 S.CheckForFunctionRedefinition(FD, cast<FunctionDecl>(Def), &SkipBody); in checkNewAttributesAfterDef()
3391 if (const auto *FD = dyn_cast<FunctionDecl>(Old)) { in getNoteDiagForInvalidRedeclaration() local
3392 if (FD->getBuiltinID()) in getNoteDiagForInvalidRedeclaration()
3405 static bool canRedefineFunction(const FunctionDecl *FD, in canRedefineFunction() argument
3407 return ((FD->hasAttr<GNUInlineAttr>() || LangOpts.GNUInline) && in canRedefineFunction()
3409 FD->isInlineSpecified() && in canRedefineFunction()
3410 FD->getStorageClass() == SC_Extern); in canRedefineFunction()
3529 if (auto *FD = dyn_cast<FunctionDecl>(NewD)) in adjustDeclContextForDeclaratorDecl() local
3530 FixSemaDC(FD->getDescribedFunctionTemplate()); in adjustDeclContextForDeclaratorDecl()
4865 if (auto *FD = dyn_cast<FieldDecl>(D)) { in getNonCLikeKindForAnonymousStruct() local
4866 if (FD->hasInClassInitializer()) { in getNonCLikeKindForAnonymousStruct()
4867 auto *Init = FD->getInClassInitializer(); in getNonCLikeKindForAnonymousStruct()
5421 const auto *FD = dyn_cast<FieldDecl>(I); in findDefaultInitializer() local
5423 FD = IFD->getAnonField(); in findDefaultInitializer()
5424 if (FD && FD->hasInClassInitializer()) in findDefaultInitializer()
5425 return FD->getLocation(); in findDefaultInitializer()
5540 if (auto *FD = dyn_cast<FieldDecl>(Mem)) { in BuildAnonymousStructOrUnion() local
5544 assert(FD->getAccess() != AS_none); in BuildAnonymousStructOrUnion()
5545 if (FD->getAccess() != AS_public) { in BuildAnonymousStructOrUnion()
5546 Diag(FD->getLocation(), diag::err_anonymous_record_nonpublic_member) in BuildAnonymousStructOrUnion()
5547 << Record->isUnion() << (FD->getAccess() == AS_protected); in BuildAnonymousStructOrUnion()
5556 if (CheckNontrivialField(FD)) in BuildAnonymousStructOrUnion()
6924 if (const auto *FD = dyn_cast<FunctionDecl>(&ND)) { in checkAttributesAfterMerging() local
6929 for (TypeLoc TL = FD->getTypeSourceInfo()->getTypeLoc(); in checkAttributesAfterMerging()
6936 const auto *MD = dyn_cast<CXXMethodDecl>(FD); in checkAttributesAfterMerging()
6994 auto *FD = dyn_cast<FunctionDecl>(OldDecl); in checkDLLAttributeRedeclaration() local
6995 if (FD && FD->getTemplatedKind() == FunctionDecl::TK_NonTemplate) in checkDLLAttributeRedeclaration()
7031 } else if (const auto *FD = dyn_cast<FunctionDecl>(NewDecl)) { in checkDLLAttributeRedeclaration() local
7032 IsInline = FD->isInlined(); in checkDLLAttributeRedeclaration()
7033 IsQualifiedFriend = FD->getQualifier() && in checkDLLAttributeRedeclaration()
7034 FD->getFriendObjectKind() == Decl::FOK_Declared; in checkDLLAttributeRedeclaration()
7098 static bool isFunctionDefinitionDiscarded(Sema &S, FunctionDecl *FD) { in isFunctionDefinitionDiscarded() argument
7102 if (!FD->isInlined()) return false; in isFunctionDefinitionDiscarded()
7105 if (S.getLangOpts().CPlusPlus && !FD->hasAttr<GNUInlineAttr>()) in isFunctionDefinitionDiscarded()
7109 return S.Context.GetGVALinkageForFunction(FD) == GVA_AvailableExternally; in isFunctionDefinitionDiscarded()
7160 static bool shouldConsiderLinkage(const FunctionDecl *FD) { in shouldConsiderLinkage() argument
7161 const DeclContext *DC = FD->getDeclContext()->getRedeclContext(); in shouldConsiderLinkage()
7212 if (const auto *FD = dyn_cast<FunctionDecl>(D)) in isDeclExternC() local
7213 return FD->isExternC(); in isDeclExternC()
8179 if (FieldDecl *FD = dyn_cast<FieldDecl>(ShadowedDecl)) { in CheckShadow() local
8191 ShadowingDecls.insert({PVD->getCanonicalDecl(), FD}); in CheckShadow()
8419 if (FunctionDecl *FD = dyn_cast<FunctionDecl>(Prev)) in checkGlobalOrExternCConflict() local
8420 Prev = FD->getFirstDecl(); in checkGlobalOrExternCConflict()
8599 FunctionDecl *FD = getCurFunctionDecl(); in CheckVariableDeclarationType() local
8602 if (FD && !FD->hasAttr<OpenCLKernelAttr>()) { in CheckVariableDeclarationType()
8614 if (FD && FD->hasAttr<OpenCLKernelAttr>()) { in CheckVariableDeclarationType()
8776 const FunctionDecl *FD = cast<FunctionDecl>(CurContext); in CheckVariableDeclarationType() local
8778 Context.getFunctionFeatureMap(CallerFeatureMap, FD); in CheckVariableDeclarationType()
8785 } else if (!IsArmStreamingFunction(FD, in CheckVariableDeclarationType()
8797 const FunctionDecl *FD = cast<FunctionDecl>(CurContext); in CheckVariableDeclarationType() local
8799 Context.getFunctionFeatureMap(CallerFeatureMap, FD); in CheckVariableDeclarationType()
8901 FunctionDecl *FD = dyn_cast<FunctionDecl>(*CDecl); in ValidateCandidate() local
8903 if (FD && !FD->hasBody() && in ValidateCandidate()
8904 hasSimilarParameters(Context, FD, OriginalFD, MismatchedParams)) { in ValidateCandidate()
8905 if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) { in ValidateCandidate()
8974 FunctionDecl *FD = dyn_cast<FunctionDecl>(*Func); in DiagnoseInvalidRedeclaration() local
8975 if (FD && in DiagnoseInvalidRedeclaration()
8976 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
8981 NearMatches.push_back(std::make_pair(FD, ParamNum)); in DiagnoseInvalidRedeclaration()
8997 FunctionDecl *FD = dyn_cast<FunctionDecl>(*CDecl); in DiagnoseInvalidRedeclaration() local
8998 if (FD && !FD->hasBody() && in DiagnoseInvalidRedeclaration()
8999 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
9000 Previous.addDecl(FD); in DiagnoseInvalidRedeclaration()
9062 FunctionDecl *FD = NearMatch->first; in DiagnoseInvalidRedeclaration() local
9063 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD); in DiagnoseInvalidRedeclaration()
9069 ParmVarDecl *FDParam = FD->getParamDecl(Idx-1); in DiagnoseInvalidRedeclaration()
9071 if (Loc.isInvalid()) Loc = FD->getLocation(); in DiagnoseInvalidRedeclaration()
9077 auto DB = SemaRef.Diag(FD->getLocation(), in DiagnoseInvalidRedeclaration()
9079 << NewFDisConst << FD->getSourceRange().getEnd(); in DiagnoseInvalidRedeclaration()
9087 SemaRef.Diag(FD->getLocation(), in DiagnoseInvalidRedeclaration()
9562 for (const auto *FD : RD->fields()) { in checkIsValidOpenCLKernelParameter() local
9563 QualType QT = FD->getType(); in checkIsValidOpenCLKernelParameter()
9573 VisitStack.push_back(FD); in checkIsValidOpenCLKernelParameter()
9606 S.Diag(FD->getLocation(), diag::note_illegal_field_declared_here) in checkIsValidOpenCLKernelParameter()
9638 static bool isStdBuiltin(ASTContext &Ctx, FunctionDecl *FD, in isStdBuiltin() argument
9655 const auto *FPT = FD->getType()->castAs<FunctionProtoType>(); in isStdBuiltin()
10868 static Attr *getImplicitCodeSegAttrFromClass(Sema &S, const FunctionDecl *FD) { in getImplicitCodeSegAttrFromClass() argument
10869 const auto *Method = dyn_cast<CXXMethodDecl>(FD); in getImplicitCodeSegAttrFromClass()
10894 Attr *Sema::getImplicitCodeSegOrSectionAttrForFunction(const FunctionDecl *FD, in getImplicitCodeSegOrSectionAttrForFunction() argument
10896 if (Attr *A = getImplicitCodeSegAttrFromClass(*this, FD)) in getImplicitCodeSegOrSectionAttrForFunction()
10898 if (!FD->hasAttr<SectionAttr>() && IsDefinition && in getImplicitCodeSegOrSectionAttrForFunction()
10961 static bool CheckMultiVersionValue(Sema &S, const FunctionDecl *FD) { in CheckMultiVersionValue() argument
10962 const auto *TA = FD->getAttr<TargetAttr>(); in CheckMultiVersionValue()
10963 const auto *TVA = FD->getAttr<TargetVersionAttr>(); in CheckMultiVersionValue()
10974 S.Diag(FD->getLocation(), diag::err_bad_multiversion_option) in CheckMultiVersionValue()
10981 S.Diag(FD->getLocation(), diag::err_bad_multiversion_option) in CheckMultiVersionValue()
10988 S.Diag(FD->getLocation(), diag::err_bad_multiversion_option) in CheckMultiVersionValue()
11000 S.Diag(FD->getLocation(), diag::err_bad_multiversion_option) in CheckMultiVersionValue()
11030 const FunctionDecl *FD, in checkNonMultiVersionCompatAttributes() argument
11033 const auto Diagnose = [FD, CausedFD, MVKind](Sema &S, const Attr *A) { in checkNonMultiVersionCompatAttributes()
11034 S.Diag(FD->getLocation(), diag::err_multiversion_disallowed_other_attr) in checkNonMultiVersionCompatAttributes()
11041 for (const Attr *A : FD->attrs()) { in checkNonMultiVersionCompatAttributes()
11244 static bool CheckMultiVersionFirstFunction(Sema &S, FunctionDecl *FD) { in CheckMultiVersionFirstFunction() argument
11245 MultiVersionKind MVKind = FD->getMultiVersionKind(); in CheckMultiVersionFirstFunction()
11248 const auto *TA = FD->getAttr<TargetAttr>(); in CheckMultiVersionFirstFunction()
11249 const auto *TVA = FD->getAttr<TargetVersionAttr>(); in CheckMultiVersionFirstFunction()
11259 if ((TA || TVA) && CheckMultiVersionValue(S, FD)) { in CheckMultiVersionFirstFunction()
11260 FD->setInvalidDecl(); in CheckMultiVersionFirstFunction()
11264 if (CheckMultiVersionAdditionalRules(S, nullptr, FD, true, MVKind)) { in CheckMultiVersionFirstFunction()
11265 FD->setInvalidDecl(); in CheckMultiVersionFirstFunction()
11269 FD->setIsMultiVersion(); in CheckMultiVersionFirstFunction()
11273 static bool PreviousDeclsHaveMultiVersionAttribute(const FunctionDecl *FD) { in PreviousDeclsHaveMultiVersionAttribute() argument
11274 for (const Decl *D = FD->getPreviousDecl(); D; D = D->getPreviousDecl()) { in PreviousDeclsHaveMultiVersionAttribute()
11369 for (const auto *FD : OldFD->redecls()) { in CheckDeclarationCausesMultiVersioning() local
11370 const auto *CurTA = FD->getAttr<TargetAttr>(); in CheckDeclarationCausesMultiVersioning()
11371 const auto *CurTVA = FD->getAttr<TargetVersionAttr>(); in CheckDeclarationCausesMultiVersioning()
11374 if (PreviousDeclsHaveMultiVersionAttribute(FD) && in CheckDeclarationCausesMultiVersioning()
11377 S.Diag(FD->getLocation(), diag::err_multiversion_required_in_redecl) in CheckDeclarationCausesMultiVersioning()
12007 const auto *FD = dyn_cast<FunctionDecl>(ND); in CheckFunctionDeclaration() local
12008 return FD && !FD->hasAttr<OverloadableAttr>(); in CheckFunctionDeclaration()
12213 void Sema::CheckMain(FunctionDecl* FD, const DeclSpec& DS) { in CheckMain() argument
12221 if (FD->getStorageClass() == SC_Static) in CheckMain()
12225 if (FD->isInlineSpecified()) in CheckMain()
12235 if (FD->isConstexpr()) { in CheckMain()
12237 << FD->isConsteval() in CheckMain()
12239 FD->setConstexprKind(ConstexprSpecKind::Unspecified); in CheckMain()
12243 Diag(FD->getLocation(), diag::err_opencl_no_main) in CheckMain()
12244 << FD->hasAttr<OpenCLKernelAttr>(); in CheckMain()
12245 FD->setInvalidDecl(); in CheckMain()
12254 QualType T = FD->getType(); in CheckMain()
12261 FD->setType(QualType(FT, 0)); in CheckMain()
12262 T = Context.getCanonicalType(FD->getType()); in CheckMain()
12272 FD->setHasImplicitReturnZero(true); in CheckMain()
12274 Diag(FD->getTypeSpecStartLoc(), diag::ext_main_returns_nonint); in CheckMain()
12275 SourceRange RTRange = FD->getReturnTypeSourceRange(); in CheckMain()
12287 FD->setHasImplicitReturnZero(true); in CheckMain()
12290 SourceRange RTRange = FD->getReturnTypeSourceRange(); in CheckMain()
12291 Diag(FD->getTypeSpecStartLoc(), diag::err_main_returns_nonint) in CheckMain()
12294 FD->setInvalidDecl(true); in CheckMain()
12303 assert(FD->getNumParams() == nparams); in CheckMain()
12308 Diag(FD->getLocation(), diag::ext_variadic_main); in CheckMain()
12320 Diag(FD->getLocation(), diag::err_main_surplus_args) << nparams; in CheckMain()
12321 FD->setInvalidDecl(true); in CheckMain()
12357 Diag(FD->getLocation(), diag::err_main_arg_wrong) << i << Expected[i]; in CheckMain()
12359 FD->setInvalidDecl(true); in CheckMain()
12363 if (nparams == 1 && !FD->isInvalidDecl()) { in CheckMain()
12364 Diag(FD->getLocation(), diag::warn_main_one_arg); in CheckMain()
12367 if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) { in CheckMain()
12368 Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD; in CheckMain()
12369 FD->setInvalidDecl(); in CheckMain()
12373 static bool isDefaultStdCall(FunctionDecl *FD, Sema &S) { in isDefaultStdCall() argument
12376 if (FD->getName() == "main" || FD->getName() == "wmain") in isDefaultStdCall()
12392 void Sema::CheckMSVCRTEntryPoint(FunctionDecl *FD) { in CheckMSVCRTEntryPoint() argument
12393 QualType T = FD->getType(); in CheckMSVCRTEntryPoint()
12403 if (FD->getName() != "DllMain") in CheckMSVCRTEntryPoint()
12404 FD->setHasImplicitReturnZero(true); in CheckMSVCRTEntryPoint()
12408 if (isDefaultStdCall(FD, *this)) { in CheckMSVCRTEntryPoint()
12412 FD->setType(QualType(FT, 0)); in CheckMSVCRTEntryPoint()
12417 FD->setType(QualType(FT, 0)); in CheckMSVCRTEntryPoint()
12421 if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) { in CheckMSVCRTEntryPoint()
12422 Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD; in CheckMSVCRTEntryPoint()
12423 FD->setInvalidDecl(); in CheckMSVCRTEntryPoint()
12508 FieldDecl *FD = dyn_cast<FieldDecl>(ME->getMemberDecl()); in CheckInitListMemberExpr() local
12509 if (!FD) in CheckInitListMemberExpr()
12511 Fields.push_back(FD); in CheckInitListMemberExpr()
12512 if (FD->getType()->isReferenceType()) in CheckInitListMemberExpr()
13012 bool shouldIgnoreForRecordTriviality(const FieldDecl *FD) { in shouldIgnoreForRecordTriviality() argument
13018 return FD->hasAttr<UnavailableAttr>(); in shouldIgnoreForRecordTriviality()
13034 const FieldDecl *FD, bool InNonTrivialUnion) { in visitWithKind()
13036 return this->asDerived().visit(S.Context.getBaseElementType(AT), FD, in visitWithKind()
13038 return Super::visitWithKind(PDIK, QT, FD, InNonTrivialUnion); in visitWithKind()
13041 void visitARCStrong(QualType QT, const FieldDecl *FD, in visitARCStrong()
13044 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCStrong()
13045 << 1 << 0 << QT << FD->getName(); in visitARCStrong()
13048 void visitARCWeak(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitARCWeak()
13050 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCWeak()
13051 << 1 << 0 << QT << FD->getName(); in visitARCWeak()
13054 void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitStruct()
13073 for (const FieldDecl *FD : RD->fields()) in visitStruct() local
13074 if (!shouldIgnoreForRecordTriviality(FD)) in visitStruct()
13075 asDerived().visit(FD->getType(), FD, InNonTrivialUnion); in visitStruct()
13078 void visitTrivial(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {} in visitTrivial()
13099 const FieldDecl *FD, bool InNonTrivialUnion) { in visitWithKind()
13101 return this->asDerived().visit(S.Context.getBaseElementType(AT), FD, in visitWithKind()
13103 return Super::visitWithKind(DK, QT, FD, InNonTrivialUnion); in visitWithKind()
13106 void visitARCStrong(QualType QT, const FieldDecl *FD, in visitARCStrong()
13109 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCStrong()
13110 << 1 << 1 << QT << FD->getName(); in visitARCStrong()
13113 void visitARCWeak(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitARCWeak()
13115 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCWeak()
13116 << 1 << 1 << QT << FD->getName(); in visitARCWeak()
13119 void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitStruct()
13138 for (const FieldDecl *FD : RD->fields()) in visitStruct() local
13139 if (!shouldIgnoreForRecordTriviality(FD)) in visitStruct()
13140 asDerived().visit(FD->getType(), FD, InNonTrivialUnion); in visitStruct()
13143 void visitTrivial(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {} in visitTrivial()
13144 void visitCXXDestructor(QualType QT, const FieldDecl *FD, in visitCXXDestructor()
13165 const FieldDecl *FD, bool InNonTrivialUnion) { in visitWithKind()
13167 return this->asDerived().visit(S.Context.getBaseElementType(AT), FD, in visitWithKind()
13169 return Super::visitWithKind(PCK, QT, FD, InNonTrivialUnion); in visitWithKind()
13172 void visitARCStrong(QualType QT, const FieldDecl *FD, in visitARCStrong()
13175 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCStrong()
13176 << 1 << 2 << QT << FD->getName(); in visitARCStrong()
13179 void visitARCWeak(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitARCWeak()
13181 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCWeak()
13182 << 1 << 2 << QT << FD->getName(); in visitARCWeak()
13185 void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitStruct()
13204 for (const FieldDecl *FD : RD->fields()) in visitStruct() local
13205 if (!shouldIgnoreForRecordTriviality(FD)) in visitStruct()
13206 asDerived().visit(FD->getType(), FD, InNonTrivialUnion); in visitStruct()
13210 const FieldDecl *FD, bool InNonTrivialUnion) {} in preVisit()
13211 void visitTrivial(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {} in visitTrivial()
13212 void visitVolatileTrivial(QualType QT, const FieldDecl *FD, in visitVolatileTrivial()
14484 auto *FD = dyn_cast_or_null<FunctionDecl>(VD->getParentFunctionOrMethod()); in CheckStaticLocalForDllExport() local
14487 while (FD && !getDLLAttr(FD) && in CheckStaticLocalForDllExport()
14488 !FD->hasAttr<DLLExportStaticLocalAttr>() && in CheckStaticLocalForDllExport()
14489 !FD->hasAttr<DLLImportStaticLocalAttr>()) { in CheckStaticLocalForDllExport()
14490 FD = dyn_cast_or_null<FunctionDecl>(FD->getParentFunctionOrMethod()); in CheckStaticLocalForDllExport()
14493 if (!FD) in CheckStaticLocalForDllExport()
14497 if (Attr *A = getDLLAttr(FD)) { in CheckStaticLocalForDllExport()
14501 } else if (Attr *A = FD->getAttr<DLLExportStaticLocalAttr>()) { in CheckStaticLocalForDllExport()
14508 if (!FD->hasAttr<DLLExportAttr>()) in CheckStaticLocalForDllExport()
14509 FD->addAttr(NewAttr); in CheckStaticLocalForDllExport()
14511 } else if (Attr *A = FD->getAttr<DLLImportStaticLocalAttr>()) { in CheckStaticLocalForDllExport()
15232 static bool FindPossiblePrototype(const FunctionDecl *FD, in FindPossiblePrototype() argument
15234 for (const FunctionDecl *Prev = FD->getPreviousDecl(); Prev; in FindPossiblePrototype()
15248 ShouldWarnAboutMissingPrototype(const FunctionDecl *FD, in ShouldWarnAboutMissingPrototype() argument
15251 if (FD->isInvalidDecl()) in ShouldWarnAboutMissingPrototype()
15255 if (!FD->isGlobal()) in ShouldWarnAboutMissingPrototype()
15259 if (isa<CXXMethodDecl>(FD)) in ShouldWarnAboutMissingPrototype()
15263 if (isa<TranslationUnitDecl>(FD->getDeclContext()->getRedeclContext())) in ShouldWarnAboutMissingPrototype()
15264 if (IdentifierInfo *II = FD->getIdentifier()) in ShouldWarnAboutMissingPrototype()
15268 if (FD->isMSVCRTEntryPoint()) in ShouldWarnAboutMissingPrototype()
15272 if (FD->isInlined()) in ShouldWarnAboutMissingPrototype()
15276 if (FD->getDescribedFunctionTemplate()) in ShouldWarnAboutMissingPrototype()
15280 if (FD->isFunctionTemplateSpecialization()) in ShouldWarnAboutMissingPrototype()
15284 if (FD->hasAttr<OpenCLKernelAttr>()) in ShouldWarnAboutMissingPrototype()
15288 if (FD->isDeleted()) in ShouldWarnAboutMissingPrototype()
15293 if (!FD->isExternallyVisible()) in ShouldWarnAboutMissingPrototype()
15297 if (FindPossiblePrototype(FD, PossiblePrototype)) in ShouldWarnAboutMissingPrototype()
15304 Sema::CheckForFunctionRedefinition(FunctionDecl *FD, in CheckForFunctionRedefinition() argument
15309 !FD->isDefined(Definition, /*CheckForPendingFriendDefinition*/ true)) in CheckForFunctionRedefinition()
15314 if (FunctionDecl *OrigFD = FD->getInstantiatedFromMemberFunction()) { in CheckForFunctionRedefinition()
15319 cast<Decl>(FD->getLexicalDeclContext()))) in CheckForFunctionRedefinition()
15349 Diag(FD->getLocation(), diag::err_redefinition_extern_inline) in CheckForFunctionRedefinition()
15350 << FD << getLangOpts().CPlusPlus; in CheckForFunctionRedefinition()
15352 Diag(FD->getLocation(), diag::err_redefinition) << FD; in CheckForFunctionRedefinition()
15355 FD->setInvalidDecl(); in CheckForFunctionRedefinition()
15422 FunctionDecl *FD = nullptr; in ActOnStartOfFunctionDef() local
15425 FD = FunTmpl->getTemplatedDecl(); in ActOnStartOfFunctionDef()
15427 FD = cast<FunctionDecl>(D); in ActOnStartOfFunctionDef()
15431 if (!isLambdaCallOperator(FD)) in ActOnStartOfFunctionDef()
15437 FD->isConsteval() ? ExpressionEvaluationContext::ImmediateFunctionContext in ActOnStartOfFunctionDef()
15447 ExprEvalContexts.back().InImmediateFunctionContext = FD->isConsteval(); in ActOnStartOfFunctionDef()
15449 getLangOpts().CPlusPlus20 && FD->isImmediateEscalating(); in ActOnStartOfFunctionDef()
15452 if (const auto *Attr = FD->getAttr<AliasAttr>()) { in ActOnStartOfFunctionDef()
15453 Diag(Attr->getLocation(), diag::err_alias_is_definition) << FD << 0; in ActOnStartOfFunctionDef()
15454 FD->dropAttr<AliasAttr>(); in ActOnStartOfFunctionDef()
15455 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15457 if (const auto *Attr = FD->getAttr<IFuncAttr>()) { in ActOnStartOfFunctionDef()
15458 Diag(Attr->getLocation(), diag::err_alias_is_definition) << FD << 1; in ActOnStartOfFunctionDef()
15459 FD->dropAttr<IFuncAttr>(); in ActOnStartOfFunctionDef()
15460 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15462 if (const auto *Attr = FD->getAttr<TargetVersionAttr>()) { in ActOnStartOfFunctionDef()
15473 if (auto *Ctor = dyn_cast<CXXConstructorDecl>(FD)) { in ActOnStartOfFunctionDef()
15485 if (!FD->willHaveBody() && !FD->isLateTemplateParsed() && in ActOnStartOfFunctionDef()
15486 !FD->isThisDeclarationInstantiatedFromAFriendDefinition()) { in ActOnStartOfFunctionDef()
15487 CheckForFunctionRedefinition(FD, nullptr, SkipBody); in ActOnStartOfFunctionDef()
15497 FD->setWillHaveBody(); in ActOnStartOfFunctionDef()
15508 if (isGenericLambdaCallOperatorSpecialization(FD)) { in ActOnStartOfFunctionDef()
15511 if (FD->getTemplateSpecializationInfo() in ActOnStartOfFunctionDef()
15513 Diag(FD->getLocation(), diag::err_lambda_explicit_spec); in ActOnStartOfFunctionDef()
15514 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15528 if (unsigned BuiltinID = FD->getBuiltinID()) { in ActOnStartOfFunctionDef()
15531 Diag(FD->getLocation(), diag::err_builtin_definition) << FD; in ActOnStartOfFunctionDef()
15532 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15541 QualType ResultType = FD->getReturnType(); in ActOnStartOfFunctionDef()
15543 !FD->isInvalidDecl() && BodyKind != FnBodyKind::Delete && in ActOnStartOfFunctionDef()
15544 (RequireCompleteType(FD->getLocation(), ResultType, in ActOnStartOfFunctionDef()
15546 RequireNonAbstractType(FD->getLocation(), FD->getReturnType(), in ActOnStartOfFunctionDef()
15549 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15552 PushDeclContext(FnBodyScope, FD); in ActOnStartOfFunctionDef()
15556 CheckParmsForFunctionDef(FD->parameters(), in ActOnStartOfFunctionDef()
15562 for (Decl *NPD : FD->decls()) { in ActOnStartOfFunctionDef()
15583 for (auto *Param : FD->parameters()) { in ActOnStartOfFunctionDef()
15584 Param->setOwningFunction(FD); in ActOnStartOfFunctionDef()
15600 !FD->isInvalidDecl() && !FD->isInlined() && in ActOnStartOfFunctionDef()
15602 FD->getFormalLinkage() == Linkage::External && !FD->isTemplated() && in ActOnStartOfFunctionDef()
15603 !FD->isTemplateInstantiation()) { in ActOnStartOfFunctionDef()
15604 assert(FD->isThisDeclarationADefinition()); in ActOnStartOfFunctionDef()
15605 Diag(FD->getLocation(), diag::err_extern_def_in_header_unit); in ActOnStartOfFunctionDef()
15606 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15610 if (const FunctionProtoType *FPT = FD->getType()->getAs<FunctionProtoType>()) in ActOnStartOfFunctionDef()
15614 if (FD->hasAttr<DLLImportAttr>() && !FD->isInlined() && in ActOnStartOfFunctionDef()
15615 !FD->isTemplateInstantiation()) { in ActOnStartOfFunctionDef()
15616 assert(!FD->hasAttr<DLLExportAttr>()); in ActOnStartOfFunctionDef()
15617 Diag(FD->getLocation(), diag::err_attribute_dllimport_function_definition); in ActOnStartOfFunctionDef()
15618 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15632 Diag(FD->getLocation(), diag::warn_function_def_in_objc_container); in ActOnStartOfFunctionDef()
15637 void Sema::applyFunctionAttributesBeforeParsingBody(Decl *FD) { in applyFunctionAttributesBeforeParsingBody() argument
15638 if (!FD || FD->isInvalidDecl()) in applyFunctionAttributesBeforeParsingBody()
15640 if (auto *TD = dyn_cast<FunctionTemplateDecl>(FD)) in applyFunctionAttributesBeforeParsingBody()
15641 FD = TD->getTemplatedDecl(); in applyFunctionAttributesBeforeParsingBody()
15642 if (FD && FD->hasAttr<OptimizeNoneAttr>()) { in applyFunctionAttributesBeforeParsingBody()
15692 if (const FunctionDecl *FD = D->getAsFunction()) { in canSkipFunctionBody() local
15693 if (FD->isConstexpr()) in canSkipFunctionBody()
15698 if (FD->getReturnType()->getContainedDeducedType()) in canSkipFunctionBody()
15707 if (FunctionDecl *FD = Decl->getAsFunction()) in ActOnSkippedFunctionBody() local
15708 FD->setHasSkippedBody(); in ActOnSkippedFunctionBody()
15762 static bool methodHasName(const FunctionDecl *FD, StringRef Name) { in methodHasName() argument
15763 return isa<CXXMethodDecl>(FD) && FD->param_empty() && in methodHasName()
15764 FD->getDeclName().isIdentifier() && FD->getName() == Name; in methodHasName()
15767 bool Sema::CanBeGetReturnObject(const FunctionDecl *FD) { in CanBeGetReturnObject() argument
15768 return methodHasName(FD, "get_return_object"); in CanBeGetReturnObject()
15771 bool Sema::CanBeGetReturnTypeOnAllocFailure(const FunctionDecl *FD) { in CanBeGetReturnTypeOnAllocFailure() argument
15772 return FD->isStatic() && in CanBeGetReturnTypeOnAllocFailure()
15773 methodHasName(FD, "get_return_object_on_allocation_failure"); in CanBeGetReturnTypeOnAllocFailure()
15776 void Sema::CheckCoroutineWrapper(FunctionDecl *FD) { in CheckCoroutineWrapper() argument
15777 RecordDecl *RD = FD->getReturnType()->getAsRecordDecl(); in CheckCoroutineWrapper()
15781 if (CanBeGetReturnObject(FD) || CanBeGetReturnTypeOnAllocFailure(FD)) in CheckCoroutineWrapper()
15783 if (!FD->hasAttr<CoroWrapperAttr>()) in CheckCoroutineWrapper()
15784 Diag(FD->getLocation(), diag::err_coroutine_return_type) << RD; in CheckCoroutineWrapper()
15790 FunctionDecl *FD = dcl ? dcl->getAsFunction() : nullptr; in ActOnFinishFunctionBody() local
15792 if (FSI->UsesFPIntrin && FD && !FD->hasAttr<StrictFPAttr>()) in ActOnFinishFunctionBody()
15793 FD->addAttr(StrictFPAttr::CreateImplicit(Context)); in ActOnFinishFunctionBody()
15799 if (getLangOpts().Coroutines && FD && !FD->hasSkippedBody()) { in ActOnFinishFunctionBody()
15801 CheckCompletedCoroutineBody(FD, Body); in ActOnFinishFunctionBody()
15803 CheckCoroutineWrapper(FD); in ActOnFinishFunctionBody()
15810 ExitFunctionBodyRAII ExitRAII(*this, isLambdaCallOperator(FD)); in ActOnFinishFunctionBody()
15811 if (FD) { in ActOnFinishFunctionBody()
15821 if (!FD->isDeletedAsWritten()) in ActOnFinishFunctionBody()
15822 FD->setBody(Body); in ActOnFinishFunctionBody()
15823 FD->setWillHaveBody(false); in ActOnFinishFunctionBody()
15824 CheckImmediateEscalatingFunctionDefinition(FD, FSI); in ActOnFinishFunctionBody()
15827 if (!FD->isInvalidDecl() && Body && !FD->isDependentContext() && in ActOnFinishFunctionBody()
15828 FD->getReturnType()->isUndeducedType()) { in ActOnFinishFunctionBody()
15832 if (!FD->getReturnType()->getAs<AutoType>()) { in ActOnFinishFunctionBody()
15834 << FD->getReturnType(); in ActOnFinishFunctionBody()
15835 FD->setInvalidDecl(); in ActOnFinishFunctionBody()
15840 FD, dcl->getLocation(), Dummy, in ActOnFinishFunctionBody()
15841 FD->getReturnType()->getAs<AutoType>())) in ActOnFinishFunctionBody()
15842 FD->setInvalidDecl(); in ActOnFinishFunctionBody()
15845 } else if (getLangOpts().CPlusPlus && isLambdaCallOperator(FD)) { in ActOnFinishFunctionBody()
15859 const auto *Proto = FD->getType()->castAs<FunctionProtoType>(); in ActOnFinishFunctionBody()
15860 FD->setType(Context.getFunctionType(RetType, Proto->getParamTypes(), in ActOnFinishFunctionBody()
15867 if (FD->hasImplicitReturnZero() || FD->hasAttr<NakedAttr>()) in ActOnFinishFunctionBody()
15872 if (getLangOpts().MicrosoftExt && FD->isPureVirtual() && in ActOnFinishFunctionBody()
15873 !FD->isOutOfLine()) in ActOnFinishFunctionBody()
15874 Diag(FD->getLocation(), diag::ext_pure_function_definition); in ActOnFinishFunctionBody()
15876 if (!FD->isInvalidDecl()) { in ActOnFinishFunctionBody()
15879 if (!FD->isDeleted() && !FD->isDefaulted() && !FD->hasSkippedBody() && in ActOnFinishFunctionBody()
15880 !FD->hasAttr<NakedAttr>()) in ActOnFinishFunctionBody()
15881 DiagnoseUnusedParameters(FD->parameters()); in ActOnFinishFunctionBody()
15882 DiagnoseSizeOfParametersAndReturnValue(FD->parameters(), in ActOnFinishFunctionBody()
15883 FD->getReturnType(), FD); in ActOnFinishFunctionBody()
15886 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(FD)) in ActOnFinishFunctionBody()
15887 MarkVTableUsed(FD->getLocation(), Constructor->getParent()); in ActOnFinishFunctionBody()
15889 dyn_cast<CXXDestructorDecl>(FD)) in ActOnFinishFunctionBody()
15890 MarkVTableUsed(FD->getLocation(), Destructor->getParent()); in ActOnFinishFunctionBody()
15895 if (FD->getReturnType()->isRecordType() && in ActOnFinishFunctionBody()
15896 (!getLangOpts().CPlusPlus || !FD->isDependentContext())) in ActOnFinishFunctionBody()
15906 if (ShouldWarnAboutMissingPrototype(FD, PossiblePrototype)) { in ActOnFinishFunctionBody()
15907 Diag(FD->getLocation(), diag::warn_missing_prototype) << FD; in ActOnFinishFunctionBody()
15917 << (FD->getNumParams() != 0) in ActOnFinishFunctionBody()
15918 << (FD->getNumParams() == 0 ? FixItHint::CreateInsertion( in ActOnFinishFunctionBody()
15949 if ((FD->getReturnType()->isAnyPointerType() && in ActOnFinishFunctionBody()
15950 FD->getReturnType()->getPointeeType().isConstQualified()) || in ActOnFinishFunctionBody()
15951 FD->getReturnType().isConstQualified()) { in ActOnFinishFunctionBody()
15954 if (isLocAtConst(FD->getBeginLoc(), getSourceManager(), in ActOnFinishFunctionBody()
15957 return FD->getBeginLoc(); in ActOnFinishFunctionBody()
15959 return FD->getTypeSpecStartLoc(); in ActOnFinishFunctionBody()
15961 Diag(FD->getTypeSpecStartLoc(), in ActOnFinishFunctionBody()
15964 << (FD->getStorageClass() == SC_None in ActOnFinishFunctionBody()
15974 (void)FindPossiblePrototype(FD, PossiblePrototype); in ActOnFinishFunctionBody()
15988 if (!FD->hasWrittenPrototype() && FD->getNumParams() != 0 && in ActOnFinishFunctionBody()
16011 Diag(FD->getLocation(), diag::warn_non_prototype_changes_behavior) in ActOnFinishFunctionBody()
16027 if (FD->isMultiVersion() && FD->hasAttr<CPUDispatchAttr>() && Body) in ActOnFinishFunctionBody()
16033 if (auto *MD = dyn_cast<CXXMethodDecl>(FD)) { in ActOnFinishFunctionBody()
16040 if (FD->isInlined() && in ActOnFinishFunctionBody()
16052 MarkVTableUsed(FD->getLocation(), MD->getParent(), true); in ActOnFinishFunctionBody()
16057 assert((FD == getCurFunctionDecl(/*AllowLambdas=*/true)) && in ActOnFinishFunctionBody()
16125 if (Body && (!FD || !FD->isDefaulted())) { in ActOnFinishFunctionBody()
16129 if (FD && isa<CXXConstructorDecl>(FD) && isa<CXXTryStmt>(Body)) in ActOnFinishFunctionBody()
16158 if (!IsInstantiation && FD && in ActOnFinishFunctionBody()
16159 (FD->isConstexpr() || FD->hasAttr<MSConstexprAttr>()) && in ActOnFinishFunctionBody()
16160 !FD->isInvalidDecl() && in ActOnFinishFunctionBody()
16161 !CheckConstexprFunctionDefinition(FD, CheckConstexprKind::Diagnose)) in ActOnFinishFunctionBody()
16162 FD->setInvalidDecl(); in ActOnFinishFunctionBody()
16164 if (FD && FD->hasAttr<NakedAttr>()) { in ActOnFinishFunctionBody()
16183 Diag(FD->getAttr<NakedAttr>()->getLocation(), diag::note_attribute); in ActOnFinishFunctionBody()
16184 FD->setInvalidDecl(); in ActOnFinishFunctionBody()
16213 if (FD && ((LangOpts.OpenMP && (LangOpts.OpenMPIsTargetDevice || in ActOnFinishFunctionBody()
16216 auto ES = getEmissionStatus(FD); in ActOnFinishFunctionBody()
16219 DeclsToCheckForDeferredDiags.insert(FD); in ActOnFinishFunctionBody()
16222 if (FD && !FD->isDeleted()) in ActOnFinishFunctionBody()
16223 checkTypeSupport(FD->getType(), FD->getLocation(), FD); in ActOnFinishFunctionBody()
16367 FunctionDecl *FD = cast<FunctionDecl>(ActOnDeclarator(BlockScope, D)); in ImplicitlyDefineFunction() local
16368 FD->setImplicit(); in ImplicitlyDefineFunction()
16370 AddKnownFunctionAttributes(FD); in ImplicitlyDefineFunction()
16372 return FD; in ImplicitlyDefineFunction()
16376 FunctionDecl *FD) { in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction() argument
16377 if (FD->isInvalidDecl()) in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16380 if (FD->getDeclName().getCXXOverloadedOperator() != OO_New && in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16381 FD->getDeclName().getCXXOverloadedOperator() != OO_Array_New) in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16386 if (!FD->isReplaceableGlobalAllocationFunction(&AlignmentParam, &IsNothrow)) in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16397 if (!IsNothrow && !FD->hasAttr<ReturnsNonNullAttr>() && in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16399 FD->addAttr(ReturnsNonNullAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16415 if (!FD->hasAttr<AllocSizeAttr>()) { in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16416 FD->addAttr(AllocSizeAttr::CreateImplicit( in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16417 Context, /*ElemSizeParam=*/ParamIdx(1, FD), in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16418 /*NumElemsParam=*/ParamIdx(), FD->getLocation())); in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16427 if (AlignmentParam && !FD->hasAttr<AllocAlignAttr>()) { in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16428 FD->addAttr(AllocAlignAttr::CreateImplicit( in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16429 Context, ParamIdx(*AlignmentParam, FD), FD->getLocation())); in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16444 void Sema::AddKnownFunctionAttributes(FunctionDecl *FD) { in AddKnownFunctionAttributes() argument
16445 if (FD->isInvalidDecl()) in AddKnownFunctionAttributes()
16450 if (unsigned BuiltinID = FD->getBuiltinID()) { in AddKnownFunctionAttributes()
16455 if (!FD->hasAttr<FormatAttr>()) { in AddKnownFunctionAttributes()
16457 unsigned int NumParams = FD->getNumParams(); in AddKnownFunctionAttributes()
16459 FD->getParamDecl(FormatIdx)->getType()->isObjCObjectPointerType()) in AddKnownFunctionAttributes()
16461 FD->addAttr(FormatAttr::CreateImplicit(Context, in AddKnownFunctionAttributes()
16465 FD->getLocation())); in AddKnownFunctionAttributes()
16470 if (!FD->hasAttr<FormatAttr>()) in AddKnownFunctionAttributes()
16471 FD->addAttr(FormatAttr::CreateImplicit(Context, in AddKnownFunctionAttributes()
16475 FD->getLocation())); in AddKnownFunctionAttributes()
16480 if (!FD->hasAttr<CallbackAttr>() && in AddKnownFunctionAttributes()
16482 FD->addAttr(CallbackAttr::CreateImplicit( in AddKnownFunctionAttributes()
16483 Context, Encoding.data(), Encoding.size(), FD->getLocation())); in AddKnownFunctionAttributes()
16494 if (!FD->hasAttr<ConstAttr>() && in AddKnownFunctionAttributes()
16499 FD->addAttr(ConstAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16506 !FD->hasAttr<ConstAttr>()) { in AddKnownFunctionAttributes()
16514 FD->addAttr(ConstAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16522 !FD->hasAttr<ReturnsTwiceAttr>()) in AddKnownFunctionAttributes()
16523 FD->addAttr(ReturnsTwiceAttr::CreateImplicit(Context, in AddKnownFunctionAttributes()
16524 FD->getLocation())); in AddKnownFunctionAttributes()
16525 if (Context.BuiltinInfo.isNoThrow(BuiltinID) && !FD->hasAttr<NoThrowAttr>()) in AddKnownFunctionAttributes()
16526 FD->addAttr(NoThrowAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16527 if (Context.BuiltinInfo.isPure(BuiltinID) && !FD->hasAttr<PureAttr>()) in AddKnownFunctionAttributes()
16528 FD->addAttr(PureAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16529 if (Context.BuiltinInfo.isConst(BuiltinID) && !FD->hasAttr<ConstAttr>()) in AddKnownFunctionAttributes()
16530 FD->addAttr(ConstAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16532 !FD->hasAttr<CUDADeviceAttr>() && !FD->hasAttr<CUDAHostAttr>()) { in AddKnownFunctionAttributes()
16538 FD->addAttr(CUDADeviceAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16540 FD->addAttr(CUDAHostAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16547 if (!FD->hasAttr<AllocAlignAttr>()) in AddKnownFunctionAttributes()
16548 FD->addAttr(AllocAlignAttr::CreateImplicit(Context, ParamIdx(1, FD), in AddKnownFunctionAttributes()
16549 FD->getLocation())); in AddKnownFunctionAttributes()
16558 FD->addAttr(AllocSizeAttr::CreateImplicit( in AddKnownFunctionAttributes()
16559 Context, ParamIdx(1, FD), ParamIdx(2, FD), FD->getLocation())); in AddKnownFunctionAttributes()
16564 FD->addAttr(AllocSizeAttr::CreateImplicit(Context, ParamIdx(2, FD), in AddKnownFunctionAttributes()
16565 ParamIdx(), FD->getLocation())); in AddKnownFunctionAttributes()
16568 FD->addAttr(AllocSizeAttr::CreateImplicit(Context, ParamIdx(1, FD), in AddKnownFunctionAttributes()
16569 ParamIdx(), FD->getLocation())); in AddKnownFunctionAttributes()
16585 if (ParmVarDecl *P = FD->getParamDecl(0u); in AddKnownFunctionAttributes()
16588 LifetimeBoundAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16595 AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction(FD); in AddKnownFunctionAttributes()
16601 FD->isExternC() && !FD->hasAttr<NoThrowAttr>()) { in AddKnownFunctionAttributes()
16602 const auto *FPT = FD->getType()->getAs<FunctionProtoType>(); in AddKnownFunctionAttributes()
16604 FD->addAttr(NoThrowAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16607 IdentifierInfo *Name = FD->getIdentifier(); in AddKnownFunctionAttributes()
16610 if ((!getLangOpts().CPlusPlus && FD->getDeclContext()->isTranslationUnit()) || in AddKnownFunctionAttributes()
16611 (isa<LinkageSpecDecl>(FD->getDeclContext()) && in AddKnownFunctionAttributes()
16612 cast<LinkageSpecDecl>(FD->getDeclContext())->getLanguage() == in AddKnownFunctionAttributes()
16622 if (!FD->hasAttr<FormatAttr>()) in AddKnownFunctionAttributes()
16623 FD->addAttr(FormatAttr::CreateImplicit(Context, in AddKnownFunctionAttributes()
16626 FD->getLocation())); in AddKnownFunctionAttributes()
16632 if (!FD->hasAttr<FormatArgAttr>()) in AddKnownFunctionAttributes()
16633 FD->addAttr(FormatArgAttr::CreateImplicit(Context, ParamIdx(1, FD), in AddKnownFunctionAttributes()
16634 FD->getLocation())); in AddKnownFunctionAttributes()
18112 [](const FieldDecl *FD) { return FD->isBitField(); })) in ActOnTagFinishDefinition() argument
18517 bool Sema::CheckNontrivialField(FieldDecl *FD) { in CheckNontrivialField() argument
18518 assert(FD); in CheckNontrivialField()
18521 if (FD->isInvalidDecl() || FD->getType()->isDependentType()) in CheckNontrivialField()
18524 QualType EltTy = Context.getBaseElementType(FD->getType()); in CheckNontrivialField()
18555 SourceLocation Loc = FD->getLocation(); in CheckNontrivialField()
18557 if (!FD->hasAttr<UnavailableAttr>()) in CheckNontrivialField()
18558 FD->addAttr(UnavailableAttr::CreateImplicit(Context, "", in CheckNontrivialField()
18565 FD->getLocation(), in CheckNontrivialField()
18569 << FD->getParent()->isUnion() << FD->getDeclName() in CheckNontrivialField()
18868 FieldDecl *FD = cast<FieldDecl>(*i); in ActOnFields() local
18871 const Type *FDTy = FD->getType().getTypePtr(); in ActOnFields()
18873 if (!FD->isAnonymousStructOrUnion()) { in ActOnFields()
18875 RecFields.push_back(FD); in ActOnFields()
18880 if (FD->isInvalidDecl()) { in ActOnFields()
18898 Diag(FD->getLocation(), diag::err_field_declared_as_function) in ActOnFields()
18899 << FD->getDeclName(); in ActOnFields()
18900 FD->setInvalidDecl(); in ActOnFields()
18912 Diag(FD->getLocation(), diag::err_flexible_array_not_at_end) in ActOnFields()
18913 << FD->getDeclName() << FD->getType() in ActOnFields()
18916 FD->setInvalidDecl(); in ActOnFields()
18929 Diag(FD->getLocation(), DiagID) in ActOnFields()
18930 << FD->getDeclName() << llvm::to_underlying(Record->getTagKind()); in ActOnFields()
18937 Diag(FD->getLocation(), diag::err_flexible_array_virtual_base) in ActOnFields()
18938 << FD->getDeclName() << llvm::to_underlying(Record->getTagKind()); in ActOnFields()
18940 Diag(FD->getLocation(), diag::ext_c99_flexible_array_member) in ActOnFields()
18941 << FD->getDeclName() << llvm::to_underlying(Record->getTagKind()); in ActOnFields()
18948 QualType BaseElem = Context.getBaseElementType(FD->getType()); in ActOnFields()
18950 Diag(FD->getLocation(), diag::err_flexible_array_has_nontrivial_dtor) in ActOnFields()
18951 << FD->getDeclName() << FD->getType(); in ActOnFields()
18952 FD->setInvalidDecl(); in ActOnFields()
18965 FD->getLocation(), FD->getType(), in ActOnFields()
18968 FD->setInvalidDecl(); in ActOnFields()
18981 Diag(FD->getLocation(), diag::ext_variable_sized_type_in_struct) in ActOnFields()
18982 << FD->getDeclName() << FD->getType(); in ActOnFields()
18986 Diag(FD->getLocation(), diag::ext_flexible_array_in_struct) in ActOnFields()
18987 << FD->getDeclName(); in ActOnFields()
18992 RequireNonAbstractType(FD->getLocation(), FD->getType(), in ActOnFields()
18996 FD->setInvalidDecl(); in ActOnFields()
19004 Diag(FD->getLocation(), diag::err_statically_allocated_object) in ActOnFields()
19005 << FixItHint::CreateInsertion(FD->getLocation(), "*"); in ActOnFields()
19006 QualType T = Context.getObjCObjectPointerType(FD->getType()); in ActOnFields()
19007 FD->setType(T); in ActOnFields()
19009 FD->getType().hasNonTrivialObjCLifetime() && in ActOnFields()
19010 getSourceManager().isInSystemHeader(FD->getLocation()) && in ActOnFields()
19011 !getLangOpts().CPlusPlus && !FD->hasAttr<UnavailableAttr>() && in ActOnFields()
19012 (FD->getType().getObjCLifetime() != Qualifiers::OCL_Strong || in ActOnFields()
19013 !Context.hasDirectOwnershipQualifier(FD->getType()))) { in ActOnFields()
19020 FD->addAttr(UnavailableAttr::CreateImplicit( in ActOnFields()
19022 FD->getLocation())); in ActOnFields()
19026 if (FD->getType()->isObjCObjectPointerType() || in ActOnFields()
19027 FD->getType().isObjCGCStrong()) in ActOnFields()
19029 else if (Context.getAsArrayType(FD->getType())) { in ActOnFields()
19030 QualType BaseType = Context.getBaseElementType(FD->getType()); in ActOnFields()
19041 !shouldIgnoreForRecordTriviality(FD)) { in ActOnFields()
19042 QualType FT = FD->getType(); in ActOnFields()
19072 if (Record && FD->getType().isVolatileQualified()) in ActOnFields()
19075 if (FD->getIdentifier()) in ActOnFields()
19156 const FieldDecl *FD = dyn_cast<FieldDecl>(D); in ActOnFields() local
19157 if (!FD) { in ActOnFields()
19173 QualType FieldType = FD->getType().getDesugaredType(Context); in ActOnFields()
20162 Sema::FunctionEmissionStatus Sema::getEmissionStatus(const FunctionDecl *FD, in getEmissionStatus() argument
20164 assert(FD && "Expected non-null FunctionDecl"); in getEmissionStatus()
20168 if (LangOpts.SYCLIsDevice && FD->hasAttr<SYCLKernelAttr>()) in getEmissionStatus()
20172 if (FD->isDependentContext()) in getEmissionStatus()
20176 auto IsEmittedForExternalSymbol = [this, FD]() { in getEmissionStatus()
20180 const FunctionDecl *Def = FD->getDefinition(); in getEmissionStatus()
20190 OMPDeclareTargetDeclAttr::getDeviceType(FD->getCanonicalDecl()); in getEmissionStatus()
20212 OMPDeclareTargetDeclAttr::getDeviceType(FD->getCanonicalDecl()); in getEmissionStatus()
20226 CUDAFunctionTarget T = CUDA().IdentifyTarget(FD); in getEmissionStatus()