Lines Matching refs:FD
1193 FunctionDecl *FD = D->getAsFunction();
1194 if (!FD)
1199 assert(CurContext == FD->getLexicalParent() &&
1201 CurContext = FD;
1204 for (unsigned P = 0, NumParams = FD->getNumParams(); P < NumParams; ++P) {
1205 ParmVarDecl *Param = FD->getParamDecl(P);
1431 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
1432 if (FD->getTemplateSpecializationKind() == TSK_ImplicitInstantiation)
1435 if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) {
1440 if (FD->isInlined() && !isMainFileLoc(*this, FD->getLocation()))
1444 if (FD->doesThisDeclarationHaveABody() &&
1445 Context.DeclMustBeEmitted(FD))
1477 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
1478 const FunctionDecl *First = FD->getFirstDecl();
1479 if (FD != First && ShouldWarnIfUnusedFileScopedDecl(First))
1664 if (const auto *FD = dyn_cast<FieldDecl>(ShadowI->second)) {
1666 << D << FD << FD->getParent();
1667 Diag(FD->getLocation(), diag::note_previous_declaration);
2330 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
2331 return FD->getDefinition();
2357 if (FunctionDecl *FD = dyn_cast<FunctionDecl>(New)) {
2359 S.CheckForFunctionRedefinition(FD, cast<FunctionDecl>(Def), &SkipBody);
2642 static bool canRedefineFunction(const FunctionDecl *FD,
2644 return ((FD->hasAttr<GNUInlineAttr>() || LangOpts.GNUInline) &&
2646 FD->isInlineSpecified() &&
2647 FD->getStorageClass() == SC_Extern);
4216 const auto *FD = dyn_cast<FieldDecl>(I);
4218 FD = IFD->getAnonField();
4219 if (FD && FD->hasInClassInitializer())
4220 return FD->getLocation();
4333 if (auto *FD = dyn_cast<FieldDecl>(Mem)) {
4337 assert(FD->getAccess() != AS_none);
4338 if (FD->getAccess() != AS_public) {
4339 Diag(FD->getLocation(), diag::err_anonymous_record_nonpublic_member)
4340 << Record->isUnion() << (FD->getAccess() == AS_protected);
4349 if (CheckNontrivialField(FD))
5632 auto *FD = dyn_cast<FunctionDecl>(OldDecl);
5633 if (FD && FD->getTemplatedKind() == FunctionDecl::TK_NonTemplate)
5668 } else if (const auto *FD = dyn_cast<FunctionDecl>(NewDecl)) {
5669 IsInline = FD->isInlined();
5670 IsQualifiedFriend = FD->getQualifier() &&
5671 FD->getFriendObjectKind() == Decl::FOK_Declared;
5707 static bool isFunctionDefinitionDiscarded(Sema &S, FunctionDecl *FD) {
5711 if (!FD->isInlined()) return false;
5714 if (S.getLangOpts().CPlusPlus && !FD->hasAttr<GNUInlineAttr>())
5724 FD->setLazyBody(1);
5728 S.Context.GetGVALinkageForFunction(FD) == GVA_AvailableExternally;
5731 FD->setLazyBody(0);
5779 static bool shouldConsiderLinkage(const FunctionDecl *FD) {
5780 const DeclContext *DC = FD->getDeclContext()->getRedeclContext();
5840 if (const auto *FD = dyn_cast<FunctionDecl>(D))
5841 return FD->isExternC();
6550 if (FieldDecl *FD = dyn_cast<FieldDecl>(ShadowedDecl)) {
6562 ShadowingDecls.insert({D, FD});
6705 if (FunctionDecl *FD = dyn_cast<FunctionDecl>(Prev))
6706 Prev = FD->getFirstDecl();
6865 FunctionDecl *FD = getCurFunctionDecl();
6866 if (FD && !FD->hasAttr<OpenCLKernelAttr>()) {
7126 FunctionDecl *FD = dyn_cast<FunctionDecl>(*CDecl);
7128 if (FD && !FD->hasBody() &&
7129 hasSimilarParameters(Context, FD, OriginalFD, MismatchedParams)) {
7130 if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) {
7187 FunctionDecl *FD = dyn_cast<FunctionDecl>(*Func);
7188 if (FD &&
7189 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) {
7194 NearMatches.push_back(std::make_pair(FD, ParamNum));
7212 FunctionDecl *FD = dyn_cast<FunctionDecl>(*CDecl);
7213 if (FD && !FD->hasBody() &&
7214 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) {
7215 Previous.addDecl(FD);
7275 FunctionDecl *FD = NearMatch->first;
7276 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD);
7282 ParmVarDecl *FDParam = FD->getParamDecl(Idx-1);
7284 if (Loc.isInvalid()) Loc = FD->getLocation();
7290 SemaRef.Diag(FD->getLocation(), diag::note_member_def_close_const_match)
7291 << NewFDisConst << FD->getSourceRange().getEnd();
7293 SemaRef.Diag(FD->getLocation(),
7605 for (const auto *FD : RD->fields()) {
7606 QualType QT = FD->getType();
7616 VisitStack.push_back(FD);
7648 S.Diag(FD->getLocation(), diag::note_illegal_field_declared_here)
7872 // a friend yet, so 'isDependentContext' on the FD doesn't work.
8904 void Sema::CheckMain(FunctionDecl* FD, const DeclSpec& DS) {
8912 if (FD->getStorageClass() == SC_Static)
8916 if (FD->isInlineSpecified())
8926 if (FD->isConstexpr()) {
8929 FD->setConstexpr(false);
8933 Diag(FD->getLocation(), diag::err_opencl_no_main)
8934 << FD->hasAttr<OpenCLKernelAttr>();
8935 FD->setInvalidDecl();
8939 QualType T = FD->getType();
8950 FD->setHasImplicitReturnZero(true);
8952 Diag(FD->getTypeSpecStartLoc(), diag::ext_main_returns_nonint);
8953 SourceRange RTRange = FD->getReturnTypeSourceRange();
8965 FD->setHasImplicitReturnZero(true);
8968 SourceRange RTRange = FD->getReturnTypeSourceRange();
8969 Diag(FD->getTypeSpecStartLoc(), diag::err_main_returns_nonint)
8972 FD->setInvalidDecl(true);
8981 assert(FD->getNumParams() == nparams);
8986 Diag(FD->getLocation(), diag::ext_variadic_main);
8998 Diag(FD->getLocation(), diag::err_main_surplus_args) << nparams;
8999 FD->setInvalidDecl(true);
9035 Diag(FD->getLocation(), diag::err_main_arg_wrong) << i << Expected[i];
9037 FD->setInvalidDecl(true);
9041 if (nparams == 1 && !FD->isInvalidDecl()) {
9042 Diag(FD->getLocation(), diag::warn_main_one_arg);
9045 if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) {
9046 Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD;
9047 FD->setInvalidDecl();
9051 void Sema::CheckMSVCRTEntryPoint(FunctionDecl *FD) {
9052 QualType T = FD->getType();
9062 if (FD->getName() != "DllMain")
9063 FD->setHasImplicitReturnZero(true);
9065 if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) {
9066 Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD;
9067 FD->setInvalidDecl();
9147 FieldDecl *FD = dyn_cast<FieldDecl>(ME->getMemberDecl());
9148 if (!FD)
9150 Fields.push_back(FD);
9151 if (FD->getType()->isReferenceType())
9343 if (FunctionDecl *FD = E->getDirectCallee()) {
9344 if (FD->isInStdNamespace() && FD->getIdentifier() &&
9345 FD->getIdentifier()->isStr("move")) {
10515 if (FunctionDecl *FD =
10518 if (Attr *A = getDLLAttr(FD)) {
10527 (FD->hasAttr<CUDADeviceAttr>() || FD->hasAttr<CUDAGlobalAttr>()) &&
11088 static bool ShouldWarnAboutMissingPrototype(const FunctionDecl *FD,
11091 if (FD->isInvalidDecl())
11095 if (!FD->isGlobal())
11099 if (isa<CXXMethodDecl>(FD))
11103 if (FD->isMain())
11107 if (FD->isInlined())
11111 if (FD->getDescribedFunctionTemplate())
11115 if (FD->isFunctionTemplateSpecialization())
11119 if (FD->hasAttr<OpenCLKernelAttr>())
11123 if (FD->isDeleted())
11127 for (const FunctionDecl *Prev = FD->getPreviousDecl();
11135 if (FD->getNumParams() == 0)
11144 Sema::CheckForFunctionRedefinition(FunctionDecl *FD,
11151 if (!FD->isDefined(Definition))
11166 makeMergedDefinitionVisible(TD, FD->getLocation());
11169 FD->getLocation());
11175 Diag(FD->getLocation(), diag::err_redefinition_extern_inline)
11176 << FD->getDeclName() << getLangOpts().CPlusPlus;
11178 Diag(FD->getLocation(), diag::err_redefinition) << FD->getDeclName();
11181 FD->setInvalidDecl();
11239 FunctionDecl *FD = nullptr;
11242 FD = FunTmpl->getTemplatedDecl();
11244 FD = cast<FunctionDecl>(D);
11247 if (!FD->isLateTemplateParsed()) {
11248 CheckForFunctionRedefinition(FD, nullptr, SkipBody);
11264 if (isGenericLambdaCallOperatorSpecialization(FD)) {
11275 if (unsigned BuiltinID = FD->getBuiltinID()) {
11278 Diag(FD->getLocation(), diag::err_builtin_definition) << FD;
11279 FD->setInvalidDecl();
11285 QualType ResultType = FD->getReturnType();
11287 !FD->isInvalidDecl() &&
11288 RequireCompleteType(FD->getLocation(), ResultType,
11290 FD->setInvalidDecl();
11293 PushDeclContext(FnBodyScope, FD);
11296 CheckParmsForFunctionDef(FD->parameters(),
11300 for (auto Param : FD->parameters()) {
11301 Param->setOwningFunction(FD);
11315 I = FD->getDeclsInPrototypeScope().begin(),
11316 E = FD->getDeclsInPrototypeScope().end();
11345 if (const FunctionProtoType *FPT = FD->getType()->getAs<FunctionProtoType>())
11349 if (FD->hasAttr<DLLImportAttr>() && !FD->isInlined() &&
11350 !FD->isTemplateInstantiation()) {
11351 assert(!FD->hasAttr<DLLExportAttr>());
11352 Diag(FD->getLocation(), diag::err_attribute_dllimport_function_definition);
11353 FD->setInvalidDecl();
11362 Diag(FD->getLocation(), diag::warn_function_def_in_objc_container);
11420 if (const FunctionDecl *FD = D->getAsFunction())
11421 if (FD->isConstexpr() || FD->getReturnType()->isUndeducedType())
11427 if (FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(Decl))
11428 FD->setHasSkippedBody();
11440 FunctionDecl *FD = dcl ? dcl->getAsFunction() : nullptr;
11446 CheckCompletedCoroutineBody(FD, Body);
11448 if (FD) {
11449 FD->setBody(Body);
11452 if (!FD->isInvalidDecl() && Body && !FD->isDependentContext() &&
11453 FD->getReturnType()->isUndeducedType()) {
11457 if (!FD->getReturnType()->getAs<AutoType>()) {
11459 << FD->getReturnType();
11460 FD->setInvalidDecl();
11463 TypeLoc ResultType = getReturnTypeLoc(FD);
11465 FD, SubstAutoType(ResultType.getType(), Context.VoidTy));
11468 } else if (getLangOpts().CPlusPlus11 && isLambdaCallOperator(FD)) {
11483 FD->getType()->getAs<FunctionProtoType>();
11484 FD->setType(Context.getFunctionType(RetType, Proto->getParamTypes(),
11492 if (!FD->isFirstDecl() && FD->getPreviousDecl()->isUsed()) {
11493 if (!FD->isExternallyVisible())
11494 UndefinedButUsed.erase(FD);
11495 else if (FD->isInlined() &&
11497 (!FD->getPreviousDecl()->hasAttr<GNUInlineAttr>()))
11498 UndefinedButUsed.erase(FD);
11503 if (FD->hasImplicitReturnZero() || FD->hasAttr<NakedAttr>())
11508 if (getLangOpts().MicrosoftExt && FD->isPure() && FD->isCanonicalDecl())
11509 Diag(FD->getLocation(), diag::ext_pure_function_definition);
11511 if (!FD->isInvalidDecl()) {
11513 if (!FD->isDeleted() && !FD->isDefaulted())
11514 DiagnoseUnusedParameters(FD->parameters());
11515 DiagnoseSizeOfParametersAndReturnValue(FD->parameters(),
11516 FD->getReturnType(), FD);
11519 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(FD))
11520 MarkVTableUsed(FD->getLocation(), Constructor->getParent());
11521 else if (CXXDestructorDecl *Destructor = dyn_cast<CXXDestructorDecl>(FD))
11522 MarkVTableUsed(FD->getLocation(), Destructor->getParent());
11527 if (getLangOpts().CPlusPlus && FD->getReturnType()->isRecordType() &&
11528 !FD->isDependentContext())
11538 if (ShouldWarnAboutMissingPrototype(FD, PossibleZeroParamPrototype)) {
11539 Diag(FD->getLocation(), diag::warn_missing_prototype) << FD;
11556 if (auto *MD = dyn_cast<CXXMethodDecl>(FD)) {
11563 if (FD->isInlined() &&
11575 MarkVTableUsed(FD->getLocation(), MD->getParent(), true);
11580 assert((FD == getCurFunctionDecl() || getCurLambda()->CallOperator == FD) &&
11641 if (Body && (!FD || !FD->isDefaulted())) {
11645 if (FD && isa<CXXConstructorDecl>(FD) && isa<CXXTryStmt>(Body))
11675 if (!IsInstantiation && FD && FD->isConstexpr() && !FD->isInvalidDecl() &&
11676 (!CheckConstexprFunctionDecl(FD) ||
11677 !CheckConstexprFunctionBody(FD, Body)))
11678 FD->setInvalidDecl();
11680 if (FD && FD->hasAttr<NakedAttr>()) {
11684 Diag(FD->getAttr<NakedAttr>()->getLocation(), diag::note_attribute);
11685 FD->setInvalidDecl();
11805 FunctionDecl *FD = cast<FunctionDecl>(ActOnDeclarator(TUScope, D));
11806 FD->setImplicit();
11810 AddKnownFunctionAttributes(FD);
11812 return FD;
11824 void Sema::AddKnownFunctionAttributes(FunctionDecl *FD) {
11825 if (FD->isInvalidDecl())
11830 if (unsigned BuiltinID = FD->getBuiltinID()) {
11835 if (!FD->hasAttr<FormatAttr>()) {
11837 unsigned int NumParams = FD->getNumParams();
11839 FD->getParamDecl(FormatIdx)->getType()->isObjCObjectPointerType())
11841 FD->addAttr(FormatAttr::CreateImplicit(Context,
11845 FD->getLocation()));
11850 if (!FD->hasAttr<FormatAttr>())
11851 FD->addAttr(FormatAttr::CreateImplicit(Context,
11855 FD->getLocation()));
11863 if (!FD->hasAttr<ConstAttr>())
11864 FD->addAttr(ConstAttr::CreateImplicit(Context, FD->getLocation()));
11868 !FD->hasAttr<ReturnsTwiceAttr>())
11869 FD->addAttr(ReturnsTwiceAttr::CreateImplicit(Context,
11870 FD->getLocation()));
11871 if (Context.BuiltinInfo.isNoThrow(BuiltinID) && !FD->hasAttr<NoThrowAttr>())
11872 FD->addAttr(NoThrowAttr::CreateImplicit(Context, FD->getLocation()));
11873 if (Context.BuiltinInfo.isPure(BuiltinID) && !FD->hasAttr<PureAttr>())
11874 FD->addAttr(PureAttr::CreateImplicit(Context, FD->getLocation()));
11875 if (Context.BuiltinInfo.isConst(BuiltinID) && !FD->hasAttr<ConstAttr>())
11876 FD->addAttr(ConstAttr::CreateImplicit(Context, FD->getLocation()));
11878 !FD->hasAttr<CUDADeviceAttr>() && !FD->hasAttr<CUDAHostAttr>()) {
11884 FD->addAttr(CUDADeviceAttr::CreateImplicit(Context, FD->getLocation()));
11886 FD->addAttr(CUDAHostAttr::CreateImplicit(Context, FD->getLocation()));
11894 FD->isExternC() && !FD->hasAttr<NoThrowAttr>()) {
11895 const auto *FPT = FD->getType()->getAs<FunctionProtoType>();
11897 FD->addAttr(NoThrowAttr::CreateImplicit(Context, FD->getLocation()));
11900 IdentifierInfo *Name = FD->getIdentifier();
11904 FD->getDeclContext()->isTranslationUnit()) ||
11905 (isa<LinkageSpecDecl>(FD->getDeclContext()) &&
11906 cast<LinkageSpecDecl>(FD->getDeclContext())->getLanguage() ==
11916 if (!FD->hasAttr<FormatAttr>())
11917 FD->addAttr(FormatAttr::CreateImplicit(Context,
11920 FD->getLocation()));
11926 if (!FD->hasAttr<FormatArgAttr>())
11927 FD->addAttr(FormatArgAttr::CreateImplicit(Context, 1,
11928 FD->getLocation()));
13628 bool Sema::CheckNontrivialField(FieldDecl *FD) {
13629 assert(FD);
13632 if (FD->isInvalidDecl() || FD->getType()->isDependentType())
13635 QualType EltTy = Context.getBaseElementType(FD->getType());
13666 SourceLocation Loc = FD->getLocation();
13668 if (!FD->hasAttr<UnavailableAttr>())
13669 FD->addAttr(UnavailableAttr::CreateImplicit(Context, "",
13675 Diag(FD->getLocation(), getLangOpts().CPlusPlus11 ?
13678 << FD->getParent()->isUnion() << FD->getDeclName() << member;
13892 FieldDecl *FD = cast<FieldDecl>(*i);
13895 const Type *FDTy = FD->getType().getTypePtr();
13897 if (!FD->isAnonymousStructOrUnion()) {
13899 RecFields.push_back(FD);
13904 if (FD->isInvalidDecl()) {
13921 Diag(FD->getLocation(), diag::err_field_declared_as_function)
13922 << FD->getDeclName();
13923 FD->setInvalidDecl();
13950 Diag(FD->getLocation(), DiagID) << FD->getDeclName()
13959 Diag(FD->getLocation(), diag::err_flexible_array_virtual_base)
13960 << FD->getDeclName() << Record->getTagKind();
13962 Diag(FD->getLocation(), diag::ext_c99_flexible_array_member)
13963 << FD->getDeclName() << Record->getTagKind();
13970 QualType BaseElem = Context.getBaseElementType(FD->getType());
13972 Diag(FD->getLocation(), diag::err_flexible_array_has_nontrivial_dtor)
13973 << FD->getDeclName() << FD->getType();
13974 FD->setInvalidDecl();
13981 RequireCompleteType(FD->getLocation(), FD->getType(),
13984 FD->setInvalidDecl();
13997 Diag(FD->getLocation(), diag::ext_variable_sized_type_in_struct)
13998 << FD->getDeclName() << FD->getType();
14002 Diag(FD->getLocation(), diag::ext_flexible_array_in_struct)
14003 << FD->getDeclName();
14008 RequireNonAbstractType(FD->getLocation(), FD->getType(),
14012 FD->setInvalidDecl();
14020 Diag(FD->getLocation(), diag::err_statically_allocated_object)
14021 << FixItHint::CreateInsertion(FD->getLocation(), "*");
14022 QualType T = Context.getObjCObjectPointerType(FD->getType());
14023 FD->setType(T);
14031 QualType T = FD->getType();
14034 SourceLocation loc = FD->getLocation();
14036 if (!FD->hasAttr<UnavailableAttr>()) {
14037 FD->addAttr(UnavailableAttr::CreateImplicit(Context, "",
14041 Diag(FD->getLocation(), diag::err_arc_objc_object_in_tag)
14049 if (FD->getType()->isObjCObjectPointerType() ||
14050 FD->getType().isObjCGCStrong())
14052 else if (Context.getAsArrayType(FD->getType())) {
14053 QualType BaseType = Context.getBaseElementType(FD->getType());
14062 if (Record && FD->getType().isVolatileQualified())
14065 if (FD->getIdentifier())