[PATCH] D68912: Adds -Wrange-loop-analysis to -Wall

Denis Nikitin via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 17 12:09:13 PST 2020


denik added a comment.

We are hitting the  warning in template code with bool and loop like this: "for (const auto& element : value)" where element is bool from template. But not always.
When it is bool the warning triggers:
error: loop variable 'element' is always a copy because the range of type 'const std::vector<bool, allocator<bool> >' does not return a reference [-Werror,-Wrange-loop-analysis]

However, the template type can also use non-bools and if I remove the reference I hit alternative case where the warning complains about copy operation of reference types:
error: loop variable 'element' of type 'const std::__1::basic_string<char>' creates a copy from type 'const std::__1::basic_string<char>' [-Werror,-Wrange-loop-analysis]
for (const auto element : value):
use reference type 'const std::__1::tuple<unsigned int, bool, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > &' to prevent copying

So there is no way to satisfy the warning other than disabling it.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D68912





More information about the cfe-commits mailing list