Lines Matching refs:NewFD
8944 Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, in DiagnoseInvalidRedeclaration() argument
8946 DeclarationName Name = NewFD->getDeclName(); in DiagnoseInvalidRedeclaration()
8947 DeclContext *NewDC = NewFD->getDeclContext(); in DiagnoseInvalidRedeclaration()
8954 NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : in DiagnoseInvalidRedeclaration()
8956 LookupResult Prev(SemaRef, Name, NewFD->getLocation(), in DiagnoseInvalidRedeclaration()
8961 NewFD->setInvalidDecl(); in DiagnoseInvalidRedeclaration()
8968 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in DiagnoseInvalidRedeclaration()
8969 DifferentNameValidatorCCC CCC(SemaRef.Context, NewFD, in DiagnoseInvalidRedeclaration()
8976 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
8999 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
9018 NewFD->getTypeSourceInfo(), Previous, ExtraArgs.TemplateParamLists, in DiagnoseInvalidRedeclaration()
9052 SemaRef.Diag(NewFD->getLocation(), DiagMsg) in DiagnoseInvalidRedeclaration()
9053 << Name << NewDC << IsDefinition << NewFD->getLocation(); in DiagnoseInvalidRedeclaration()
9056 if (CXXMethodDecl *NewMD = dyn_cast<CXXMethodDecl>(NewFD)) in DiagnoseInvalidRedeclaration()
9075 << NewFD->getParamDecl(Idx - 1)->getType(); in DiagnoseInvalidRedeclaration()
9139 FunctionDecl *NewFD = nullptr; in CreateNewFunctionDecl() local
9179 NewFD = FunctionDecl::Create( in CreateNewFunctionDecl()
9185 NewFD->setInvalidDecl(); in CreateNewFunctionDecl()
9187 return NewFD; in CreateNewFunctionDecl()
9713 FunctionDecl *NewFD = CreateNewFunctionDecl(*this, D, DC, R, TInfo, SC, in ActOnFunctionDeclarator() local
9715 if (!NewFD) return nullptr; in ActOnFunctionDeclarator()
9718 NewFD->setTopLevelDeclInObjCContainer(); in ActOnFunctionDeclarator()
9723 NewFD->setLexicalDeclContext(CurContext); in ActOnFunctionDeclarator()
9726 NewFD->setLocalExternDecl(); in ActOnFunctionDeclarator()
9735 NewFD->isConstexpr() || NewFD->isConsteval() || in ActOnFunctionDeclarator()
9736 !NewFD->getOwningModule() || in ActOnFunctionDeclarator()
9737 NewFD->isFromGlobalModule() || in ActOnFunctionDeclarator()
9738 NewFD->getOwningModule()->isHeaderLikeModule(); in ActOnFunctionDeclarator()
9750 NewFD->setImplicitlyInline(ImplicitInlineCXX20); in ActOnFunctionDeclarator()
9757 dyn_cast<CXXRecordDecl>(NewFD->getDeclContext())) { in ActOnFunctionDeclarator()
9758 if (Parent->isInterface() && cast<CXXMethodDecl>(NewFD)->isUserProvided()) in ActOnFunctionDeclarator()
9759 NewFD->setIsPureVirtual(true); in ActOnFunctionDeclarator()
9765 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9769 NewFD->getKind() == Decl::Kind::CXXMethod && NewFD->getIdentifier() && in ActOnFunctionDeclarator()
9770 NewFD->getName() == "__init" && D.isFunctionDefinition()) { in ActOnFunctionDeclarator()
9776 SetNestedNameSpecifier(*this, NewFD, D); in ActOnFunctionDeclarator()
9780 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9797 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9804 Diag(NewFD->getLocation(), diag::err_destructor_template); in ActOnFunctionDeclarator()
9805 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9810 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9823 NewFD->getLocation(), in ActOnFunctionDeclarator()
9825 NewFD); in ActOnFunctionDeclarator()
9827 NewFD->setDescribedFunctionTemplate(FunctionTemplate); in ActOnFunctionDeclarator()
9831 NewFD->setTemplateParameterListsInfo(Context, in ActOnFunctionDeclarator()
9840 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
9874 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9880 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
9906 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9911 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
9921 if (isVirtual && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9930 } else if (NewFD->getDescribedFunctionTemplate()) { in ActOnFunctionDeclarator()
9938 NewFD->setVirtualAsWritten(true); in ActOnFunctionDeclarator()
9942 NewFD->getReturnType()->isUndeducedType()) in ActOnFunctionDeclarator()
9949 if (isInline && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9962 if (hasExplicit && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9963 !isa<CXXDeductionGuideDecl>(NewFD)) { in ActOnFunctionDeclarator()
9969 } else if (!isa<CXXConstructorDecl>(NewFD) && in ActOnFunctionDeclarator()
9970 !isa<CXXConversionDecl>(NewFD)) { in ActOnFunctionDeclarator()
9983 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
9988 if (isa<CXXDestructorDecl>(NewFD) && in ActOnFunctionDeclarator()
9993 NewFD->setConstexprKind(getLangOpts().CPlusPlus20 in ActOnFunctionDeclarator()
10001 (NewFD->getOverloadedOperator() == OO_New || in ActOnFunctionDeclarator()
10002 NewFD->getOverloadedOperator() == OO_Array_New || in ActOnFunctionDeclarator()
10003 NewFD->getOverloadedOperator() == OO_Delete || in ActOnFunctionDeclarator()
10004 NewFD->getOverloadedOperator() == OO_Array_Delete)) { in ActOnFunctionDeclarator()
10007 << NewFD; in ActOnFunctionDeclarator()
10008 NewFD->setConstexprKind(ConstexprSpecKind::Constexpr); in ActOnFunctionDeclarator()
10021 NewFD->setModulePrivate(); in ActOnFunctionDeclarator()
10032 NewFD->setObjectOfFriendDecl(); in ActOnFunctionDeclarator()
10033 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
10044 NewFD->setDefaulted(); in ActOnFunctionDeclarator()
10048 NewFD->setDeletedAsWritten(); in ActOnFunctionDeclarator()
10052 if (isa<CXXMethodDecl>(NewFD) && DC == CurContext && in ActOnFunctionDeclarator()
10060 NewFD->setImplicitlyInline(ImplicitInlineCXX20); in ActOnFunctionDeclarator()
10079 assert(isa<CXXMethodDecl>(NewFD) && in ActOnFunctionDeclarator()
10096 NewFD->getDescribedFunctionTemplate())) in ActOnFunctionDeclarator()
10111 NewFD->setType(Context.getFunctionType( in ActOnFunctionDeclarator()
10123 NewFD->isInNamedModule()) { in ActOnFunctionDeclarator()
10124 PendingInlineFuncDecls.insert(NewFD); in ActOnFunctionDeclarator()
10129 FilterLookupForScope(Previous, OriginalDC, S, shouldConsiderLinkage(NewFD), in ActOnFunctionDeclarator()
10138 NewFD->addAttr(AsmLabelAttr::Create(Context, SE->getString(), in ActOnFunctionDeclarator()
10143 ExtnameUndeclaredIdentifiers.find(NewFD->getIdentifier()); in ActOnFunctionDeclarator()
10145 if (isDeclExternC(NewFD)) { in ActOnFunctionDeclarator()
10146 NewFD->addAttr(I->second); in ActOnFunctionDeclarator()
10149 Diag(NewFD->getLocation(), diag::warn_redefine_extname_not_applied) in ActOnFunctionDeclarator()
10150 << /*Variable*/0 << NewFD; in ActOnFunctionDeclarator()
10169 assert(Param->getDeclContext() != NewFD && "Was set before ?"); in ActOnFunctionDeclarator()
10170 Param->setDeclContext(NewFD); in ActOnFunctionDeclarator()
10174 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10184 getTagInjectionContext(NewFD->getLexicalDeclContext()); in ActOnFunctionDeclarator()
10200 TD->setDeclContext(NewFD); in ActOnFunctionDeclarator()
10201 NewFD->addDecl(TD); in ActOnFunctionDeclarator()
10225 BuildParmVarDeclForTypedef(NewFD, D.getIdentifierLoc(), AI); in ActOnFunctionDeclarator()
10230 assert(R->isFunctionNoProtoType() && NewFD->getNumParams() == 0 && in ActOnFunctionDeclarator()
10235 NewFD->setParams(Params); in ActOnFunctionDeclarator()
10238 NewFD->addAttr( in ActOnFunctionDeclarator()
10243 if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10244 NewFD->getReturnType()->isVariablyModifiedType()) { in ActOnFunctionDeclarator()
10245 Diag(NewFD->getLocation(), diag::err_vm_func_decl); in ActOnFunctionDeclarator()
10246 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10251 !NewFD->hasAttr<SectionAttr>()) in ActOnFunctionDeclarator()
10252 NewFD->addAttr(PragmaClangTextSectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
10258 !NewFD->hasAttr<SectionAttr>()) { in ActOnFunctionDeclarator()
10259 NewFD->addAttr(SectionAttr::CreateImplicit( in ActOnFunctionDeclarator()
10265 NewFD)) in ActOnFunctionDeclarator()
10266 NewFD->dropAttr<SectionAttr>(); in ActOnFunctionDeclarator()
10272 !NewFD->hasAttr<StrictGuardStackCheckAttr>()) in ActOnFunctionDeclarator()
10273 NewFD->addAttr(StrictGuardStackCheckAttr::CreateImplicit( in ActOnFunctionDeclarator()
10278 if (!NewFD->hasAttr<CodeSegAttr>()) { in ActOnFunctionDeclarator()
10279 if (Attr *SAttr = getImplicitCodeSegOrSectionAttrForFunction(NewFD, in ActOnFunctionDeclarator()
10281 NewFD->addAttr(SAttr); in ActOnFunctionDeclarator()
10286 ProcessDeclAttributes(S, NewFD, D); in ActOnFunctionDeclarator()
10287 const auto *NewTVA = NewFD->getAttr<TargetVersionAttr>(); in ActOnFunctionDeclarator()
10292 return NewFD; in ActOnFunctionDeclarator()
10301 LangAS AddressSpace = NewFD->getReturnType().getAddressSpace(); in ActOnFunctionDeclarator()
10303 Diag(NewFD->getLocation(), diag::err_return_value_with_address_space); in ActOnFunctionDeclarator()
10304 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10310 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
10311 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
10313 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
10314 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
10316 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10317 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
10323 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
10330 const FunctionType *FT = NewFD->getType()->castAs<FunctionType>(); in ActOnFunctionDeclarator()
10338 Diag(NewFD->getLocation(), DiagID) in ActOnFunctionDeclarator()
10343 if (NewFD->getReturnType().hasNonTrivialToPrimitiveDestructCUnion() || in ActOnFunctionDeclarator()
10344 NewFD->getReturnType().hasNonTrivialToPrimitiveCopyCUnion()) in ActOnFunctionDeclarator()
10345 checkNonTrivialCUnion(NewFD->getReturnType(), in ActOnFunctionDeclarator()
10346 NewFD->getReturnTypeSourceRange().getBegin(), in ActOnFunctionDeclarator()
10357 NewFD->isReplaceableGlobalAllocationFunction() && in ActOnFunctionDeclarator()
10358 !NewFD->hasAttr<UsedAttr>()) in ActOnFunctionDeclarator()
10361 << NewFD->getDeclName(); in ActOnFunctionDeclarator()
10363 if (Expr *TRC = NewFD->getTrailingRequiresClause()) { in ActOnFunctionDeclarator()
10401 } else if (isFriend && NewFD->isTemplated() && in ActOnFunctionDeclarator()
10406 Diag(NewFD->getBeginLoc(), in ActOnFunctionDeclarator()
10408 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10409 } else if (!NewFD->isTemplated() || in ActOnFunctionDeclarator()
10410 !(isa<CXXMethodDecl>(NewFD) || D.isFunctionDefinition())) { in ActOnFunctionDeclarator()
10424 CUDA().maybeAddHostDeviceAttrs(NewFD, Previous); in ActOnFunctionDeclarator()
10436 DC->isDependentContext() || NewFD->getType()->isDependentType() || in ActOnFunctionDeclarator()
10462 NewFD, ExplicitTemplateArgs, Previous)) in ActOnFunctionDeclarator()
10463 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10464 } else if (!NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
10465 if (CheckFunctionTemplateSpecialization(NewFD, ExplicitTemplateArgs, in ActOnFunctionDeclarator()
10467 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10469 } else if (isMemberSpecialization && isa<CXXMethodDecl>(NewFD)) { in ActOnFunctionDeclarator()
10470 if (CheckMemberSpecialization(NewFD, Previous)) in ActOnFunctionDeclarator()
10471 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10475 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
10476 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
10478 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
10479 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
10481 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10482 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
10489 assert((NewFD->isInvalidDecl() || NewFD->isMultiVersion() || in ActOnFunctionDeclarator()
10496 : NewFD); in ActOnFunctionDeclarator()
10498 if (isFriend && NewFD->getPreviousDecl()) { in ActOnFunctionDeclarator()
10500 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10501 Access = NewFD->getPreviousDecl()->getAccess(); in ActOnFunctionDeclarator()
10503 NewFD->setAccess(Access); in ActOnFunctionDeclarator()
10507 if (NewFD->isOverloadedOperator() && !DC->isRecord() && in ActOnFunctionDeclarator()
10530 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
10536 if (isa<CXXRecordDecl>(NewFD->getDeclContext())) in ActOnFunctionDeclarator()
10537 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
10558 } else if (NewFD->isCPUDispatchMultiVersion() || in ActOnFunctionDeclarator()
10559 NewFD->isCPUSpecificMultiVersion()) { in ActOnFunctionDeclarator()
10579 *this, Previous, NewFD, ExtraArgs, false, nullptr)) { in ActOnFunctionDeclarator()
10589 *this, Previous, NewFD, ExtraArgs, true, S)) { in ActOnFunctionDeclarator()
10595 isa<CXXMethodDecl>(NewFD) && NewFD->isOutOfLine() && in ActOnFunctionDeclarator()
10605 Diag(NewFD->getLocation(), diag::ext_out_of_line_declaration) in ActOnFunctionDeclarator()
10612 if (!NewFD->isInvalidDecl() && S->getDepth() == 0 && Name.isIdentifier()) in ActOnFunctionDeclarator()
10613 HLSL().ActOnTopLevelFunction(NewFD); in ActOnFunctionDeclarator()
10615 if (NewFD->hasAttr<HLSLShaderAttr>()) in ActOnFunctionDeclarator()
10616 HLSL().CheckEntryPoint(NewFD); in ActOnFunctionDeclarator()
10626 NewFD->getDeclContext()->getRedeclContext()->isFileContext()) { in ActOnFunctionDeclarator()
10627 if (NewFD->getLanguageLinkage() == CLanguageLinkage) { in ActOnFunctionDeclarator()
10631 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
10639 NewFD->getType(), BuiltinType)) in ActOnFunctionDeclarator()
10640 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
10643 } else if (InStdNamespace && NewFD->isInStdNamespace() && in ActOnFunctionDeclarator()
10644 isStdBuiltin(Context, NewFD, BuiltinID)) { in ActOnFunctionDeclarator()
10645 NewFD->addAttr(BuiltinAttr::CreateImplicit(Context, BuiltinID)); in ActOnFunctionDeclarator()
10651 ProcessPragmaWeak(S, NewFD); in ActOnFunctionDeclarator()
10652 checkAttributesAfterMerging(*this, *NewFD); in ActOnFunctionDeclarator()
10654 AddKnownFunctionAttributes(NewFD); in ActOnFunctionDeclarator()
10656 if (NewFD->hasAttr<OverloadableAttr>() && in ActOnFunctionDeclarator()
10657 !NewFD->getType()->getAs<FunctionProtoType>()) { in ActOnFunctionDeclarator()
10658 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
10660 << NewFD; in ActOnFunctionDeclarator()
10661 NewFD->dropAttr<OverloadableAttr>(); in ActOnFunctionDeclarator()
10666 if (!DC->isRecord() && NewFD->isExternallyVisible()) in ActOnFunctionDeclarator()
10667 AddPushedVisibilityAttribute(NewFD); in ActOnFunctionDeclarator()
10671 ObjC().AddCFAuditedAttribute(NewFD); in ActOnFunctionDeclarator()
10676 AddRangeBasedOptnone(NewFD); in ActOnFunctionDeclarator()
10677 AddImplicitMSFunctionNoBuiltinAttr(NewFD); in ActOnFunctionDeclarator()
10678 AddSectionMSAllocText(NewFD); in ActOnFunctionDeclarator()
10679 ModifyFnAttributesMSPragmaOptimize(NewFD); in ActOnFunctionDeclarator()
10684 if (NewFD->isFirstDecl() && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10685 isIncompleteDeclExternC(*this, NewFD)) in ActOnFunctionDeclarator()
10686 RegisterLocallyScopedExternCDecl(NewFD, S); in ActOnFunctionDeclarator()
10689 NewFD->setRangeEnd(D.getSourceRange().getEnd()); in ActOnFunctionDeclarator()
10693 checkDLLAttributeRedeclaration(*this, Prev, NewFD, in ActOnFunctionDeclarator()
10700 IdentifierInfo *II = NewFD->getIdentifier(); in ActOnFunctionDeclarator()
10702 !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10703 NewFD->getDeclContext()->getRedeclContext()->isTranslationUnit()) { in ActOnFunctionDeclarator()
10705 Diag(NewFD->getLocation(), diag::err_config_scalar_return) in ActOnFunctionDeclarator()
10707 Context.setcudaConfigureCallDecl(NewFD); in ActOnFunctionDeclarator()
10713 if (!getLangOpts().CUDAAllowVariadicFunctions && NewFD->isVariadic() && in ActOnFunctionDeclarator()
10714 (NewFD->hasAttr<CUDADeviceAttr>() || in ActOnFunctionDeclarator()
10715 NewFD->hasAttr<CUDAGlobalAttr>()) && in ActOnFunctionDeclarator()
10716 !(II && II->isStr("printf") && NewFD->isExternC() && in ActOnFunctionDeclarator()
10718 Diag(NewFD->getLocation(), diag::err_variadic_device_fn); in ActOnFunctionDeclarator()
10722 MarkUnusedFileScopedDecl(NewFD); in ActOnFunctionDeclarator()
10726 if (getLangOpts().OpenCL && NewFD->hasAttr<OpenCLKernelAttr>()) { in ActOnFunctionDeclarator()
10734 if (!NewFD->getReturnType()->isVoidType()) { in ActOnFunctionDeclarator()
10735 SourceRange RTRange = NewFD->getReturnTypeSourceRange(); in ActOnFunctionDeclarator()
10743 for (auto *Param : NewFD->parameters()) in ActOnFunctionDeclarator()
10762 FriendConstraintsDependOnEnclosingTemplate(NewFD)) { in ActOnFunctionDeclarator()
10763 NewFD->setFriendConstraintRefersToEnclosingTemplate(true); in ActOnFunctionDeclarator()
10769 Diag(NewFD->getBeginLoc(), in ActOnFunctionDeclarator()
10771 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
10776 if (NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10781 if (isMemberSpecialization && !NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
10782 CompleteMemberSpecialization(NewFD, Previous); in ActOnFunctionDeclarator()
10785 for (const ParmVarDecl *Param : NewFD->parameters()) { in ActOnFunctionDeclarator()
10811 if (const auto *attr = NewFD->getAttr<AvailabilityAttr>()) { in ActOnFunctionDeclarator()
10812 if (NewFD->hasAttr<ConstructorAttr>()) { in ActOnFunctionDeclarator()
10815 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
10817 if (NewFD->hasAttr<DestructorAttr>()) { in ActOnFunctionDeclarator()
10820 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
10831 if (const auto *NBA = NewFD->getAttr<NoBuiltinAttr>()) in ActOnFunctionDeclarator()
10851 !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
10853 ExternalDeclarations.push_back(NewFD); in ActOnFunctionDeclarator()
10855 return NewFD; in ActOnFunctionDeclarator()
11073 const FunctionDecl *OldFD, const FunctionDecl *NewFD, in areMultiversionVariantFunctionsCompatible() argument
11108 !NewFD->getType()->getAs<FunctionProtoType>()) in areMultiversionVariantFunctionsCompatible()
11109 return Diag(NewFD->getLocation(), NoProtoDiagID); in areMultiversionVariantFunctionsCompatible()
11112 NewFD->getTemplatedKind() == FunctionDecl::TK_FunctionTemplate) in areMultiversionVariantFunctionsCompatible()
11116 if (const auto *NewCXXFD = dyn_cast<CXXMethodDecl>(NewFD)) { in areMultiversionVariantFunctionsCompatible()
11130 if (NewFD->isDeleted()) in areMultiversionVariantFunctionsCompatible()
11134 if (NewFD->isDefaulted()) in areMultiversionVariantFunctionsCompatible()
11138 if (!ConstexprSupported && NewFD->isConstexpr()) in areMultiversionVariantFunctionsCompatible()
11140 << (NewFD->isConsteval() ? ConstevalFuncs : ConstexprFuncs); in areMultiversionVariantFunctionsCompatible()
11142 QualType NewQType = Context.getCanonicalType(NewFD->getType()); in areMultiversionVariantFunctionsCompatible()
11158 const auto *NewFPT = NewFD->getType()->getAs<FunctionProtoType>(); in areMultiversionVariantFunctionsCompatible()
11179 if (OldFD->getConstexprKind() != NewFD->getConstexprKind()) in areMultiversionVariantFunctionsCompatible()
11182 if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) in areMultiversionVariantFunctionsCompatible()
11185 if (OldFD->getFormalLinkage() != NewFD->getFormalLinkage()) in areMultiversionVariantFunctionsCompatible()
11188 if (!CLinkageMayDiffer && OldFD->isExternC() != NewFD->isExternC()) in areMultiversionVariantFunctionsCompatible()
11192 NewFD->getLocation())) in areMultiversionVariantFunctionsCompatible()
11199 const FunctionDecl *NewFD, in CheckMultiVersionAdditionalRules() argument
11203 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported); in CheckMultiVersionAdditionalRules()
11214 checkNonMultiVersionCompatAttributes(S, OldFD, NewFD, MVKind)) in CheckMultiVersionAdditionalRules()
11217 if (checkNonMultiVersionCompatAttributes(S, NewFD, nullptr, MVKind)) in CheckMultiVersionAdditionalRules()
11222 return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); in CheckMultiVersionAdditionalRules()
11225 OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), in CheckMultiVersionAdditionalRules()
11226 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
11228 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
11231 PartialDiagnosticAt(NewFD->getLocation(), in CheckMultiVersionAdditionalRules()
11297 FunctionDecl *NewFD, in CheckDeclarationCausesMultiVersioning() argument
11306 patchDefaultTargetVersion(NewFD, OldFD); in CheckDeclarationCausesMultiVersioning()
11308 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckDeclarationCausesMultiVersioning()
11309 const auto *NewTVA = NewFD->getAttr<TargetVersionAttr>(); in CheckDeclarationCausesMultiVersioning()
11324 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, true, in CheckDeclarationCausesMultiVersioning()
11327 NewFD->setInvalidDecl(); in CheckDeclarationCausesMultiVersioning()
11331 if (CheckMultiVersionValue(S, NewFD)) { in CheckDeclarationCausesMultiVersioning()
11332 NewFD->setInvalidDecl(); in CheckDeclarationCausesMultiVersioning()
11341 NewFD->setIsMultiVersion(); in CheckDeclarationCausesMultiVersioning()
11346 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckDeclarationCausesMultiVersioning()
11347 NewFD->setInvalidDecl(); in CheckDeclarationCausesMultiVersioning()
11362 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckDeclarationCausesMultiVersioning()
11364 NewFD->setInvalidDecl(); in CheckDeclarationCausesMultiVersioning()
11379 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckDeclarationCausesMultiVersioning()
11380 NewFD->setInvalidDecl(); in CheckDeclarationCausesMultiVersioning()
11386 NewFD->setIsMultiVersion(); in CheckDeclarationCausesMultiVersioning()
11425 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, in CheckMultiVersionAdditionalDecl() argument
11431 if (!MultiVersionTypesCompatible(OldFD, NewFD)) { in CheckMultiVersionAdditionalDecl()
11432 S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed); in CheckMultiVersionAdditionalDecl()
11434 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11439 patchDefaultTargetVersion(OldFD, NewFD); in CheckMultiVersionAdditionalDecl()
11440 patchDefaultTargetVersion(NewFD, OldFD); in CheckMultiVersionAdditionalDecl()
11442 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckMultiVersionAdditionalDecl()
11443 const auto *NewTVA = NewFD->getAttr<TargetVersionAttr>(); in CheckMultiVersionAdditionalDecl()
11444 MultiVersionKind NewMVKind = NewFD->getMultiVersionKind(); in CheckMultiVersionAdditionalDecl()
11460 S.CurContext->isRecord() && !NewFD->getFriendObjectKind(); in CheckMultiVersionAdditionalDecl()
11463 AllowOverloadingOfFunction(Previous, S.Context, NewFD); in CheckMultiVersionAdditionalDecl()
11472 S.IsOverload(NewFD, CurFD, UseMemberUsingDeclRules)) in CheckMultiVersionAdditionalDecl()
11483 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11494 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
11496 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11504 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11514 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
11516 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11530 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
11532 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11546 S.Diag(NewFD->getLocation(), diag::err_target_clone_doesnt_match); in CheckMultiVersionAdditionalDecl()
11548 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11566 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
11568 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11576 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11595 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11602 S.Diag(NewFD->getLocation(), diag::err_cpu_dispatch_mismatch); in CheckMultiVersionAdditionalDecl()
11604 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11615 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11625 S.Diag(NewFD->getLocation(), diag::err_cpu_specific_multiple_defs) in CheckMultiVersionAdditionalDecl()
11628 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11644 CheckMultiVersionValue(S, NewFD)) { in CheckMultiVersionAdditionalDecl()
11645 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11649 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, in CheckMultiVersionAdditionalDecl()
11651 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
11658 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11664 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11677 static bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, in CheckMultiVersionFunction() argument
11680 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckMultiVersionFunction()
11681 const auto *NewTVA = NewFD->getAttr<TargetVersionAttr>(); in CheckMultiVersionFunction()
11682 const auto *NewCPUDisp = NewFD->getAttr<CPUDispatchAttr>(); in CheckMultiVersionFunction()
11683 const auto *NewCPUSpec = NewFD->getAttr<CPUSpecificAttr>(); in CheckMultiVersionFunction()
11684 const auto *NewClones = NewFD->getAttr<TargetClonesAttr>(); in CheckMultiVersionFunction()
11685 MultiVersionKind MVKind = NewFD->getMultiVersionKind(); in CheckMultiVersionFunction()
11690 if (NewFD->isMain()) { in CheckMultiVersionFunction()
11695 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_allowed_on_main); in CheckMultiVersionFunction()
11696 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11714 NewFD->getDeclContext()->getRedeclContext())) { in CheckMultiVersionFunction()
11719 return CheckMultiVersionFirstFunction(S, NewFD); in CheckMultiVersionFunction()
11732 S.Diag(NewFD->getLocation(), diag::err_multiversion_required_in_redecl) in CheckMultiVersionFunction()
11734 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11743 S, OldFD, NewFD, Redeclaration, OldDecl, Previous); in CheckMultiVersionFunction()
11746 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
11747 return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); in CheckMultiVersionFunction()
11762 return CheckMultiVersionAdditionalDecl(S, OldFD, NewFD, NewCPUDisp, in CheckMultiVersionFunction()
11767 static void CheckConstPureAttributesUsage(Sema &S, FunctionDecl *NewFD) { in CheckConstPureAttributesUsage() argument
11768 bool IsPure = NewFD->hasAttr<PureAttr>(); in CheckConstPureAttributesUsage()
11769 bool IsConst = NewFD->hasAttr<ConstAttr>(); in CheckConstPureAttributesUsage()
11780 S.Diag(NewFD->getLocation(), diag::warn_const_attr_with_pure_attr); in CheckConstPureAttributesUsage()
11781 NewFD->dropAttrs<PureAttr>(); in CheckConstPureAttributesUsage()
11786 if (NewFD->getReturnType()->isVoidType()) { in CheckConstPureAttributesUsage()
11787 S.Diag(NewFD->getLocation(), diag::warn_pure_function_returns_void) in CheckConstPureAttributesUsage()
11789 NewFD->dropAttrs<PureAttr, ConstAttr>(); in CheckConstPureAttributesUsage()
11793 bool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, in CheckFunctionDeclaration() argument
11797 assert(!NewFD->getReturnType()->isVariablyModifiedType() && in CheckFunctionDeclaration()
11817 if (!AllowOverloadingOfFunction(Previous, Context, NewFD)) { in CheckFunctionDeclaration()
11819 if (shouldLinkPossiblyHiddenDecl(Candidate, NewFD)) { in CheckFunctionDeclaration()
11825 switch (CheckOverload(S, NewFD, Previous, OldDecl, in CheckFunctionDeclaration()
11844 checkForConflictWithNonVisibleExternC(*this, NewFD, Previous)) { in CheckFunctionDeclaration()
11854 NewFD->hasAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
11855 if (IsOverload(NewFD, cast<FunctionDecl>(OldDecl), false)) { in CheckFunctionDeclaration()
11864 if (CheckMultiVersionFunction(*this, NewFD, Redeclaration, OldDecl, Previous)) in CheckFunctionDeclaration()
11869 PPC().CheckPPCMMAType(NewFD->getReturnType(), NewFD->getLocation())) { in CheckFunctionDeclaration()
11870 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11873 CheckConstPureAttributesUsage(*this, NewFD); in CheckFunctionDeclaration()
11895 (NewFD->isDependentContext() && in CheckFunctionDeclaration()
11896 NewFD->getReturnType()->isUndeducedType())) { in CheckFunctionDeclaration()
11898 NewFD->getType()->castAs<FunctionProtoType>(); in CheckFunctionDeclaration()
11900 NewFD->setType(Context.getFunctionType(NewReturnType, FPT->getParamTypes(), in CheckFunctionDeclaration()
11913 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in CheckFunctionDeclaration()
11945 if (MergeFunctionDecl(NewFD, OldDecl, S, MergeTypeWithPrevious, in CheckFunctionDeclaration()
11947 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
11958 = NewFD->getDescribedFunctionTemplate(); in CheckFunctionDeclaration()
11966 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
11967 if (NewFD->isCXXClassMember()) { in CheckFunctionDeclaration()
11968 NewFD->setAccess(OldTemplateDecl->getAccess()); in CheckFunctionDeclaration()
11989 if (shouldLinkDependentDeclWithPrevious(NewFD, OldDecl)) { in CheckFunctionDeclaration()
11992 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
11993 if (NewFD->isCXXClassMember()) in CheckFunctionDeclaration()
11994 NewFD->setAccess(OldFD->getAccess()); in CheckFunctionDeclaration()
11998 !NewFD->getAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
12012 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12018 NewFD->addAttr(OverloadableAttr::CreateImplicit(Context)); in CheckFunctionDeclaration()
12023 OpenMP().ActOnFinishedFunctionDefinitionInOpenMPAssumeScope(NewFD); in CheckFunctionDeclaration()
12029 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(NewFD)) { in CheckFunctionDeclaration()
12032 dyn_cast<CXXDestructorDecl>(NewFD)) { in CheckFunctionDeclaration()
12039 if (NewFD->getFriendObjectKind() == Decl::FriendObjectKind::FOK_None || in CheckFunctionDeclaration()
12046 if (NewFD->getDeclName() != Name) { in CheckFunctionDeclaration()
12047 Diag(NewFD->getLocation(), diag::err_destructor_name); in CheckFunctionDeclaration()
12048 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
12052 } else if (auto *Guide = dyn_cast<CXXDeductionGuideDecl>(NewFD)) { in CheckFunctionDeclaration()
12064 if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(NewFD)) { in CheckFunctionDeclaration()
12070 if (Method->isVirtual() && NewFD->getTrailingRequiresClause()) in CheckFunctionDeclaration()
12073 Diag(NewFD->getTrailingRequiresClause()->getBeginLoc(), in CheckFunctionDeclaration()
12080 if (CXXConversionDecl *Conversion = dyn_cast<CXXConversionDecl>(NewFD)) in CheckFunctionDeclaration()
12084 if (NewFD->isOverloadedOperator() && in CheckFunctionDeclaration()
12085 CheckOverloadedOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
12086 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
12091 if (NewFD->getLiteralIdentifier() && in CheckFunctionDeclaration()
12092 CheckLiteralOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
12093 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
12101 CheckCXXDefaultArguments(NewFD); in CheckFunctionDeclaration()
12107 if (Previous.empty() && NewFD->isExternC()) { in CheckFunctionDeclaration()
12108 QualType R = NewFD->getReturnType(); in CheckFunctionDeclaration()
12110 Diag(NewFD->getLocation(), diag::warn_return_value_udt_incomplete) in CheckFunctionDeclaration()
12111 << NewFD << R; in CheckFunctionDeclaration()
12114 Diag(NewFD->getLocation(), diag::warn_return_value_udt) << NewFD << R; in CheckFunctionDeclaration()
12126 if (!getLangOpts().CPlusPlus17 && !NewFD->getPrimaryTemplate()) { in CheckFunctionDeclaration()
12143 auto *FPT = NewFD->getType()->castAs<FunctionProtoType>(); in CheckFunctionDeclaration()
12148 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12150 << NewFD; in CheckFunctionDeclaration()
12154 CUDA().checkTargetOverload(NewFD, Previous); in CheckFunctionDeclaration()
12161 const auto *Attr = NewFD->getAttr<ArmNewAttr>(); in CheckFunctionDeclaration()
12162 bool UsesSM = NewFD->hasAttr<ArmLocallyStreamingAttr>(); in CheckFunctionDeclaration()
12166 if (NewFD->hasAttr<ArmLocallyStreamingAttr>()) { in CheckFunctionDeclaration()
12167 if (NewFD->getReturnType()->isSizelessVectorType()) in CheckFunctionDeclaration()
12168 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12171 if (llvm::any_of(NewFD->parameters(), [](ParmVarDecl *P) { in CheckFunctionDeclaration()
12174 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12178 if (const auto *FPT = NewFD->getType()->getAs<FunctionProtoType>()) { in CheckFunctionDeclaration()
12190 Context.getFunctionFeatureMap(FeatureMap, NewFD); in CheckFunctionDeclaration()
12193 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12196 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
12202 Context.getFunctionFeatureMap(FeatureMap, NewFD); in CheckFunctionDeclaration()
12204 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
18306 FieldDecl *NewFD in HandleField() local
18310 if (NewFD->isInvalidDecl()) in HandleField()
18314 NewFD->setModulePrivate(); in HandleField()
18316 if (NewFD->isInvalidDecl() && PrevDecl) { in HandleField()
18320 PushOnScopeChains(NewFD, S); in HandleField()
18322 Record->addDecl(NewFD); in HandleField()
18324 return NewFD; in HandleField()
18449 FieldDecl *NewFD = FieldDecl::Create(Context, Record, TSSL, Loc, II, T, TInfo, in CheckFieldDecl() local
18452 NewFD->setInvalidDecl(); in CheckFieldDecl()
18458 NewFD->setInvalidDecl(); in CheckFieldDecl()
18471 if (CheckNontrivialField(NewFD)) in CheckFieldDecl()
18472 NewFD->setInvalidDecl(); in CheckFieldDecl()
18480 Diag(NewFD->getLocation(), getLangOpts().MicrosoftExt ? in CheckFieldDecl()
18483 << NewFD->getDeclName() << EltTy; in CheckFieldDecl()
18485 NewFD->setInvalidDecl(); in CheckFieldDecl()
18494 ProcessDeclAttributes(getCurScope(), NewFD, *D); in CheckFieldDecl()
18496 if (NewFD->hasAttrs()) in CheckFieldDecl()
18497 CheckAlignasUnderalignment(NewFD); in CheckFieldDecl()
18502 if (getLangOpts().ObjCAutoRefCount && ObjC().inferObjCARCLifetime(NewFD)) in CheckFieldDecl()
18503 NewFD->setInvalidDecl(); in CheckFieldDecl()
18510 PPC().CheckPPCMMAType(T, NewFD->getLocation())) in CheckFieldDecl()
18511 NewFD->setInvalidDecl(); in CheckFieldDecl()
18513 NewFD->setAccess(AS); in CheckFieldDecl()
18514 return NewFD; in CheckFieldDecl()