[clang] [Clang] Avoid unnecessary overload resolution when building RecoveryExpr (PR #222296)
Younan Zhang via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 9 06:19:33 PDT 2026
================
@@ -14634,8 +14647,13 @@ static bool DiagnoseTwoPhaseLookup(
R.suppressDiagnostics();
OverloadCandidateSet Candidates(FnLoc, CSK);
- SemaRef.AddOverloadedCallCandidates(R, ExplicitTemplateArgs, Args,
- Candidates);
+ for (LookupResult::iterator I = R.begin(), E = R.end(); I != E; ++I) {
+ if (InvalidCandidates.contains(I->getAsFunction()))
----------------
zyn0217 wrote:
This is basically Sema::AddOverloadedCallCandidates with a filter.
I'm not sure I follow what you want, but R and Candidates are separate vectors (R comes from a unique name lookup at line 14644 (github hides that!), and Candidates are built earlier and they contain validity info we need.)
and a set avoids quadratic lookup
The idea is to drop those candidates that we had confirmed invalid. See its caller FinishOverloadedCallExpr
https://github.com/llvm/llvm-project/pull/222296
More information about the cfe-commits
mailing list