Lines Matching refs:NewFD

9096     Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD,  in DiagnoseInvalidRedeclaration()  argument
9098 DeclarationName Name = NewFD->getDeclName(); in DiagnoseInvalidRedeclaration()
9099 DeclContext *NewDC = NewFD->getDeclContext(); in DiagnoseInvalidRedeclaration()
9106 NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : in DiagnoseInvalidRedeclaration()
9108 LookupResult Prev(SemaRef, Name, NewFD->getLocation(), in DiagnoseInvalidRedeclaration()
9113 NewFD->setInvalidDecl(); in DiagnoseInvalidRedeclaration()
9120 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in DiagnoseInvalidRedeclaration()
9121 DifferentNameValidatorCCC CCC(SemaRef.Context, NewFD, in DiagnoseInvalidRedeclaration()
9128 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
9151 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
9170 NewFD->getTypeSourceInfo(), Previous, ExtraArgs.TemplateParamLists, in DiagnoseInvalidRedeclaration()
9204 SemaRef.Diag(NewFD->getLocation(), DiagMsg) in DiagnoseInvalidRedeclaration()
9205 << Name << NewDC << IsDefinition << NewFD->getLocation(); in DiagnoseInvalidRedeclaration()
9208 if (CXXMethodDecl *NewMD = dyn_cast<CXXMethodDecl>(NewFD)) in DiagnoseInvalidRedeclaration()
9227 << NewFD->getParamDecl(Idx - 1)->getType(); in DiagnoseInvalidRedeclaration()
9290 FunctionDecl *NewFD = nullptr; in CreateNewFunctionDecl() local
9314 NewFD = FunctionDecl::Create( in CreateNewFunctionDecl()
9320 NewFD->setInvalidDecl(); in CreateNewFunctionDecl()
9322 return NewFD; in CreateNewFunctionDecl()
9857 FunctionDecl *NewFD = CreateNewFunctionDecl(*this, D, DC, R, TInfo, SC, in ActOnFunctionDeclarator() local
9859 if (!NewFD) return nullptr; in ActOnFunctionDeclarator()
9862 NewFD->setTopLevelDeclInObjCContainer(); in ActOnFunctionDeclarator()
9867 NewFD->setLexicalDeclContext(CurContext); in ActOnFunctionDeclarator()
9870 NewFD->setLocalExternDecl(); in ActOnFunctionDeclarator()
9879 !NewFD->getOwningModule() || in ActOnFunctionDeclarator()
9880 NewFD->getOwningModule()->isGlobalModule() || in ActOnFunctionDeclarator()
9881 NewFD->getOwningModule()->isHeaderLikeModule(); in ActOnFunctionDeclarator()
9893 NewFD->setImplicitlyInline(ImplicitInlineCXX20); in ActOnFunctionDeclarator()
9900 dyn_cast<CXXRecordDecl>(NewFD->getDeclContext())) { in ActOnFunctionDeclarator()
9901 if (Parent->isInterface() && cast<CXXMethodDecl>(NewFD)->isUserProvided()) in ActOnFunctionDeclarator()
9902 NewFD->setIsPureVirtual(true); in ActOnFunctionDeclarator()
9908 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9912 NewFD->getKind() == Decl::Kind::CXXMethod && NewFD->getIdentifier() && in ActOnFunctionDeclarator()
9913 NewFD->getName() == "__init" && D.isFunctionDefinition()) { in ActOnFunctionDeclarator()
9919 SetNestedNameSpecifier(*this, NewFD, D); in ActOnFunctionDeclarator()
9923 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9940 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9947 Diag(NewFD->getLocation(), diag::err_destructor_template); in ActOnFunctionDeclarator()
9948 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9953 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9966 NewFD->getLocation(), in ActOnFunctionDeclarator()
9968 NewFD); in ActOnFunctionDeclarator()
9970 NewFD->setDescribedFunctionTemplate(FunctionTemplate); in ActOnFunctionDeclarator()
9974 NewFD->setTemplateParameterListsInfo(Context, in ActOnFunctionDeclarator()
9983 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
10017 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10023 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
10049 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10054 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10064 if (isVirtual && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
10073 } else if (NewFD->getDescribedFunctionTemplate()) { in ActOnFunctionDeclarator()
10081 NewFD->setVirtualAsWritten(true); in ActOnFunctionDeclarator()
10085 NewFD->getReturnType()->isUndeducedType()) in ActOnFunctionDeclarator()
10090 (NewFD->isDependentContext() || in ActOnFunctionDeclarator()
10092 NewFD->getReturnType()->isUndeducedType()) { in ActOnFunctionDeclarator()
10100 NewFD->getType()->castAs<FunctionProtoType>(); in ActOnFunctionDeclarator()
10102 NewFD->setType(Context.getFunctionType(Result, FPT->getParamTypes(), in ActOnFunctionDeclarator()
10109 if (isInline && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
10122 if (hasExplicit && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10123 !isa<CXXDeductionGuideDecl>(NewFD)) { in ActOnFunctionDeclarator()
10129 } else if (!isa<CXXConstructorDecl>(NewFD) && in ActOnFunctionDeclarator()
10130 !isa<CXXConversionDecl>(NewFD)) { in ActOnFunctionDeclarator()
10143 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
10148 if (isa<CXXDestructorDecl>(NewFD) && in ActOnFunctionDeclarator()
10153 NewFD->setConstexprKind(getLangOpts().CPlusPlus20 in ActOnFunctionDeclarator()
10161 (NewFD->getOverloadedOperator() == OO_New || in ActOnFunctionDeclarator()
10162 NewFD->getOverloadedOperator() == OO_Array_New || in ActOnFunctionDeclarator()
10163 NewFD->getOverloadedOperator() == OO_Delete || in ActOnFunctionDeclarator()
10164 NewFD->getOverloadedOperator() == OO_Array_Delete)) { in ActOnFunctionDeclarator()
10167 << NewFD; in ActOnFunctionDeclarator()
10168 NewFD->setConstexprKind(ConstexprSpecKind::Constexpr); in ActOnFunctionDeclarator()
10181 NewFD->setModulePrivate(); in ActOnFunctionDeclarator()
10192 NewFD->setObjectOfFriendDecl(); in ActOnFunctionDeclarator()
10193 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
10204 NewFD->setDefaulted(); in ActOnFunctionDeclarator()
10208 NewFD->setDeletedAsWritten(); in ActOnFunctionDeclarator()
10212 if (isa<CXXMethodDecl>(NewFD) && DC == CurContext && in ActOnFunctionDeclarator()
10220 NewFD->setImplicitlyInline(ImplicitInlineCXX20); in ActOnFunctionDeclarator()
10223 if (SC == SC_Static && isa<CXXMethodDecl>(NewFD) && in ActOnFunctionDeclarator()
10239 (getLangOpts().MSVCCompat && NewFD->getDescribedFunctionTemplate())) in ActOnFunctionDeclarator()
10251 NewFD->setType(Context.getFunctionType( in ActOnFunctionDeclarator()
10263 NewFD->hasOwningModule() && NewFD->getOwningModule()->isNamedModule()) { in ActOnFunctionDeclarator()
10264 PendingInlineFuncDecls.insert(NewFD); in ActOnFunctionDeclarator()
10269 FilterLookupForScope(Previous, OriginalDC, S, shouldConsiderLinkage(NewFD), in ActOnFunctionDeclarator()
10278 NewFD->addAttr(AsmLabelAttr::Create(Context, SE->getString(), in ActOnFunctionDeclarator()
10283 ExtnameUndeclaredIdentifiers.find(NewFD->getIdentifier()); in ActOnFunctionDeclarator()
10285 if (isDeclExternC(NewFD)) { in ActOnFunctionDeclarator()
10286 NewFD->addAttr(I->second); in ActOnFunctionDeclarator()
10289 Diag(NewFD->getLocation(), diag::warn_redefine_extname_not_applied) in ActOnFunctionDeclarator()
10290 << /*Variable*/0 << NewFD; in ActOnFunctionDeclarator()
10309 assert(Param->getDeclContext() != NewFD && "Was set before ?"); in ActOnFunctionDeclarator()
10310 Param->setDeclContext(NewFD); in ActOnFunctionDeclarator()
10314 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10324 getTagInjectionContext(NewFD->getLexicalDeclContext()); in ActOnFunctionDeclarator()
10340 TD->setDeclContext(NewFD); in ActOnFunctionDeclarator()
10341 NewFD->addDecl(TD); in ActOnFunctionDeclarator()
10365 BuildParmVarDeclForTypedef(NewFD, D.getIdentifierLoc(), AI); in ActOnFunctionDeclarator()
10370 assert(R->isFunctionNoProtoType() && NewFD->getNumParams() == 0 && in ActOnFunctionDeclarator()
10375 NewFD->setParams(Params); in ActOnFunctionDeclarator()
10378 NewFD->addAttr( in ActOnFunctionDeclarator()
10383 if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10384 NewFD->getReturnType()->isVariablyModifiedType()) { in ActOnFunctionDeclarator()
10385 Diag(NewFD->getLocation(), diag::err_vm_func_decl); in ActOnFunctionDeclarator()
10386 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10391 !NewFD->hasAttr<SectionAttr>()) in ActOnFunctionDeclarator()
10392 NewFD->addAttr(PragmaClangTextSectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
10398 !NewFD->hasAttr<SectionAttr>()) { in ActOnFunctionDeclarator()
10399 NewFD->addAttr(SectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
10405 NewFD)) in ActOnFunctionDeclarator()
10406 NewFD->dropAttr<SectionAttr>(); in ActOnFunctionDeclarator()
10412 !NewFD->hasAttr<StrictGuardStackCheckAttr>()) in ActOnFunctionDeclarator()
10413 NewFD->addAttr(StrictGuardStackCheckAttr::CreateImplicit( in ActOnFunctionDeclarator()
10418 if (!NewFD->hasAttr<CodeSegAttr>()) { in ActOnFunctionDeclarator()
10419 if (Attr *SAttr = getImplicitCodeSegOrSectionAttrForFunction(NewFD, in ActOnFunctionDeclarator()
10421 NewFD->addAttr(SAttr); in ActOnFunctionDeclarator()
10426 ProcessDeclAttributes(S, NewFD, D); in ActOnFunctionDeclarator()
10427 const auto *NewTVA = NewFD->getAttr<TargetVersionAttr>(); in ActOnFunctionDeclarator()
10432 return NewFD; in ActOnFunctionDeclarator()
10441 LangAS AddressSpace = NewFD->getReturnType().getAddressSpace(); in ActOnFunctionDeclarator()
10443 Diag(NewFD->getLocation(), diag::err_return_value_with_address_space); in ActOnFunctionDeclarator()
10444 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10450 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
10451 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
10453 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
10454 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
10456 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10457 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
10463 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
10470 const FunctionType *FT = NewFD->getType()->castAs<FunctionType>(); in ActOnFunctionDeclarator()
10478 Diag(NewFD->getLocation(), DiagID) in ActOnFunctionDeclarator()
10483 if (NewFD->getReturnType().hasNonTrivialToPrimitiveDestructCUnion() || in ActOnFunctionDeclarator()
10484 NewFD->getReturnType().hasNonTrivialToPrimitiveCopyCUnion()) in ActOnFunctionDeclarator()
10485 checkNonTrivialCUnion(NewFD->getReturnType(), in ActOnFunctionDeclarator()
10486 NewFD->getReturnTypeSourceRange().getBegin(), in ActOnFunctionDeclarator()
10497 NewFD->isReplaceableGlobalAllocationFunction() && in ActOnFunctionDeclarator()
10498 !NewFD->hasAttr<UsedAttr>()) in ActOnFunctionDeclarator()
10501 << NewFD->getDeclName(); in ActOnFunctionDeclarator()
10510 maybeAddCUDAHostDeviceAttrs(NewFD, Previous); in ActOnFunctionDeclarator()
10522 DC->isDependentContext() || NewFD->getType()->isDependentType() || in ActOnFunctionDeclarator()
10548 NewFD, ExplicitTemplateArgs, Previous)) in ActOnFunctionDeclarator()
10549 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10550 } else if (!NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
10551 if (CheckFunctionTemplateSpecialization(NewFD, ExplicitTemplateArgs, in ActOnFunctionDeclarator()
10553 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10561 NewFD->getTemplateSpecializationInfo(); in ActOnFunctionDeclarator()
10564 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
10571 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
10576 } else if (isMemberSpecialization && isa<CXXMethodDecl>(NewFD)) { in ActOnFunctionDeclarator()
10577 if (CheckMemberSpecialization(NewFD, Previous)) in ActOnFunctionDeclarator()
10578 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10582 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
10583 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
10585 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
10586 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
10588 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10589 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
10596 assert((NewFD->isInvalidDecl() || NewFD->isMultiVersion() || in ActOnFunctionDeclarator()
10603 : NewFD); in ActOnFunctionDeclarator()
10605 if (isFriend && NewFD->getPreviousDecl()) { in ActOnFunctionDeclarator()
10607 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10608 Access = NewFD->getPreviousDecl()->getAccess(); in ActOnFunctionDeclarator()
10610 NewFD->setAccess(Access); in ActOnFunctionDeclarator()
10614 if (NewFD->isOverloadedOperator() && !DC->isRecord() && in ActOnFunctionDeclarator()
10637 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
10643 if (isa<CXXRecordDecl>(NewFD->getDeclContext())) in ActOnFunctionDeclarator()
10644 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
10665 } else if (NewFD->isCPUDispatchMultiVersion() || in ActOnFunctionDeclarator()
10666 NewFD->isCPUSpecificMultiVersion()) { in ActOnFunctionDeclarator()
10686 *this, Previous, NewFD, ExtraArgs, false, nullptr)) { in ActOnFunctionDeclarator()
10696 *this, Previous, NewFD, ExtraArgs, true, S)) { in ActOnFunctionDeclarator()
10702 isa<CXXMethodDecl>(NewFD) && NewFD->isOutOfLine() && in ActOnFunctionDeclarator()
10712 Diag(NewFD->getLocation(), diag::ext_out_of_line_declaration) in ActOnFunctionDeclarator()
10719 if (!NewFD->isInvalidDecl() && S->getDepth() == 0 && Name.isIdentifier()) in ActOnFunctionDeclarator()
10720 ActOnHLSLTopLevelFunction(NewFD); in ActOnFunctionDeclarator()
10722 if (NewFD->hasAttr<HLSLShaderAttr>()) in ActOnFunctionDeclarator()
10723 CheckHLSLEntryPoint(NewFD); in ActOnFunctionDeclarator()
10733 NewFD->getDeclContext()->getRedeclContext()->isFileContext()) { in ActOnFunctionDeclarator()
10734 if (NewFD->getLanguageLinkage() == CLanguageLinkage) { in ActOnFunctionDeclarator()
10738 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
10746 NewFD->getType(), BuiltinType)) in ActOnFunctionDeclarator()
10747 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
10750 } else if (InStdNamespace && NewFD->isInStdNamespace() && in ActOnFunctionDeclarator()
10751 isStdBuiltin(Context, NewFD, BuiltinID)) { in ActOnFunctionDeclarator()
10752 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
10758 ProcessPragmaWeak(S, NewFD); in ActOnFunctionDeclarator()
10759 checkAttributesAfterMerging(*this, *NewFD); in ActOnFunctionDeclarator()
10761 AddKnownFunctionAttributes(NewFD); in ActOnFunctionDeclarator()
10763 if (NewFD->hasAttr<OverloadableAttr>() && in ActOnFunctionDeclarator()
10764 !NewFD->getType()->getAs<FunctionProtoType>()) { in ActOnFunctionDeclarator()
10765 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
10767 << NewFD; in ActOnFunctionDeclarator()
10768 NewFD->dropAttr<OverloadableAttr>(); in ActOnFunctionDeclarator()
10773 if (!DC->isRecord() && NewFD->isExternallyVisible()) in ActOnFunctionDeclarator()
10774 AddPushedVisibilityAttribute(NewFD); in ActOnFunctionDeclarator()
10778 AddCFAuditedAttribute(NewFD); in ActOnFunctionDeclarator()
10783 AddRangeBasedOptnone(NewFD); in ActOnFunctionDeclarator()
10784 AddImplicitMSFunctionNoBuiltinAttr(NewFD); in ActOnFunctionDeclarator()
10785 AddSectionMSAllocText(NewFD); in ActOnFunctionDeclarator()
10786 ModifyFnAttributesMSPragmaOptimize(NewFD); in ActOnFunctionDeclarator()
10791 if (NewFD->isFirstDecl() && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10792 isIncompleteDeclExternC(*this, NewFD)) in ActOnFunctionDeclarator()
10793 RegisterLocallyScopedExternCDecl(NewFD, S); in ActOnFunctionDeclarator()
10796 NewFD->setRangeEnd(D.getSourceRange().getEnd()); in ActOnFunctionDeclarator()
10800 checkDLLAttributeRedeclaration(*this, Prev, NewFD, in ActOnFunctionDeclarator()
10807 IdentifierInfo *II = NewFD->getIdentifier(); in ActOnFunctionDeclarator()
10809 !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10810 NewFD->getDeclContext()->getRedeclContext()->isTranslationUnit()) { in ActOnFunctionDeclarator()
10812 Diag(NewFD->getLocation(), diag::err_config_scalar_return) in ActOnFunctionDeclarator()
10814 Context.setcudaConfigureCallDecl(NewFD); in ActOnFunctionDeclarator()
10820 if (!getLangOpts().CUDAAllowVariadicFunctions && NewFD->isVariadic() && in ActOnFunctionDeclarator()
10821 (NewFD->hasAttr<CUDADeviceAttr>() || in ActOnFunctionDeclarator()
10822 NewFD->hasAttr<CUDAGlobalAttr>()) && in ActOnFunctionDeclarator()
10823 !(II && II->isStr("printf") && NewFD->isExternC() && in ActOnFunctionDeclarator()
10825 Diag(NewFD->getLocation(), diag::err_variadic_device_fn); in ActOnFunctionDeclarator()
10829 MarkUnusedFileScopedDecl(NewFD); in ActOnFunctionDeclarator()
10833 if (getLangOpts().OpenCL && NewFD->hasAttr<OpenCLKernelAttr>()) { in ActOnFunctionDeclarator()
10841 if (!NewFD->getReturnType()->isVoidType()) { in ActOnFunctionDeclarator()
10842 SourceRange RTRange = NewFD->getReturnTypeSourceRange(); in ActOnFunctionDeclarator()
10850 for (auto *Param : NewFD->parameters()) in ActOnFunctionDeclarator()
10869 FriendConstraintsDependOnEnclosingTemplate(NewFD)) { in ActOnFunctionDeclarator()
10870 NewFD->setFriendConstraintRefersToEnclosingTemplate(true); in ActOnFunctionDeclarator()
10876 Diag(NewFD->getBeginLoc(), in ActOnFunctionDeclarator()
10878 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10883 if (NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10888 if (isMemberSpecialization && !NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10889 CompleteMemberSpecialization(NewFD, Previous); in ActOnFunctionDeclarator()
10892 for (const ParmVarDecl *Param : NewFD->parameters()) { in ActOnFunctionDeclarator()
10918 if (const auto *attr = NewFD->getAttr<AvailabilityAttr>()) { in ActOnFunctionDeclarator()
10919 if (NewFD->hasAttr<ConstructorAttr>()) { in ActOnFunctionDeclarator()
10922 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
10924 if (NewFD->hasAttr<DestructorAttr>()) { in ActOnFunctionDeclarator()
10927 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
10938 if (const auto *NBA = NewFD->getAttr<NoBuiltinAttr>()) in ActOnFunctionDeclarator()
10954 return NewFD; in ActOnFunctionDeclarator()
11193 const FunctionDecl *OldFD, const FunctionDecl *NewFD, in areMultiversionVariantFunctionsCompatible() argument
11228 !NewFD->getType()->getAs<FunctionProtoType>()) in areMultiversionVariantFunctionsCompatible()
11229 return Diag(NewFD->getLocation(), NoProtoDiagID); in areMultiversionVariantFunctionsCompatible()
11232 NewFD->getTemplatedKind() == FunctionDecl::TK_FunctionTemplate) in areMultiversionVariantFunctionsCompatible()
11236 if (const auto *NewCXXFD = dyn_cast<CXXMethodDecl>(NewFD)) { in areMultiversionVariantFunctionsCompatible()
11250 if (NewFD->isDeleted()) in areMultiversionVariantFunctionsCompatible()
11254 if (NewFD->isDefaulted()) in areMultiversionVariantFunctionsCompatible()
11258 if (!ConstexprSupported && NewFD->isConstexpr()) in areMultiversionVariantFunctionsCompatible()
11260 << (NewFD->isConsteval() ? ConstevalFuncs : ConstexprFuncs); in areMultiversionVariantFunctionsCompatible()
11262 QualType NewQType = Context.getCanonicalType(NewFD->getType()); in areMultiversionVariantFunctionsCompatible()
11285 if (OldFD->getConstexprKind() != NewFD->getConstexprKind()) in areMultiversionVariantFunctionsCompatible()
11288 if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) in areMultiversionVariantFunctionsCompatible()
11291 if (OldFD->getFormalLinkage() != NewFD->getFormalLinkage()) in areMultiversionVariantFunctionsCompatible()
11294 if (!CLinkageMayDiffer && OldFD->isExternC() != NewFD->isExternC()) in areMultiversionVariantFunctionsCompatible()
11299 NewFD->getType()->getAs<FunctionProtoType>(), NewFD->getLocation())) in areMultiversionVariantFunctionsCompatible()
11306 const FunctionDecl *NewFD, in CheckMultiVersionAdditionalRules() argument
11310 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported); in CheckMultiVersionAdditionalRules()
11321 checkNonMultiVersionCompatAttributes(S, OldFD, NewFD, MVKind)) in CheckMultiVersionAdditionalRules()
11324 if (checkNonMultiVersionCompatAttributes(S, NewFD, nullptr, MVKind)) in CheckMultiVersionAdditionalRules()
11329 return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); in CheckMultiVersionAdditionalRules()
11332 OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), in CheckMultiVersionAdditionalRules()
11333 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
11335 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
11338 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
11386 FunctionDecl *NewFD, in CheckTargetCausesMultiVersioning() argument
11390 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckTargetCausesMultiVersioning()
11391 const auto *NewTVA = NewFD->getAttr<TargetVersionAttr>(); in CheckTargetCausesMultiVersioning()
11403 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, true, in CheckTargetCausesMultiVersioning()
11406 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
11410 if (CheckMultiVersionValue(S, NewFD)) { in CheckTargetCausesMultiVersioning()
11411 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
11422 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
11427 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
11428 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
11443 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckTargetCausesMultiVersioning()
11445 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
11459 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckTargetCausesMultiVersioning()
11461 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
11476 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
11477 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
11483 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
11505 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, in CheckMultiVersionAdditionalDecl() argument
11509 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckMultiVersionAdditionalDecl()
11510 const auto *NewTVA = NewFD->getAttr<TargetVersionAttr>(); in CheckMultiVersionAdditionalDecl()
11514 S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed); in CheckMultiVersionAdditionalDecl()
11516 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11533 S.CurContext->isRecord() && !NewFD->getFriendObjectKind(); in CheckMultiVersionAdditionalDecl()
11536 AllowOverloadingOfFunction(Previous, S.Context, NewFD); in CheckMultiVersionAdditionalDecl()
11545 S.IsOverload(NewFD, CurFD, UseMemberUsingDeclRules)) in CheckMultiVersionAdditionalDecl()
11550 NewFD->addAttr(TargetVersionAttr::CreateImplicit( in CheckMultiVersionAdditionalDecl()
11551 S.Context, "default", NewFD->getSourceRange())); in CheckMultiVersionAdditionalDecl()
11552 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11555 NewTVA = NewFD->getAttr<TargetVersionAttr>(); in CheckMultiVersionAdditionalDecl()
11569 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11580 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
11582 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11590 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11601 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
11603 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11612 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11619 S.Diag(NewFD->getLocation(), diag::err_target_clone_doesnt_match); in CheckMultiVersionAdditionalDecl()
11621 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11643 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11650 S.Diag(NewFD->getLocation(), diag::err_cpu_dispatch_mismatch); in CheckMultiVersionAdditionalDecl()
11652 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11663 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11673 S.Diag(NewFD->getLocation(), diag::err_cpu_specific_multiple_defs) in CheckMultiVersionAdditionalDecl()
11676 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11692 CheckMultiVersionValue(S, NewFD)) { in CheckMultiVersionAdditionalDecl()
11693 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11697 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, in CheckMultiVersionAdditionalDecl()
11699 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11706 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11712 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11725 static bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, in CheckMultiVersionFunction() argument
11728 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckMultiVersionFunction()
11729 const auto *NewTVA = NewFD->getAttr<TargetVersionAttr>(); in CheckMultiVersionFunction()
11730 const auto *NewCPUDisp = NewFD->getAttr<CPUDispatchAttr>(); in CheckMultiVersionFunction()
11731 const auto *NewCPUSpec = NewFD->getAttr<CPUSpecificAttr>(); in CheckMultiVersionFunction()
11732 const auto *NewClones = NewFD->getAttr<TargetClonesAttr>(); in CheckMultiVersionFunction()
11733 MultiVersionKind MVKind = NewFD->getMultiVersionKind(); in CheckMultiVersionFunction()
11738 if (NewFD->isMain()) { in CheckMultiVersionFunction()
11743 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_allowed_on_main); in CheckMultiVersionFunction()
11744 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11756 NewFD->getDeclContext()->getRedeclContext()) { in CheckMultiVersionFunction()
11761 return CheckMultiVersionFirstFunction(S, NewFD); in CheckMultiVersionFunction()
11769 if (!NewFD->getType()->getAs<FunctionProtoType>()) { in CheckMultiVersionFunction()
11771 S.Diag(NewFD->getLocation(), diag::err_multiversion_noproto); in CheckMultiVersionFunction()
11772 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11775 NewFD->addAttr(TargetVersionAttr::CreateImplicit( in CheckMultiVersionFunction()
11776 S.Context, "default", NewFD->getSourceRange())); in CheckMultiVersionFunction()
11777 NewFD->setIsMultiVersion(); in CheckMultiVersionFunction()
11790 S.Diag(NewFD->getLocation(), diag::err_multiversion_required_in_redecl) in CheckMultiVersionFunction()
11792 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11800 return CheckTargetCausesMultiVersioning(S, OldFD, NewFD, Redeclaration, in CheckMultiVersionFunction()
11804 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11805 return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); in CheckMultiVersionFunction()
11820 return CheckMultiVersionAdditionalDecl(S, OldFD, NewFD, MVKind, NewCPUDisp, in CheckMultiVersionFunction()
11825 static void CheckConstPureAttributesUsage(Sema &S, FunctionDecl *NewFD) { in CheckConstPureAttributesUsage() argument
11826 bool IsPure = NewFD->hasAttr<PureAttr>(); in CheckConstPureAttributesUsage()
11827 bool IsConst = NewFD->hasAttr<ConstAttr>(); in CheckConstPureAttributesUsage()
11838 S.Diag(NewFD->getLocation(), diag::warn_const_attr_with_pure_attr); in CheckConstPureAttributesUsage()
11839 NewFD->dropAttrs<PureAttr>(); in CheckConstPureAttributesUsage()
11844 if (NewFD->getReturnType()->isVoidType()) { in CheckConstPureAttributesUsage()
11845 S.Diag(NewFD->getLocation(), diag::warn_pure_function_returns_void) in CheckConstPureAttributesUsage()
11847 NewFD->dropAttrs<PureAttr, ConstAttr>(); in CheckConstPureAttributesUsage()
11868 bool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, in CheckFunctionDeclaration() argument
11872 assert(!NewFD->getReturnType()->isVariablyModifiedType() && in CheckFunctionDeclaration()
11892 if (!AllowOverloadingOfFunction(Previous, Context, NewFD)) { in CheckFunctionDeclaration()
11894 if (shouldLinkPossiblyHiddenDecl(Candidate, NewFD)) { in CheckFunctionDeclaration()
11900 switch (CheckOverload(S, NewFD, Previous, OldDecl, in CheckFunctionDeclaration()
11919 checkForConflictWithNonVisibleExternC(*this, NewFD, Previous)) { in CheckFunctionDeclaration()
11929 NewFD->hasAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
11930 if (IsOverload(NewFD, cast<FunctionDecl>(OldDecl), false)) { in CheckFunctionDeclaration()
11939 if (CheckMultiVersionFunction(*this, NewFD, Redeclaration, OldDecl, Previous)) in CheckFunctionDeclaration()
11944 CheckPPCMMAType(NewFD->getReturnType(), NewFD->getLocation())) { in CheckFunctionDeclaration()
11945 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11948 CheckConstPureAttributesUsage(*this, NewFD); in CheckFunctionDeclaration()
11959 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in CheckFunctionDeclaration()
11991 if (MergeFunctionDecl(NewFD, OldDecl, S, MergeTypeWithPrevious, in CheckFunctionDeclaration()
11993 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
12004 = NewFD->getDescribedFunctionTemplate(); in CheckFunctionDeclaration()
12012 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
12013 if (NewFD->isCXXClassMember()) { in CheckFunctionDeclaration()
12014 NewFD->setAccess(OldTemplateDecl->getAccess()); in CheckFunctionDeclaration()
12035 if (shouldLinkDependentDeclWithPrevious(NewFD, OldDecl)) { in CheckFunctionDeclaration()
12038 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
12039 if (NewFD->isCXXClassMember()) in CheckFunctionDeclaration()
12040 NewFD->setAccess(OldFD->getAccess()); in CheckFunctionDeclaration()
12044 !NewFD->getAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
12058 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12064 NewFD->addAttr(OverloadableAttr::CreateImplicit(Context)); in CheckFunctionDeclaration()
12069 ActOnFinishedFunctionDefinitionInOpenMPAssumeScope(NewFD); in CheckFunctionDeclaration()
12075 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(NewFD)) { in CheckFunctionDeclaration()
12078 dyn_cast<CXXDestructorDecl>(NewFD)) { in CheckFunctionDeclaration()
12085 if (NewFD->getFriendObjectKind() == Decl::FriendObjectKind::FOK_None || in CheckFunctionDeclaration()
12092 if (NewFD->getDeclName() != Name) { in CheckFunctionDeclaration()
12093 Diag(NewFD->getLocation(), diag::err_destructor_name); in CheckFunctionDeclaration()
12094 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
12098 } else if (auto *Guide = dyn_cast<CXXDeductionGuideDecl>(NewFD)) { in CheckFunctionDeclaration()
12110 if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(NewFD)) { in CheckFunctionDeclaration()
12116 if (Method->isVirtual() && NewFD->getTrailingRequiresClause()) in CheckFunctionDeclaration()
12119 Diag(NewFD->getTrailingRequiresClause()->getBeginLoc(), in CheckFunctionDeclaration()
12126 if (Expr *TRC = NewFD->getTrailingRequiresClause()) { in CheckFunctionDeclaration()
12149 bool IsTemplate = NewFD->getDescribedFunctionTemplate(); in CheckFunctionDeclaration()
12150 bool IsFriend = NewFD->getFriendObjectKind(); in CheckFunctionDeclaration()
12153 !(DeclIsDefn && NewFD->isTemplated()) && in CheckFunctionDeclaration()
12155 !(isa<CXXMethodDecl>(NewFD) && NewFD->isTemplated()) && in CheckFunctionDeclaration()
12158 !NewFD->isTemplateInstantiation() && in CheckFunctionDeclaration()
12162 !(!DeclIsDefn && IsFriend && NewFD->isTemplated())) { in CheckFunctionDeclaration()
12165 !NewFD->isTemplateInstantiation()) { in CheckFunctionDeclaration()
12169 Diag(NewFD->getBeginLoc(), in CheckFunctionDeclaration()
12171 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
12175 if (CXXConversionDecl *Conversion = dyn_cast<CXXConversionDecl>(NewFD)) in CheckFunctionDeclaration()
12179 if (NewFD->isOverloadedOperator() && in CheckFunctionDeclaration()
12180 CheckOverloadedOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
12181 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
12186 if (NewFD->getLiteralIdentifier() && in CheckFunctionDeclaration()
12187 CheckLiteralOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
12188 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
12196 CheckCXXDefaultArguments(NewFD); in CheckFunctionDeclaration()
12202 if (Previous.empty() && NewFD->isExternC()) { in CheckFunctionDeclaration()
12203 QualType R = NewFD->getReturnType(); in CheckFunctionDeclaration()
12205 Diag(NewFD->getLocation(), diag::warn_return_value_udt_incomplete) in CheckFunctionDeclaration()
12206 << NewFD << R; in CheckFunctionDeclaration()
12209 Diag(NewFD->getLocation(), diag::warn_return_value_udt) << NewFD << R; in CheckFunctionDeclaration()
12221 if (!getLangOpts().CPlusPlus17 && !NewFD->getPrimaryTemplate()) { in CheckFunctionDeclaration()
12238 auto *FPT = NewFD->getType()->castAs<FunctionProtoType>(); in CheckFunctionDeclaration()
12243 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12245 << NewFD; in CheckFunctionDeclaration()
12249 checkCUDATargetOverload(NewFD, Previous); in CheckFunctionDeclaration()
12255 const auto *Attr = NewFD->getAttr<ArmNewAttr>(); in CheckFunctionDeclaration()
12256 bool UsesSM = NewFD->hasAttr<ArmLocallyStreamingAttr>(); in CheckFunctionDeclaration()
12259 if (const auto *FPT = NewFD->getType()->getAs<FunctionProtoType>()) { in CheckFunctionDeclaration()
12271 Context.getFunctionFeatureMap(FeatureMap, NewFD); in CheckFunctionDeclaration()
12274 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12277 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12283 Context.getFunctionFeatureMap(FeatureMap, NewFD); in CheckFunctionDeclaration()
12285 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
18511 FieldDecl *NewFD in HandleField() local
18515 if (NewFD->isInvalidDecl()) in HandleField()
18519 NewFD->setModulePrivate(); in HandleField()
18521 if (NewFD->isInvalidDecl() && PrevDecl) { in HandleField()
18525 PushOnScopeChains(NewFD, S); in HandleField()
18527 Record->addDecl(NewFD); in HandleField()
18529 return NewFD; in HandleField()
18664 FieldDecl *NewFD = FieldDecl::Create(Context, Record, TSSL, Loc, II, T, TInfo, in CheckFieldDecl() local
18667 NewFD->setInvalidDecl(); in CheckFieldDecl()
18673 NewFD->setInvalidDecl(); in CheckFieldDecl()
18686 if (CheckNontrivialField(NewFD)) in CheckFieldDecl()
18687 NewFD->setInvalidDecl(); in CheckFieldDecl()
18695 Diag(NewFD->getLocation(), getLangOpts().MicrosoftExt ? in CheckFieldDecl()
18698 << NewFD->getDeclName() << EltTy; in CheckFieldDecl()
18700 NewFD->setInvalidDecl(); in CheckFieldDecl()
18709 ProcessDeclAttributes(getCurScope(), NewFD, *D); in CheckFieldDecl()
18711 if (NewFD->hasAttrs()) in CheckFieldDecl()
18712 CheckAlignasUnderalignment(NewFD); in CheckFieldDecl()
18717 if (getLangOpts().ObjCAutoRefCount && inferObjCARCLifetime(NewFD)) in CheckFieldDecl()
18718 NewFD->setInvalidDecl(); in CheckFieldDecl()
18725 CheckPPCMMAType(T, NewFD->getLocation())) in CheckFieldDecl()
18726 NewFD->setInvalidDecl(); in CheckFieldDecl()
18728 NewFD->setAccess(AS); in CheckFieldDecl()
18729 return NewFD; in CheckFieldDecl()