Lines Matching refs:FD
866 FunctionDecl *FD = dyn_cast<FunctionDecl>(D); in ActOnReenterFunctionContext() local
870 FD = TFD->getTemplatedDecl(); in ActOnReenterFunctionContext()
872 if (!FD) in ActOnReenterFunctionContext()
877 assert(CurContext == FD->getLexicalParent() && in ActOnReenterFunctionContext()
879 CurContext = FD; in ActOnReenterFunctionContext()
882 for (unsigned P = 0, NumParams = FD->getNumParams(); P < NumParams; ++P) { in ActOnReenterFunctionContext()
883 ParmVarDecl *Param = FD->getParamDecl(P); in ActOnReenterFunctionContext()
1081 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in ShouldWarnIfUnusedFileScopedDecl() local
1082 if (FD->getTemplateSpecializationKind() == TSK_ImplicitInstantiation) in ShouldWarnIfUnusedFileScopedDecl()
1085 if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) { in ShouldWarnIfUnusedFileScopedDecl()
1090 if (FD->getStorageClass() == SC_Static && in ShouldWarnIfUnusedFileScopedDecl()
1091 FD->isInlineSpecified()) in ShouldWarnIfUnusedFileScopedDecl()
1095 if (FD->doesThisDeclarationHaveABody() && in ShouldWarnIfUnusedFileScopedDecl()
1096 Context.DeclMustBeEmitted(FD)) in ShouldWarnIfUnusedFileScopedDecl()
1123 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in MarkUnusedFileScopedDecl() local
1124 const FunctionDecl *First = FD->getFirstDeclaration(); in MarkUnusedFileScopedDecl()
1125 if (FD != First && ShouldWarnIfUnusedFileScopedDecl(First)) in MarkUnusedFileScopedDecl()
1719 static bool canRedefineFunction(const FunctionDecl *FD, in canRedefineFunction() argument
1721 return ((FD->hasAttr<GNUInlineAttr>() || LangOpts.GNUInline) && in canRedefineFunction()
1723 FD->isInlineSpecified() && in canRedefineFunction()
1724 FD->getStorageClass() == SC_Extern); in canRedefineFunction()
2789 if (FieldDecl *FD = dyn_cast<FieldDecl>(*Mem)) { in BuildAnonymousStructOrUnion() local
2793 assert(FD->getAccess() != AS_none); in BuildAnonymousStructOrUnion()
2794 if (FD->getAccess() != AS_public) { in BuildAnonymousStructOrUnion()
2795 Diag(FD->getLocation(), diag::err_anonymous_record_nonpublic_member) in BuildAnonymousStructOrUnion()
2796 << (int)Record->isUnion() << (int)(FD->getAccess() == AS_protected); in BuildAnonymousStructOrUnion()
2805 if (CheckNontrivialField(FD)) in BuildAnonymousStructOrUnion()
4578 FunctionDecl *FD = dyn_cast<FunctionDecl>(*Func); in DiagnoseInvalidRedeclaration() local
4579 if (FD && in DiagnoseInvalidRedeclaration()
4580 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
4585 NearMatches.push_back(std::make_pair(FD, ParamNum)); in DiagnoseInvalidRedeclaration()
4603 FunctionDecl *FD = dyn_cast<FunctionDecl>(*CDecl); in DiagnoseInvalidRedeclaration() local
4604 if (FD && hasSimilarParameters(SemaRef.Context, FD, NewFD, in DiagnoseInvalidRedeclaration()
4606 Previous.addDecl(FD); in DiagnoseInvalidRedeclaration()
4630 if (FunctionDecl *FD = dyn_cast<FunctionDecl>(*Func)) in DiagnoseInvalidRedeclaration() local
4631 NearMatches.push_back(std::make_pair(FD, 0)); in DiagnoseInvalidRedeclaration()
4660 FunctionDecl *FD = NearMatch->first; in DiagnoseInvalidRedeclaration() local
4662 if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) in DiagnoseInvalidRedeclaration()
4666 ParmVarDecl *FDParam = FD->getParamDecl(Idx-1); in DiagnoseInvalidRedeclaration()
4668 if (Loc.isInvalid()) Loc = FD->getLocation(); in DiagnoseInvalidRedeclaration()
4672 SemaRef.Diag(FD->getLocation(), diag::note_previous_decl) in DiagnoseInvalidRedeclaration()
4675 SemaRef.Diag(FD->getLocation(), diag::note_member_def_close_const_match) in DiagnoseInvalidRedeclaration()
4676 << NewFDisConst << FD->getSourceRange().getEnd(); in DiagnoseInvalidRedeclaration()
4678 SemaRef.Diag(FD->getLocation(), diag::note_member_def_close_match); in DiagnoseInvalidRedeclaration()
5894 void Sema::CheckMain(FunctionDecl* FD, const DeclSpec& DS) { in CheckMain() argument
5900 if (FD->getStorageClass() == SC_Static) in CheckMain()
5904 if (FD->isInlineSpecified()) in CheckMain()
5907 if (FD->isConstexpr()) { in CheckMain()
5910 FD->setConstexpr(false); in CheckMain()
5913 QualType T = FD->getType(); in CheckMain()
5922 FD->setHasImplicitReturnZero(true); in CheckMain()
5928 Diag(FD->getTypeSpecStartLoc(), diag::ext_main_returns_nonint); in CheckMain()
5932 Diag(FD->getTypeSpecStartLoc(), diag::err_main_returns_nonint); in CheckMain()
5933 FD->setInvalidDecl(true); in CheckMain()
5941 assert(FD->getNumParams() == nparams); in CheckMain()
5952 Diag(FD->getLocation(), diag::err_main_surplus_args) << nparams; in CheckMain()
5953 FD->setInvalidDecl(true); in CheckMain()
5988 Diag(FD->getLocation(), diag::err_main_arg_wrong) << i << Expected[i]; in CheckMain()
5990 FD->setInvalidDecl(true); in CheckMain()
5994 if (nparams == 1 && !FD->isInvalidDecl()) { in CheckMain()
5995 Diag(FD->getLocation(), diag::warn_main_one_arg); in CheckMain()
5998 if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) { in CheckMain()
5999 Diag(FD->getLocation(), diag::err_main_template_decl); in CheckMain()
6000 FD->setInvalidDecl(); in CheckMain()
7199 static bool ShouldWarnAboutMissingPrototype(const FunctionDecl *FD) { in ShouldWarnAboutMissingPrototype() argument
7201 if (FD->isInvalidDecl()) in ShouldWarnAboutMissingPrototype()
7205 if (!FD->isGlobal()) in ShouldWarnAboutMissingPrototype()
7209 if (isa<CXXMethodDecl>(FD)) in ShouldWarnAboutMissingPrototype()
7213 if (FD->isMain()) in ShouldWarnAboutMissingPrototype()
7217 if (FD->isInlined()) in ShouldWarnAboutMissingPrototype()
7221 if (FD->getDescribedFunctionTemplate()) in ShouldWarnAboutMissingPrototype()
7225 if (FD->isFunctionTemplateSpecialization()) in ShouldWarnAboutMissingPrototype()
7229 for (const FunctionDecl *Prev = FD->getPreviousDecl(); in ShouldWarnAboutMissingPrototype()
7243 void Sema::CheckForFunctionRedefinition(FunctionDecl *FD) { in CheckForFunctionRedefinition() argument
7247 if (FD->isDefined(Definition) && in CheckForFunctionRedefinition()
7251 Diag(FD->getLocation(), diag::err_redefinition_extern_inline) in CheckForFunctionRedefinition()
7252 << FD->getDeclName() << getLangOpts().CPlusPlus; in CheckForFunctionRedefinition()
7254 Diag(FD->getLocation(), diag::err_redefinition) << FD->getDeclName(); in CheckForFunctionRedefinition()
7265 FunctionDecl *FD = 0; in ActOnStartOfFunctionDef() local
7268 FD = FunTmpl->getTemplatedDecl(); in ActOnStartOfFunctionDef()
7270 FD = cast<FunctionDecl>(D); in ActOnStartOfFunctionDef()
7276 if (!FD->isLateTemplateParsed()) in ActOnStartOfFunctionDef()
7277 CheckForFunctionRedefinition(FD); in ActOnStartOfFunctionDef()
7280 if (unsigned BuiltinID = FD->getBuiltinID()) { in ActOnStartOfFunctionDef()
7282 Diag(FD->getLocation(), diag::err_builtin_definition) << FD; in ActOnStartOfFunctionDef()
7283 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
7289 QualType ResultType = FD->getResultType(); in ActOnStartOfFunctionDef()
7291 !FD->isInvalidDecl() && in ActOnStartOfFunctionDef()
7292 RequireCompleteType(FD->getLocation(), ResultType, in ActOnStartOfFunctionDef()
7294 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
7301 if (ShouldWarnAboutMissingPrototype(FD)) in ActOnStartOfFunctionDef()
7302 Diag(FD->getLocation(), diag::warn_missing_prototype) << FD; in ActOnStartOfFunctionDef()
7305 PushDeclContext(FnBodyScope, FD); in ActOnStartOfFunctionDef()
7308 CheckParmsForFunctionDef(FD->param_begin(), FD->param_end(), in ActOnStartOfFunctionDef()
7312 for (unsigned p = 0, NumParams = FD->getNumParams(); p < NumParams; ++p) { in ActOnStartOfFunctionDef()
7313 ParmVarDecl *Param = FD->getParamDecl(p); in ActOnStartOfFunctionDef()
7314 Param->setOwningFunction(FD); in ActOnStartOfFunctionDef()
7327 for (llvm::ArrayRef<NamedDecl*>::iterator I = FD->getDeclsInPrototypeScope().begin(), in ActOnStartOfFunctionDef()
7328 E = FD->getDeclsInPrototypeScope().end(); I != E; ++I) { in ActOnStartOfFunctionDef()
7362 if (const FunctionProtoType *FPT = FD->getType()->getAs<FunctionProtoType>()) in ActOnStartOfFunctionDef()
7367 DLLImportAttr *DA = FD->getAttr<DLLImportAttr>(); in ActOnStartOfFunctionDef()
7368 if (DA && (!FD->getAttr<DLLExportAttr>())) { in ActOnStartOfFunctionDef()
7372 !(LangOpts.MicrosoftExt && FD->getLexicalDeclContext()->isRecord())) { in ActOnStartOfFunctionDef()
7373 Diag(FD->getLocation(), in ActOnStartOfFunctionDef()
7376 FD->setInvalidDecl(); in ActOnStartOfFunctionDef()
7377 return FD; in ActOnStartOfFunctionDef()
7386 Diag(FD->getLocation(), in ActOnStartOfFunctionDef()
7388 << FD->getName() << "dllimport"; in ActOnStartOfFunctionDef()
7391 return FD; in ActOnStartOfFunctionDef()
7434 FunctionDecl *FD = 0; in ActOnFinishFunctionBody() local
7437 FD = FunTmpl->getTemplatedDecl(); in ActOnFinishFunctionBody()
7439 FD = dyn_cast_or_null<FunctionDecl>(dcl); in ActOnFinishFunctionBody()
7444 if (FD) { in ActOnFinishFunctionBody()
7445 FD->setBody(Body); in ActOnFinishFunctionBody()
7449 if (FD->hasImplicitReturnZero() || FD->hasAttr<NakedAttr>()) in ActOnFinishFunctionBody()
7454 if (getLangOpts().MicrosoftExt && FD->isPure()) in ActOnFinishFunctionBody()
7455 Diag(FD->getLocation(), diag::warn_pure_function_definition); in ActOnFinishFunctionBody()
7457 if (!FD->isInvalidDecl()) { in ActOnFinishFunctionBody()
7458 DiagnoseUnusedParameters(FD->param_begin(), FD->param_end()); in ActOnFinishFunctionBody()
7459 DiagnoseSizeOfParametersAndReturnValue(FD->param_begin(), FD->param_end(), in ActOnFinishFunctionBody()
7460 FD->getResultType(), FD); in ActOnFinishFunctionBody()
7463 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(FD)) in ActOnFinishFunctionBody()
7464 MarkVTableUsed(FD->getLocation(), Constructor->getParent()); in ActOnFinishFunctionBody()
7469 assert((FD == getCurFunctionDecl() || getCurLambda()->CallOperator == FD) && in ActOnFinishFunctionBody()
7506 if (FD && isa<CXXConstructorDecl>(FD) && isa<CXXTryStmt>(Body)) in ActOnFinishFunctionBody()
7535 if (!IsInstantiation && FD && FD->isConstexpr() && !FD->isInvalidDecl() && in ActOnFinishFunctionBody()
7536 (!CheckConstexprFunctionDecl(FD) || in ActOnFinishFunctionBody()
7537 !CheckConstexprFunctionBody(FD, Body))) in ActOnFinishFunctionBody()
7538 FD->setInvalidDecl(); in ActOnFinishFunctionBody()
7648 FunctionDecl *FD = dyn_cast<FunctionDecl>(ActOnDeclarator(TUScope, D)); in ImplicitlyDefineFunction() local
7649 FD->setImplicit(); in ImplicitlyDefineFunction()
7653 AddKnownFunctionAttributes(FD); in ImplicitlyDefineFunction()
7655 return FD; in ImplicitlyDefineFunction()
7667 void Sema::AddKnownFunctionAttributes(FunctionDecl *FD) { in AddKnownFunctionAttributes() argument
7668 if (FD->isInvalidDecl()) in AddKnownFunctionAttributes()
7673 if (unsigned BuiltinID = FD->getBuiltinID()) { in AddKnownFunctionAttributes()
7678 if (!FD->getAttr<FormatAttr>()) { in AddKnownFunctionAttributes()
7680 unsigned int NumParams = FD->getNumParams(); in AddKnownFunctionAttributes()
7682 FD->getParamDecl(FormatIdx)->getType()->isObjCObjectPointerType()) in AddKnownFunctionAttributes()
7684 FD->addAttr(::new (Context) FormatAttr(FD->getLocation(), Context, in AddKnownFunctionAttributes()
7691 if (!FD->getAttr<FormatAttr>()) in AddKnownFunctionAttributes()
7692 FD->addAttr(::new (Context) FormatAttr(FD->getLocation(), Context, in AddKnownFunctionAttributes()
7702 if (!FD->getAttr<ConstAttr>()) in AddKnownFunctionAttributes()
7703 FD->addAttr(::new (Context) ConstAttr(FD->getLocation(), Context)); in AddKnownFunctionAttributes()
7707 !FD->getAttr<ReturnsTwiceAttr>()) in AddKnownFunctionAttributes()
7708 FD->addAttr(::new (Context) ReturnsTwiceAttr(FD->getLocation(), Context)); in AddKnownFunctionAttributes()
7709 if (Context.BuiltinInfo.isNoThrow(BuiltinID) && !FD->getAttr<NoThrowAttr>()) in AddKnownFunctionAttributes()
7710 FD->addAttr(::new (Context) NoThrowAttr(FD->getLocation(), Context)); in AddKnownFunctionAttributes()
7711 if (Context.BuiltinInfo.isConst(BuiltinID) && !FD->getAttr<ConstAttr>()) in AddKnownFunctionAttributes()
7712 FD->addAttr(::new (Context) ConstAttr(FD->getLocation(), Context)); in AddKnownFunctionAttributes()
7715 IdentifierInfo *Name = FD->getIdentifier(); in AddKnownFunctionAttributes()
7719 FD->getDeclContext()->isTranslationUnit()) || in AddKnownFunctionAttributes()
7720 (isa<LinkageSpecDecl>(FD->getDeclContext()) && in AddKnownFunctionAttributes()
7721 cast<LinkageSpecDecl>(FD->getDeclContext())->getLanguage() == in AddKnownFunctionAttributes()
7731 if (!FD->getAttr<FormatAttr>()) in AddKnownFunctionAttributes()
7732 FD->addAttr(::new (Context) FormatAttr(FD->getLocation(), Context, in AddKnownFunctionAttributes()
9098 bool Sema::CheckNontrivialField(FieldDecl *FD) { in CheckNontrivialField() argument
9099 assert(FD); in CheckNontrivialField()
9102 if (FD->isInvalidDecl()) in CheckNontrivialField()
9105 QualType EltTy = Context.getBaseElementType(FD->getType()); in CheckNontrivialField()
9131 SourceLocation Loc = FD->getLocation(); in CheckNontrivialField()
9133 if (!FD->hasAttr<UnavailableAttr>()) in CheckNontrivialField()
9134 FD->addAttr(new (Context) UnavailableAttr(Loc, Context, in CheckNontrivialField()
9140 Diag(FD->getLocation(), getLangOpts().CPlusPlus0x ? in CheckNontrivialField()
9143 << (int)FD->getParent()->isUnion() << FD->getDeclName() << member; in CheckNontrivialField()
9520 FieldDecl *FD = cast<FieldDecl>(*i); in ActOnFields() local
9523 const Type *FDTy = FD->getType().getTypePtr(); in ActOnFields()
9525 if (!FD->isAnonymousStructOrUnion()) { in ActOnFields()
9527 RecFields.push_back(FD); in ActOnFields()
9532 if (FD->isInvalidDecl()) { in ActOnFields()
9549 Diag(FD->getLocation(), diag::err_field_declared_as_function) in ActOnFields()
9550 << FD->getDeclName(); in ActOnFields()
9551 FD->setInvalidDecl(); in ActOnFields()
9565 Diag(FD->getLocation(), diag::ext_flexible_array_union_ms) in ActOnFields()
9566 << FD->getDeclName(); in ActOnFields()
9568 Diag(FD->getLocation(), diag::ext_flexible_array_empty_aggregate_ms) in ActOnFields()
9569 << FD->getDeclName() << Record->getTagKind(); in ActOnFields()
9572 Diag(FD->getLocation(), diag::ext_flexible_array_union_gnu) in ActOnFields()
9573 << FD->getDeclName(); in ActOnFields()
9575 Diag(FD->getLocation(), diag::ext_flexible_array_empty_aggregate_gnu) in ActOnFields()
9576 << FD->getDeclName() << Record->getTagKind(); in ActOnFields()
9579 Diag(FD->getLocation(), diag::ext_flexible_array_union_gnu) in ActOnFields()
9580 << FD->getDeclName(); in ActOnFields()
9582 Diag(FD->getLocation(), diag::ext_c99_flexible_array_member) in ActOnFields()
9583 << FD->getDeclName() << Record->getTagKind(); in ActOnFields()
9585 Diag(FD->getLocation(), diag::err_flexible_array_empty_struct) in ActOnFields()
9586 << FD->getDeclName(); in ActOnFields()
9587 FD->setInvalidDecl(); in ActOnFields()
9591 if (!FD->getType()->isDependentType() && in ActOnFields()
9592 !Context.getBaseElementType(FD->getType()).isPODType(Context)) { in ActOnFields()
9593 Diag(FD->getLocation(), diag::err_flexible_array_has_nonpod_type) in ActOnFields()
9594 << FD->getDeclName() << FD->getType(); in ActOnFields()
9595 FD->setInvalidDecl(); in ActOnFields()
9603 RequireCompleteType(FD->getLocation(), FD->getType(), in ActOnFields()
9606 FD->setInvalidDecl(); in ActOnFields()
9619 Diag(FD->getLocation(), diag::ext_variable_sized_type_in_struct) in ActOnFields()
9620 << FD->getDeclName() << FD->getType(); in ActOnFields()
9624 Diag(FD->getLocation(), diag::ext_flexible_array_in_struct) in ActOnFields()
9625 << FD->getDeclName(); in ActOnFields()
9635 Diag(FD->getLocation(), diag::err_statically_allocated_object) in ActOnFields()
9636 << FixItHint::CreateInsertion(FD->getLocation(), "*"); in ActOnFields()
9637 QualType T = Context.getObjCObjectPointerType(FD->getType()); in ActOnFields()
9638 FD->setType(T); in ActOnFields()
9647 QualType T = FD->getType(); in ActOnFields()
9650 SourceLocation loc = FD->getLocation(); in ActOnFields()
9652 if (!FD->hasAttr<UnavailableAttr>()) { in ActOnFields()
9653 FD->addAttr(new (Context) UnavailableAttr(loc, Context, in ActOnFields()
9657 Diag(FD->getLocation(), diag::err_arc_objc_object_in_struct) in ActOnFields()
9666 if (FD->getType()->isObjCObjectPointerType() || in ActOnFields()
9667 FD->getType().isObjCGCStrong()) in ActOnFields()
9669 else if (Context.getAsArrayType(FD->getType())) { in ActOnFields()
9670 QualType BaseType = Context.getBaseElementType(FD->getType()); in ActOnFields()
9681 if (FD->getIdentifier()) in ActOnFields()