diff --git a/clang/lib/Analysis/FlowSensitive/SimplifyConstraints.cpp b/clang/lib/Analysis/FlowSensitive/SimplifyConstraints.cpp index cc20202768b9..02ec0d021330 100644 --- a/clang/lib/Analysis/FlowSensitive/SimplifyConstraints.cpp +++ b/clang/lib/Analysis/FlowSensitive/SimplifyConstraints.cpp @@ -64,9 +64,9 @@ projectToLeaders(const llvm::DenseSet &Atoms, // `LeaderIt`. static llvm::SmallVector atomsInEquivalenceClass(const llvm::EquivalenceClasses &EquivalentAtoms, - llvm::EquivalenceClasses::iterator LeaderIt) { + const Atom &At) { llvm::SmallVector Result; - for (auto MemberIt = EquivalentAtoms.member_begin(LeaderIt); + for (auto MemberIt = EquivalentAtoms.findLeader(At); MemberIt != EquivalentAtoms.member_end(); ++MemberIt) Result.push_back(*MemberIt); return Result; @@ -159,19 +159,17 @@ void simplifyConstraints(llvm::SetVector &Constraints, if (TrueAtoms.contains(At) || FalseAtoms.contains(At)) continue; llvm::SmallVector Atoms = - atomsInEquivalenceClass(EquivalentAtoms, It); + atomsInEquivalenceClass(EquivalentAtoms, At); if (Atoms.size() == 1) continue; std::sort(Atoms.begin(), Atoms.end()); Info->EquivalentAtoms.push_back(std::move(Atoms)); } for (Atom At : TrueAtoms) - Info->TrueAtoms.append(atomsInEquivalenceClass( - EquivalentAtoms, EquivalentAtoms.findValue(At))); + Info->TrueAtoms.append(atomsInEquivalenceClass(EquivalentAtoms, At)); std::sort(Info->TrueAtoms.begin(), Info->TrueAtoms.end()); for (Atom At : FalseAtoms) - Info->FalseAtoms.append(atomsInEquivalenceClass( - EquivalentAtoms, EquivalentAtoms.findValue(At))); + Info->FalseAtoms.append(atomsInEquivalenceClass(EquivalentAtoms, At)); std::sort(Info->FalseAtoms.begin(), Info->FalseAtoms.end()); } } diff --git a/llvm/include/llvm/ADT/EquivalenceClasses.h b/llvm/include/llvm/ADT/EquivalenceClasses.h index c375d6e77b12..f9c7819f1880 100644 --- a/llvm/include/llvm/ADT/EquivalenceClasses.h +++ b/llvm/include/llvm/ADT/EquivalenceClasses.h @@ -179,10 +179,9 @@ public: return member_iterator(nullptr); } - /// findValue - Return an iterator to the specified value. If it does not - /// exist, end() is returned. - iterator findValue(const ElemTy &V) const { - return TheMapping.find(V); + /// Returns true if \p V is contained an equivalence class. + bool contains(const ElemTy &V) const { + return TheMapping.find(V) != TheMapping.end(); } /// getLeaderValue - Return the leader for the specified value that is in the diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp index e7d6984caeba..47ff31b9a052 100644 --- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp +++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp @@ -1230,7 +1230,7 @@ bool AccessAnalysis::canCheckPtrAtRT( [this](const Value *Ptr) { MemAccessInfo AccessWrite(const_cast(Ptr), true); - return DepCands.findValue(AccessWrite) == DepCands.end(); + return !DepCands.contains(AccessWrite); })) && "Can only skip updating CanDoRT below, if all entries in AS " "are reads or there is at most 1 entry"); diff --git a/polly/lib/Analysis/ScopBuilder.cpp b/polly/lib/Analysis/ScopBuilder.cpp index 351eab7f9371..c0babb85f5c4 100644 --- a/polly/lib/Analysis/ScopBuilder.cpp +++ b/polly/lib/Analysis/ScopBuilder.cpp @@ -1856,8 +1856,7 @@ static void joinOperandTree(EquivalenceClasses &UnionFind, continue; // Check if OpInst is in the BB and is a modeled instruction. - auto OpVal = UnionFind.findValue(OpInst); - if (OpVal == UnionFind.end()) + if (!UnionFind.contains(OpInst)) continue; UnionFind.unionSets(Inst, OpInst);