@@ -6864,8 +6864,7 @@ void Sema::AddOverloadCandidate(
68646864 OverloadCandidateSet &CandidateSet, bool SuppressUserConversions,
68656865 bool PartialOverloading, bool AllowExplicit, bool AllowExplicitConversions,
68666866 ADLCallKind IsADLCandidate, ConversionSequenceList EarlyConversions,
6867- OverloadCandidateParamOrder PO, bool AggregateCandidateDeduction,
6868- bool HasMatchedPackOnParmToNonPackOnArg) {
6867+ OverloadCandidateParamOrder PO, bool AggregateCandidateDeduction) {
68696868 const FunctionProtoType *Proto
68706869 = dyn_cast<FunctionProtoType>(Function->getType()->getAs<FunctionType>());
68716870 assert(Proto && "Functions without a prototype cannot be overloaded");
@@ -6884,8 +6883,7 @@ void Sema::AddOverloadCandidate(
68846883 AddMethodCandidate(Method, FoundDecl, Method->getParent(), QualType(),
68856884 Expr::Classification::makeSimpleLValue(), Args,
68866885 CandidateSet, SuppressUserConversions,
6887- PartialOverloading, EarlyConversions, PO,
6888- HasMatchedPackOnParmToNonPackOnArg);
6886+ PartialOverloading, EarlyConversions, PO);
68896887 return;
68906888 }
68916889 // We treat a constructor like a non-member function, since its object
@@ -6928,8 +6926,6 @@ void Sema::AddOverloadCandidate(
69286926 CandidateSet.getRewriteInfo().getRewriteKind(Function, PO);
69296927 Candidate.IsADLCandidate = IsADLCandidate;
69306928 Candidate.ExplicitCallArguments = Args.size();
6931- Candidate.HasMatchedPackOnParmToNonPackOnArg =
6932- HasMatchedPackOnParmToNonPackOnArg;
69336929
69346930 // Explicit functions are not actually candidates at all if we're not
69356931 // allowing them in this context, but keep them around so we can point
@@ -7457,13 +7453,16 @@ void Sema::AddMethodCandidate(DeclAccessPair FoundDecl, QualType ObjectType,
74577453 }
74587454}
74597455
7460- void Sema::AddMethodCandidate(
7461- CXXMethodDecl *Method, DeclAccessPair FoundDecl,
7462- CXXRecordDecl *ActingContext, QualType ObjectType,
7463- Expr::Classification ObjectClassification, ArrayRef<Expr *> Args,
7464- OverloadCandidateSet &CandidateSet, bool SuppressUserConversions,
7465- bool PartialOverloading, ConversionSequenceList EarlyConversions,
7466- OverloadCandidateParamOrder PO, bool HasMatchedPackOnParmToNonPackOnArg) {
7456+ void
7457+ Sema::AddMethodCandidate(CXXMethodDecl *Method, DeclAccessPair FoundDecl,
7458+ CXXRecordDecl *ActingContext, QualType ObjectType,
7459+ Expr::Classification ObjectClassification,
7460+ ArrayRef<Expr *> Args,
7461+ OverloadCandidateSet &CandidateSet,
7462+ bool SuppressUserConversions,
7463+ bool PartialOverloading,
7464+ ConversionSequenceList EarlyConversions,
7465+ OverloadCandidateParamOrder PO) {
74677466 const FunctionProtoType *Proto
74687467 = dyn_cast<FunctionProtoType>(Method->getType()->getAs<FunctionType>());
74697468 assert(Proto && "Methods without a prototype cannot be overloaded");
@@ -7494,8 +7493,6 @@ void Sema::AddMethodCandidate(
74947493 Candidate.TookAddressOfOverload =
74957494 CandidateSet.getKind() == OverloadCandidateSet::CSK_AddressOfOverloadSet;
74967495 Candidate.ExplicitCallArguments = Args.size();
7497- Candidate.HasMatchedPackOnParmToNonPackOnArg =
7498- HasMatchedPackOnParmToNonPackOnArg;
74997496
75007497 bool IgnoreExplicitObject =
75017498 (Method->isExplicitObjectMemberFunction() &&
@@ -7666,8 +7663,8 @@ void Sema::AddMethodTemplateCandidate(
76667663 ConversionSequenceList Conversions;
76677664 if (TemplateDeductionResult Result = DeduceTemplateArguments(
76687665 MethodTmpl, ExplicitTemplateArgs, Args, Specialization, Info,
7669- PartialOverloading, /*AggregateDeductionCandidate=*/false,
7670- /*PartialOrdering=*/false, ObjectType, ObjectClassification,
7666+ PartialOverloading, /*AggregateDeductionCandidate=*/false, ObjectType,
7667+ ObjectClassification,
76717668 [&](ArrayRef<QualType> ParamTypes) {
76727669 return CheckNonDependentConversions(
76737670 MethodTmpl, ParamTypes, Args, CandidateSet, Conversions,
@@ -7705,8 +7702,7 @@ void Sema::AddMethodTemplateCandidate(
77057702 AddMethodCandidate(cast<CXXMethodDecl>(Specialization), FoundDecl,
77067703 ActingContext, ObjectType, ObjectClassification, Args,
77077704 CandidateSet, SuppressUserConversions, PartialOverloading,
7708- Conversions, PO,
7709- Info.hasMatchedPackOnParmToNonPackOnArg());
7705+ Conversions, PO);
77107706}
77117707
77127708/// Determine whether a given function template has a simple explicit specifier
@@ -7752,7 +7748,6 @@ void Sema::AddTemplateOverloadCandidate(
77527748 if (TemplateDeductionResult Result = DeduceTemplateArguments(
77537749 FunctionTemplate, ExplicitTemplateArgs, Args, Specialization, Info,
77547750 PartialOverloading, AggregateCandidateDeduction,
7755- /*PartialOrdering=*/false,
77567751 /*ObjectType=*/QualType(),
77577752 /*ObjectClassification=*/Expr::Classification(),
77587753 [&](ArrayRef<QualType> ParamTypes) {
@@ -7793,8 +7788,7 @@ void Sema::AddTemplateOverloadCandidate(
77937788 Specialization, FoundDecl, Args, CandidateSet, SuppressUserConversions,
77947789 PartialOverloading, AllowExplicit,
77957790 /*AllowExplicitConversions=*/false, IsADLCandidate, Conversions, PO,
7796- Info.AggregateDeductionCandidateHasMismatchedArity,
7797- Info.hasMatchedPackOnParmToNonPackOnArg());
7791+ Info.AggregateDeductionCandidateHasMismatchedArity);
77987792}
77997793
78007794bool Sema::CheckNonDependentConversions(
@@ -7916,8 +7910,7 @@ void Sema::AddConversionCandidate(
79167910 CXXConversionDecl *Conversion, DeclAccessPair FoundDecl,
79177911 CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
79187912 OverloadCandidateSet &CandidateSet, bool AllowObjCConversionOnExplicit,
7919- bool AllowExplicit, bool AllowResultConversion,
7920- bool HasMatchedPackOnParmToNonPackOnArg) {
7913+ bool AllowExplicit, bool AllowResultConversion) {
79217914 assert(!Conversion->getDescribedFunctionTemplate() &&
79227915 "Conversion function templates use AddTemplateConversionCandidate");
79237916 QualType ConvType = Conversion->getConversionType().getNonReferenceType();
@@ -7962,8 +7955,6 @@ void Sema::AddConversionCandidate(
79627955 Candidate.FinalConversion.setAllToTypes(ToType);
79637956 Candidate.Viable = true;
79647957 Candidate.ExplicitCallArguments = 1;
7965- Candidate.HasMatchedPackOnParmToNonPackOnArg =
7966- HasMatchedPackOnParmToNonPackOnArg;
79677958
79687959 // Explicit functions are not actually candidates at all if we're not
79697960 // allowing them in this context, but keep them around so we can point
@@ -8165,8 +8156,7 @@ void Sema::AddTemplateConversionCandidate(
81658156 assert(Specialization && "Missing function template specialization?");
81668157 AddConversionCandidate(Specialization, FoundDecl, ActingDC, From, ToType,
81678158 CandidateSet, AllowObjCConversionOnExplicit,
8168- AllowExplicit, AllowResultConversion,
8169- Info.hasMatchedPackOnParmToNonPackOnArg());
8159+ AllowExplicit, AllowResultConversion);
81708160}
81718161
81728162void Sema::AddSurrogateCandidate(CXXConversionDecl *Conversion,
@@ -10519,10 +10509,6 @@ bool clang::isBetterOverloadCandidate(
1051910509 isa<CXXConstructorDecl>(Cand2.Function))
1052010510 return isa<CXXConstructorDecl>(Cand1.Function);
1052110511
10522- if (Cand1.HasMatchedPackOnParmToNonPackOnArg !=
10523- Cand2.HasMatchedPackOnParmToNonPackOnArg)
10524- return Cand2.HasMatchedPackOnParmToNonPackOnArg;
10525-
1052610512 // -- F1 is a non-template function and F2 is a function template
1052710513 // specialization, or, if not that,
1052810514 bool Cand1IsSpecialization = Cand1.Function &&
0 commit comments