Lines Matching refs:NewFD

8354     Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD,  in DiagnoseInvalidRedeclaration()  argument
8356 DeclarationName Name = NewFD->getDeclName(); in DiagnoseInvalidRedeclaration()
8357 DeclContext *NewDC = NewFD->getDeclContext(); in DiagnoseInvalidRedeclaration()
8364 NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : in DiagnoseInvalidRedeclaration()
8366 LookupResult Prev(SemaRef, Name, NewFD->getLocation(), in DiagnoseInvalidRedeclaration()
8371 NewFD->setInvalidDecl(); in DiagnoseInvalidRedeclaration()
8378 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in DiagnoseInvalidRedeclaration()
8379 DifferentNameValidatorCCC CCC(SemaRef.Context, NewFD, in DiagnoseInvalidRedeclaration()
8386 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
8409 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
8428 NewFD->getTypeSourceInfo(), Previous, ExtraArgs.TemplateParamLists, in DiagnoseInvalidRedeclaration()
8462 SemaRef.Diag(NewFD->getLocation(), DiagMsg) in DiagnoseInvalidRedeclaration()
8463 << Name << NewDC << IsDefinition << NewFD->getLocation(); in DiagnoseInvalidRedeclaration()
8466 if (CXXMethodDecl *NewMD = dyn_cast<CXXMethodDecl>(NewFD)) in DiagnoseInvalidRedeclaration()
8485 << NewFD->getParamDecl(Idx - 1)->getType(); in DiagnoseInvalidRedeclaration()
8541 FunctionDecl *NewFD = nullptr; in CreateNewFunctionDecl() local
8555 NewFD = FunctionDecl::Create(SemaRef.Context, DC, D.getBeginLoc(), NameInfo, in CreateNewFunctionDecl()
8560 NewFD->setInvalidDecl(); in CreateNewFunctionDecl()
8562 return NewFD; in CreateNewFunctionDecl()
9053 FunctionDecl *NewFD = CreateNewFunctionDecl(*this, D, DC, R, TInfo, SC, in ActOnFunctionDeclarator() local
9055 if (!NewFD) return nullptr; in ActOnFunctionDeclarator()
9058 NewFD->setTopLevelDeclInObjCContainer(); in ActOnFunctionDeclarator()
9063 NewFD->setLexicalDeclContext(CurContext); in ActOnFunctionDeclarator()
9066 NewFD->setLocalExternDecl(); in ActOnFunctionDeclarator()
9077 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
9084 dyn_cast<CXXRecordDecl>(NewFD->getDeclContext())) { in ActOnFunctionDeclarator()
9085 if (Parent->isInterface() && cast<CXXMethodDecl>(NewFD)->isUserProvided()) in ActOnFunctionDeclarator()
9086 NewFD->setPure(true); in ActOnFunctionDeclarator()
9094 SetNestedNameSpecifier(*this, NewFD, D); in ActOnFunctionDeclarator()
9098 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9115 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9122 Diag(NewFD->getLocation(), diag::err_destructor_template); in ActOnFunctionDeclarator()
9123 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9136 NewFD->getLocation(), in ActOnFunctionDeclarator()
9138 NewFD); in ActOnFunctionDeclarator()
9140 NewFD->setDescribedFunctionTemplate(FunctionTemplate); in ActOnFunctionDeclarator()
9144 NewFD->setTemplateParameterListsInfo(Context, in ActOnFunctionDeclarator()
9153 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
9181 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9187 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
9191 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9201 if (isVirtual && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9210 } else if (NewFD->getDescribedFunctionTemplate()) { in ActOnFunctionDeclarator()
9218 NewFD->setVirtualAsWritten(true); in ActOnFunctionDeclarator()
9222 NewFD->getReturnType()->isUndeducedType()) in ActOnFunctionDeclarator()
9227 (NewFD->isDependentContext() || in ActOnFunctionDeclarator()
9229 NewFD->getReturnType()->isUndeducedType()) { in ActOnFunctionDeclarator()
9237 NewFD->getType()->castAs<FunctionProtoType>(); in ActOnFunctionDeclarator()
9240 NewFD->setType(Context.getFunctionType(Result, FPT->getParamTypes(), in ActOnFunctionDeclarator()
9247 if (isInline && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9260 if (hasExplicit && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9261 !isa<CXXDeductionGuideDecl>(NewFD)) { in ActOnFunctionDeclarator()
9267 } else if (!isa<CXXConstructorDecl>(NewFD) && in ActOnFunctionDeclarator()
9268 !isa<CXXConversionDecl>(NewFD)) { in ActOnFunctionDeclarator()
9281 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
9286 if (isa<CXXDestructorDecl>(NewFD) && in ActOnFunctionDeclarator()
9291 NewFD->setConstexprKind(getLangOpts().CPlusPlus20 in ActOnFunctionDeclarator()
9299 (NewFD->getOverloadedOperator() == OO_New || in ActOnFunctionDeclarator()
9300 NewFD->getOverloadedOperator() == OO_Array_New || in ActOnFunctionDeclarator()
9301 NewFD->getOverloadedOperator() == OO_Delete || in ActOnFunctionDeclarator()
9302 NewFD->getOverloadedOperator() == OO_Array_Delete)) { in ActOnFunctionDeclarator()
9305 << NewFD; in ActOnFunctionDeclarator()
9306 NewFD->setConstexprKind(ConstexprSpecKind::Constexpr); in ActOnFunctionDeclarator()
9319 NewFD->setModulePrivate(); in ActOnFunctionDeclarator()
9330 NewFD->setObjectOfFriendDecl(); in ActOnFunctionDeclarator()
9331 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
9342 NewFD->setDefaulted(); in ActOnFunctionDeclarator()
9346 NewFD->setDeletedAsWritten(); in ActOnFunctionDeclarator()
9350 if (isa<CXXMethodDecl>(NewFD) && DC == CurContext && in ActOnFunctionDeclarator()
9355 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
9358 if (SC == SC_Static && isa<CXXMethodDecl>(NewFD) && in ActOnFunctionDeclarator()
9374 (getLangOpts().MSVCCompat && NewFD->getDescribedFunctionTemplate())) in ActOnFunctionDeclarator()
9386 NewFD->setType(Context.getFunctionType( in ActOnFunctionDeclarator()
9392 FilterLookupForScope(Previous, OriginalDC, S, shouldConsiderLinkage(NewFD), in ActOnFunctionDeclarator()
9401 NewFD->addAttr(AsmLabelAttr::Create(Context, SE->getString(), in ActOnFunctionDeclarator()
9406 ExtnameUndeclaredIdentifiers.find(NewFD->getIdentifier()); in ActOnFunctionDeclarator()
9408 if (isDeclExternC(NewFD)) { in ActOnFunctionDeclarator()
9409 NewFD->addAttr(I->second); in ActOnFunctionDeclarator()
9412 Diag(NewFD->getLocation(), diag::warn_redefine_extname_not_applied) in ActOnFunctionDeclarator()
9413 << /*Variable*/0 << NewFD; in ActOnFunctionDeclarator()
9432 assert(Param->getDeclContext() != NewFD && "Was set before ?"); in ActOnFunctionDeclarator()
9433 Param->setDeclContext(NewFD); in ActOnFunctionDeclarator()
9437 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9447 getTagInjectionContext(NewFD->getLexicalDeclContext()); in ActOnFunctionDeclarator()
9463 TD->setDeclContext(NewFD); in ActOnFunctionDeclarator()
9464 NewFD->addDecl(TD); in ActOnFunctionDeclarator()
9488 BuildParmVarDeclForTypedef(NewFD, D.getIdentifierLoc(), AI); in ActOnFunctionDeclarator()
9493 assert(R->isFunctionNoProtoType() && NewFD->getNumParams() == 0 && in ActOnFunctionDeclarator()
9498 NewFD->setParams(Params); in ActOnFunctionDeclarator()
9501 NewFD->addAttr(C11NoReturnAttr::Create(Context, in ActOnFunctionDeclarator()
9507 if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9508 NewFD->getReturnType()->isVariablyModifiedType()) { in ActOnFunctionDeclarator()
9509 Diag(NewFD->getLocation(), diag::err_vm_func_decl); in ActOnFunctionDeclarator()
9510 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9515 !NewFD->hasAttr<SectionAttr>()) in ActOnFunctionDeclarator()
9516 NewFD->addAttr(PragmaClangTextSectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
9522 !NewFD->hasAttr<SectionAttr>()) { in ActOnFunctionDeclarator()
9523 NewFD->addAttr(SectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
9530 NewFD)) in ActOnFunctionDeclarator()
9531 NewFD->dropAttr<SectionAttr>(); in ActOnFunctionDeclarator()
9536 if (!NewFD->hasAttr<CodeSegAttr>()) { in ActOnFunctionDeclarator()
9537 if (Attr *SAttr = getImplicitCodeSegOrSectionAttrForFunction(NewFD, in ActOnFunctionDeclarator()
9539 NewFD->addAttr(SAttr); in ActOnFunctionDeclarator()
9544 ProcessDeclAttributes(S, NewFD, D); in ActOnFunctionDeclarator()
9549 LangAS AddressSpace = NewFD->getReturnType().getAddressSpace(); in ActOnFunctionDeclarator()
9551 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9553 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9558 checkDeviceDecl(NewFD, D.getBeginLoc()); in ActOnFunctionDeclarator()
9562 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
9563 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
9565 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
9566 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
9568 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9569 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
9574 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
9581 const FunctionType *FT = NewFD->getType()->castAs<FunctionType>(); in ActOnFunctionDeclarator()
9589 Diag(NewFD->getLocation(), DiagID) in ActOnFunctionDeclarator()
9594 if (NewFD->getReturnType().hasNonTrivialToPrimitiveDestructCUnion() || in ActOnFunctionDeclarator()
9595 NewFD->getReturnType().hasNonTrivialToPrimitiveCopyCUnion()) in ActOnFunctionDeclarator()
9596 checkNonTrivialCUnion(NewFD->getReturnType(), in ActOnFunctionDeclarator()
9597 NewFD->getReturnTypeSourceRange().getBegin(), in ActOnFunctionDeclarator()
9608 NewFD->isReplaceableGlobalAllocationFunction() && in ActOnFunctionDeclarator()
9609 !NewFD->hasAttr<UsedAttr>()) in ActOnFunctionDeclarator()
9612 << NewFD->getDeclName(); in ActOnFunctionDeclarator()
9627 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9661 maybeAddCUDAHostDeviceAttrs(NewFD, Previous); in ActOnFunctionDeclarator()
9668 (NewFD->getType()->isDependentType() || DC->isDependentContext() || in ActOnFunctionDeclarator()
9673 if (CheckDependentFunctionTemplateSpecialization(NewFD, TemplateArgs, in ActOnFunctionDeclarator()
9675 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9680 } else if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9682 NewFD, (HasExplicitTemplateArgs ? &TemplateArgs : nullptr), in ActOnFunctionDeclarator()
9684 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9690 NewFD->getTemplateSpecializationInfo(); in ActOnFunctionDeclarator()
9693 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9700 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9705 } else if (isMemberSpecialization && isa<CXXMethodDecl>(NewFD)) { in ActOnFunctionDeclarator()
9706 if (CheckMemberSpecialization(NewFD, Previous)) in ActOnFunctionDeclarator()
9707 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9712 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
9713 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
9715 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
9716 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
9718 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9719 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
9726 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
9732 : NewFD); in ActOnFunctionDeclarator()
9734 if (isFriend && NewFD->getPreviousDecl()) { in ActOnFunctionDeclarator()
9736 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9737 Access = NewFD->getPreviousDecl()->getAccess(); in ActOnFunctionDeclarator()
9739 NewFD->setAccess(Access); in ActOnFunctionDeclarator()
9743 if (NewFD->isOverloadedOperator() && !DC->isRecord() && in ActOnFunctionDeclarator()
9766 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9772 if (isa<CXXRecordDecl>(NewFD->getDeclContext())) in ActOnFunctionDeclarator()
9773 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
9794 } else if (NewFD->isCPUDispatchMultiVersion() || in ActOnFunctionDeclarator()
9795 NewFD->isCPUSpecificMultiVersion()) { in ActOnFunctionDeclarator()
9815 *this, Previous, NewFD, ExtraArgs, false, nullptr)) { in ActOnFunctionDeclarator()
9825 *this, Previous, NewFD, ExtraArgs, true, S)) { in ActOnFunctionDeclarator()
9831 isa<CXXMethodDecl>(NewFD) && NewFD->isOutOfLine() && in ActOnFunctionDeclarator()
9841 Diag(NewFD->getLocation(), diag::ext_out_of_line_declaration) in ActOnFunctionDeclarator()
9849 NewFD->getDeclContext()->getRedeclContext()->isFileContext()) { in ActOnFunctionDeclarator()
9852 if (NewFD->getLanguageLinkage() == CLanguageLinkage) { in ActOnFunctionDeclarator()
9856 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
9864 NewFD->getType(), BuiltinType)) in ActOnFunctionDeclarator()
9865 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
9870 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
9876 ProcessPragmaWeak(S, NewFD); in ActOnFunctionDeclarator()
9877 checkAttributesAfterMerging(*this, *NewFD); in ActOnFunctionDeclarator()
9879 AddKnownFunctionAttributes(NewFD); in ActOnFunctionDeclarator()
9881 if (NewFD->hasAttr<OverloadableAttr>() && in ActOnFunctionDeclarator()
9882 !NewFD->getType()->getAs<FunctionProtoType>()) { in ActOnFunctionDeclarator()
9883 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9885 << NewFD; in ActOnFunctionDeclarator()
9888 const FunctionType *FT = NewFD->getType()->getAs<FunctionType>(); in ActOnFunctionDeclarator()
9895 NewFD->setType(R); in ActOnFunctionDeclarator()
9900 if (!DC->isRecord() && NewFD->isExternallyVisible()) in ActOnFunctionDeclarator()
9901 AddPushedVisibilityAttribute(NewFD); in ActOnFunctionDeclarator()
9905 AddCFAuditedAttribute(NewFD); in ActOnFunctionDeclarator()
9910 AddRangeBasedOptnone(NewFD); in ActOnFunctionDeclarator()
9914 if (NewFD->isFirstDecl() && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9915 isIncompleteDeclExternC(*this, NewFD)) in ActOnFunctionDeclarator()
9916 RegisterLocallyScopedExternCDecl(NewFD, S); in ActOnFunctionDeclarator()
9919 NewFD->setRangeEnd(D.getSourceRange().getEnd()); in ActOnFunctionDeclarator()
9923 checkDLLAttributeRedeclaration(*this, Prev, NewFD, in ActOnFunctionDeclarator()
9930 IdentifierInfo *II = NewFD->getIdentifier(); in ActOnFunctionDeclarator()
9932 !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9933 NewFD->getDeclContext()->getRedeclContext()->isTranslationUnit()) { in ActOnFunctionDeclarator()
9935 Diag(NewFD->getLocation(), diag::err_config_scalar_return) in ActOnFunctionDeclarator()
9937 Context.setcudaConfigureCallDecl(NewFD); in ActOnFunctionDeclarator()
9943 if (!getLangOpts().CUDAAllowVariadicFunctions && NewFD->isVariadic() && in ActOnFunctionDeclarator()
9944 (NewFD->hasAttr<CUDADeviceAttr>() || in ActOnFunctionDeclarator()
9945 NewFD->hasAttr<CUDAGlobalAttr>()) && in ActOnFunctionDeclarator()
9946 !(II && II->isStr("printf") && NewFD->isExternC() && in ActOnFunctionDeclarator()
9948 Diag(NewFD->getLocation(), diag::err_variadic_device_fn); in ActOnFunctionDeclarator()
9952 MarkUnusedFileScopedDecl(NewFD); in ActOnFunctionDeclarator()
9956 if (getLangOpts().OpenCL && NewFD->hasAttr<OpenCLKernelAttr>()) { in ActOnFunctionDeclarator()
9965 if (!NewFD->getReturnType()->isVoidType()) { in ActOnFunctionDeclarator()
9966 SourceRange RTRange = NewFD->getReturnTypeSourceRange(); in ActOnFunctionDeclarator()
9974 for (auto Param : NewFD->parameters()) in ActOnFunctionDeclarator()
9991 if (NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9996 if (isMemberSpecialization && !NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9997 CompleteMemberSpecialization(NewFD, Previous); in ActOnFunctionDeclarator()
10000 for (const ParmVarDecl *Param : NewFD->parameters()) { in ActOnFunctionDeclarator()
10022 Context, CurContext, NewFD->getLocation(), in ActOnFunctionDeclarator()
10023 cast<CXXMethodDecl>(NewFD), in ActOnFunctionDeclarator()
10031 if (const auto *attr = NewFD->getAttr<AvailabilityAttr>()) { in ActOnFunctionDeclarator()
10032 if (NewFD->hasAttr<ConstructorAttr>()) { in ActOnFunctionDeclarator()
10035 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
10037 if (NewFD->hasAttr<DestructorAttr>()) { in ActOnFunctionDeclarator()
10040 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
10051 if (const auto *NBA = NewFD->getAttr<NoBuiltinAttr>()) in ActOnFunctionDeclarator()
10067 return NewFD; in ActOnFunctionDeclarator()
10287 const FunctionDecl *OldFD, const FunctionDecl *NewFD, in areMultiversionVariantFunctionsCompatible() argument
10321 !NewFD->getType()->getAs<FunctionProtoType>()) in areMultiversionVariantFunctionsCompatible()
10322 return Diag(NewFD->getLocation(), NoProtoDiagID); in areMultiversionVariantFunctionsCompatible()
10325 NewFD->getTemplatedKind() == FunctionDecl::TK_FunctionTemplate) in areMultiversionVariantFunctionsCompatible()
10329 if (const auto *NewCXXFD = dyn_cast<CXXMethodDecl>(NewFD)) { in areMultiversionVariantFunctionsCompatible()
10343 if (NewFD->isDeleted()) in areMultiversionVariantFunctionsCompatible()
10347 if (NewFD->isDefaulted()) in areMultiversionVariantFunctionsCompatible()
10351 if (!ConstexprSupported && NewFD->isConstexpr()) in areMultiversionVariantFunctionsCompatible()
10353 << (NewFD->isConsteval() ? ConstevalFuncs : ConstexprFuncs); in areMultiversionVariantFunctionsCompatible()
10355 QualType NewQType = Context.getCanonicalType(NewFD->getType()); in areMultiversionVariantFunctionsCompatible()
10378 if (OldFD->getConstexprKind() != NewFD->getConstexprKind()) in areMultiversionVariantFunctionsCompatible()
10381 if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) in areMultiversionVariantFunctionsCompatible()
10384 if (OldFD->getStorageClass() != NewFD->getStorageClass()) in areMultiversionVariantFunctionsCompatible()
10387 if (!CLinkageMayDiffer && OldFD->isExternC() != NewFD->isExternC()) in areMultiversionVariantFunctionsCompatible()
10392 NewFD->getType()->getAs<FunctionProtoType>(), NewFD->getLocation())) in areMultiversionVariantFunctionsCompatible()
10399 const FunctionDecl *NewFD, in CheckMultiVersionAdditionalRules() argument
10403 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported); in CheckMultiVersionAdditionalRules()
10414 checkNonMultiVersionCompatAttributes(S, OldFD, NewFD, MVType)) in CheckMultiVersionAdditionalRules()
10417 if (checkNonMultiVersionCompatAttributes(S, NewFD, nullptr, MVType)) in CheckMultiVersionAdditionalRules()
10422 return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); in CheckMultiVersionAdditionalRules()
10425 OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), in CheckMultiVersionAdditionalRules()
10426 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
10428 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
10431 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
10479 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, const TargetAttr *NewTA, in CheckTargetCausesMultiVersioning() argument
10495 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported); in CheckTargetCausesMultiVersioning()
10497 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10501 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, true, in CheckTargetCausesMultiVersioning()
10503 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10507 if (CheckMultiVersionValue(S, NewFD)) { in CheckTargetCausesMultiVersioning()
10508 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10517 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
10522 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
10523 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10530 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckTargetCausesMultiVersioning()
10532 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10544 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
10545 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
10551 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
10562 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, in CheckMultiVersionAdditionalDecl() argument
10574 S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed); in CheckMultiVersionAdditionalDecl()
10576 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10587 S.CurContext->isRecord() && !NewFD->getFriendObjectKind(); in CheckMultiVersionAdditionalDecl()
10595 if (S.IsOverload(NewFD, CurFD, UseMemberUsingDeclRules)) in CheckMultiVersionAdditionalDecl()
10601 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10609 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
10611 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10629 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10636 S.Diag(NewFD->getLocation(), diag::err_cpu_dispatch_mismatch); in CheckMultiVersionAdditionalDecl()
10638 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10650 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10660 S.Diag(NewFD->getLocation(), diag::err_cpu_specific_multiple_defs) in CheckMultiVersionAdditionalDecl()
10663 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10678 CheckMultiVersionValue(S, NewFD)) { in CheckMultiVersionAdditionalDecl()
10679 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10683 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, in CheckMultiVersionAdditionalDecl()
10685 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
10692 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10698 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
10713 static bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, in CheckMultiVersionFunction() argument
10717 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckMultiVersionFunction()
10718 const auto *NewCPUDisp = NewFD->getAttr<CPUDispatchAttr>(); in CheckMultiVersionFunction()
10719 const auto *NewCPUSpec = NewFD->getAttr<CPUSpecificAttr>(); in CheckMultiVersionFunction()
10724 S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed); in CheckMultiVersionFunction()
10725 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
10729 MultiVersionKind MVType = NewFD->getMultiVersionKind(); in CheckMultiVersionFunction()
10733 if (NewFD->isMain()) { in CheckMultiVersionFunction()
10737 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_allowed_on_main); in CheckMultiVersionFunction()
10738 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
10746 NewFD->getDeclContext()->getRedeclContext()) { in CheckMultiVersionFunction()
10751 return CheckMultiVersionFirstFunction(S, NewFD, MVType, NewTA); in CheckMultiVersionFunction()
10760 S.Diag(NewFD->getLocation(), diag::err_multiversion_required_in_redecl) in CheckMultiVersionFunction()
10762 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
10768 return CheckTargetCausesMultiVersioning(S, OldFD, NewFD, NewTA, in CheckMultiVersionFunction()
10776 S, OldFD, NewFD, MVType, NewTA, NewCPUDisp, NewCPUSpec, Redeclaration, in CheckMultiVersionFunction()
10797 bool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, in CheckFunctionDeclaration() argument
10800 assert(!NewFD->getReturnType()->isVariablyModifiedType() && in CheckFunctionDeclaration()
10820 if (!AllowOverloadingOfFunction(Previous, Context, NewFD)) { in CheckFunctionDeclaration()
10822 if (shouldLinkPossiblyHiddenDecl(Candidate, NewFD)) { in CheckFunctionDeclaration()
10828 switch (CheckOverload(S, NewFD, Previous, OldDecl, in CheckFunctionDeclaration()
10847 checkForConflictWithNonVisibleExternC(*this, NewFD, Previous)) { in CheckFunctionDeclaration()
10857 NewFD->hasAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
10858 if (IsOverload(NewFD, cast<FunctionDecl>(OldDecl), false)) { in CheckFunctionDeclaration()
10867 if (CheckMultiVersionFunction(*this, NewFD, Redeclaration, OldDecl, in CheckFunctionDeclaration()
10873 CheckPPCMMAType(NewFD->getReturnType(), NewFD->getLocation())) { in CheckFunctionDeclaration()
10874 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
10886 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in CheckFunctionDeclaration()
10918 if (MergeFunctionDecl(NewFD, OldDecl, S, MergeTypeWithPrevious)) { in CheckFunctionDeclaration()
10919 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
10930 = NewFD->getDescribedFunctionTemplate(); in CheckFunctionDeclaration()
10938 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
10939 if (NewFD->isCXXClassMember()) { in CheckFunctionDeclaration()
10940 NewFD->setAccess(OldTemplateDecl->getAccess()); in CheckFunctionDeclaration()
10961 if (shouldLinkDependentDeclWithPrevious(NewFD, OldDecl)) { in CheckFunctionDeclaration()
10964 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
10965 if (NewFD->isCXXClassMember()) in CheckFunctionDeclaration()
10966 NewFD->setAccess(OldFD->getAccess()); in CheckFunctionDeclaration()
10970 !NewFD->getAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
10984 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
10990 NewFD->addAttr(OverloadableAttr::CreateImplicit(Context)); in CheckFunctionDeclaration()
10995 ActOnFinishedFunctionDefinitionInOpenMPAssumeScope(NewFD); in CheckFunctionDeclaration()
11001 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(NewFD)) { in CheckFunctionDeclaration()
11004 dyn_cast<CXXDestructorDecl>(NewFD)) { in CheckFunctionDeclaration()
11014 if (NewFD->getDeclName() != Name) { in CheckFunctionDeclaration()
11015 Diag(NewFD->getLocation(), diag::err_destructor_name); in CheckFunctionDeclaration()
11016 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11020 } else if (auto *Guide = dyn_cast<CXXDeductionGuideDecl>(NewFD)) { in CheckFunctionDeclaration()
11032 if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(NewFD)) { in CheckFunctionDeclaration()
11038 if (Method->isVirtual() && NewFD->getTrailingRequiresClause()) in CheckFunctionDeclaration()
11041 Diag(NewFD->getTrailingRequiresClause()->getBeginLoc(), in CheckFunctionDeclaration()
11048 if (CXXConversionDecl *Conversion = dyn_cast<CXXConversionDecl>(NewFD)) in CheckFunctionDeclaration()
11052 if (NewFD->isOverloadedOperator() && in CheckFunctionDeclaration()
11053 CheckOverloadedOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
11054 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11059 if (NewFD->getLiteralIdentifier() && in CheckFunctionDeclaration()
11060 CheckLiteralOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
11061 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11069 CheckCXXDefaultArguments(NewFD); in CheckFunctionDeclaration()
11075 if (Previous.empty() && NewFD->isExternC()) { in CheckFunctionDeclaration()
11076 QualType R = NewFD->getReturnType(); in CheckFunctionDeclaration()
11078 Diag(NewFD->getLocation(), diag::warn_return_value_udt_incomplete) in CheckFunctionDeclaration()
11079 << NewFD << R; in CheckFunctionDeclaration()
11082 Diag(NewFD->getLocation(), diag::warn_return_value_udt) << NewFD << R; in CheckFunctionDeclaration()
11094 if (!getLangOpts().CPlusPlus17 && !NewFD->getPrimaryTemplate()) { in CheckFunctionDeclaration()
11111 auto *FPT = NewFD->getType()->castAs<FunctionProtoType>(); in CheckFunctionDeclaration()
11116 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
11118 << NewFD; in CheckFunctionDeclaration()
11122 checkCUDATargetOverload(NewFD, Previous); in CheckFunctionDeclaration()
16789 FieldDecl *NewFD in HandleField() local
16793 if (NewFD->isInvalidDecl()) in HandleField()
16797 NewFD->setModulePrivate(); in HandleField()
16799 if (NewFD->isInvalidDecl() && PrevDecl) { in HandleField()
16803 PushOnScopeChains(NewFD, S); in HandleField()
16805 Record->addDecl(NewFD); in HandleField()
16807 return NewFD; in HandleField()
16944 FieldDecl *NewFD = FieldDecl::Create(Context, Record, TSSL, Loc, II, T, TInfo, in CheckFieldDecl() local
16947 NewFD->setInvalidDecl(); in CheckFieldDecl()
16952 NewFD->setInvalidDecl(); in CheckFieldDecl()
16965 if (CheckNontrivialField(NewFD)) in CheckFieldDecl()
16966 NewFD->setInvalidDecl(); in CheckFieldDecl()
16974 Diag(NewFD->getLocation(), getLangOpts().MicrosoftExt ? in CheckFieldDecl()
16977 << NewFD->getDeclName() << EltTy; in CheckFieldDecl()
16979 NewFD->setInvalidDecl(); in CheckFieldDecl()
16988 ProcessDeclAttributes(getCurScope(), NewFD, *D); in CheckFieldDecl()
16990 if (NewFD->hasAttrs()) in CheckFieldDecl()
16991 CheckAlignasUnderalignment(NewFD); in CheckFieldDecl()
16996 if (getLangOpts().ObjCAutoRefCount && inferObjCARCLifetime(NewFD)) in CheckFieldDecl()
16997 NewFD->setInvalidDecl(); in CheckFieldDecl()
17004 CheckPPCMMAType(T, NewFD->getLocation())) in CheckFieldDecl()
17005 NewFD->setInvalidDecl(); in CheckFieldDecl()
17007 NewFD->setAccess(AS); in CheckFieldDecl()
17008 return NewFD; in CheckFieldDecl()