[PATCH] D157526: [clang][Sema] Remove irrelevant diagnostics from constraint satisfaction failure
Takuya Shimizu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 6 05:19:06 PDT 2023
hazohelet added a comment.
To generate only the necessary diagnostic information, we need to know the evaluation result of the entire constraint expression.
So, the ideal way I can think of would be first to evaluate the nodes and, simultaneously, cache the results using `DenseMap` or something, and then traverse the nodes again to generate diagnostic information.
I was going in this way, but (https://github.com/llvm/llvm-project/blob/6f8b17703da2fbabba974b82578530b152b79c26/clang/lib/Sema/SemaConcept.cpp#L365) needs to use `TemplateDeductionInfo::takeSFINAEDiagnostic` to generate the diagnostic information. Generating this `TemplateDeductionInfo` in the second traversal seems unreasonable or impossible because it involves template instantiation.
Also, I'm unsure whether this refactor is worth the additional traversal and the cache data cost.
I would like to hear opinions about the direction from reviewers.
Note: The current implementation adds diagnostic information in the following places:
- https://github.com/llvm/llvm-project/blob/6f8b17703da2fbabba974b82578530b152b79c26/clang/lib/Sema/SemaConcept.cpp#L258
- https://github.com/llvm/llvm-project/blob/6f8b17703da2fbabba974b82578530b152b79c26/clang/lib/Sema/SemaConcept.cpp#L288
- https://github.com/llvm/llvm-project/blob/6f8b17703da2fbabba974b82578530b152b79c26/clang/lib/Sema/SemaConcept.cpp#L378
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D157526/new/
https://reviews.llvm.org/D157526
More information about the cfe-commits
mailing list