Lines Matching defs:OldFD

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