Skip to content

Commit 1d2f727

Browse files
[clang][Sema] Improve collectViableConversionCandidates (#97908)
* Use range-based for * The value of `Conv` is not used when `ConvTemplate` is not null, so we do not need to compute it on that path
1 parent 82034ac commit 1d2f727

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

clang/lib/Sema/SemaOverload.cpp

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6567,29 +6567,22 @@ static void
65676567
collectViableConversionCandidates(Sema &SemaRef, Expr *From, QualType ToType,
65686568
UnresolvedSetImpl &ViableConversions,
65696569
OverloadCandidateSet &CandidateSet) {
6570-
for (unsigned I = 0, N = ViableConversions.size(); I != N; ++I) {
6571-
DeclAccessPair FoundDecl = ViableConversions[I];
6570+
for (const DeclAccessPair &FoundDecl : ViableConversions.pairs()) {
65726571
NamedDecl *D = FoundDecl.getDecl();
65736572
CXXRecordDecl *ActingContext = cast<CXXRecordDecl>(D->getDeclContext());
65746573
if (isa<UsingShadowDecl>(D))
65756574
D = cast<UsingShadowDecl>(D)->getTargetDecl();
65766575

6577-
CXXConversionDecl *Conv;
6578-
FunctionTemplateDecl *ConvTemplate;
6579-
if ((ConvTemplate = dyn_cast<FunctionTemplateDecl>(D)))
6580-
Conv = cast<CXXConversionDecl>(ConvTemplate->getTemplatedDecl());
6581-
else
6582-
Conv = cast<CXXConversionDecl>(D);
6583-
6584-
if (ConvTemplate)
6576+
if (auto *ConvTemplate = dyn_cast<FunctionTemplateDecl>(D)) {
65856577
SemaRef.AddTemplateConversionCandidate(
65866578
ConvTemplate, FoundDecl, ActingContext, From, ToType, CandidateSet,
6587-
/*AllowObjCConversionOnExplicit=*/false, /*AllowExplicit*/ true);
6588-
else
6589-
SemaRef.AddConversionCandidate(Conv, FoundDecl, ActingContext, From,
6590-
ToType, CandidateSet,
6591-
/*AllowObjCConversionOnExplicit=*/false,
6592-
/*AllowExplicit*/ true);
6579+
/*AllowObjCConversionOnExplicit=*/false, /*AllowExplicit=*/true);
6580+
continue;
6581+
}
6582+
CXXConversionDecl *Conv = cast<CXXConversionDecl>(D);
6583+
SemaRef.AddConversionCandidate(
6584+
Conv, FoundDecl, ActingContext, From, ToType, CandidateSet,
6585+
/*AllowObjCConversionOnExplicit=*/false, /*AllowExplicit=*/true);
65936586
}
65946587
}
65956588

0 commit comments

Comments
 (0)