[PATCH] D73007: [Sema] Avoid Wrange-loop-analysis false positives
Aaron Puchert via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 20 08:13:49 PST 2020
aaronpuchert added a comment.
As I wrote on the bug <https://bugs.llvm.org/show_bug.cgi?id=44556>, I think we should only suppress one of the warnings in templates (and maybe always):
<source>:18:22: warning: loop variable '_' is always a copy because the range of type 'const Rng' does not return a reference [-Wrange-loop-analysis]
for (const auto& _ : t)
^
<source>:26:5: note: in instantiation of function template specialization 'f<Rng>' requested here
f(Rng{});
^
<source>:18:10: note: use non-reference type 'int'
for (const auto& _ : t)
^~~~~~~~~~~~~~~
However, I think we shouldn't suppress the other:
<source>:18:21: warning: loop variable '_' of type 'const X' creates a copy from type 'const X' [-Wrange-loop-analysis]
for (const auto _ : t)
^
<source>:25:5: note: in instantiation of function template specialization 'f<X [3]>' requested here
f(array);
^
<source>:18:10: note: use reference type 'const X &' to prevent copying
for (const auto _ : t)
^~~~~~~~~~~~~~
&
This generates a bunch of unneeded non-trivial copies, and I think we want to warn about that.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73007/new/
https://reviews.llvm.org/D73007
More information about the cfe-commits
mailing list