Lines Matching refs:OldFD
11073 const FunctionDecl *OldFD, const FunctionDecl *NewFD, in areMultiversionVariantFunctionsCompatible() argument
11100 if (NoProtoDiagID.getDiagID() != 0 && OldFD && in areMultiversionVariantFunctionsCompatible()
11101 !OldFD->getType()->getAs<FunctionProtoType>()) { in areMultiversionVariantFunctionsCompatible()
11102 Diag(OldFD->getLocation(), NoProtoDiagID); in areMultiversionVariantFunctionsCompatible()
11151 if (OldFD) { in areMultiversionVariantFunctionsCompatible()
11152 QualType OldQType = Context.getCanonicalType(OldFD->getType()); in areMultiversionVariantFunctionsCompatible()
11157 const auto *OldFPT = OldFD->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()
11191 if (CheckEquivalentExceptionSpec(OldFPT, OldFD->getLocation(), NewFPT, in areMultiversionVariantFunctionsCompatible()
11198 static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, in CheckMultiVersionAdditionalRules() argument
11204 if (OldFD) in CheckMultiVersionAdditionalRules()
11205 S.Diag(OldFD->getLocation(), diag::note_previous_declaration); in CheckMultiVersionAdditionalRules()
11213 if (CausesMV && OldFD && in CheckMultiVersionAdditionalRules()
11214 checkNonMultiVersionCompatAttributes(S, OldFD, NewFD, MVKind)) in CheckMultiVersionAdditionalRules()
11221 if (OldFD && CausesMV && OldFD->isUsed(false)) in CheckMultiVersionAdditionalRules()
11225 OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), in CheckMultiVersionAdditionalRules()
11296 static bool CheckDeclarationCausesMultiVersioning(Sema &S, FunctionDecl *OldFD, in CheckDeclarationCausesMultiVersioning() argument
11301 assert(!OldFD->isMultiVersion() && "Unexpected MultiVersion"); in CheckDeclarationCausesMultiVersioning()
11306 patchDefaultTargetVersion(NewFD, OldFD); in CheckDeclarationCausesMultiVersioning()
11310 const auto *OldTA = OldFD->getAttr<TargetAttr>(); in CheckDeclarationCausesMultiVersioning()
11324 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, true, in CheckDeclarationCausesMultiVersioning()
11339 OldDecl = OldFD; in CheckDeclarationCausesMultiVersioning()
11340 OldFD->setIsMultiVersion(); in CheckDeclarationCausesMultiVersioning()
11345 if (CheckMultiVersionValue(S, OldFD)) { in CheckDeclarationCausesMultiVersioning()
11363 S.Diag(OldFD->getLocation(), diag::note_previous_declaration); in CheckDeclarationCausesMultiVersioning()
11369 for (const auto *FD : OldFD->redecls()) { in CheckDeclarationCausesMultiVersioning()
11385 OldFD->setIsMultiVersion(); in CheckDeclarationCausesMultiVersioning()
11425 Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, in CheckMultiVersionAdditionalDecl() argument
11431 if (!MultiVersionTypesCompatible(OldFD, NewFD)) { in CheckMultiVersionAdditionalDecl()
11433 S.Diag(OldFD->getLocation(), diag::note_previous_declaration); in CheckMultiVersionAdditionalDecl()
11439 patchDefaultTargetVersion(OldFD, NewFD); in CheckMultiVersionAdditionalDecl()
11440 patchDefaultTargetVersion(NewFD, OldFD); in CheckMultiVersionAdditionalDecl()
11445 [[maybe_unused]] MultiVersionKind OldMVKind = OldFD->getMultiVersionKind(); in CheckMultiVersionAdditionalDecl()
11649 if (CheckMultiVersionAdditionalRules(S, OldFD, NewFD, in CheckMultiVersionAdditionalDecl()
11650 !OldFD->isMultiVersion(), NewMVKind)) { in CheckMultiVersionAdditionalDecl()
11656 if (!OldFD->isMultiVersion()) { in CheckMultiVersionAdditionalDecl()
11657 OldFD->setIsMultiVersion(); in CheckMultiVersionAdditionalDecl()
11660 OldDecl = OldFD; in CheckMultiVersionAdditionalDecl()
11722 FunctionDecl *OldFD = OldDecl->getAsFunction(); in CheckMultiVersionFunction() local
11724 if (!OldFD->isMultiVersion() && MVKind == MultiVersionKind::None) in CheckMultiVersionFunction()
11729 if (OldFD->isMultiVersion() && MVKind == MultiVersionKind::None && in CheckMultiVersionFunction()
11730 OldFD->getMultiVersionKind() != MultiVersionKind::TargetClones && in CheckMultiVersionFunction()
11731 OldFD->getMultiVersionKind() != MultiVersionKind::TargetVersion) { in CheckMultiVersionFunction()
11733 << (OldFD->getMultiVersionKind() != MultiVersionKind::Target); in CheckMultiVersionFunction()
11738 if (!OldFD->isMultiVersion()) { in CheckMultiVersionFunction()
11743 S, OldFD, NewFD, Redeclaration, OldDecl, Previous); in CheckMultiVersionFunction()
11745 if (OldFD->isUsed(false)) { in CheckMultiVersionFunction()
11749 OldFD->setIsMultiVersion(); in CheckMultiVersionFunction()
11762 return CheckMultiVersionAdditionalDecl(S, OldFD, NewFD, NewCPUDisp, in CheckMultiVersionFunction()
11956 auto *OldFD = OldTemplateDecl->getTemplatedDecl(); in CheckFunctionDeclaration() local
11966 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
11980 if (OldFD->isDeleted()) { in CheckFunctionDeclaration()
11982 assert(OldFD->getCanonicalDecl() == OldFD); in CheckFunctionDeclaration()
11984 OldFD->setDeletedAsWritten(false); in CheckFunctionDeclaration()
11990 auto *OldFD = cast<FunctionDecl>(OldDecl); in CheckFunctionDeclaration() local
11992 NewFD->setPreviousDeclaration(OldFD); in CheckFunctionDeclaration()
11994 NewFD->setAccess(OldFD->getAccess()); in CheckFunctionDeclaration()