Skip to content

Commit 2b72276

Browse files
committed
Simplify logic for pack size computing
1 parent 55f83d0 commit 2b72276

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

clang/lib/Sema/SemaTemplateDeduction.cpp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -859,12 +859,9 @@ class PackDeductionScope {
859859
Info.PendingDeducedPacks[Pack.Index] = Pack.Outer;
860860
}
861861

862-
std::optional<unsigned> getSavedPackSize(unsigned Index,
863-
TemplateArgument Pattern) const {
864-
865-
SmallVector<UnexpandedParameterPack, 2> Unexpanded;
866-
S.collectUnexpandedParameterPacks(Pattern, Unexpanded);
867-
if (Unexpanded.size() == 0 ||
862+
// Return the size of the saved packs if all of them has the same size.
863+
std::optional<unsigned> getSavedPackSizeIfAllEqual() const {
864+
if (Packs.size() == 0 ||
868865
Packs[0].Saved.getKind() != clang::TemplateArgument::Pack)
869866
return {};
870867
unsigned PackSize = Packs[0].Saved.pack_size();
@@ -4411,13 +4408,8 @@ Sema::TemplateDeductionResult Sema::DeduceTemplateArguments(
44114408
// that, in this case we are not processing all of the remaining
44124409
// arguments. We are only process as many arguments as much we have in
44134410
// the already deduced parameter.
4414-
SmallVector<UnexpandedParameterPack, 2> Unexpanded;
4415-
collectUnexpandedParameterPacks(ParamPattern, Unexpanded);
4416-
assert(Unexpanded.size() != 0 && "We must have an unexpanded pack\n");
4417-
44184411
std::optional<unsigned> ArgPosAfterSubstitution =
4419-
PackScope.getSavedPackSize(getDepthAndIndex(Unexpanded[0]).second,
4420-
ParamPattern);
4412+
PackScope.getSavedPackSizeIfAllEqual();
44214413
if (!ArgPosAfterSubstitution)
44224414
continue;
44234415

0 commit comments

Comments
 (0)