From 99913ef3d14fcbfc939d9547506b55ac76fd0c59 Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Sun, 29 Mar 2020 17:05:29 +0100 Subject: [PATCH] [OpenMP] set_bits iterator yields unsigned elements, no reference (NFC). BitVector::set_bits() returns an iterator range yielding unsinged elements, which always will be copied while const & gives the impression that there will be no copy. Newer version of clang complain: warning: loop variable 'SetBitsIt' is always a copy because the range of type 'iterator_range' (aka 'iterator_range >') does not return a reference [-Wrange-loop-analysis] Reviewers: jdoerfert, rnk Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D77010 --- llvm/lib/Frontend/OpenMP/OMPContext.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/llvm/lib/Frontend/OpenMP/OMPContext.cpp b/llvm/lib/Frontend/OpenMP/OMPContext.cpp index 505d4e9..dd3292a 100644 --- a/llvm/lib/Frontend/OpenMP/OMPContext.cpp +++ b/llvm/lib/Frontend/OpenMP/OMPContext.cpp @@ -79,8 +79,8 @@ OMPContext::OMPContext(bool IsDeviceCompilation, Triple TargetTriple) { LLVM_DEBUG({ dbgs() << "[" << DEBUG_TYPE << "] New OpenMP context with the following properties:\n"; - for (const auto &SetBitsIt : ActiveTraits.set_bits()) { - TraitProperty Property = TraitProperty(SetBitsIt); + for (unsigned Bit : ActiveTraits.set_bits()) { + TraitProperty Property = TraitProperty(Bit); dbgs() << "\t " << getOpenMPContextTraitPropertyFullName(Property) << "\n"; } @@ -127,8 +127,8 @@ static bool isStrictSubset(const VariantMatchInfo &VMI0, // relation is not required to be strict. if (VMI0.RequiredTraits.count() >= VMI1.RequiredTraits.count()) return false; - for (const auto &SetBitsIt : VMI0.RequiredTraits.set_bits()) - if (!VMI1.RequiredTraits.test(SetBitsIt)) + for (unsigned Bit : VMI0.RequiredTraits.set_bits()) + if (!VMI1.RequiredTraits.test(Bit)) return false; if (!isSubset(VMI0.ConstructTraits, VMI1.ConstructTraits)) return false; @@ -139,8 +139,8 @@ static int isVariantApplicableInContextHelper( const VariantMatchInfo &VMI, const OMPContext &Ctx, SmallVectorImpl *ConstructMatches) { - for (const auto &SetBitsIt : VMI.RequiredTraits.set_bits()) { - TraitProperty Property = TraitProperty(SetBitsIt); + for (unsigned Bit : VMI.RequiredTraits.set_bits()) { + TraitProperty Property = TraitProperty(Bit); bool IsActiveTrait = Ctx.ActiveTraits.test(unsigned(Property)); if (!IsActiveTrait) { @@ -191,8 +191,8 @@ static APInt getVariantMatchScore(const VariantMatchInfo &VMI, APInt Score(64, 1); unsigned NoConstructTraits = VMI.ConstructTraits.size(); - for (const auto &SetBitsIt : VMI.RequiredTraits.set_bits()) { - TraitProperty Property = TraitProperty(SetBitsIt); + for (unsigned Bit : VMI.RequiredTraits.set_bits()) { + TraitProperty Property = TraitProperty(Bit); // If there is a user score attached, use it. if (VMI.ScoreMap.count(Property)) { const APInt &UserScore = VMI.ScoreMap.lookup(Property); -- 2.7.4