[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