Lines Matching refs:FD

1498   FunctionDecl *FD = D->getAsFunction();  in ActOnReenterFunctionContext()  local
1499 if (!FD) in ActOnReenterFunctionContext()
1504 assert(CurContext == FD->getLexicalParent() && in ActOnReenterFunctionContext()
1506 CurContext = FD; in ActOnReenterFunctionContext()
1509 for (unsigned P = 0, NumParams = FD->getNumParams(); P < NumParams; ++P) { in ActOnReenterFunctionContext()
1510 ParmVarDecl *Param = FD->getParamDecl(P); in ActOnReenterFunctionContext()
1932 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in ShouldWarnIfUnusedFileScopedDecl() local
1933 if (FD->getTemplateSpecializationKind() == TSK_ImplicitInstantiation) in ShouldWarnIfUnusedFileScopedDecl()
1937 if (FD->getTemplateSpecializationKind() == TSK_ExplicitSpecialization && in ShouldWarnIfUnusedFileScopedDecl()
1938 FD->getMemberSpecializationInfo() && !FD->isOutOfLine()) in ShouldWarnIfUnusedFileScopedDecl()
1941 if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) { in ShouldWarnIfUnusedFileScopedDecl()
1946 if (FD->isInlined() && !isMainFileLoc(*this, FD->getLocation())) in ShouldWarnIfUnusedFileScopedDecl()
1950 if (FD->doesThisDeclarationHaveABody() && in ShouldWarnIfUnusedFileScopedDecl()
1951 Context.DeclMustBeEmitted(FD)) in ShouldWarnIfUnusedFileScopedDecl()
1987 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in MarkUnusedFileScopedDecl() local
1988 const FunctionDecl *First = FD->getFirstDecl(); in MarkUnusedFileScopedDecl()
1989 if (FD != First && ShouldWarnIfUnusedFileScopedDecl(First)) in MarkUnusedFileScopedDecl()
2311 if (const auto *FD = dyn_cast<FieldDecl>(ShadowI->second)) { in ActOnPopScope() local
2312 addDiagWithPrev(D->getLocation(), FD->getLocation(), in ActOnPopScope()
2314 << D << FD << FD->getParent()); in ActOnPopScope()
2320 if (auto *FD = dyn_cast<FieldDecl>(TmpD); in ActOnPopScope() local
2321 FD && FD->hasAttr<CountedByAttr>()) in ActOnPopScope()
2322 CheckCountedByAttr(S, FD); in ActOnPopScope()
3035 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in getDefinition() local
3037 if (FD->isDefined(Def, true)) in getDefinition()
3065 if (FunctionDecl *FD = dyn_cast<FunctionDecl>(New)) { in checkNewAttributesAfterDef() local
3067 S.CheckForFunctionRedefinition(FD, cast<FunctionDecl>(Def), &SkipBody); in checkNewAttributesAfterDef()
3534 if (const auto *FD = dyn_cast<FunctionDecl>(Old)) { in getNoteDiagForInvalidRedeclaration() local
3535 if (FD->getBuiltinID()) in getNoteDiagForInvalidRedeclaration()
3548 static bool canRedefineFunction(const FunctionDecl *FD, in canRedefineFunction() argument
3550 return ((FD->hasAttr<GNUInlineAttr>() || LangOpts.GNUInline) && in canRedefineFunction()
3552 FD->isInlineSpecified() && in canRedefineFunction()
3553 FD->getStorageClass() == SC_Extern); in canRedefineFunction()
3672 if (auto *FD = dyn_cast<FunctionDecl>(NewD)) in adjustDeclContextForDeclaratorDecl() local
3673 FixSemaDC(FD->getDescribedFunctionTemplate()); in adjustDeclContextForDeclaratorDecl()
5001 if (auto *FD = dyn_cast<FieldDecl>(D)) { in getNonCLikeKindForAnonymousStruct() local
5002 if (FD->hasInClassInitializer()) { in getNonCLikeKindForAnonymousStruct()
5003 auto *Init = FD->getInClassInitializer(); in getNonCLikeKindForAnonymousStruct()
5580 const auto *FD = dyn_cast<FieldDecl>(I); in findDefaultInitializer() local
5582 FD = IFD->getAnonField(); in findDefaultInitializer()
5583 if (FD && FD->hasInClassInitializer()) in findDefaultInitializer()
5584 return FD->getLocation(); in findDefaultInitializer()
5703 if (auto *FD = dyn_cast<FieldDecl>(Mem)) { in BuildAnonymousStructOrUnion() local
5707 assert(FD->getAccess() != AS_none); in BuildAnonymousStructOrUnion()
5708 if (FD->getAccess() != AS_public) { in BuildAnonymousStructOrUnion()
5709 Diag(FD->getLocation(), diag::err_anonymous_record_nonpublic_member) in BuildAnonymousStructOrUnion()
5710 << Record->isUnion() << (FD->getAccess() == AS_protected); in BuildAnonymousStructOrUnion()
5719 if (CheckNontrivialField(FD)) in BuildAnonymousStructOrUnion()
7122 if (const auto *FD = dyn_cast<FunctionDecl>(&ND)) { in checkAttributesAfterMerging() local
7127 for (TypeLoc TL = FD->getTypeSourceInfo()->getTypeLoc(); in checkAttributesAfterMerging()
7134 const auto *MD = dyn_cast<CXXMethodDecl>(FD); in checkAttributesAfterMerging()
7192 auto *FD = dyn_cast<FunctionDecl>(OldDecl); in checkDLLAttributeRedeclaration() local
7193 if (FD && FD->getTemplatedKind() == FunctionDecl::TK_NonTemplate) in checkDLLAttributeRedeclaration()
7229 } else if (const auto *FD = dyn_cast<FunctionDecl>(NewDecl)) { in checkDLLAttributeRedeclaration() local
7230 IsInline = FD->isInlined(); in checkDLLAttributeRedeclaration()
7231 IsQualifiedFriend = FD->getQualifier() && in checkDLLAttributeRedeclaration()
7232 FD->getFriendObjectKind() == Decl::FOK_Declared; in checkDLLAttributeRedeclaration()
7296 static bool isFunctionDefinitionDiscarded(Sema &S, FunctionDecl *FD) { in isFunctionDefinitionDiscarded() argument
7300 if (!FD->isInlined()) return false; in isFunctionDefinitionDiscarded()
7303 if (S.getLangOpts().CPlusPlus && !FD->hasAttr<GNUInlineAttr>()) in isFunctionDefinitionDiscarded()
7307 return S.Context.GetGVALinkageForFunction(FD) == GVA_AvailableExternally; in isFunctionDefinitionDiscarded()
7358 static bool shouldConsiderLinkage(const FunctionDecl *FD) { in shouldConsiderLinkage() argument
7359 const DeclContext *DC = FD->getDeclContext()->getRedeclContext(); in shouldConsiderLinkage()
7412 if (const auto *FD = dyn_cast<FunctionDecl>(D)) in isDeclExternC() local
7413 return FD->isExternC(); in isDeclExternC()
8367 if (FieldDecl *FD = dyn_cast<FieldDecl>(ShadowedDecl)) { in CheckShadow() local
8379 ShadowingDecls.insert({PVD->getCanonicalDecl(), FD}); in CheckShadow()
8609 if (FunctionDecl *FD = dyn_cast<FunctionDecl>(Prev)) in checkGlobalOrExternCConflict() local
8610 Prev = FD->getFirstDecl(); in checkGlobalOrExternCConflict()
8757 FunctionDecl *FD = getCurFunctionDecl(); in CheckVariableDeclarationType() local
8760 if (FD && !FD->hasAttr<OpenCLKernelAttr>()) { in CheckVariableDeclarationType()
8772 if (FD && FD->hasAttr<OpenCLKernelAttr>()) { in CheckVariableDeclarationType()
8928 const FunctionDecl *FD = cast<FunctionDecl>(CurContext); in CheckVariableDeclarationType() local
8930 Context.getFunctionFeatureMap(CallerFeatureMap, FD); in CheckVariableDeclarationType()
9053 FunctionDecl *FD = dyn_cast<FunctionDecl>(*CDecl); in ValidateCandidate() local
9055 if (FD && !FD->hasBody() && in ValidateCandidate()
9056 hasSimilarParameters(Context, FD, OriginalFD, MismatchedParams)) { in ValidateCandidate()
9057 if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) { in ValidateCandidate()
9126 FunctionDecl *FD = dyn_cast<FunctionDecl>(*Func); in DiagnoseInvalidRedeclaration() local
9127 if (FD && in DiagnoseInvalidRedeclaration()
9128 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
9133 NearMatches.push_back(std::make_pair(FD, ParamNum)); in DiagnoseInvalidRedeclaration()
9149 FunctionDecl *FD = dyn_cast<FunctionDecl>(*CDecl); in DiagnoseInvalidRedeclaration() local
9150 if (FD && !FD->hasBody() && in DiagnoseInvalidRedeclaration()
9151 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
9152 Previous.addDecl(FD); in DiagnoseInvalidRedeclaration()
9214 FunctionDecl *FD = NearMatch->first; in DiagnoseInvalidRedeclaration() local
9215 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD); in DiagnoseInvalidRedeclaration()
9221 ParmVarDecl *FDParam = FD->getParamDecl(Idx-1); in DiagnoseInvalidRedeclaration()
9223 if (Loc.isInvalid()) Loc = FD->getLocation(); in DiagnoseInvalidRedeclaration()
9229 SemaRef.Diag(FD->getLocation(), diag::note_member_def_close_const_match) in DiagnoseInvalidRedeclaration()
9230 << NewFDisConst << FD->getSourceRange().getEnd() in DiagnoseInvalidRedeclaration()
9239 SemaRef.Diag(FD->getLocation(), in DiagnoseInvalidRedeclaration()
9706 for (const auto *FD : RD->fields()) { in checkIsValidOpenCLKernelParameter() local
9707 QualType QT = FD->getType(); in checkIsValidOpenCLKernelParameter()
9717 VisitStack.push_back(FD); in checkIsValidOpenCLKernelParameter()
9750 S.Diag(FD->getLocation(), diag::note_illegal_field_declared_here) in checkIsValidOpenCLKernelParameter()
9782 static bool isStdBuiltin(ASTContext &Ctx, FunctionDecl *FD, in isStdBuiltin() argument
9799 const auto *FPT = FD->getType()->castAs<FunctionProtoType>(); in isStdBuiltin()
10967 static Attr *getImplicitCodeSegAttrFromClass(Sema &S, const FunctionDecl *FD) { in getImplicitCodeSegAttrFromClass() argument
10968 const auto *Method = dyn_cast<CXXMethodDecl>(FD); in getImplicitCodeSegAttrFromClass()
11002 Attr *Sema::getImplicitCodeSegOrSectionAttrForFunction(const FunctionDecl *FD, in getImplicitCodeSegOrSectionAttrForFunction() argument
11004 if (Attr *A = getImplicitCodeSegAttrFromClass(*this, FD)) in getImplicitCodeSegOrSectionAttrForFunction()
11006 if (!FD->hasAttr<SectionAttr>() && IsDefinition && in getImplicitCodeSegOrSectionAttrForFunction()
11086 static bool CheckMultiVersionValue(Sema &S, const FunctionDecl *FD) { in CheckMultiVersionValue() argument
11087 const auto *TA = FD->getAttr<TargetAttr>(); in CheckMultiVersionValue()
11088 const auto *TVA = FD->getAttr<TargetVersionAttr>(); in CheckMultiVersionValue()
11099 S.Diag(FD->getLocation(), diag::err_bad_multiversion_option) in CheckMultiVersionValue()
11106 S.Diag(FD->getLocation(), diag::err_bad_multiversion_option) in CheckMultiVersionValue()
11113 S.Diag(FD->getLocation(), diag::err_bad_multiversion_option) in CheckMultiVersionValue()
11125 S.Diag(FD->getLocation(), diag::err_bad_multiversion_option) in CheckMultiVersionValue()
11152 const FunctionDecl *FD, in checkNonMultiVersionCompatAttributes() argument
11155 const auto Diagnose = [FD, CausedFD, MVKind](Sema &S, const Attr *A) { in checkNonMultiVersionCompatAttributes()
11156 S.Diag(FD->getLocation(), diag::err_multiversion_disallowed_other_attr) in checkNonMultiVersionCompatAttributes()
11163 for (const Attr *A : FD->attrs()) { in checkNonMultiVersionCompatAttributes()
11351 static bool CheckMultiVersionFirstFunction(Sema &S, FunctionDecl *FD) { in CheckMultiVersionFirstFunction() argument
11352 MultiVersionKind MVKind = FD->getMultiVersionKind(); in CheckMultiVersionFirstFunction()
11355 const auto *TA = FD->getAttr<TargetAttr>(); in CheckMultiVersionFirstFunction()
11356 const auto *TVA = FD->getAttr<TargetVersionAttr>(); in CheckMultiVersionFirstFunction()
11362 if ((TA || TVA) && CheckMultiVersionValue(S, FD)) { in CheckMultiVersionFirstFunction()
11363 FD->setInvalidDecl(); in CheckMultiVersionFirstFunction()
11367 if (CheckMultiVersionAdditionalRules(S, nullptr, FD, true, MVKind)) { in CheckMultiVersionFirstFunction()
11368 FD->setInvalidDecl(); in CheckMultiVersionFirstFunction()
11372 FD->setIsMultiVersion(); in CheckMultiVersionFirstFunction()
11376 static bool PreviousDeclsHaveMultiVersionAttribute(const FunctionDecl *FD) { in PreviousDeclsHaveMultiVersionAttribute() argument
11377 for (const Decl *D = FD->getPreviousDecl(); D; D = D->getPreviousDecl()) { in PreviousDeclsHaveMultiVersionAttribute()
11466 for (const auto *FD : OldFD->redecls()) { in CheckTargetCausesMultiVersioning() local
11467 const auto *CurTA = FD->getAttr<TargetAttr>(); in CheckTargetCausesMultiVersioning()
11468 const auto *CurTVA = FD->getAttr<TargetVersionAttr>(); in CheckTargetCausesMultiVersioning()
11471 if (PreviousDeclsHaveMultiVersionAttribute(FD) && in CheckTargetCausesMultiVersioning()
11474 S.Diag(FD->getLocation(), diag::err_multiversion_required_in_redecl) in CheckTargetCausesMultiVersioning()
12053 const auto *FD = dyn_cast<FunctionDecl>(ND); in CheckFunctionDeclaration() local
12054 return FD && !FD->hasAttr<OverloadableAttr>(); in CheckFunctionDeclaration()
12294 void Sema::CheckMain(FunctionDecl* FD, const DeclSpec& DS) { in CheckMain() argument
12302 if (FD->getStorageClass() == SC_Static) in CheckMain()
12306 if (FD->isInlineSpecified()) in CheckMain()
12316 if (FD->isConstexpr()) { in CheckMain()
12318 << FD->isConsteval() in CheckMain()
12320 FD->setConstexprKind(ConstexprSpecKind::Unspecified); in CheckMain()
12324 Diag(FD->getLocation(), diag::err_opencl_no_main) in CheckMain()
12325 << FD->hasAttr<OpenCLKernelAttr>(); in CheckMain()
12326 FD->setInvalidDecl(); in CheckMain()
12335 QualType T = FD->getType(); in CheckMain()
12342 FD->setType(QualType(FT, 0)); in CheckMain()
12343 T = Context.getCanonicalType(FD->getType()); in CheckMain()
12353 FD->setHasImplicitReturnZero(true); in CheckMain()
12355 Diag(FD->getTypeSpecStartLoc(), diag::ext_main_returns_nonint); in CheckMain()
12356 SourceRange RTRange = FD->getReturnTypeSourceRange(); in CheckMain()
12368 FD->setHasImplicitReturnZero(true); in CheckMain()
12371 SourceRange RTRange = FD->getReturnTypeSourceRange(); in CheckMain()
12372 Diag(FD->getTypeSpecStartLoc(), diag::err_main_returns_nonint) in CheckMain()
12375 FD->setInvalidDecl(true); in CheckMain()
12384 assert(FD->getNumParams() == nparams); in CheckMain()
12389 Diag(FD->getLocation(), diag::ext_variadic_main); in CheckMain()
12401 Diag(FD->getLocation(), diag::err_main_surplus_args) << nparams; in CheckMain()
12402 FD->setInvalidDecl(true); in CheckMain()
12438 Diag(FD->getLocation(), diag::err_main_arg_wrong) << i << Expected[i]; in CheckMain()
12440 FD->setInvalidDecl(true); in CheckMain()
12444 if (nparams == 1 && !FD->isInvalidDecl()) { in CheckMain()
12445 Diag(FD->getLocation(), diag::warn_main_one_arg); in CheckMain()
12448 if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) { in CheckMain()
12449 Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD; in CheckMain()
12450 FD->setInvalidDecl(); in CheckMain()
12454 static bool isDefaultStdCall(FunctionDecl *FD, Sema &S) { in isDefaultStdCall() argument
12457 if (FD->getName() == "main" || FD->getName() == "wmain") in isDefaultStdCall()
12473 void Sema::CheckMSVCRTEntryPoint(FunctionDecl *FD) { in CheckMSVCRTEntryPoint() argument
12474 QualType T = FD->getType(); in CheckMSVCRTEntryPoint()
12484 if (FD->getName() != "DllMain") in CheckMSVCRTEntryPoint()
12485 FD->setHasImplicitReturnZero(true); in CheckMSVCRTEntryPoint()
12489 if (isDefaultStdCall(FD, *this)) { in CheckMSVCRTEntryPoint()
12493 FD->setType(QualType(FT, 0)); in CheckMSVCRTEntryPoint()
12498 FD->setType(QualType(FT, 0)); in CheckMSVCRTEntryPoint()
12502 if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) { in CheckMSVCRTEntryPoint()
12503 Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD; in CheckMSVCRTEntryPoint()
12504 FD->setInvalidDecl(); in CheckMSVCRTEntryPoint()
12508 void Sema::ActOnHLSLTopLevelFunction(FunctionDecl *FD) { in ActOnHLSLTopLevelFunction() argument
12511 if (FD->getName() != TargetInfo.getTargetOpts().HLSLEntry) in ActOnHLSLTopLevelFunction()
12517 if (const auto *Shader = FD->getAttr<HLSLShaderAttr>()) { in ActOnHLSLTopLevelFunction()
12523 FD->setInvalidDecl(); in ActOnHLSLTopLevelFunction()
12528 FD->addAttr(HLSLShaderAttr::CreateImplicit(Context, ShaderType, in ActOnHLSLTopLevelFunction()
12529 FD->getBeginLoc())); in ActOnHLSLTopLevelFunction()
12542 void Sema::CheckHLSLEntryPoint(FunctionDecl *FD) { in CheckHLSLEntryPoint() argument
12543 const auto *ShaderAttr = FD->getAttr<HLSLShaderAttr>(); in CheckHLSLEntryPoint()
12559 if (const auto *NT = FD->getAttr<HLSLNumThreadsAttr>()) { in CheckHLSLEntryPoint()
12564 FD->setInvalidDecl(); in CheckHLSLEntryPoint()
12571 if (!FD->hasAttr<HLSLNumThreadsAttr>()) { in CheckHLSLEntryPoint()
12572 Diag(FD->getLocation(), diag::err_hlsl_missing_numthreads) in CheckHLSLEntryPoint()
12574 FD->setInvalidDecl(); in CheckHLSLEntryPoint()
12579 for (ParmVarDecl *Param : FD->parameters()) { in CheckHLSLEntryPoint()
12581 CheckHLSLSemanticAnnotation(FD, Param, AnnotationAttr); in CheckHLSLEntryPoint()
12585 Diag(FD->getLocation(), diag::err_hlsl_missing_semantic_annotation); in CheckHLSLEntryPoint()
12587 FD->setInvalidDecl(); in CheckHLSLEntryPoint()
12709 FieldDecl *FD = dyn_cast<FieldDecl>(ME->getMemberDecl()); in CheckInitListMemberExpr() local
12710 if (!FD) in CheckInitListMemberExpr()
12712 Fields.push_back(FD); in CheckInitListMemberExpr()
12713 if (FD->getType()->isReferenceType()) in CheckInitListMemberExpr()
13212 bool shouldIgnoreForRecordTriviality(const FieldDecl *FD) { in shouldIgnoreForRecordTriviality() argument
13218 return FD->hasAttr<UnavailableAttr>(); in shouldIgnoreForRecordTriviality()
13234 const FieldDecl *FD, bool InNonTrivialUnion) { in visitWithKind()
13236 return this->asDerived().visit(S.Context.getBaseElementType(AT), FD, in visitWithKind()
13238 return Super::visitWithKind(PDIK, QT, FD, InNonTrivialUnion); in visitWithKind()
13241 void visitARCStrong(QualType QT, const FieldDecl *FD, in visitARCStrong()
13244 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCStrong()
13245 << 1 << 0 << QT << FD->getName(); in visitARCStrong()
13248 void visitARCWeak(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitARCWeak()
13250 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCWeak()
13251 << 1 << 0 << QT << FD->getName(); in visitARCWeak()
13254 void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitStruct()
13273 for (const FieldDecl *FD : RD->fields()) in visitStruct() local
13274 if (!shouldIgnoreForRecordTriviality(FD)) in visitStruct()
13275 asDerived().visit(FD->getType(), FD, InNonTrivialUnion); in visitStruct()
13278 void visitTrivial(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {} in visitTrivial()
13299 const FieldDecl *FD, bool InNonTrivialUnion) { in visitWithKind()
13301 return this->asDerived().visit(S.Context.getBaseElementType(AT), FD, in visitWithKind()
13303 return Super::visitWithKind(DK, QT, FD, InNonTrivialUnion); in visitWithKind()
13306 void visitARCStrong(QualType QT, const FieldDecl *FD, in visitARCStrong()
13309 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCStrong()
13310 << 1 << 1 << QT << FD->getName(); in visitARCStrong()
13313 void visitARCWeak(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitARCWeak()
13315 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCWeak()
13316 << 1 << 1 << QT << FD->getName(); in visitARCWeak()
13319 void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitStruct()
13338 for (const FieldDecl *FD : RD->fields()) in visitStruct() local
13339 if (!shouldIgnoreForRecordTriviality(FD)) in visitStruct()
13340 asDerived().visit(FD->getType(), FD, InNonTrivialUnion); in visitStruct()
13343 void visitTrivial(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {} in visitTrivial()
13344 void visitCXXDestructor(QualType QT, const FieldDecl *FD, in visitCXXDestructor()
13365 const FieldDecl *FD, bool InNonTrivialUnion) { in visitWithKind()
13367 return this->asDerived().visit(S.Context.getBaseElementType(AT), FD, in visitWithKind()
13369 return Super::visitWithKind(PCK, QT, FD, InNonTrivialUnion); in visitWithKind()
13372 void visitARCStrong(QualType QT, const FieldDecl *FD, in visitARCStrong()
13375 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCStrong()
13376 << 1 << 2 << QT << FD->getName(); in visitARCStrong()
13379 void visitARCWeak(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitARCWeak()
13381 S.Diag(FD->getLocation(), diag::note_non_trivial_c_union) in visitARCWeak()
13382 << 1 << 2 << QT << FD->getName(); in visitARCWeak()
13385 void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) { in visitStruct()
13404 for (const FieldDecl *FD : RD->fields()) in visitStruct() local
13405 if (!shouldIgnoreForRecordTriviality(FD)) in visitStruct()
13406 asDerived().visit(FD->getType(), FD, InNonTrivialUnion); in visitStruct()
13410 const FieldDecl *FD, bool InNonTrivialUnion) {} in preVisit()
13411 void visitTrivial(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {} in visitTrivial()
13412 void visitVolatileTrivial(QualType QT, const FieldDecl *FD, in visitVolatileTrivial()
14677 auto *FD = dyn_cast_or_null<FunctionDecl>(VD->getParentFunctionOrMethod()); in CheckStaticLocalForDllExport() local
14680 while (FD && !getDLLAttr(FD) && in CheckStaticLocalForDllExport()
14681 !FD->hasAttr<DLLExportStaticLocalAttr>() && in CheckStaticLocalForDllExport()
14682 !FD->hasAttr<DLLImportStaticLocalAttr>()) { in CheckStaticLocalForDllExport()
14683 FD = dyn_cast_or_null<FunctionDecl>(FD->getParentFunctionOrMethod()); in CheckStaticLocalForDllExport()
14686 if (!FD) in CheckStaticLocalForDllExport()
14690 if (Attr *A = getDLLAttr(FD)) { in CheckStaticLocalForDllExport()
14694 } else if (Attr *A = FD->getAttr<DLLExportStaticLocalAttr>()) { in CheckStaticLocalForDllExport()
14701 if (!FD->hasAttr<DLLExportAttr>()) in CheckStaticLocalForDllExport()
14702 FD->addAttr(NewAttr); in CheckStaticLocalForDllExport()
14704 } else if (Attr *A = FD->getAttr<DLLImportStaticLocalAttr>()) { in CheckStaticLocalForDllExport()
15465 static bool FindPossiblePrototype(const FunctionDecl *FD, in FindPossiblePrototype() argument
15467 for (const FunctionDecl *Prev = FD->getPreviousDecl(); Prev; in FindPossiblePrototype()
15481 ShouldWarnAboutMissingPrototype(const FunctionDecl *FD, in ShouldWarnAboutMissingPrototype() argument
15484 if (FD->isInvalidDecl()) in ShouldWarnAboutMissingPrototype()
15488 if (!FD->isGlobal()) in ShouldWarnAboutMissingPrototype()
15492 if (isa<CXXMethodDecl>(FD)) in ShouldWarnAboutMissingPrototype()
15496 if (isa<TranslationUnitDecl>(FD->getDeclContext()->getRedeclContext())) in ShouldWarnAboutMissingPrototype()
15497 if (IdentifierInfo *II = FD->getIdentifier()) in ShouldWarnAboutMissingPrototype()
15502 if (FD->isInlined()) in ShouldWarnAboutMissingPrototype()
15506 if (FD->getDescribedFunctionTemplate()) in ShouldWarnAboutMissingPrototype()
15510 if (FD->isFunctionTemplateSpecialization()) in ShouldWarnAboutMissingPrototype()
15514 if (FD->hasAttr<OpenCLKernelAttr>()) in ShouldWarnAboutMissingPrototype()
15518 if (FD->isDeleted()) in ShouldWarnAboutMissingPrototype()
15523 if (!FD->isExternallyVisible()) in ShouldWarnAboutMissingPrototype()
15527 if (FindPossiblePrototype(FD, PossiblePrototype)) in ShouldWarnAboutMissingPrototype()
15534 Sema::CheckForFunctionRedefinition(FunctionDecl *FD, in CheckForFunctionRedefinition() argument
15539 !FD->isDefined(Definition, /*CheckForPendingFriendDefinition*/ true)) in CheckForFunctionRedefinition()
15544 if (FunctionDecl *OrigFD = FD->getInstantiatedFromMemberFunction()) { in CheckForFunctionRedefinition()
15549 cast<Decl>(FD->getLexicalDeclContext()))) in CheckForFunctionRedefinition()
15579 Diag(FD->getLocation(), diag::err_redefinition_extern_inline) in CheckForFunctionRedefinition()
15580 << FD << getLangOpts().CPlusPlus; in CheckForFunctionRedefinition()
15582 Diag(FD->getLocation(), diag::err_redefinition) << FD; in CheckForFunctionRedefinition()
15585 FD->setInvalidDecl(); in CheckForFunctionRedefinition()
15652 FunctionDecl *FD = nullptr; in ActOnStartOfFunctionDef() local
15655 FD = FunTmpl->getTemplatedDecl(); in ActOnStartOfFunctionDef()
15657 FD = cast<FunctionDecl>(D); in ActOnStartOfFunctionDef()
15661 if (!isLambdaCallOperator(FD)) in ActOnStartOfFunctionDef()
15667 FD->isConsteval() ? ExpressionEvaluationContext::ImmediateFunctionContext in ActOnStartOfFunctionDef()
15677 ExprEvalContexts.back().InImmediateFunctionContext = FD->isConsteval(); in ActOnStartOfFunctionDef()
15679 getLangOpts().CPlusPlus20 && FD->isImmediateEscalating(); in ActOnStartOfFunctionDef()
15682 if (const auto *Attr = FD->getAttr<AliasAttr>()) { in ActOnStartOfFunctionDef()
15683 Diag(Attr->getLocation(), diag::err_alias_is_definition) << FD << 0; in ActOnStartOfFunctionDef()
15684 FD->dropAttr<AliasAttr>(); in ActOnStartOfFunctionDef()
15685 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15687 if (const auto *Attr = FD->getAttr<IFuncAttr>()) { in ActOnStartOfFunctionDef()
15688 Diag(Attr->getLocation(), diag::err_alias_is_definition) << FD << 1; in ActOnStartOfFunctionDef()
15689 FD->dropAttr<IFuncAttr>(); in ActOnStartOfFunctionDef()
15690 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15692 if (const auto *Attr = FD->getAttr<TargetVersionAttr>()) { in ActOnStartOfFunctionDef()
15703 if (auto *Ctor = dyn_cast<CXXConstructorDecl>(FD)) { in ActOnStartOfFunctionDef()
15715 if (!FD->willHaveBody() && !FD->isLateTemplateParsed() && in ActOnStartOfFunctionDef()
15716 !FD->isThisDeclarationInstantiatedFromAFriendDefinition()) { in ActOnStartOfFunctionDef()
15717 CheckForFunctionRedefinition(FD, nullptr, SkipBody); in ActOnStartOfFunctionDef()
15727 FD->setWillHaveBody(); in ActOnStartOfFunctionDef()
15738 if (isGenericLambdaCallOperatorSpecialization(FD)) { in ActOnStartOfFunctionDef()
15749 if (unsigned BuiltinID = FD->getBuiltinID()) { in ActOnStartOfFunctionDef()
15752 Diag(FD->getLocation(), diag::err_builtin_definition) << FD; in ActOnStartOfFunctionDef()
15753 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15762 QualType ResultType = FD->getReturnType(); in ActOnStartOfFunctionDef()
15764 !FD->isInvalidDecl() && BodyKind != FnBodyKind::Delete && in ActOnStartOfFunctionDef()
15765 (RequireCompleteType(FD->getLocation(), ResultType, in ActOnStartOfFunctionDef()
15767 RequireNonAbstractType(FD->getLocation(), FD->getReturnType(), in ActOnStartOfFunctionDef()
15770 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15773 PushDeclContext(FnBodyScope, FD); in ActOnStartOfFunctionDef()
15777 CheckParmsForFunctionDef(FD->parameters(), in ActOnStartOfFunctionDef()
15783 for (Decl *NPD : FD->decls()) { in ActOnStartOfFunctionDef()
15804 for (auto *Param : FD->parameters()) { in ActOnStartOfFunctionDef()
15805 Param->setOwningFunction(FD); in ActOnStartOfFunctionDef()
15821 !FD->isInvalidDecl() && !FD->isInlined() && in ActOnStartOfFunctionDef()
15823 FD->getFormalLinkage() == Linkage::External && !FD->isTemplated() && in ActOnStartOfFunctionDef()
15824 !FD->isTemplateInstantiation()) { in ActOnStartOfFunctionDef()
15825 assert(FD->isThisDeclarationADefinition()); in ActOnStartOfFunctionDef()
15826 Diag(FD->getLocation(), diag::err_extern_def_in_header_unit); in ActOnStartOfFunctionDef()
15827 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15831 if (const FunctionProtoType *FPT = FD->getType()->getAs<FunctionProtoType>()) in ActOnStartOfFunctionDef()
15835 if (FD->hasAttr<DLLImportAttr>() && !FD->isInlined() && in ActOnStartOfFunctionDef()
15836 !FD->isTemplateInstantiation()) { in ActOnStartOfFunctionDef()
15837 assert(!FD->hasAttr<DLLExportAttr>()); in ActOnStartOfFunctionDef()
15838 Diag(FD->getLocation(), diag::err_attribute_dllimport_function_definition); in ActOnStartOfFunctionDef()
15839 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
15848 Diag(FD->getLocation(), diag::warn_function_def_in_objc_container); in ActOnStartOfFunctionDef()
15906 if (const FunctionDecl *FD = D->getAsFunction()) { in canSkipFunctionBody() local
15907 if (FD->isConstexpr()) in canSkipFunctionBody()
15912 if (FD->getReturnType()->getContainedDeducedType()) in canSkipFunctionBody()
15921 if (FunctionDecl *FD = Decl->getAsFunction()) in ActOnSkippedFunctionBody() local
15922 FD->setHasSkippedBody(); in ActOnSkippedFunctionBody()
15976 static bool methodHasName(const FunctionDecl *FD, StringRef Name) { in methodHasName() argument
15977 return isa<CXXMethodDecl>(FD) && FD->param_empty() && in methodHasName()
15978 FD->getDeclName().isIdentifier() && FD->getName().equals(Name); in methodHasName()
15981 bool Sema::CanBeGetReturnObject(const FunctionDecl *FD) { in CanBeGetReturnObject() argument
15982 return methodHasName(FD, "get_return_object"); in CanBeGetReturnObject()
15985 bool Sema::CanBeGetReturnTypeOnAllocFailure(const FunctionDecl *FD) { in CanBeGetReturnTypeOnAllocFailure() argument
15986 return FD->isStatic() && in CanBeGetReturnTypeOnAllocFailure()
15987 methodHasName(FD, "get_return_object_on_allocation_failure"); in CanBeGetReturnTypeOnAllocFailure()
15990 void Sema::CheckCoroutineWrapper(FunctionDecl *FD) { in CheckCoroutineWrapper() argument
15991 RecordDecl *RD = FD->getReturnType()->getAsRecordDecl(); in CheckCoroutineWrapper()
15995 if (CanBeGetReturnObject(FD) || CanBeGetReturnTypeOnAllocFailure(FD)) in CheckCoroutineWrapper()
15997 if (!FD->hasAttr<CoroWrapperAttr>()) in CheckCoroutineWrapper()
15998 Diag(FD->getLocation(), diag::err_coroutine_return_type) << RD; in CheckCoroutineWrapper()
16004 FunctionDecl *FD = dcl ? dcl->getAsFunction() : nullptr; in ActOnFinishFunctionBody() local
16006 if (FSI->UsesFPIntrin && FD && !FD->hasAttr<StrictFPAttr>()) in ActOnFinishFunctionBody()
16007 FD->addAttr(StrictFPAttr::CreateImplicit(Context)); in ActOnFinishFunctionBody()
16013 if (getLangOpts().Coroutines && FD && !FD->hasSkippedBody()) { in ActOnFinishFunctionBody()
16015 CheckCompletedCoroutineBody(FD, Body); in ActOnFinishFunctionBody()
16017 CheckCoroutineWrapper(FD); in ActOnFinishFunctionBody()
16024 ExitFunctionBodyRAII ExitRAII(*this, isLambdaCallOperator(FD)); in ActOnFinishFunctionBody()
16025 if (FD) { in ActOnFinishFunctionBody()
16026 FD->setBody(Body); in ActOnFinishFunctionBody()
16027 FD->setWillHaveBody(false); in ActOnFinishFunctionBody()
16028 CheckImmediateEscalatingFunctionDefinition(FD, FSI); in ActOnFinishFunctionBody()
16031 if (!FD->isInvalidDecl() && Body && !FD->isDependentContext() && in ActOnFinishFunctionBody()
16032 FD->getReturnType()->isUndeducedType()) { in ActOnFinishFunctionBody()
16036 if (!FD->getReturnType()->getAs<AutoType>()) { in ActOnFinishFunctionBody()
16038 << FD->getReturnType(); in ActOnFinishFunctionBody()
16039 FD->setInvalidDecl(); in ActOnFinishFunctionBody()
16044 FD, dcl->getLocation(), Dummy, in ActOnFinishFunctionBody()
16045 FD->getReturnType()->getAs<AutoType>())) in ActOnFinishFunctionBody()
16046 FD->setInvalidDecl(); in ActOnFinishFunctionBody()
16049 } else if (getLangOpts().CPlusPlus11 && isLambdaCallOperator(FD)) { in ActOnFinishFunctionBody()
16063 const auto *Proto = FD->getType()->castAs<FunctionProtoType>(); in ActOnFinishFunctionBody()
16064 FD->setType(Context.getFunctionType(RetType, Proto->getParamTypes(), in ActOnFinishFunctionBody()
16071 if (FD->hasImplicitReturnZero() || FD->hasAttr<NakedAttr>()) in ActOnFinishFunctionBody()
16076 if (getLangOpts().MicrosoftExt && FD->isPureVirtual() && in ActOnFinishFunctionBody()
16077 !FD->isOutOfLine()) in ActOnFinishFunctionBody()
16078 Diag(FD->getLocation(), diag::ext_pure_function_definition); in ActOnFinishFunctionBody()
16080 if (!FD->isInvalidDecl()) { in ActOnFinishFunctionBody()
16083 if (!FD->isDeleted() && !FD->isDefaulted() && !FD->hasSkippedBody() && in ActOnFinishFunctionBody()
16084 !FD->hasAttr<NakedAttr>()) in ActOnFinishFunctionBody()
16085 DiagnoseUnusedParameters(FD->parameters()); in ActOnFinishFunctionBody()
16086 DiagnoseSizeOfParametersAndReturnValue(FD->parameters(), in ActOnFinishFunctionBody()
16087 FD->getReturnType(), FD); in ActOnFinishFunctionBody()
16090 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(FD)) in ActOnFinishFunctionBody()
16091 MarkVTableUsed(FD->getLocation(), Constructor->getParent()); in ActOnFinishFunctionBody()
16093 dyn_cast<CXXDestructorDecl>(FD)) in ActOnFinishFunctionBody()
16094 MarkVTableUsed(FD->getLocation(), Destructor->getParent()); in ActOnFinishFunctionBody()
16099 if (FD->getReturnType()->isRecordType() && in ActOnFinishFunctionBody()
16100 (!getLangOpts().CPlusPlus || !FD->isDependentContext())) in ActOnFinishFunctionBody()
16110 if (ShouldWarnAboutMissingPrototype(FD, PossiblePrototype)) { in ActOnFinishFunctionBody()
16111 Diag(FD->getLocation(), diag::warn_missing_prototype) << FD; in ActOnFinishFunctionBody()
16121 << (FD->getNumParams() != 0) in ActOnFinishFunctionBody()
16122 << (FD->getNumParams() == 0 ? FixItHint::CreateInsertion( in ActOnFinishFunctionBody()
16153 if ((FD->getReturnType()->isAnyPointerType() && in ActOnFinishFunctionBody()
16154 FD->getReturnType()->getPointeeType().isConstQualified()) || in ActOnFinishFunctionBody()
16155 FD->getReturnType().isConstQualified()) { in ActOnFinishFunctionBody()
16158 if (isLocAtConst(FD->getBeginLoc(), getSourceManager(), in ActOnFinishFunctionBody()
16161 return FD->getBeginLoc(); in ActOnFinishFunctionBody()
16163 return FD->getTypeSpecStartLoc(); in ActOnFinishFunctionBody()
16165 Diag(FD->getTypeSpecStartLoc(), in ActOnFinishFunctionBody()
16168 << (FD->getStorageClass() == SC_None in ActOnFinishFunctionBody()
16178 (void)FindPossiblePrototype(FD, PossiblePrototype); in ActOnFinishFunctionBody()
16192 if (!FD->hasWrittenPrototype() && FD->getNumParams() != 0 && in ActOnFinishFunctionBody()
16215 Diag(FD->getLocation(), diag::warn_non_prototype_changes_behavior) in ActOnFinishFunctionBody()
16231 if (FD->isMultiVersion() && FD->hasAttr<CPUDispatchAttr>() && Body) in ActOnFinishFunctionBody()
16237 if (auto *MD = dyn_cast<CXXMethodDecl>(FD)) { in ActOnFinishFunctionBody()
16244 if (FD->isInlined() && in ActOnFinishFunctionBody()
16256 MarkVTableUsed(FD->getLocation(), MD->getParent(), true); in ActOnFinishFunctionBody()
16262 (FD == getCurFunctionDecl() || getCurLambda()->CallOperator == FD) && in ActOnFinishFunctionBody()
16330 if (Body && (!FD || !FD->isDefaulted())) { in ActOnFinishFunctionBody()
16334 if (FD && isa<CXXConstructorDecl>(FD) && isa<CXXTryStmt>(Body)) in ActOnFinishFunctionBody()
16363 if (!IsInstantiation && FD && in ActOnFinishFunctionBody()
16364 (FD->isConstexpr() || FD->hasAttr<MSConstexprAttr>()) && in ActOnFinishFunctionBody()
16365 !FD->isInvalidDecl() && in ActOnFinishFunctionBody()
16366 !CheckConstexprFunctionDefinition(FD, CheckConstexprKind::Diagnose)) in ActOnFinishFunctionBody()
16367 FD->setInvalidDecl(); in ActOnFinishFunctionBody()
16369 if (FD && FD->hasAttr<NakedAttr>()) { in ActOnFinishFunctionBody()
16388 Diag(FD->getAttr<NakedAttr>()->getLocation(), diag::note_attribute); in ActOnFinishFunctionBody()
16389 FD->setInvalidDecl(); in ActOnFinishFunctionBody()
16418 if (FD && ((LangOpts.OpenMP && (LangOpts.OpenMPIsTargetDevice || in ActOnFinishFunctionBody()
16421 auto ES = getEmissionStatus(FD); in ActOnFinishFunctionBody()
16424 DeclsToCheckForDeferredDiags.insert(FD); in ActOnFinishFunctionBody()
16427 if (FD && !FD->isDeleted()) in ActOnFinishFunctionBody()
16428 checkTypeSupport(FD->getType(), FD->getLocation(), FD); in ActOnFinishFunctionBody()
16573 FunctionDecl *FD = cast<FunctionDecl>(ActOnDeclarator(BlockScope, D)); in ImplicitlyDefineFunction() local
16574 FD->setImplicit(); in ImplicitlyDefineFunction()
16576 AddKnownFunctionAttributes(FD); in ImplicitlyDefineFunction()
16578 return FD; in ImplicitlyDefineFunction()
16588 FunctionDecl *FD) { in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction() argument
16589 if (FD->isInvalidDecl()) in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16592 if (FD->getDeclName().getCXXOverloadedOperator() != OO_New && in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16593 FD->getDeclName().getCXXOverloadedOperator() != OO_Array_New) in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16598 if (!FD->isReplaceableGlobalAllocationFunction(&AlignmentParam, &IsNothrow)) in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16609 if (!IsNothrow && !FD->hasAttr<ReturnsNonNullAttr>() && in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16611 FD->addAttr(ReturnsNonNullAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16627 if (!FD->hasAttr<AllocSizeAttr>()) { in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16628 FD->addAttr(AllocSizeAttr::CreateImplicit( in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16629 Context, /*ElemSizeParam=*/ParamIdx(1, FD), in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16630 /*NumElemsParam=*/ParamIdx(), FD->getLocation())); in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16639 if (AlignmentParam && !FD->hasAttr<AllocAlignAttr>()) { in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16640 FD->addAttr(AllocAlignAttr::CreateImplicit( in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16641 Context, ParamIdx(*AlignmentParam, FD), FD->getLocation())); in AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction()
16665 void Sema::AddKnownFunctionAttributes(FunctionDecl *FD) { in AddKnownFunctionAttributes() argument
16666 if (FD->isInvalidDecl()) in AddKnownFunctionAttributes()
16671 if (unsigned BuiltinID = FD->getBuiltinID()) { in AddKnownFunctionAttributes()
16676 if (!FD->hasAttr<FormatAttr>()) { in AddKnownFunctionAttributes()
16678 unsigned int NumParams = FD->getNumParams(); in AddKnownFunctionAttributes()
16680 FD->getParamDecl(FormatIdx)->getType()->isObjCObjectPointerType()) in AddKnownFunctionAttributes()
16682 FD->addAttr(FormatAttr::CreateImplicit(Context, in AddKnownFunctionAttributes()
16686 FD->getLocation())); in AddKnownFunctionAttributes()
16691 if (!FD->hasAttr<FormatAttr>()) in AddKnownFunctionAttributes()
16692 FD->addAttr(FormatAttr::CreateImplicit(Context, in AddKnownFunctionAttributes()
16696 FD->getLocation())); in AddKnownFunctionAttributes()
16701 if (!FD->hasAttr<CallbackAttr>() && in AddKnownFunctionAttributes()
16703 FD->addAttr(CallbackAttr::CreateImplicit( in AddKnownFunctionAttributes()
16704 Context, Encoding.data(), Encoding.size(), FD->getLocation())); in AddKnownFunctionAttributes()
16715 if (!FD->hasAttr<ConstAttr>() && in AddKnownFunctionAttributes()
16720 FD->addAttr(ConstAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16727 !FD->hasAttr<ConstAttr>()) { in AddKnownFunctionAttributes()
16735 FD->addAttr(ConstAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16743 !FD->hasAttr<ReturnsTwiceAttr>()) in AddKnownFunctionAttributes()
16744 FD->addAttr(ReturnsTwiceAttr::CreateImplicit(Context, in AddKnownFunctionAttributes()
16745 FD->getLocation())); in AddKnownFunctionAttributes()
16746 if (Context.BuiltinInfo.isNoThrow(BuiltinID) && !FD->hasAttr<NoThrowAttr>()) in AddKnownFunctionAttributes()
16747 FD->addAttr(NoThrowAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16748 if (Context.BuiltinInfo.isPure(BuiltinID) && !FD->hasAttr<PureAttr>()) in AddKnownFunctionAttributes()
16749 FD->addAttr(PureAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16750 if (Context.BuiltinInfo.isConst(BuiltinID) && !FD->hasAttr<ConstAttr>()) in AddKnownFunctionAttributes()
16751 FD->addAttr(ConstAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16753 !FD->hasAttr<CUDADeviceAttr>() && !FD->hasAttr<CUDAHostAttr>()) { in AddKnownFunctionAttributes()
16759 FD->addAttr(CUDADeviceAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16761 FD->addAttr(CUDAHostAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16768 if (!FD->hasAttr<AllocAlignAttr>()) in AddKnownFunctionAttributes()
16769 FD->addAttr(AllocAlignAttr::CreateImplicit(Context, ParamIdx(1, FD), in AddKnownFunctionAttributes()
16770 FD->getLocation())); in AddKnownFunctionAttributes()
16779 FD->addAttr(AllocSizeAttr::CreateImplicit( in AddKnownFunctionAttributes()
16780 Context, ParamIdx(1, FD), ParamIdx(2, FD), FD->getLocation())); in AddKnownFunctionAttributes()
16785 FD->addAttr(AllocSizeAttr::CreateImplicit(Context, ParamIdx(2, FD), in AddKnownFunctionAttributes()
16786 ParamIdx(), FD->getLocation())); in AddKnownFunctionAttributes()
16789 FD->addAttr(AllocSizeAttr::CreateImplicit(Context, ParamIdx(1, FD), in AddKnownFunctionAttributes()
16790 ParamIdx(), FD->getLocation())); in AddKnownFunctionAttributes()
16806 if (ParmVarDecl *P = FD->getParamDecl(0u); in AddKnownFunctionAttributes()
16809 LifetimeBoundAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16816 AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction(FD); in AddKnownFunctionAttributes()
16822 FD->isExternC() && !FD->hasAttr<NoThrowAttr>()) { in AddKnownFunctionAttributes()
16823 const auto *FPT = FD->getType()->getAs<FunctionProtoType>(); in AddKnownFunctionAttributes()
16825 FD->addAttr(NoThrowAttr::CreateImplicit(Context, FD->getLocation())); in AddKnownFunctionAttributes()
16828 IdentifierInfo *Name = FD->getIdentifier(); in AddKnownFunctionAttributes()
16831 if ((!getLangOpts().CPlusPlus && FD->getDeclContext()->isTranslationUnit()) || in AddKnownFunctionAttributes()
16832 (isa<LinkageSpecDecl>(FD->getDeclContext()) && in AddKnownFunctionAttributes()
16833 cast<LinkageSpecDecl>(FD->getDeclContext())->getLanguage() == in AddKnownFunctionAttributes()
16843 if (!FD->hasAttr<FormatAttr>()) in AddKnownFunctionAttributes()
16844 FD->addAttr(FormatAttr::CreateImplicit(Context, in AddKnownFunctionAttributes()
16847 FD->getLocation())); in AddKnownFunctionAttributes()
16853 if (!FD->hasAttr<FormatArgAttr>()) in AddKnownFunctionAttributes()
16854 FD->addAttr(FormatArgAttr::CreateImplicit(Context, ParamIdx(1, FD), in AddKnownFunctionAttributes()
16855 FD->getLocation())); in AddKnownFunctionAttributes()
18298 [](const FieldDecl *FD) { return FD->isBitField(); })) in ActOnTagFinishDefinition() argument
18732 bool Sema::CheckNontrivialField(FieldDecl *FD) { in CheckNontrivialField() argument
18733 assert(FD); in CheckNontrivialField()
18736 if (FD->isInvalidDecl() || FD->getType()->isDependentType()) in CheckNontrivialField()
18739 QualType EltTy = Context.getBaseElementType(FD->getType()); in CheckNontrivialField()
18770 SourceLocation Loc = FD->getLocation(); in CheckNontrivialField()
18772 if (!FD->hasAttr<UnavailableAttr>()) in CheckNontrivialField()
18773 FD->addAttr(UnavailableAttr::CreateImplicit(Context, "", in CheckNontrivialField()
18779 Diag(FD->getLocation(), getLangOpts().CPlusPlus11 ? in CheckNontrivialField()
18782 << FD->getParent()->isUnion() << FD->getDeclName() << member; in CheckNontrivialField()
19206 FieldDecl *FD = cast<FieldDecl>(*i); in ActOnFields() local
19209 const Type *FDTy = FD->getType().getTypePtr(); in ActOnFields()
19211 if (!FD->isAnonymousStructOrUnion()) { in ActOnFields()
19213 RecFields.push_back(FD); in ActOnFields()
19218 if (FD->isInvalidDecl()) { in ActOnFields()
19236 Diag(FD->getLocation(), diag::err_field_declared_as_function) in ActOnFields()
19237 << FD->getDeclName(); in ActOnFields()
19238 FD->setInvalidDecl(); in ActOnFields()
19250 Diag(FD->getLocation(), diag::err_flexible_array_not_at_end) in ActOnFields()
19251 << FD->getDeclName() << FD->getType() in ActOnFields()
19254 FD->setInvalidDecl(); in ActOnFields()
19271 Diag(FD->getLocation(), DiagID) in ActOnFields()
19272 << FD->getDeclName() << llvm::to_underlying(Record->getTagKind()); in ActOnFields()
19279 Diag(FD->getLocation(), diag::err_flexible_array_virtual_base) in ActOnFields()
19280 << FD->getDeclName() << llvm::to_underlying(Record->getTagKind()); in ActOnFields()
19282 Diag(FD->getLocation(), diag::ext_c99_flexible_array_member) in ActOnFields()
19283 << FD->getDeclName() << llvm::to_underlying(Record->getTagKind()); in ActOnFields()
19290 QualType BaseElem = Context.getBaseElementType(FD->getType()); in ActOnFields()
19292 Diag(FD->getLocation(), diag::err_flexible_array_has_nontrivial_dtor) in ActOnFields()
19293 << FD->getDeclName() << FD->getType(); in ActOnFields()
19294 FD->setInvalidDecl(); in ActOnFields()
19307 FD->getLocation(), FD->getType(), in ActOnFields()
19310 FD->setInvalidDecl(); in ActOnFields()
19323 Diag(FD->getLocation(), diag::ext_variable_sized_type_in_struct) in ActOnFields()
19324 << FD->getDeclName() << FD->getType(); in ActOnFields()
19328 Diag(FD->getLocation(), diag::ext_flexible_array_in_struct) in ActOnFields()
19329 << FD->getDeclName(); in ActOnFields()
19334 RequireNonAbstractType(FD->getLocation(), FD->getType(), in ActOnFields()
19338 FD->setInvalidDecl(); in ActOnFields()
19346 Diag(FD->getLocation(), diag::err_statically_allocated_object) in ActOnFields()
19347 << FixItHint::CreateInsertion(FD->getLocation(), "*"); in ActOnFields()
19348 QualType T = Context.getObjCObjectPointerType(FD->getType()); in ActOnFields()
19349 FD->setType(T); in ActOnFields()
19351 FD->getType().hasNonTrivialObjCLifetime() && in ActOnFields()
19352 getSourceManager().isInSystemHeader(FD->getLocation()) && in ActOnFields()
19353 !getLangOpts().CPlusPlus && !FD->hasAttr<UnavailableAttr>() && in ActOnFields()
19354 (FD->getType().getObjCLifetime() != Qualifiers::OCL_Strong || in ActOnFields()
19355 !Context.hasDirectOwnershipQualifier(FD->getType()))) { in ActOnFields()
19362 FD->addAttr(UnavailableAttr::CreateImplicit( in ActOnFields()
19364 FD->getLocation())); in ActOnFields()
19368 if (FD->getType()->isObjCObjectPointerType() || in ActOnFields()
19369 FD->getType().isObjCGCStrong()) in ActOnFields()
19371 else if (Context.getAsArrayType(FD->getType())) { in ActOnFields()
19372 QualType BaseType = Context.getBaseElementType(FD->getType()); in ActOnFields()
19383 !shouldIgnoreForRecordTriviality(FD)) { in ActOnFields()
19384 QualType FT = FD->getType(); in ActOnFields()
19414 if (Record && FD->getType().isVolatileQualified()) in ActOnFields()
19417 if (FD->getIdentifier()) in ActOnFields()
19491 const FieldDecl *FD = dyn_cast<FieldDecl>(D); in ActOnFields() local
19492 if (!FD) { in ActOnFields()
19508 QualType FieldType = FD->getType().getDesugaredType(Context); in ActOnFields()
20481 Sema::FunctionEmissionStatus Sema::getEmissionStatus(const FunctionDecl *FD, in getEmissionStatus() argument
20483 assert(FD && "Expected non-null FunctionDecl"); in getEmissionStatus()
20487 if (LangOpts.SYCLIsDevice && FD->hasAttr<SYCLKernelAttr>()) in getEmissionStatus()
20491 if (FD->isDependentContext()) in getEmissionStatus()
20495 auto IsEmittedForExternalSymbol = [this, FD]() { in getEmissionStatus()
20499 const FunctionDecl *Def = FD->getDefinition(); in getEmissionStatus()
20509 OMPDeclareTargetDeclAttr::getDeviceType(FD->getCanonicalDecl()); in getEmissionStatus()
20531 OMPDeclareTargetDeclAttr::getDeviceType(FD->getCanonicalDecl()); in getEmissionStatus()
20545 Sema::CUDAFunctionTarget T = IdentifyCUDATarget(FD); in getEmissionStatus()