Lines Matching refs:NewFD

8726     Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD,  in DiagnoseInvalidRedeclaration()  argument
8728 DeclarationName Name = NewFD->getDeclName(); in DiagnoseInvalidRedeclaration()
8729 DeclContext *NewDC = NewFD->getDeclContext(); in DiagnoseInvalidRedeclaration()
8736 NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : in DiagnoseInvalidRedeclaration()
8738 LookupResult Prev(SemaRef, Name, NewFD->getLocation(), in DiagnoseInvalidRedeclaration()
8743 NewFD->setInvalidDecl(); in DiagnoseInvalidRedeclaration()
8750 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in DiagnoseInvalidRedeclaration()
8751 DifferentNameValidatorCCC CCC(SemaRef.Context, NewFD, in DiagnoseInvalidRedeclaration()
8758 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
8781 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
8800 NewFD->getTypeSourceInfo(), Previous, ExtraArgs.TemplateParamLists, in DiagnoseInvalidRedeclaration()
8834 SemaRef.Diag(NewFD->getLocation(), DiagMsg) in DiagnoseInvalidRedeclaration()
8835 << Name << NewDC << IsDefinition << NewFD->getLocation(); in DiagnoseInvalidRedeclaration()
8838 if (CXXMethodDecl *NewMD = dyn_cast<CXXMethodDecl>(NewFD)) in DiagnoseInvalidRedeclaration()
8857 << NewFD->getParamDecl(Idx - 1)->getType(); in DiagnoseInvalidRedeclaration()
8920 FunctionDecl *NewFD = nullptr; in CreateNewFunctionDecl() local
8943 NewFD = FunctionDecl::Create( in CreateNewFunctionDecl()
8949 NewFD->setInvalidDecl(); in CreateNewFunctionDecl()
8951 return NewFD; in CreateNewFunctionDecl()
9472 FunctionDecl *NewFD = CreateNewFunctionDecl(*this, D, DC, R, TInfo, SC, in ActOnFunctionDeclarator() local
9474 if (!NewFD) return nullptr; in ActOnFunctionDeclarator()
9477 NewFD->setTopLevelDeclInObjCContainer(); in ActOnFunctionDeclarator()
9482 NewFD->setLexicalDeclContext(CurContext); in ActOnFunctionDeclarator()
9485 NewFD->setLocalExternDecl(); in ActOnFunctionDeclarator()
9494 !NewFD->getOwningModule() || in ActOnFunctionDeclarator()
9495 NewFD->getOwningModule()->isGlobalModule() || in ActOnFunctionDeclarator()
9496 NewFD->getOwningModule()->isModuleMapModule(); in ActOnFunctionDeclarator()
9508 NewFD->setImplicitlyInline(ImplicitInlineCXX20); in ActOnFunctionDeclarator()
9515 dyn_cast<CXXRecordDecl>(NewFD->getDeclContext())) { in ActOnFunctionDeclarator()
9516 if (Parent->isInterface() && cast<CXXMethodDecl>(NewFD)->isUserProvided()) in ActOnFunctionDeclarator()
9517 NewFD->setPure(true); in ActOnFunctionDeclarator()
9523 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9527 NewFD->getKind() == Decl::Kind::CXXMethod && NewFD->getIdentifier() && in ActOnFunctionDeclarator()
9528 NewFD->getName() == "__init" && D.isFunctionDefinition()) { in ActOnFunctionDeclarator()
9534 SetNestedNameSpecifier(*this, NewFD, D); in ActOnFunctionDeclarator()
9538 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9555 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9562 Diag(NewFD->getLocation(), diag::err_destructor_template); in ActOnFunctionDeclarator()
9563 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9576 NewFD->getLocation(), in ActOnFunctionDeclarator()
9578 NewFD); in ActOnFunctionDeclarator()
9580 NewFD->setDescribedFunctionTemplate(FunctionTemplate); in ActOnFunctionDeclarator()
9584 NewFD->setTemplateParameterListsInfo(Context, in ActOnFunctionDeclarator()
9593 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
9622 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9628 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
9632 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9642 if (isVirtual && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9651 } else if (NewFD->getDescribedFunctionTemplate()) { in ActOnFunctionDeclarator()
9659 NewFD->setVirtualAsWritten(true); in ActOnFunctionDeclarator()
9663 NewFD->getReturnType()->isUndeducedType()) in ActOnFunctionDeclarator()
9668 (NewFD->isDependentContext() || in ActOnFunctionDeclarator()
9670 NewFD->getReturnType()->isUndeducedType()) { in ActOnFunctionDeclarator()
9678 NewFD->getType()->castAs<FunctionProtoType>(); in ActOnFunctionDeclarator()
9680 NewFD->setType(Context.getFunctionType(Result, FPT->getParamTypes(), in ActOnFunctionDeclarator()
9687 if (isInline && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9700 if (hasExplicit && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9701 !isa<CXXDeductionGuideDecl>(NewFD)) { in ActOnFunctionDeclarator()
9707 } else if (!isa<CXXConstructorDecl>(NewFD) && in ActOnFunctionDeclarator()
9708 !isa<CXXConversionDecl>(NewFD)) { in ActOnFunctionDeclarator()
9721 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
9726 if (isa<CXXDestructorDecl>(NewFD) && in ActOnFunctionDeclarator()
9731 NewFD->setConstexprKind(getLangOpts().CPlusPlus20 in ActOnFunctionDeclarator()
9739 (NewFD->getOverloadedOperator() == OO_New || in ActOnFunctionDeclarator()
9740 NewFD->getOverloadedOperator() == OO_Array_New || in ActOnFunctionDeclarator()
9741 NewFD->getOverloadedOperator() == OO_Delete || in ActOnFunctionDeclarator()
9742 NewFD->getOverloadedOperator() == OO_Array_Delete)) { in ActOnFunctionDeclarator()
9745 << NewFD; in ActOnFunctionDeclarator()
9746 NewFD->setConstexprKind(ConstexprSpecKind::Constexpr); in ActOnFunctionDeclarator()
9759 NewFD->setModulePrivate(); in ActOnFunctionDeclarator()
9770 NewFD->setObjectOfFriendDecl(); in ActOnFunctionDeclarator()
9771 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
9782 NewFD->setDefaulted(); in ActOnFunctionDeclarator()
9786 NewFD->setDeletedAsWritten(); in ActOnFunctionDeclarator()
9790 if (isa<CXXMethodDecl>(NewFD) && DC == CurContext && in ActOnFunctionDeclarator()
9798 NewFD->setImplicitlyInline(ImplicitInlineCXX20); in ActOnFunctionDeclarator()
9801 if (SC == SC_Static && isa<CXXMethodDecl>(NewFD) && in ActOnFunctionDeclarator()
9817 (getLangOpts().MSVCCompat && NewFD->getDescribedFunctionTemplate())) in ActOnFunctionDeclarator()
9829 NewFD->setType(Context.getFunctionType( in ActOnFunctionDeclarator()
9835 FilterLookupForScope(Previous, OriginalDC, S, shouldConsiderLinkage(NewFD), in ActOnFunctionDeclarator()
9844 NewFD->addAttr(AsmLabelAttr::Create(Context, SE->getString(), in ActOnFunctionDeclarator()
9849 ExtnameUndeclaredIdentifiers.find(NewFD->getIdentifier()); in ActOnFunctionDeclarator()
9851 if (isDeclExternC(NewFD)) { in ActOnFunctionDeclarator()
9852 NewFD->addAttr(I->second); in ActOnFunctionDeclarator()
9855 Diag(NewFD->getLocation(), diag::warn_redefine_extname_not_applied) in ActOnFunctionDeclarator()
9856 << /*Variable*/0 << NewFD; in ActOnFunctionDeclarator()
9875 assert(Param->getDeclContext() != NewFD && "Was set before ?"); in ActOnFunctionDeclarator()
9876 Param->setDeclContext(NewFD); in ActOnFunctionDeclarator()
9880 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9890 getTagInjectionContext(NewFD->getLexicalDeclContext()); in ActOnFunctionDeclarator()
9906 TD->setDeclContext(NewFD); in ActOnFunctionDeclarator()
9907 NewFD->addDecl(TD); in ActOnFunctionDeclarator()
9931 BuildParmVarDeclForTypedef(NewFD, D.getIdentifierLoc(), AI); in ActOnFunctionDeclarator()
9936 assert(R->isFunctionNoProtoType() && NewFD->getNumParams() == 0 && in ActOnFunctionDeclarator()
9941 NewFD->setParams(Params); in ActOnFunctionDeclarator()
9944 NewFD->addAttr(C11NoReturnAttr::Create(Context, in ActOnFunctionDeclarator()
9950 if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9951 NewFD->getReturnType()->isVariablyModifiedType()) { in ActOnFunctionDeclarator()
9952 Diag(NewFD->getLocation(), diag::err_vm_func_decl); in ActOnFunctionDeclarator()
9953 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9958 !NewFD->hasAttr<SectionAttr>()) in ActOnFunctionDeclarator()
9959 NewFD->addAttr(PragmaClangTextSectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
9965 !NewFD->hasAttr<SectionAttr>()) { in ActOnFunctionDeclarator()
9966 NewFD->addAttr(SectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
9973 NewFD)) in ActOnFunctionDeclarator()
9974 NewFD->dropAttr<SectionAttr>(); in ActOnFunctionDeclarator()
9979 if (!NewFD->hasAttr<CodeSegAttr>()) { in ActOnFunctionDeclarator()
9980 if (Attr *SAttr = getImplicitCodeSegOrSectionAttrForFunction(NewFD, in ActOnFunctionDeclarator()
9982 NewFD->addAttr(SAttr); in ActOnFunctionDeclarator()
9987 ProcessDeclAttributes(S, NewFD, D); in ActOnFunctionDeclarator()
9992 LangAS AddressSpace = NewFD->getReturnType().getAddressSpace(); in ActOnFunctionDeclarator()
9994 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9996 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10002 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
10003 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
10005 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
10006 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
10008 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10009 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
10015 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
10022 const FunctionType *FT = NewFD->getType()->castAs<FunctionType>(); in ActOnFunctionDeclarator()
10030 Diag(NewFD->getLocation(), DiagID) in ActOnFunctionDeclarator()
10035 if (NewFD->getReturnType().hasNonTrivialToPrimitiveDestructCUnion() || in ActOnFunctionDeclarator()
10036 NewFD->getReturnType().hasNonTrivialToPrimitiveCopyCUnion()) in ActOnFunctionDeclarator()
10037 checkNonTrivialCUnion(NewFD->getReturnType(), in ActOnFunctionDeclarator()
10038 NewFD->getReturnTypeSourceRange().getBegin(), in ActOnFunctionDeclarator()
10049 NewFD->isReplaceableGlobalAllocationFunction() && in ActOnFunctionDeclarator()
10050 !NewFD->hasAttr<UsedAttr>()) in ActOnFunctionDeclarator()
10053 << NewFD->getDeclName(); in ActOnFunctionDeclarator()
10068 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
10102 maybeAddCUDAHostDeviceAttrs(NewFD, Previous); in ActOnFunctionDeclarator()
10109 (NewFD->getType()->isDependentType() || DC->isDependentContext() || in ActOnFunctionDeclarator()
10114 if (CheckDependentFunctionTemplateSpecialization(NewFD, TemplateArgs, in ActOnFunctionDeclarator()
10116 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10121 } else if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10123 NewFD, (HasExplicitTemplateArgs ? &TemplateArgs : nullptr), in ActOnFunctionDeclarator()
10125 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10131 NewFD->getTemplateSpecializationInfo(); in ActOnFunctionDeclarator()
10134 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
10141 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
10146 } else if (isMemberSpecialization && isa<CXXMethodDecl>(NewFD)) { in ActOnFunctionDeclarator()
10147 if (CheckMemberSpecialization(NewFD, Previous)) in ActOnFunctionDeclarator()
10148 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10153 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
10154 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
10156 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
10157 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
10159 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10160 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
10168 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
10174 : NewFD); in ActOnFunctionDeclarator()
10176 if (isFriend && NewFD->getPreviousDecl()) { in ActOnFunctionDeclarator()
10178 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10179 Access = NewFD->getPreviousDecl()->getAccess(); in ActOnFunctionDeclarator()
10181 NewFD->setAccess(Access); in ActOnFunctionDeclarator()
10185 if (NewFD->isOverloadedOperator() && !DC->isRecord() && in ActOnFunctionDeclarator()
10208 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
10214 if (isa<CXXRecordDecl>(NewFD->getDeclContext())) in ActOnFunctionDeclarator()
10215 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
10236 } else if (NewFD->isCPUDispatchMultiVersion() || in ActOnFunctionDeclarator()
10237 NewFD->isCPUSpecificMultiVersion()) { in ActOnFunctionDeclarator()
10257 *this, Previous, NewFD, ExtraArgs, false, nullptr)) { in ActOnFunctionDeclarator()
10267 *this, Previous, NewFD, ExtraArgs, true, S)) { in ActOnFunctionDeclarator()
10273 isa<CXXMethodDecl>(NewFD) && NewFD->isOutOfLine() && in ActOnFunctionDeclarator()
10283 Diag(NewFD->getLocation(), diag::ext_out_of_line_declaration) in ActOnFunctionDeclarator()
10295 NewFD->getDeclContext()->getRedeclContext()->isFileContext()) { in ActOnFunctionDeclarator()
10296 if (NewFD->getLanguageLinkage() == CLanguageLinkage) { in ActOnFunctionDeclarator()
10300 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
10308 NewFD->getType(), BuiltinType)) in ActOnFunctionDeclarator()
10309 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
10312 } else if (InStdNamespace && NewFD->isInStdNamespace() && in ActOnFunctionDeclarator()
10313 isStdBuiltin(Context, NewFD, BuiltinID)) { in ActOnFunctionDeclarator()
10314 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
10320 ProcessPragmaWeak(S, NewFD); in ActOnFunctionDeclarator()
10321 checkAttributesAfterMerging(*this, *NewFD); in ActOnFunctionDeclarator()
10323 AddKnownFunctionAttributes(NewFD); in ActOnFunctionDeclarator()
10325 if (NewFD->hasAttr<OverloadableAttr>() && in ActOnFunctionDeclarator()
10326 !NewFD->getType()->getAs<FunctionProtoType>()) { in ActOnFunctionDeclarator()
10327 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
10329 << NewFD; in ActOnFunctionDeclarator()
10332 const auto *FT = NewFD->getType()->castAs<FunctionType>(); in ActOnFunctionDeclarator()
10339 NewFD->setType(R); in ActOnFunctionDeclarator()
10344 if (!DC->isRecord() && NewFD->isExternallyVisible()) in ActOnFunctionDeclarator()
10345 AddPushedVisibilityAttribute(NewFD); in ActOnFunctionDeclarator()
10349 AddCFAuditedAttribute(NewFD); in ActOnFunctionDeclarator()
10354 AddRangeBasedOptnone(NewFD); in ActOnFunctionDeclarator()
10355 AddImplicitMSFunctionNoBuiltinAttr(NewFD); in ActOnFunctionDeclarator()
10356 AddSectionMSAllocText(NewFD); in ActOnFunctionDeclarator()
10357 ModifyFnAttributesMSPragmaOptimize(NewFD); in ActOnFunctionDeclarator()
10362 if (NewFD->isFirstDecl() && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10363 isIncompleteDeclExternC(*this, NewFD)) in ActOnFunctionDeclarator()
10364 RegisterLocallyScopedExternCDecl(NewFD, S); in ActOnFunctionDeclarator()
10367 NewFD->setRangeEnd(D.getSourceRange().getEnd()); in ActOnFunctionDeclarator()
10371 checkDLLAttributeRedeclaration(*this, Prev, NewFD, in ActOnFunctionDeclarator()
10378 IdentifierInfo *II = NewFD->getIdentifier(); in ActOnFunctionDeclarator()
10380 !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10381 NewFD->getDeclContext()->getRedeclContext()->isTranslationUnit()) { in ActOnFunctionDeclarator()
10383 Diag(NewFD->getLocation(), diag::err_config_scalar_return) in ActOnFunctionDeclarator()
10385 Context.setcudaConfigureCallDecl(NewFD); in ActOnFunctionDeclarator()
10391 if (!getLangOpts().CUDAAllowVariadicFunctions && NewFD->isVariadic() && in ActOnFunctionDeclarator()
10392 (NewFD->hasAttr<CUDADeviceAttr>() || in ActOnFunctionDeclarator()
10393 NewFD->hasAttr<CUDAGlobalAttr>()) && in ActOnFunctionDeclarator()
10394 !(II && II->isStr("printf") && NewFD->isExternC() && in ActOnFunctionDeclarator()
10396 Diag(NewFD->getLocation(), diag::err_variadic_device_fn); in ActOnFunctionDeclarator()
10400 MarkUnusedFileScopedDecl(NewFD); in ActOnFunctionDeclarator()
10404 if (getLangOpts().OpenCL && NewFD->hasAttr<OpenCLKernelAttr>()) { in ActOnFunctionDeclarator()
10412 if (!NewFD->getReturnType()->isVoidType()) { in ActOnFunctionDeclarator()
10413 SourceRange RTRange = NewFD->getReturnTypeSourceRange(); in ActOnFunctionDeclarator()
10421 for (auto Param : NewFD->parameters()) in ActOnFunctionDeclarator()
10438 if (NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10443 if (isMemberSpecialization && !NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10444 CompleteMemberSpecialization(NewFD, Previous); in ActOnFunctionDeclarator()
10447 for (const ParmVarDecl *Param : NewFD->parameters()) { in ActOnFunctionDeclarator()
10469 Context, CurContext, NewFD->getLocation(), in ActOnFunctionDeclarator()
10470 cast<CXXMethodDecl>(NewFD), in ActOnFunctionDeclarator()
10478 if (const auto *attr = NewFD->getAttr<AvailabilityAttr>()) { in ActOnFunctionDeclarator()
10479 if (NewFD->hasAttr<ConstructorAttr>()) { in ActOnFunctionDeclarator()
10482 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
10484 if (NewFD->hasAttr<DestructorAttr>()) { in ActOnFunctionDeclarator()
10487 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
10498 if (const auto *NBA = NewFD->getAttr<NoBuiltinAttr>()) in ActOnFunctionDeclarator()
10514 return NewFD; in ActOnFunctionDeclarator()
10734 const FunctionDecl *OldFD, const FunctionDecl *NewFD, in areMultiversionVariantFunctionsCompatible() argument
10769 !NewFD->getType()->getAs<FunctionProtoType>()) in areMultiversionVariantFunctionsCompatible()
10770 return Diag(NewFD->getLocation(), NoProtoDiagID); in areMultiversionVariantFunctionsCompatible()
10773 NewFD->getTemplatedKind() == FunctionDecl::TK_FunctionTemplate) in areMultiversionVariantFunctionsCompatible()
10777 if (const auto *NewCXXFD = dyn_cast<CXXMethodDecl>(NewFD)) { in areMultiversionVariantFunctionsCompatible()
10791 if (NewFD->isDeleted()) in areMultiversionVariantFunctionsCompatible()
10795 if (NewFD->isDefaulted()) in areMultiversionVariantFunctionsCompatible()
10799 if (!ConstexprSupported && NewFD->isConstexpr()) in areMultiversionVariantFunctionsCompatible()
10801 << (NewFD->isConsteval() ? ConstevalFuncs : ConstexprFuncs); in areMultiversionVariantFunctionsCompatible()
10803 QualType NewQType = Context.getCanonicalType(NewFD->getType()); in areMultiversionVariantFunctionsCompatible()
10826 if (OldFD->getConstexprKind() != NewFD->getConstexprKind()) in areMultiversionVariantFunctionsCompatible()
10829 if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) in areMultiversionVariantFunctionsCompatible()
10832 if (OldFD->getFormalLinkage() != NewFD->getFormalLinkage()) in areMultiversionVariantFunctionsCompatible()
10835 if (!CLinkageMayDiffer && OldFD->isExternC() != NewFD->isExternC()) in areMultiversionVariantFunctionsCompatible()
10840 NewFD->getType()->getAs<FunctionProtoType>(), NewFD->getLocation())) in areMultiversionVariantFunctionsCompatible()
10847 const FunctionDecl *NewFD, in CheckMultiVersionAdditionalRules() argument
10851 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported); in CheckMultiVersionAdditionalRules()
10862 checkNonMultiVersionCompatAttributes(S, OldFD, NewFD, MVKind)) in CheckMultiVersionAdditionalRules()
10865 if (checkNonMultiVersionCompatAttributes(S, NewFD, nullptr, MVKind)) in CheckMultiVersionAdditionalRules()
10870 return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); in CheckMultiVersionAdditionalRules()
10873 OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), in CheckMultiVersionAdditionalRules()
10874 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
10876 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
10879 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
10927 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, const TargetAttr *NewTA, in CheckTargetCausesMultiVersioning() argument
10941 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, true, in CheckTargetCausesMultiVersioning()
10943 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10947 if (CheckMultiVersionValue(S, NewFD)) { in CheckTargetCausesMultiVersioning()
10948 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10957 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
10962 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
10963 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10970 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckTargetCausesMultiVersioning()
10972 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10984 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
10985 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10991 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
11013 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, in CheckMultiVersionAdditionalDecl() argument
11022 S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed); in CheckMultiVersionAdditionalDecl()
11024 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11035 S.CurContext->isRecord() && !NewFD->getFriendObjectKind(); in CheckMultiVersionAdditionalDecl()
11038 AllowOverloadingOfFunction(Previous, S.Context, NewFD); in CheckMultiVersionAdditionalDecl()
11047 S.IsOverload(NewFD, CurFD, UseMemberUsingDeclRules)) in CheckMultiVersionAdditionalDecl()
11058 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11066 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
11068 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11077 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11084 S.Diag(NewFD->getLocation(), diag::err_target_clone_doesnt_match); in CheckMultiVersionAdditionalDecl()
11086 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11108 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11115 S.Diag(NewFD->getLocation(), diag::err_cpu_dispatch_mismatch); in CheckMultiVersionAdditionalDecl()
11117 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11128 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11138 S.Diag(NewFD->getLocation(), diag::err_cpu_specific_multiple_defs) in CheckMultiVersionAdditionalDecl()
11141 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11156 CheckMultiVersionValue(S, NewFD)) { in CheckMultiVersionAdditionalDecl()
11157 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11161 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, in CheckMultiVersionAdditionalDecl()
11163 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11170 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11176 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11189 static bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, in CheckMultiVersionFunction() argument
11192 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckMultiVersionFunction()
11193 const auto *NewCPUDisp = NewFD->getAttr<CPUDispatchAttr>(); in CheckMultiVersionFunction()
11194 const auto *NewCPUSpec = NewFD->getAttr<CPUSpecificAttr>(); in CheckMultiVersionFunction()
11195 const auto *NewClones = NewFD->getAttr<TargetClonesAttr>(); in CheckMultiVersionFunction()
11196 MultiVersionKind MVKind = NewFD->getMultiVersionKind(); in CheckMultiVersionFunction()
11200 if (NewFD->isMain()) { in CheckMultiVersionFunction()
11203 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_allowed_on_main); in CheckMultiVersionFunction()
11204 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11212 NewFD->getDeclContext()->getRedeclContext()) { in CheckMultiVersionFunction()
11217 return CheckMultiVersionFirstFunction(S, NewFD, MVKind, NewTA); in CheckMultiVersionFunction()
11229 S.Diag(NewFD->getLocation(), diag::err_multiversion_required_in_redecl) in CheckMultiVersionFunction()
11231 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11238 return CheckTargetCausesMultiVersioning(S, OldFD, NewFD, NewTA, in CheckMultiVersionFunction()
11242 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11243 return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); in CheckMultiVersionFunction()
11257 return CheckMultiVersionAdditionalDecl(S, OldFD, NewFD, MVKind, NewTA, in CheckMultiVersionFunction()
11279 bool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, in CheckFunctionDeclaration() argument
11283 assert(!NewFD->getReturnType()->isVariablyModifiedType() && in CheckFunctionDeclaration()
11303 if (!AllowOverloadingOfFunction(Previous, Context, NewFD)) { in CheckFunctionDeclaration()
11305 if (shouldLinkPossiblyHiddenDecl(Candidate, NewFD)) { in CheckFunctionDeclaration()
11311 switch (CheckOverload(S, NewFD, Previous, OldDecl, in CheckFunctionDeclaration()
11330 checkForConflictWithNonVisibleExternC(*this, NewFD, Previous)) { in CheckFunctionDeclaration()
11340 NewFD->hasAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
11341 if (IsOverload(NewFD, cast<FunctionDecl>(OldDecl), false)) { in CheckFunctionDeclaration()
11350 if (CheckMultiVersionFunction(*this, NewFD, Redeclaration, OldDecl, Previous)) in CheckFunctionDeclaration()
11355 CheckPPCMMAType(NewFD->getReturnType(), NewFD->getLocation())) { in CheckFunctionDeclaration()
11356 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11368 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in CheckFunctionDeclaration()
11400 if (MergeFunctionDecl(NewFD, OldDecl, S, MergeTypeWithPrevious, in CheckFunctionDeclaration()
11402 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11413 = NewFD->getDescribedFunctionTemplate(); in CheckFunctionDeclaration()
11421 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
11422 if (NewFD->isCXXClassMember()) { in CheckFunctionDeclaration()
11423 NewFD->setAccess(OldTemplateDecl->getAccess()); in CheckFunctionDeclaration()
11444 if (shouldLinkDependentDeclWithPrevious(NewFD, OldDecl)) { in CheckFunctionDeclaration()
11447 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
11448 if (NewFD->isCXXClassMember()) in CheckFunctionDeclaration()
11449 NewFD->setAccess(OldFD->getAccess()); in CheckFunctionDeclaration()
11453 !NewFD->getAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
11467 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
11473 NewFD->addAttr(OverloadableAttr::CreateImplicit(Context)); in CheckFunctionDeclaration()
11478 ActOnFinishedFunctionDefinitionInOpenMPAssumeScope(NewFD); in CheckFunctionDeclaration()
11484 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(NewFD)) { in CheckFunctionDeclaration()
11487 dyn_cast<CXXDestructorDecl>(NewFD)) { in CheckFunctionDeclaration()
11497 if (NewFD->getDeclName() != Name) { in CheckFunctionDeclaration()
11498 Diag(NewFD->getLocation(), diag::err_destructor_name); in CheckFunctionDeclaration()
11499 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11503 } else if (auto *Guide = dyn_cast<CXXDeductionGuideDecl>(NewFD)) { in CheckFunctionDeclaration()
11515 if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(NewFD)) { in CheckFunctionDeclaration()
11521 if (Method->isVirtual() && NewFD->getTrailingRequiresClause()) in CheckFunctionDeclaration()
11524 Diag(NewFD->getTrailingRequiresClause()->getBeginLoc(), in CheckFunctionDeclaration()
11535 if (Expr *TRC = NewFD->getTrailingRequiresClause()) { in CheckFunctionDeclaration()
11536 if (!NewFD->isTemplated() && !NewFD->isTemplateInstantiation()) in CheckFunctionDeclaration()
11540 if (CXXConversionDecl *Conversion = dyn_cast<CXXConversionDecl>(NewFD)) in CheckFunctionDeclaration()
11544 if (NewFD->isOverloadedOperator() && in CheckFunctionDeclaration()
11545 CheckOverloadedOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
11546 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11551 if (NewFD->getLiteralIdentifier() && in CheckFunctionDeclaration()
11552 CheckLiteralOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
11553 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11561 CheckCXXDefaultArguments(NewFD); in CheckFunctionDeclaration()
11567 if (Previous.empty() && NewFD->isExternC()) { in CheckFunctionDeclaration()
11568 QualType R = NewFD->getReturnType(); in CheckFunctionDeclaration()
11570 Diag(NewFD->getLocation(), diag::warn_return_value_udt_incomplete) in CheckFunctionDeclaration()
11571 << NewFD << R; in CheckFunctionDeclaration()
11574 Diag(NewFD->getLocation(), diag::warn_return_value_udt) << NewFD << R; in CheckFunctionDeclaration()
11586 if (!getLangOpts().CPlusPlus17 && !NewFD->getPrimaryTemplate()) { in CheckFunctionDeclaration()
11603 auto *FPT = NewFD->getType()->castAs<FunctionProtoType>(); in CheckFunctionDeclaration()
11608 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
11610 << NewFD; in CheckFunctionDeclaration()
11614 checkCUDATargetOverload(NewFD, Previous); in CheckFunctionDeclaration()
17438 FieldDecl *NewFD in HandleField() local
17442 if (NewFD->isInvalidDecl()) in HandleField()
17446 NewFD->setModulePrivate(); in HandleField()
17448 if (NewFD->isInvalidDecl() && PrevDecl) { in HandleField()
17452 PushOnScopeChains(NewFD, S); in HandleField()
17454 Record->addDecl(NewFD); in HandleField()
17456 return NewFD; in HandleField()
17591 FieldDecl *NewFD = FieldDecl::Create(Context, Record, TSSL, Loc, II, T, TInfo, in CheckFieldDecl() local
17594 NewFD->setInvalidDecl(); in CheckFieldDecl()
17599 NewFD->setInvalidDecl(); in CheckFieldDecl()
17612 if (CheckNontrivialField(NewFD)) in CheckFieldDecl()
17613 NewFD->setInvalidDecl(); in CheckFieldDecl()
17621 Diag(NewFD->getLocation(), getLangOpts().MicrosoftExt ? in CheckFieldDecl()
17624 << NewFD->getDeclName() << EltTy; in CheckFieldDecl()
17626 NewFD->setInvalidDecl(); in CheckFieldDecl()
17635 ProcessDeclAttributes(getCurScope(), NewFD, *D); in CheckFieldDecl()
17637 if (NewFD->hasAttrs()) in CheckFieldDecl()
17638 CheckAlignasUnderalignment(NewFD); in CheckFieldDecl()
17643 if (getLangOpts().ObjCAutoRefCount && inferObjCARCLifetime(NewFD)) in CheckFieldDecl()
17644 NewFD->setInvalidDecl(); in CheckFieldDecl()
17651 CheckPPCMMAType(T, NewFD->getLocation())) in CheckFieldDecl()
17652 NewFD->setInvalidDecl(); in CheckFieldDecl()
17654 NewFD->setAccess(AS); in CheckFieldDecl()
17655 return NewFD; in CheckFieldDecl()