Lines Matching refs:NewFD
8295 Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, in DiagnoseInvalidRedeclaration() argument
8297 DeclarationName Name = NewFD->getDeclName(); in DiagnoseInvalidRedeclaration()
8298 DeclContext *NewDC = NewFD->getDeclContext(); in DiagnoseInvalidRedeclaration()
8305 NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : in DiagnoseInvalidRedeclaration()
8307 LookupResult Prev(SemaRef, Name, NewFD->getLocation(), in DiagnoseInvalidRedeclaration()
8312 NewFD->setInvalidDecl(); in DiagnoseInvalidRedeclaration()
8319 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in DiagnoseInvalidRedeclaration()
8320 DifferentNameValidatorCCC CCC(SemaRef.Context, NewFD, in DiagnoseInvalidRedeclaration()
8327 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
8350 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
8369 NewFD->getTypeSourceInfo(), Previous, ExtraArgs.TemplateParamLists, in DiagnoseInvalidRedeclaration()
8403 SemaRef.Diag(NewFD->getLocation(), DiagMsg) in DiagnoseInvalidRedeclaration()
8404 << Name << NewDC << IsDefinition << NewFD->getLocation(); in DiagnoseInvalidRedeclaration()
8407 if (CXXMethodDecl *NewMD = dyn_cast<CXXMethodDecl>(NewFD)) in DiagnoseInvalidRedeclaration()
8426 << NewFD->getParamDecl(Idx - 1)->getType(); in DiagnoseInvalidRedeclaration()
8482 FunctionDecl *NewFD = nullptr; in CreateNewFunctionDecl() local
8496 NewFD = FunctionDecl::Create(SemaRef.Context, DC, D.getBeginLoc(), NameInfo, in CreateNewFunctionDecl()
8501 NewFD->setInvalidDecl(); in CreateNewFunctionDecl()
8503 return NewFD; in CreateNewFunctionDecl()
8994 FunctionDecl *NewFD = CreateNewFunctionDecl(*this, D, DC, R, TInfo, SC, in ActOnFunctionDeclarator() local
8996 if (!NewFD) return nullptr; in ActOnFunctionDeclarator()
8999 NewFD->setTopLevelDeclInObjCContainer(); in ActOnFunctionDeclarator()
9004 NewFD->setLexicalDeclContext(CurContext); in ActOnFunctionDeclarator()
9007 NewFD->setLocalExternDecl(); in ActOnFunctionDeclarator()
9018 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
9025 dyn_cast<CXXRecordDecl>(NewFD->getDeclContext())) { in ActOnFunctionDeclarator()
9026 if (Parent->isInterface() && cast<CXXMethodDecl>(NewFD)->isUserProvided()) in ActOnFunctionDeclarator()
9027 NewFD->setPure(true); in ActOnFunctionDeclarator()
9035 SetNestedNameSpecifier(*this, NewFD, D); in ActOnFunctionDeclarator()
9039 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9056 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9063 Diag(NewFD->getLocation(), diag::err_destructor_template); in ActOnFunctionDeclarator()
9064 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9077 NewFD->getLocation(), in ActOnFunctionDeclarator()
9079 NewFD); in ActOnFunctionDeclarator()
9081 NewFD->setDescribedFunctionTemplate(FunctionTemplate); in ActOnFunctionDeclarator()
9085 NewFD->setTemplateParameterListsInfo(Context, in ActOnFunctionDeclarator()
9094 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
9122 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9128 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
9132 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9142 if (isVirtual && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9151 } else if (NewFD->getDescribedFunctionTemplate()) { in ActOnFunctionDeclarator()
9159 NewFD->setVirtualAsWritten(true); in ActOnFunctionDeclarator()
9163 NewFD->getReturnType()->isUndeducedType()) in ActOnFunctionDeclarator()
9168 (NewFD->isDependentContext() || in ActOnFunctionDeclarator()
9170 NewFD->getReturnType()->isUndeducedType()) { in ActOnFunctionDeclarator()
9178 NewFD->getType()->castAs<FunctionProtoType>(); in ActOnFunctionDeclarator()
9181 NewFD->setType(Context.getFunctionType(Result, FPT->getParamTypes(), in ActOnFunctionDeclarator()
9188 if (isInline && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9201 if (hasExplicit && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9202 !isa<CXXDeductionGuideDecl>(NewFD)) { in ActOnFunctionDeclarator()
9208 } else if (!isa<CXXConstructorDecl>(NewFD) && in ActOnFunctionDeclarator()
9209 !isa<CXXConversionDecl>(NewFD)) { in ActOnFunctionDeclarator()
9222 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
9227 if (isa<CXXDestructorDecl>(NewFD) && in ActOnFunctionDeclarator()
9232 NewFD->setConstexprKind(getLangOpts().CPlusPlus20 in ActOnFunctionDeclarator()
9240 (NewFD->getOverloadedOperator() == OO_New || in ActOnFunctionDeclarator()
9241 NewFD->getOverloadedOperator() == OO_Array_New || in ActOnFunctionDeclarator()
9242 NewFD->getOverloadedOperator() == OO_Delete || in ActOnFunctionDeclarator()
9243 NewFD->getOverloadedOperator() == OO_Array_Delete)) { in ActOnFunctionDeclarator()
9246 << NewFD; in ActOnFunctionDeclarator()
9247 NewFD->setConstexprKind(ConstexprSpecKind::Constexpr); in ActOnFunctionDeclarator()
9260 NewFD->setModulePrivate(); in ActOnFunctionDeclarator()
9271 NewFD->setObjectOfFriendDecl(); in ActOnFunctionDeclarator()
9272 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
9283 NewFD->setDefaulted(); in ActOnFunctionDeclarator()
9287 NewFD->setDeletedAsWritten(); in ActOnFunctionDeclarator()
9291 if (isa<CXXMethodDecl>(NewFD) && DC == CurContext && in ActOnFunctionDeclarator()
9296 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
9299 if (SC == SC_Static && isa<CXXMethodDecl>(NewFD) && in ActOnFunctionDeclarator()
9315 (getLangOpts().MSVCCompat && NewFD->getDescribedFunctionTemplate())) in ActOnFunctionDeclarator()
9327 NewFD->setType(Context.getFunctionType( in ActOnFunctionDeclarator()
9333 FilterLookupForScope(Previous, OriginalDC, S, shouldConsiderLinkage(NewFD), in ActOnFunctionDeclarator()
9342 NewFD->addAttr(AsmLabelAttr::Create(Context, SE->getString(), in ActOnFunctionDeclarator()
9347 ExtnameUndeclaredIdentifiers.find(NewFD->getIdentifier()); in ActOnFunctionDeclarator()
9349 if (isDeclExternC(NewFD)) { in ActOnFunctionDeclarator()
9350 NewFD->addAttr(I->second); in ActOnFunctionDeclarator()
9353 Diag(NewFD->getLocation(), diag::warn_redefine_extname_not_applied) in ActOnFunctionDeclarator()
9354 << /*Variable*/0 << NewFD; in ActOnFunctionDeclarator()
9373 assert(Param->getDeclContext() != NewFD && "Was set before ?"); in ActOnFunctionDeclarator()
9374 Param->setDeclContext(NewFD); in ActOnFunctionDeclarator()
9378 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9388 getTagInjectionContext(NewFD->getLexicalDeclContext()); in ActOnFunctionDeclarator()
9404 TD->setDeclContext(NewFD); in ActOnFunctionDeclarator()
9405 NewFD->addDecl(TD); in ActOnFunctionDeclarator()
9429 BuildParmVarDeclForTypedef(NewFD, D.getIdentifierLoc(), AI); in ActOnFunctionDeclarator()
9434 assert(R->isFunctionNoProtoType() && NewFD->getNumParams() == 0 && in ActOnFunctionDeclarator()
9439 NewFD->setParams(Params); in ActOnFunctionDeclarator()
9442 NewFD->addAttr(C11NoReturnAttr::Create(Context, in ActOnFunctionDeclarator()
9448 if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9449 NewFD->getReturnType()->isVariablyModifiedType()) { in ActOnFunctionDeclarator()
9450 Diag(NewFD->getLocation(), diag::err_vm_func_decl); in ActOnFunctionDeclarator()
9451 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9456 !NewFD->hasAttr<SectionAttr>()) in ActOnFunctionDeclarator()
9457 NewFD->addAttr(PragmaClangTextSectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
9463 !NewFD->hasAttr<SectionAttr>()) { in ActOnFunctionDeclarator()
9464 NewFD->addAttr(SectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
9471 NewFD)) in ActOnFunctionDeclarator()
9472 NewFD->dropAttr<SectionAttr>(); in ActOnFunctionDeclarator()
9477 if (!NewFD->hasAttr<CodeSegAttr>()) { in ActOnFunctionDeclarator()
9478 if (Attr *SAttr = getImplicitCodeSegOrSectionAttrForFunction(NewFD, in ActOnFunctionDeclarator()
9480 NewFD->addAttr(SAttr); in ActOnFunctionDeclarator()
9485 ProcessDeclAttributes(S, NewFD, D); in ActOnFunctionDeclarator()
9490 LangAS AddressSpace = NewFD->getReturnType().getAddressSpace(); in ActOnFunctionDeclarator()
9492 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9494 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9499 checkDeviceDecl(NewFD, D.getBeginLoc()); in ActOnFunctionDeclarator()
9503 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
9504 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
9506 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
9507 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
9509 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9510 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
9515 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
9522 const FunctionType *FT = NewFD->getType()->castAs<FunctionType>(); in ActOnFunctionDeclarator()
9530 Diag(NewFD->getLocation(), DiagID) in ActOnFunctionDeclarator()
9535 if (NewFD->getReturnType().hasNonTrivialToPrimitiveDestructCUnion() || in ActOnFunctionDeclarator()
9536 NewFD->getReturnType().hasNonTrivialToPrimitiveCopyCUnion()) in ActOnFunctionDeclarator()
9537 checkNonTrivialCUnion(NewFD->getReturnType(), in ActOnFunctionDeclarator()
9538 NewFD->getReturnTypeSourceRange().getBegin(), in ActOnFunctionDeclarator()
9549 NewFD->isReplaceableGlobalAllocationFunction() && in ActOnFunctionDeclarator()
9550 !NewFD->hasAttr<UsedAttr>()) in ActOnFunctionDeclarator()
9553 << NewFD->getDeclName(); in ActOnFunctionDeclarator()
9568 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9602 maybeAddCUDAHostDeviceAttrs(NewFD, Previous); in ActOnFunctionDeclarator()
9609 (NewFD->getType()->isDependentType() || DC->isDependentContext() || in ActOnFunctionDeclarator()
9614 if (CheckDependentFunctionTemplateSpecialization(NewFD, TemplateArgs, in ActOnFunctionDeclarator()
9616 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9621 } else if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9623 NewFD, (HasExplicitTemplateArgs ? &TemplateArgs : nullptr), in ActOnFunctionDeclarator()
9625 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9631 NewFD->getTemplateSpecializationInfo(); in ActOnFunctionDeclarator()
9634 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9641 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9646 } else if (isMemberSpecialization && isa<CXXMethodDecl>(NewFD)) { in ActOnFunctionDeclarator()
9647 if (CheckMemberSpecialization(NewFD, Previous)) in ActOnFunctionDeclarator()
9648 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9653 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
9654 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
9656 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
9657 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
9659 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9660 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
9667 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
9673 : NewFD); in ActOnFunctionDeclarator()
9675 if (isFriend && NewFD->getPreviousDecl()) { in ActOnFunctionDeclarator()
9677 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9678 Access = NewFD->getPreviousDecl()->getAccess(); in ActOnFunctionDeclarator()
9680 NewFD->setAccess(Access); in ActOnFunctionDeclarator()
9684 if (NewFD->isOverloadedOperator() && !DC->isRecord() && in ActOnFunctionDeclarator()
9707 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9713 if (isa<CXXRecordDecl>(NewFD->getDeclContext())) in ActOnFunctionDeclarator()
9714 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
9735 } else if (NewFD->isCPUDispatchMultiVersion() || in ActOnFunctionDeclarator()
9736 NewFD->isCPUSpecificMultiVersion()) { in ActOnFunctionDeclarator()
9756 *this, Previous, NewFD, ExtraArgs, false, nullptr)) { in ActOnFunctionDeclarator()
9766 *this, Previous, NewFD, ExtraArgs, true, S)) { in ActOnFunctionDeclarator()
9772 isa<CXXMethodDecl>(NewFD) && NewFD->isOutOfLine() && in ActOnFunctionDeclarator()
9782 Diag(NewFD->getLocation(), diag::ext_out_of_line_declaration) in ActOnFunctionDeclarator()
9790 NewFD->getDeclContext()->getRedeclContext()->isFileContext()) { in ActOnFunctionDeclarator()
9793 if (NewFD->getLanguageLinkage() == CLanguageLinkage) { in ActOnFunctionDeclarator()
9797 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
9805 NewFD->getType(), BuiltinType)) in ActOnFunctionDeclarator()
9806 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
9811 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
9817 ProcessPragmaWeak(S, NewFD); in ActOnFunctionDeclarator()
9818 checkAttributesAfterMerging(*this, *NewFD); in ActOnFunctionDeclarator()
9820 AddKnownFunctionAttributes(NewFD); in ActOnFunctionDeclarator()
9822 if (NewFD->hasAttr<OverloadableAttr>() && in ActOnFunctionDeclarator()
9823 !NewFD->getType()->getAs<FunctionProtoType>()) { in ActOnFunctionDeclarator()
9824 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9826 << NewFD; in ActOnFunctionDeclarator()
9829 const FunctionType *FT = NewFD->getType()->getAs<FunctionType>(); in ActOnFunctionDeclarator()
9836 NewFD->setType(R); in ActOnFunctionDeclarator()
9841 if (!DC->isRecord() && NewFD->isExternallyVisible()) in ActOnFunctionDeclarator()
9842 AddPushedVisibilityAttribute(NewFD); in ActOnFunctionDeclarator()
9846 AddCFAuditedAttribute(NewFD); in ActOnFunctionDeclarator()
9851 AddRangeBasedOptnone(NewFD); in ActOnFunctionDeclarator()
9855 if (NewFD->isFirstDecl() && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9856 isIncompleteDeclExternC(*this, NewFD)) in ActOnFunctionDeclarator()
9857 RegisterLocallyScopedExternCDecl(NewFD, S); in ActOnFunctionDeclarator()
9860 NewFD->setRangeEnd(D.getSourceRange().getEnd()); in ActOnFunctionDeclarator()
9864 checkDLLAttributeRedeclaration(*this, Prev, NewFD, in ActOnFunctionDeclarator()
9871 IdentifierInfo *II = NewFD->getIdentifier(); in ActOnFunctionDeclarator()
9873 !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9874 NewFD->getDeclContext()->getRedeclContext()->isTranslationUnit()) { in ActOnFunctionDeclarator()
9876 Diag(NewFD->getLocation(), diag::err_config_scalar_return) in ActOnFunctionDeclarator()
9878 Context.setcudaConfigureCallDecl(NewFD); in ActOnFunctionDeclarator()
9884 if (!getLangOpts().CUDAAllowVariadicFunctions && NewFD->isVariadic() && in ActOnFunctionDeclarator()
9885 (NewFD->hasAttr<CUDADeviceAttr>() || in ActOnFunctionDeclarator()
9886 NewFD->hasAttr<CUDAGlobalAttr>()) && in ActOnFunctionDeclarator()
9887 !(II && II->isStr("printf") && NewFD->isExternC() && in ActOnFunctionDeclarator()
9889 Diag(NewFD->getLocation(), diag::err_variadic_device_fn); in ActOnFunctionDeclarator()
9893 MarkUnusedFileScopedDecl(NewFD); in ActOnFunctionDeclarator()
9897 if (getLangOpts().OpenCL && NewFD->hasAttr<OpenCLKernelAttr>()) { in ActOnFunctionDeclarator()
9906 if (!NewFD->getReturnType()->isVoidType()) { in ActOnFunctionDeclarator()
9907 SourceRange RTRange = NewFD->getReturnTypeSourceRange(); in ActOnFunctionDeclarator()
9915 for (auto Param : NewFD->parameters()) in ActOnFunctionDeclarator()
9932 if (NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9937 if (isMemberSpecialization && !NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9938 CompleteMemberSpecialization(NewFD, Previous); in ActOnFunctionDeclarator()
9941 for (const ParmVarDecl *Param : NewFD->parameters()) { in ActOnFunctionDeclarator()
9963 Context, CurContext, NewFD->getLocation(), in ActOnFunctionDeclarator()
9964 cast<CXXMethodDecl>(NewFD), in ActOnFunctionDeclarator()
9972 if (const auto *attr = NewFD->getAttr<AvailabilityAttr>()) { in ActOnFunctionDeclarator()
9973 if (NewFD->hasAttr<ConstructorAttr>()) { in ActOnFunctionDeclarator()
9976 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
9978 if (NewFD->hasAttr<DestructorAttr>()) { in ActOnFunctionDeclarator()
9981 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
9992 if (const auto *NBA = NewFD->getAttr<NoBuiltinAttr>()) in ActOnFunctionDeclarator()
10008 return NewFD; in ActOnFunctionDeclarator()
10228 const FunctionDecl *OldFD, const FunctionDecl *NewFD, in areMultiversionVariantFunctionsCompatible() argument
10262 !NewFD->getType()->getAs<FunctionProtoType>()) in areMultiversionVariantFunctionsCompatible()
10263 return Diag(NewFD->getLocation(), NoProtoDiagID); in areMultiversionVariantFunctionsCompatible()
10266 NewFD->getTemplatedKind() == FunctionDecl::TK_FunctionTemplate) in areMultiversionVariantFunctionsCompatible()
10270 if (const auto *NewCXXFD = dyn_cast<CXXMethodDecl>(NewFD)) { in areMultiversionVariantFunctionsCompatible()
10284 if (NewFD->isDeleted()) in areMultiversionVariantFunctionsCompatible()
10288 if (NewFD->isDefaulted()) in areMultiversionVariantFunctionsCompatible()
10292 if (!ConstexprSupported && NewFD->isConstexpr()) in areMultiversionVariantFunctionsCompatible()
10294 << (NewFD->isConsteval() ? ConstevalFuncs : ConstexprFuncs); in areMultiversionVariantFunctionsCompatible()
10296 QualType NewQType = Context.getCanonicalType(NewFD->getType()); in areMultiversionVariantFunctionsCompatible()
10319 if (OldFD->getConstexprKind() != NewFD->getConstexprKind()) in areMultiversionVariantFunctionsCompatible()
10322 if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) in areMultiversionVariantFunctionsCompatible()
10325 if (OldFD->getStorageClass() != NewFD->getStorageClass()) in areMultiversionVariantFunctionsCompatible()
10328 if (!CLinkageMayDiffer && OldFD->isExternC() != NewFD->isExternC()) in areMultiversionVariantFunctionsCompatible()
10333 NewFD->getType()->getAs<FunctionProtoType>(), NewFD->getLocation())) in areMultiversionVariantFunctionsCompatible()
10340 const FunctionDecl *NewFD, in CheckMultiVersionAdditionalRules() argument
10344 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported); in CheckMultiVersionAdditionalRules()
10355 checkNonMultiVersionCompatAttributes(S, OldFD, NewFD, MVType)) in CheckMultiVersionAdditionalRules()
10358 if (checkNonMultiVersionCompatAttributes(S, NewFD, nullptr, MVType)) in CheckMultiVersionAdditionalRules()
10363 return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); in CheckMultiVersionAdditionalRules()
10366 OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), in CheckMultiVersionAdditionalRules()
10367 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
10369 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
10372 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
10420 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, const TargetAttr *NewTA, in CheckTargetCausesMultiVersioning() argument
10436 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported); in CheckTargetCausesMultiVersioning()
10438 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10442 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, true, in CheckTargetCausesMultiVersioning()
10444 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10448 if (CheckMultiVersionValue(S, NewFD)) { in CheckTargetCausesMultiVersioning()
10449 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10458 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
10463 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
10464 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10471 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckTargetCausesMultiVersioning()
10473 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10485 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
10486 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10492 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
10503 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, in CheckMultiVersionAdditionalDecl() argument
10515 S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed); in CheckMultiVersionAdditionalDecl()
10517 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10528 S.CurContext->isRecord() && !NewFD->getFriendObjectKind(); in CheckMultiVersionAdditionalDecl()
10536 if (S.IsOverload(NewFD, CurFD, UseMemberUsingDeclRules)) in CheckMultiVersionAdditionalDecl()
10542 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10550 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
10552 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10570 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10577 S.Diag(NewFD->getLocation(), diag::err_cpu_dispatch_mismatch); in CheckMultiVersionAdditionalDecl()
10579 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10591 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10601 S.Diag(NewFD->getLocation(), diag::err_cpu_specific_multiple_defs) in CheckMultiVersionAdditionalDecl()
10604 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10619 CheckMultiVersionValue(S, NewFD)) { in CheckMultiVersionAdditionalDecl()
10620 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10624 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, in CheckMultiVersionAdditionalDecl()
10626 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10633 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10639 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10654 static bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, in CheckMultiVersionFunction() argument
10658 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckMultiVersionFunction()
10659 const auto *NewCPUDisp = NewFD->getAttr<CPUDispatchAttr>(); in CheckMultiVersionFunction()
10660 const auto *NewCPUSpec = NewFD->getAttr<CPUSpecificAttr>(); in CheckMultiVersionFunction()
10665 S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed); in CheckMultiVersionFunction()
10666 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
10670 MultiVersionKind MVType = NewFD->getMultiVersionKind(); in CheckMultiVersionFunction()
10674 if (NewFD->isMain()) { in CheckMultiVersionFunction()
10678 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_allowed_on_main); in CheckMultiVersionFunction()
10679 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
10687 NewFD->getDeclContext()->getRedeclContext()) { in CheckMultiVersionFunction()
10692 return CheckMultiVersionFirstFunction(S, NewFD, MVType, NewTA); in CheckMultiVersionFunction()
10701 S.Diag(NewFD->getLocation(), diag::err_multiversion_required_in_redecl) in CheckMultiVersionFunction()
10703 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
10709 return CheckTargetCausesMultiVersioning(S, OldFD, NewFD, NewTA, in CheckMultiVersionFunction()
10717 S, OldFD, NewFD, MVType, NewTA, NewCPUDisp, NewCPUSpec, Redeclaration, in CheckMultiVersionFunction()
10738 bool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, in CheckFunctionDeclaration() argument
10741 assert(!NewFD->getReturnType()->isVariablyModifiedType() && in CheckFunctionDeclaration()
10761 if (!AllowOverloadingOfFunction(Previous, Context, NewFD)) { in CheckFunctionDeclaration()
10763 if (shouldLinkPossiblyHiddenDecl(Candidate, NewFD)) { in CheckFunctionDeclaration()
10769 switch (CheckOverload(S, NewFD, Previous, OldDecl, in CheckFunctionDeclaration()
10788 checkForConflictWithNonVisibleExternC(*this, NewFD, Previous)) { in CheckFunctionDeclaration()
10798 NewFD->hasAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
10799 if (IsOverload(NewFD, cast<FunctionDecl>(OldDecl), false)) { in CheckFunctionDeclaration()
10808 if (CheckMultiVersionFunction(*this, NewFD, Redeclaration, OldDecl, in CheckFunctionDeclaration()
10814 CheckPPCMMAType(NewFD->getReturnType(), NewFD->getLocation())) { in CheckFunctionDeclaration()
10815 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
10827 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in CheckFunctionDeclaration()
10859 if (MergeFunctionDecl(NewFD, OldDecl, S, MergeTypeWithPrevious)) { in CheckFunctionDeclaration()
10860 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
10871 = NewFD->getDescribedFunctionTemplate(); in CheckFunctionDeclaration()
10879 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
10880 if (NewFD->isCXXClassMember()) { in CheckFunctionDeclaration()
10881 NewFD->setAccess(OldTemplateDecl->getAccess()); in CheckFunctionDeclaration()
10902 if (shouldLinkDependentDeclWithPrevious(NewFD, OldDecl)) { in CheckFunctionDeclaration()
10905 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
10906 if (NewFD->isCXXClassMember()) in CheckFunctionDeclaration()
10907 NewFD->setAccess(OldFD->getAccess()); in CheckFunctionDeclaration()
10911 !NewFD->getAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
10925 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
10931 NewFD->addAttr(OverloadableAttr::CreateImplicit(Context)); in CheckFunctionDeclaration()
10936 ActOnFinishedFunctionDefinitionInOpenMPAssumeScope(NewFD); in CheckFunctionDeclaration()
10942 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(NewFD)) { in CheckFunctionDeclaration()
10945 dyn_cast<CXXDestructorDecl>(NewFD)) { in CheckFunctionDeclaration()
10955 if (NewFD->getDeclName() != Name) { in CheckFunctionDeclaration()
10956 Diag(NewFD->getLocation(), diag::err_destructor_name); in CheckFunctionDeclaration()
10957 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
10961 } else if (auto *Guide = dyn_cast<CXXDeductionGuideDecl>(NewFD)) { in CheckFunctionDeclaration()
10973 if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(NewFD)) { in CheckFunctionDeclaration()
10979 if (Method->isVirtual() && NewFD->getTrailingRequiresClause()) in CheckFunctionDeclaration()
10982 Diag(NewFD->getTrailingRequiresClause()->getBeginLoc(), in CheckFunctionDeclaration()
10989 if (CXXConversionDecl *Conversion = dyn_cast<CXXConversionDecl>(NewFD)) in CheckFunctionDeclaration()
10993 if (NewFD->isOverloadedOperator() && in CheckFunctionDeclaration()
10994 CheckOverloadedOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
10995 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11000 if (NewFD->getLiteralIdentifier() && in CheckFunctionDeclaration()
11001 CheckLiteralOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
11002 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11010 CheckCXXDefaultArguments(NewFD); in CheckFunctionDeclaration()
11016 if (Previous.empty() && NewFD->isExternC()) { in CheckFunctionDeclaration()
11017 QualType R = NewFD->getReturnType(); in CheckFunctionDeclaration()
11019 Diag(NewFD->getLocation(), diag::warn_return_value_udt_incomplete) in CheckFunctionDeclaration()
11020 << NewFD << R; in CheckFunctionDeclaration()
11023 Diag(NewFD->getLocation(), diag::warn_return_value_udt) << NewFD << R; in CheckFunctionDeclaration()
11035 if (!getLangOpts().CPlusPlus17 && !NewFD->getPrimaryTemplate()) { in CheckFunctionDeclaration()
11052 auto *FPT = NewFD->getType()->castAs<FunctionProtoType>(); in CheckFunctionDeclaration()
11057 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
11059 << NewFD; in CheckFunctionDeclaration()
11063 checkCUDATargetOverload(NewFD, Previous); in CheckFunctionDeclaration()
16734 FieldDecl *NewFD in HandleField() local
16738 if (NewFD->isInvalidDecl()) in HandleField()
16742 NewFD->setModulePrivate(); in HandleField()
16744 if (NewFD->isInvalidDecl() && PrevDecl) { in HandleField()
16748 PushOnScopeChains(NewFD, S); in HandleField()
16750 Record->addDecl(NewFD); in HandleField()
16752 return NewFD; in HandleField()
16887 FieldDecl *NewFD = FieldDecl::Create(Context, Record, TSSL, Loc, II, T, TInfo, in CheckFieldDecl() local
16890 NewFD->setInvalidDecl(); in CheckFieldDecl()
16895 NewFD->setInvalidDecl(); in CheckFieldDecl()
16908 if (CheckNontrivialField(NewFD)) in CheckFieldDecl()
16909 NewFD->setInvalidDecl(); in CheckFieldDecl()
16917 Diag(NewFD->getLocation(), getLangOpts().MicrosoftExt ? in CheckFieldDecl()
16920 << NewFD->getDeclName() << EltTy; in CheckFieldDecl()
16922 NewFD->setInvalidDecl(); in CheckFieldDecl()
16931 ProcessDeclAttributes(getCurScope(), NewFD, *D); in CheckFieldDecl()
16933 if (NewFD->hasAttrs()) in CheckFieldDecl()
16934 CheckAlignasUnderalignment(NewFD); in CheckFieldDecl()
16939 if (getLangOpts().ObjCAutoRefCount && inferObjCARCLifetime(NewFD)) in CheckFieldDecl()
16940 NewFD->setInvalidDecl(); in CheckFieldDecl()
16947 CheckPPCMMAType(T, NewFD->getLocation())) in CheckFieldDecl()
16948 NewFD->setInvalidDecl(); in CheckFieldDecl()
16950 NewFD->setAccess(AS); in CheckFieldDecl()
16951 return NewFD; in CheckFieldDecl()