fhahn created this revision. fhahn added reviewers: jdoerfert, rnk. Herald added subscribers: llvm-commits, guansong, hiraditya. Herald added a project: LLVM.
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<llvm::BitVector::const_set_bits_iterator>' (aka 'iterator_range<const_set_bits_iterator_impl<llvm::BitVector> >') does not return a reference [-Wrange-loop-analysis] Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D77010 Files: llvm/lib/Frontend/OpenMP/OMPContext.cpp Index: llvm/lib/Frontend/OpenMP/OMPContext.cpp =================================================================== --- llvm/lib/Frontend/OpenMP/OMPContext.cpp +++ llvm/lib/Frontend/OpenMP/OMPContext.cpp @@ -79,8 +79,8 @@ 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 @@ // 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<TraitProperty>(VMI0.ConstructTraits, VMI1.ConstructTraits)) return false; @@ -139,8 +139,8 @@ const VariantMatchInfo &VMI, const OMPContext &Ctx, SmallVectorImpl<unsigned> *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 @@ 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);
Index: llvm/lib/Frontend/OpenMP/OMPContext.cpp =================================================================== --- llvm/lib/Frontend/OpenMP/OMPContext.cpp +++ llvm/lib/Frontend/OpenMP/OMPContext.cpp @@ -79,8 +79,8 @@ 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 @@ // 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<TraitProperty>(VMI0.ConstructTraits, VMI1.ConstructTraits)) return false; @@ -139,8 +139,8 @@ const VariantMatchInfo &VMI, const OMPContext &Ctx, SmallVectorImpl<unsigned> *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 @@ 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);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits