Lines Matching refs:NewFD

7711     Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD,  in DiagnoseInvalidRedeclaration()  argument
7713 DeclarationName Name = NewFD->getDeclName(); in DiagnoseInvalidRedeclaration()
7714 DeclContext *NewDC = NewFD->getDeclContext(); in DiagnoseInvalidRedeclaration()
7721 NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : in DiagnoseInvalidRedeclaration()
7723 LookupResult Prev(SemaRef, Name, NewFD->getLocation(), in DiagnoseInvalidRedeclaration()
7728 NewFD->setInvalidDecl(); in DiagnoseInvalidRedeclaration()
7735 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in DiagnoseInvalidRedeclaration()
7741 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
7754 SemaRef.Context, NewFD, MD ? MD->getParent() : nullptr), in DiagnoseInvalidRedeclaration()
7766 hasSimilarParameters(SemaRef.Context, FD, NewFD, MismatchedParams)) { in DiagnoseInvalidRedeclaration()
7785 NewFD->getTypeSourceInfo(), Previous, ExtraArgs.TemplateParamLists, in DiagnoseInvalidRedeclaration()
7819 SemaRef.Diag(NewFD->getLocation(), DiagMsg) in DiagnoseInvalidRedeclaration()
7820 << Name << NewDC << IsDefinition << NewFD->getLocation(); in DiagnoseInvalidRedeclaration()
7823 if (CXXMethodDecl *NewMD = dyn_cast<CXXMethodDecl>(NewFD)) in DiagnoseInvalidRedeclaration()
7842 << NewFD->getParamDecl(Idx - 1)->getType(); in DiagnoseInvalidRedeclaration()
7898 FunctionDecl *NewFD = nullptr; in CreateNewFunctionDecl() local
7912 NewFD = FunctionDecl::Create(SemaRef.Context, DC, D.getBeginLoc(), NameInfo, in CreateNewFunctionDecl()
7915 NewFD->setInvalidDecl(); in CreateNewFunctionDecl()
7917 return NewFD; in CreateNewFunctionDecl()
8335 FunctionDecl *NewFD = CreateNewFunctionDecl(*this, D, DC, R, TInfo, SC, in ActOnFunctionDeclarator() local
8337 if (!NewFD) return nullptr; in ActOnFunctionDeclarator()
8340 NewFD->setTopLevelDeclInObjCContainer(); in ActOnFunctionDeclarator()
8345 NewFD->setLexicalDeclContext(CurContext); in ActOnFunctionDeclarator()
8348 NewFD->setLocalExternDecl(); in ActOnFunctionDeclarator()
8360 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
8367 dyn_cast<CXXRecordDecl>(NewFD->getDeclContext())) { in ActOnFunctionDeclarator()
8368 if (Parent->isInterface() && cast<CXXMethodDecl>(NewFD)->isUserProvided()) in ActOnFunctionDeclarator()
8369 NewFD->setPure(true); in ActOnFunctionDeclarator()
8377 SetNestedNameSpecifier(*this, NewFD, D); in ActOnFunctionDeclarator()
8381 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8400 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8404 Diag(NewFD->getLocation(), diag::err_destructor_template); in ActOnFunctionDeclarator()
8405 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8418 NewFD->getLocation(), in ActOnFunctionDeclarator()
8420 NewFD); in ActOnFunctionDeclarator()
8422 NewFD->setDescribedFunctionTemplate(FunctionTemplate); in ActOnFunctionDeclarator()
8426 NewFD->setTemplateParameterListsInfo(Context, in ActOnFunctionDeclarator()
8434 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
8463 NewFD->setTemplateParameterListsInfo(Context, TemplateParamLists); in ActOnFunctionDeclarator()
8467 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8477 if (isVirtual && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
8486 } else if (NewFD->getDescribedFunctionTemplate()) { in ActOnFunctionDeclarator()
8494 NewFD->setVirtualAsWritten(true); in ActOnFunctionDeclarator()
8498 NewFD->getReturnType()->isUndeducedType()) in ActOnFunctionDeclarator()
8503 (NewFD->isDependentContext() || in ActOnFunctionDeclarator()
8505 NewFD->getReturnType()->isUndeducedType()) { in ActOnFunctionDeclarator()
8513 NewFD->getType()->castAs<FunctionProtoType>(); in ActOnFunctionDeclarator()
8516 NewFD->setType(Context.getFunctionType(Result, FPT->getParamTypes(), in ActOnFunctionDeclarator()
8523 if (isInline && !NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
8536 if (isExplicit && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
8537 !isa<CXXDeductionGuideDecl>(NewFD)) { in ActOnFunctionDeclarator()
8543 } else if (!isa<CXXConstructorDecl>(NewFD) && in ActOnFunctionDeclarator()
8544 !isa<CXXConversionDecl>(NewFD)) { in ActOnFunctionDeclarator()
8556 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
8561 if (isa<CXXDestructorDecl>(NewFD)) in ActOnFunctionDeclarator()
8574 NewFD->setModulePrivate(); in ActOnFunctionDeclarator()
8585 NewFD->setObjectOfFriendDecl(); in ActOnFunctionDeclarator()
8586 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
8598 NewFD->setDefaulted(); in ActOnFunctionDeclarator()
8602 NewFD->setDeletedAsWritten(); in ActOnFunctionDeclarator()
8606 if (isa<CXXMethodDecl>(NewFD) && DC == CurContext && in ActOnFunctionDeclarator()
8611 NewFD->setImplicitlyInline(); in ActOnFunctionDeclarator()
8614 if (SC == SC_Static && isa<CXXMethodDecl>(NewFD) && in ActOnFunctionDeclarator()
8635 NewFD->setType(Context.getFunctionType( in ActOnFunctionDeclarator()
8641 FilterLookupForScope(Previous, OriginalDC, S, shouldConsiderLinkage(NewFD), in ActOnFunctionDeclarator()
8650 NewFD->addAttr(::new (Context) AsmLabelAttr(SE->getStrTokenLoc(0), Context, in ActOnFunctionDeclarator()
8654 ExtnameUndeclaredIdentifiers.find(NewFD->getIdentifier()); in ActOnFunctionDeclarator()
8656 if (isDeclExternC(NewFD)) { in ActOnFunctionDeclarator()
8657 NewFD->addAttr(I->second); in ActOnFunctionDeclarator()
8660 Diag(NewFD->getLocation(), diag::warn_redefine_extname_not_applied) in ActOnFunctionDeclarator()
8661 << /*Variable*/0 << NewFD; in ActOnFunctionDeclarator()
8680 assert(Param->getDeclContext() != NewFD && "Was set before ?"); in ActOnFunctionDeclarator()
8681 Param->setDeclContext(NewFD); in ActOnFunctionDeclarator()
8685 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8695 getTagInjectionContext(NewFD->getLexicalDeclContext()); in ActOnFunctionDeclarator()
8711 TD->setDeclContext(NewFD); in ActOnFunctionDeclarator()
8712 NewFD->addDecl(TD); in ActOnFunctionDeclarator()
8736 BuildParmVarDeclForTypedef(NewFD, D.getIdentifierLoc(), AI); in ActOnFunctionDeclarator()
8741 assert(R->isFunctionNoProtoType() && NewFD->getNumParams() == 0 && in ActOnFunctionDeclarator()
8746 NewFD->setParams(Params); in ActOnFunctionDeclarator()
8749 NewFD->addAttr( in ActOnFunctionDeclarator()
8755 if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
8756 NewFD->getReturnType()->isVariablyModifiedType()) { in ActOnFunctionDeclarator()
8757 Diag(NewFD->getLocation(), diag::err_vm_func_decl); in ActOnFunctionDeclarator()
8758 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8763 !NewFD->hasAttr<SectionAttr>()) { in ActOnFunctionDeclarator()
8764 NewFD->addAttr(PragmaClangTextSectionAttr::CreateImplicit(Context, in ActOnFunctionDeclarator()
8771 !NewFD->hasAttr<SectionAttr>()) { in ActOnFunctionDeclarator()
8772 NewFD->addAttr( in ActOnFunctionDeclarator()
8779 NewFD)) in ActOnFunctionDeclarator()
8780 NewFD->dropAttr<SectionAttr>(); in ActOnFunctionDeclarator()
8785 if (!NewFD->hasAttr<CodeSegAttr>()) { in ActOnFunctionDeclarator()
8786 if (Attr *SAttr = getImplicitCodeSegOrSectionAttrForFunction(NewFD, in ActOnFunctionDeclarator()
8788 NewFD->addAttr(SAttr); in ActOnFunctionDeclarator()
8793 ProcessDeclAttributes(S, NewFD, D); in ActOnFunctionDeclarator()
8798 LangAS AddressSpace = NewFD->getReturnType().getAddressSpace(); in ActOnFunctionDeclarator()
8800 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
8802 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8808 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
8809 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
8811 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
8812 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
8814 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
8815 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
8820 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
8827 const FunctionType *FT = NewFD->getType()->castAs<FunctionType>(); in ActOnFunctionDeclarator()
8835 Diag(NewFD->getLocation(), DiagID) in ActOnFunctionDeclarator()
8848 NewFD->isReplaceableGlobalAllocationFunction() && in ActOnFunctionDeclarator()
8849 !NewFD->hasAttr<UsedAttr>()) in ActOnFunctionDeclarator()
8852 << NewFD->getDeclName(); in ActOnFunctionDeclarator()
8867 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
8901 maybeAddCUDAHostDeviceAttrs(NewFD, Previous); in ActOnFunctionDeclarator()
8909 (NewFD->getType()->isDependentType() || DC->isDependentContext() || in ActOnFunctionDeclarator()
8915 if (CheckDependentFunctionTemplateSpecialization(NewFD, TemplateArgs, in ActOnFunctionDeclarator()
8917 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8922 } else if (!NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
8924 NewFD, (HasExplicitTemplateArgs ? &TemplateArgs : nullptr), in ActOnFunctionDeclarator()
8926 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8932 NewFD->getTemplateSpecializationInfo(); in ActOnFunctionDeclarator()
8935 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
8942 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
8947 } else if (isMemberSpecialization && isa<CXXMethodDecl>(NewFD)) { in ActOnFunctionDeclarator()
8948 if (CheckMemberSpecialization(NewFD, Previous)) in ActOnFunctionDeclarator()
8949 NewFD->setInvalidDecl(); in ActOnFunctionDeclarator()
8954 if (!NewFD->isInvalidDecl() && NewFD->isMain()) in ActOnFunctionDeclarator()
8955 CheckMain(NewFD, D.getDeclSpec()); in ActOnFunctionDeclarator()
8957 if (!NewFD->isInvalidDecl() && NewFD->isMSVCRTEntryPoint()) in ActOnFunctionDeclarator()
8958 CheckMSVCRTEntryPoint(NewFD); in ActOnFunctionDeclarator()
8960 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
8961 D.setRedeclaration(CheckFunctionDeclaration(S, NewFD, Previous, in ActOnFunctionDeclarator()
8968 assert((NewFD->isInvalidDecl() || !D.isRedeclaration() || in ActOnFunctionDeclarator()
8974 : NewFD); in ActOnFunctionDeclarator()
8976 if (isFriend && NewFD->getPreviousDecl()) { in ActOnFunctionDeclarator()
8978 if (!NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
8979 Access = NewFD->getPreviousDecl()->getAccess(); in ActOnFunctionDeclarator()
8981 NewFD->setAccess(Access); in ActOnFunctionDeclarator()
8985 if (NewFD->isOverloadedOperator() && !DC->isRecord() && in ActOnFunctionDeclarator()
9008 if (NewFD->isInvalidDecl()) { in ActOnFunctionDeclarator()
9014 if (isa<CXXRecordDecl>(NewFD->getDeclContext())) in ActOnFunctionDeclarator()
9015 NewFD->setAccess(AS_public); in ActOnFunctionDeclarator()
9054 *this, Previous, NewFD, ExtraArgs, false, nullptr)) { in ActOnFunctionDeclarator()
9064 *this, Previous, NewFD, ExtraArgs, true, S)) { in ActOnFunctionDeclarator()
9070 isa<CXXMethodDecl>(NewFD) && NewFD->isOutOfLine() && in ActOnFunctionDeclarator()
9080 Diag(NewFD->getLocation(), diag::ext_out_of_line_declaration) in ActOnFunctionDeclarator()
9085 ProcessPragmaWeak(S, NewFD); in ActOnFunctionDeclarator()
9086 checkAttributesAfterMerging(*this, *NewFD); in ActOnFunctionDeclarator()
9088 AddKnownFunctionAttributes(NewFD); in ActOnFunctionDeclarator()
9090 if (NewFD->hasAttr<OverloadableAttr>() && in ActOnFunctionDeclarator()
9091 !NewFD->getType()->getAs<FunctionProtoType>()) { in ActOnFunctionDeclarator()
9092 Diag(NewFD->getLocation(), in ActOnFunctionDeclarator()
9094 << NewFD; in ActOnFunctionDeclarator()
9097 const FunctionType *FT = NewFD->getType()->getAs<FunctionType>(); in ActOnFunctionDeclarator()
9104 NewFD->setType(R); in ActOnFunctionDeclarator()
9109 if (!DC->isRecord() && NewFD->isExternallyVisible()) in ActOnFunctionDeclarator()
9110 AddPushedVisibilityAttribute(NewFD); in ActOnFunctionDeclarator()
9114 AddCFAuditedAttribute(NewFD); in ActOnFunctionDeclarator()
9119 AddRangeBasedOptnone(NewFD); in ActOnFunctionDeclarator()
9123 if (NewFD->isFirstDecl() && !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9124 isIncompleteDeclExternC(*this, NewFD)) in ActOnFunctionDeclarator()
9125 RegisterLocallyScopedExternCDecl(NewFD, S); in ActOnFunctionDeclarator()
9128 NewFD->setRangeEnd(D.getSourceRange().getEnd()); in ActOnFunctionDeclarator()
9132 checkDLLAttributeRedeclaration(*this, Prev, NewFD, in ActOnFunctionDeclarator()
9139 IdentifierInfo *II = NewFD->getIdentifier(); in ActOnFunctionDeclarator()
9143 !NewFD->isInvalidDecl() && in ActOnFunctionDeclarator()
9144 NewFD->getDeclContext()->getRedeclContext()->isTranslationUnit()) { in ActOnFunctionDeclarator()
9146 Diag(NewFD->getLocation(), diag::err_config_scalar_return); in ActOnFunctionDeclarator()
9147 Context.setcudaConfigureCallDecl(NewFD); in ActOnFunctionDeclarator()
9153 if (!getLangOpts().CUDAAllowVariadicFunctions && NewFD->isVariadic() && in ActOnFunctionDeclarator()
9154 (NewFD->hasAttr<CUDADeviceAttr>() || in ActOnFunctionDeclarator()
9155 NewFD->hasAttr<CUDAGlobalAttr>()) && in ActOnFunctionDeclarator()
9156 !(II && II->isStr("printf") && NewFD->isExternC() && in ActOnFunctionDeclarator()
9158 Diag(NewFD->getLocation(), diag::err_variadic_device_fn); in ActOnFunctionDeclarator()
9162 MarkUnusedFileScopedDecl(NewFD); in ActOnFunctionDeclarator()
9166 if (NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9171 if (isMemberSpecialization && !NewFD->isInvalidDecl()) in ActOnFunctionDeclarator()
9172 CompleteMemberSpecialization(NewFD, Previous); in ActOnFunctionDeclarator()
9175 if (NewFD->hasAttr<OpenCLKernelAttr>()) { in ActOnFunctionDeclarator()
9184 if (!NewFD->getReturnType()->isVoidType()) { in ActOnFunctionDeclarator()
9185 SourceRange RTRange = NewFD->getReturnTypeSourceRange(); in ActOnFunctionDeclarator()
9193 for (auto Param : NewFD->parameters()) in ActOnFunctionDeclarator()
9196 for (const ParmVarDecl *Param : NewFD->parameters()) { in ActOnFunctionDeclarator()
9218 Context, CurContext, NewFD->getLocation(), in ActOnFunctionDeclarator()
9219 cast<CXXMethodDecl>(NewFD), in ActOnFunctionDeclarator()
9227 if (const auto *attr = NewFD->getAttr<AvailabilityAttr>()) { in ActOnFunctionDeclarator()
9228 if (NewFD->hasAttr<ConstructorAttr>()) { in ActOnFunctionDeclarator()
9231 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
9233 if (NewFD->hasAttr<DestructorAttr>()) { in ActOnFunctionDeclarator()
9236 NewFD->dropAttr<AvailabilityAttr>(); in ActOnFunctionDeclarator()
9240 return NewFD; in ActOnFunctionDeclarator()
9428 const FunctionDecl *NewFD, in CheckMultiVersionAdditionalRules() argument
9456 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckMultiVersionAdditionalRules()
9460 if (!NewFD->getType()->getAs<FunctionProtoType>()) in CheckMultiVersionAdditionalRules()
9461 return S.Diag(NewFD->getLocation(), diag::err_multiversion_noproto); in CheckMultiVersionAdditionalRules()
9464 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported); in CheckMultiVersionAdditionalRules()
9475 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckMultiVersionAdditionalRules()
9479 if (HasNonMultiVersionAttributes(NewFD, MVType)) in CheckMultiVersionAdditionalRules()
9480 return S.Diag(NewFD->getLocation(), diag::err_multiversion_no_other_attrs) in CheckMultiVersionAdditionalRules()
9483 if (NewFD->getTemplatedKind() == FunctionDecl::TK_FunctionTemplate) in CheckMultiVersionAdditionalRules()
9484 return S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) in CheckMultiVersionAdditionalRules()
9487 if (const auto *NewCXXFD = dyn_cast<CXXMethodDecl>(NewFD)) { in CheckMultiVersionAdditionalRules()
9493 if (const auto *NewCXXCtor = dyn_cast<CXXConstructorDecl>(NewFD)) in CheckMultiVersionAdditionalRules()
9498 if (const auto *NewCXXDtor = dyn_cast<CXXDestructorDecl>(NewFD)) in CheckMultiVersionAdditionalRules()
9504 if (NewFD->isDeleted()) in CheckMultiVersionAdditionalRules()
9505 return S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) in CheckMultiVersionAdditionalRules()
9508 if (NewFD->isDefaulted()) in CheckMultiVersionAdditionalRules()
9509 return S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) in CheckMultiVersionAdditionalRules()
9512 if (NewFD->isConstexpr() && (MVType == MultiVersionKind::CPUDispatch || in CheckMultiVersionAdditionalRules()
9514 return S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) in CheckMultiVersionAdditionalRules()
9517 QualType NewQType = S.getASTContext().getCanonicalType(NewFD->getType()); in CheckMultiVersionAdditionalRules()
9522 return S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) in CheckMultiVersionAdditionalRules()
9527 return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); in CheckMultiVersionAdditionalRules()
9537 return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) in CheckMultiVersionAdditionalRules()
9543 return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) in CheckMultiVersionAdditionalRules()
9546 if (OldFD->isConstexpr() != NewFD->isConstexpr()) in CheckMultiVersionAdditionalRules()
9547 return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) in CheckMultiVersionAdditionalRules()
9550 if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) in CheckMultiVersionAdditionalRules()
9551 return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) in CheckMultiVersionAdditionalRules()
9554 if (OldFD->getStorageClass() != NewFD->getStorageClass()) in CheckMultiVersionAdditionalRules()
9555 return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) in CheckMultiVersionAdditionalRules()
9558 if (OldFD->isExternC() != NewFD->isExternC()) in CheckMultiVersionAdditionalRules()
9559 return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) in CheckMultiVersionAdditionalRules()
9564 NewFD->getType()->getAs<FunctionProtoType>(), NewFD->getLocation())) in CheckMultiVersionAdditionalRules()
9613 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, const TargetAttr *NewTA, in CheckTargetCausesMultiVersioning() argument
9629 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported); in CheckTargetCausesMultiVersioning()
9631 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
9635 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, true, in CheckTargetCausesMultiVersioning()
9637 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
9641 if (CheckMultiVersionValue(S, NewFD)) { in CheckTargetCausesMultiVersioning()
9642 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
9651 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
9656 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
9657 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
9665 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckTargetCausesMultiVersioning()
9667 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
9679 S.Diag(NewFD->getLocation(), diag::note_multiversioning_caused_here); in CheckTargetCausesMultiVersioning()
9680 NewFD->setInvalidDecl(); in CheckTargetCausesMultiVersioning()
9686 NewFD->setIsMultiVersion(); in CheckTargetCausesMultiVersioning()
9697 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, in CheckMultiVersionAdditionalDecl() argument
9709 S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed); in CheckMultiVersionAdditionalDecl()
9711 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
9722 S.CurContext->isRecord() && !NewFD->getFriendObjectKind(); in CheckMultiVersionAdditionalDecl()
9730 if (S.IsOverload(NewFD, CurFD, UseMemberUsingDeclRules)) in CheckMultiVersionAdditionalDecl()
9736 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
9745 S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate); in CheckMultiVersionAdditionalDecl()
9747 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
9765 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
9772 S.Diag(NewFD->getLocation(), diag::err_cpu_dispatch_mismatch); in CheckMultiVersionAdditionalDecl()
9774 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
9786 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
9796 S.Diag(NewFD->getLocation(), diag::err_cpu_specific_multiple_defs) in CheckMultiVersionAdditionalDecl()
9799 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
9814 CheckMultiVersionValue(S, NewFD)) { in CheckMultiVersionAdditionalDecl()
9815 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
9819 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, in CheckMultiVersionAdditionalDecl()
9821 NewFD->setInvalidDecl(); in CheckMultiVersionAdditionalDecl()
9828 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
9834 NewFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
9849 static bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, in CheckMultiVersionFunction() argument
9853 const auto *NewTA = NewFD->getAttr<TargetAttr>(); in CheckMultiVersionFunction()
9854 const auto *NewCPUDisp = NewFD->getAttr<CPUDispatchAttr>(); in CheckMultiVersionFunction()
9855 const auto *NewCPUSpec = NewFD->getAttr<CPUSpecificAttr>(); in CheckMultiVersionFunction()
9860 S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed); in CheckMultiVersionFunction()
9861 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
9865 MultiVersionKind MVType = NewFD->getMultiVersionKind(); in CheckMultiVersionFunction()
9869 if (NewFD->isMain()) { in CheckMultiVersionFunction()
9873 S.Diag(NewFD->getLocation(), diag::err_multiversion_not_allowed_on_main); in CheckMultiVersionFunction()
9874 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
9882 NewFD->getDeclContext()->getRedeclContext()) { in CheckMultiVersionFunction()
9887 return CheckMultiVersionFirstFunction(S, NewFD, MVType, NewTA, NewCPUDisp, in CheckMultiVersionFunction()
9897 S.Diag(NewFD->getLocation(), diag::err_multiversion_required_in_redecl) in CheckMultiVersionFunction()
9899 NewFD->setInvalidDecl(); in CheckMultiVersionFunction()
9905 return CheckTargetCausesMultiVersioning(S, OldFD, NewFD, NewTA, in CheckMultiVersionFunction()
9913 S, OldFD, NewFD, MVType, NewTA, NewCPUDisp, NewCPUSpec, Redeclaration, in CheckMultiVersionFunction()
9934 bool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, in CheckFunctionDeclaration() argument
9937 assert(!NewFD->getReturnType()->isVariablyModifiedType() && in CheckFunctionDeclaration()
9957 if (!AllowOverloadingOfFunction(Previous, Context, NewFD)) { in CheckFunctionDeclaration()
9959 if (shouldLinkPossiblyHiddenDecl(Candidate, NewFD)) { in CheckFunctionDeclaration()
9965 switch (CheckOverload(S, NewFD, Previous, OldDecl, in CheckFunctionDeclaration()
9984 checkForConflictWithNonVisibleExternC(*this, NewFD, Previous)) { in CheckFunctionDeclaration()
9994 NewFD->hasAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
9995 if (IsOverload(NewFD, cast<FunctionDecl>(OldDecl), false)) { in CheckFunctionDeclaration()
10004 if (CheckMultiVersionFunction(*this, NewFD, Redeclaration, OldDecl, in CheckFunctionDeclaration()
10017 CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD); in CheckFunctionDeclaration()
10049 if (MergeFunctionDecl(NewFD, OldDecl, S, MergeTypeWithPrevious)) { in CheckFunctionDeclaration()
10050 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
10061 = NewFD->getDescribedFunctionTemplate(); in CheckFunctionDeclaration()
10069 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
10070 adjustDeclContextForDeclaratorDecl(NewFD, OldFD); in CheckFunctionDeclaration()
10071 if (NewFD->isCXXClassMember()) { in CheckFunctionDeclaration()
10072 NewFD->setAccess(OldTemplateDecl->getAccess()); in CheckFunctionDeclaration()
10093 if (shouldLinkDependentDeclWithPrevious(NewFD, OldDecl)) { in CheckFunctionDeclaration()
10096 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
10097 adjustDeclContextForDeclaratorDecl(NewFD, OldFD); in CheckFunctionDeclaration()
10098 if (NewFD->isCXXClassMember()) in CheckFunctionDeclaration()
10099 NewFD->setAccess(OldFD->getAccess()); in CheckFunctionDeclaration()
10103 !NewFD->getAttr<OverloadableAttr>()) { in CheckFunctionDeclaration()
10117 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
10123 NewFD->addAttr(OverloadableAttr::CreateImplicit(Context)); in CheckFunctionDeclaration()
10131 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(NewFD)) { in CheckFunctionDeclaration()
10134 dyn_cast<CXXDestructorDecl>(NewFD)) { in CheckFunctionDeclaration()
10144 if (NewFD->getDeclName() != Name) { in CheckFunctionDeclaration()
10145 Diag(NewFD->getLocation(), diag::err_destructor_name); in CheckFunctionDeclaration()
10146 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
10151 = dyn_cast<CXXConversionDecl>(NewFD)) { in CheckFunctionDeclaration()
10153 } else if (auto *Guide = dyn_cast<CXXDeductionGuideDecl>(NewFD)) { in CheckFunctionDeclaration()
10165 if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(NewFD)) { in CheckFunctionDeclaration()
10171 if (NewFD->getStorageClass() == SC_Static) { in CheckFunctionDeclaration()
10182 if (NewFD->isOverloadedOperator() && in CheckFunctionDeclaration()
10183 CheckOverloadedOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
10184 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
10189 if (NewFD->getLiteralIdentifier() && in CheckFunctionDeclaration()
10190 CheckLiteralOperatorDeclaration(NewFD)) { in CheckFunctionDeclaration()
10191 NewFD->setInvalidDecl(); in CheckFunctionDeclaration()
10199 CheckCXXDefaultArguments(NewFD); in CheckFunctionDeclaration()
10203 if (unsigned BuiltinID = NewFD->getBuiltinID()) { in CheckFunctionDeclaration()
10205 LookupPredefedObjCSuperType(*this, S, NewFD->getIdentifier()); in CheckFunctionDeclaration()
10213 NewFD->getType())) in CheckFunctionDeclaration()
10223 if (Previous.empty() && NewFD->isExternC()) { in CheckFunctionDeclaration()
10224 QualType R = NewFD->getReturnType(); in CheckFunctionDeclaration()
10226 Diag(NewFD->getLocation(), diag::warn_return_value_udt_incomplete) in CheckFunctionDeclaration()
10227 << NewFD << R; in CheckFunctionDeclaration()
10230 Diag(NewFD->getLocation(), diag::warn_return_value_udt) << NewFD << R; in CheckFunctionDeclaration()
10242 if (!getLangOpts().CPlusPlus17 && !NewFD->getPrimaryTemplate()) { in CheckFunctionDeclaration()
10259 auto *FPT = NewFD->getType()->castAs<FunctionProtoType>(); in CheckFunctionDeclaration()
10264 Diag(NewFD->getLocation(), in CheckFunctionDeclaration()
10266 << NewFD; in CheckFunctionDeclaration()
10270 checkCUDATargetOverload(NewFD, Previous); in CheckFunctionDeclaration()
15266 FieldDecl *NewFD in HandleField() local
15270 if (NewFD->isInvalidDecl()) in HandleField()
15274 NewFD->setModulePrivate(); in HandleField()
15276 if (NewFD->isInvalidDecl() && PrevDecl) { in HandleField()
15280 PushOnScopeChains(NewFD, S); in HandleField()
15282 Record->addDecl(NewFD); in HandleField()
15284 return NewFD; in HandleField()
15436 FieldDecl *NewFD = FieldDecl::Create(Context, Record, TSSL, Loc, II, T, TInfo, in CheckFieldDecl() local
15439 NewFD->setInvalidDecl(); in CheckFieldDecl()
15444 NewFD->setInvalidDecl(); in CheckFieldDecl()
15457 if (CheckNontrivialField(NewFD)) in CheckFieldDecl()
15458 NewFD->setInvalidDecl(); in CheckFieldDecl()
15466 Diag(NewFD->getLocation(), getLangOpts().MicrosoftExt ? in CheckFieldDecl()
15469 << NewFD->getDeclName() << EltTy; in CheckFieldDecl()
15471 NewFD->setInvalidDecl(); in CheckFieldDecl()
15480 ProcessDeclAttributes(getCurScope(), NewFD, *D); in CheckFieldDecl()
15482 if (NewFD->hasAttrs()) in CheckFieldDecl()
15483 CheckAlignasUnderalignment(NewFD); in CheckFieldDecl()
15488 if (getLangOpts().ObjCAutoRefCount && inferObjCARCLifetime(NewFD)) in CheckFieldDecl()
15489 NewFD->setInvalidDecl(); in CheckFieldDecl()
15494 NewFD->setAccess(AS); in CheckFieldDecl()
15495 return NewFD; in CheckFieldDecl()