v.g.vassilev added a comment.

In D143524#4148006 <https://reviews.llvm.org/D143524#4148006>, @philnik wrote:

> The emitted warnings from the libc++ CI look like a false-positive to me. 
> While the functions are never called, they are used in an unevaluated 
> context. I would expect `-Wunused` warnings to only be emitted when I can 
> just remove the code without problems, which doesn't seem to be the case 
> here. It would probably just get turned off again by lots of people if there 
> are too many false-positives, which I don't think is the goal here.

From what I see is that most of the templates are marked with static which 
means internal linkage. Entities with internal linkage in header files are 
essentially different across translation units which is an ODR violation. I 
believe the discussion here gives more insights of how this works: 
https://reviews.llvm.org/D29877

Indeed the warning is noisy but it will potentially fix broken code which were 
unable to diagnose before. Especially that in some cases where static templates 
in header files are used as an idiom. In theory this approach can extend to 
cases described in https://wg21.link/p2691 where our inability to diagnose/fix 
these cases leads to some design decisions which may not be optimal.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D143524/new/

https://reviews.llvm.org/D143524

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to