Skip to content

Commit dea346e

Browse files
committed
[llvm][ADT] Add wrappers to std::includes
Add `llvm::includes` that accepts a range instead of start/end iterator.
1 parent cb647ec commit dea346e

File tree

8 files changed

+24
-18
lines changed

8 files changed

+24
-18
lines changed

clang-tools-extra/clangd/refactor/Rename.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1308,7 +1308,7 @@ getMappedRanges(ArrayRef<Range> Indexed, ArrayRef<SymbolRange> Lexed) {
13081308
return std::nullopt;
13091309
}
13101310
// Fast check for the special subset case.
1311-
if (std::includes(Indexed.begin(), Indexed.end(), Lexed.begin(), Lexed.end()))
1311+
if (llvm::includes(Indexed, Lexed))
13121312
return Lexed.vec();
13131313

13141314
std::vector<size_t> Best;

llvm/include/llvm/ADT/STLExtras.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1881,6 +1881,19 @@ OutputIt move(R &&Range, OutputIt Out) {
18811881
return std::move(adl_begin(Range), adl_end(Range), Out);
18821882
}
18831883

1884+
/// Provide wrappers to std::includes which take ranges instead of having to
1885+
/// pass begin/end explicitly.
1886+
template <typename R1, typename R2> bool includes(R1 &&Range1, R2 &&Range2) {
1887+
return std::includes(adl_begin(Range1), adl_end(Range1), adl_begin(Range2),
1888+
adl_end(Range2));
1889+
}
1890+
1891+
template <typename R1, typename R2, typename Compare>
1892+
bool includes(R1 &&Range1, R2 &&Range2, Compare C) {
1893+
return std::includes(adl_begin(Range1), adl_end(Range1), adl_begin(Range2),
1894+
adl_end(Range2), C);
1895+
}
1896+
18841897
namespace detail {
18851898
template <typename Range, typename Element>
18861899
using check_has_member_contains_t =

llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1975,12 +1975,10 @@ Value *DFSanFunction::combineShadows(Value *V1, Value *V2,
19751975
auto V1Elems = ShadowElements.find(V1);
19761976
auto V2Elems = ShadowElements.find(V2);
19771977
if (V1Elems != ShadowElements.end() && V2Elems != ShadowElements.end()) {
1978-
if (std::includes(V1Elems->second.begin(), V1Elems->second.end(),
1979-
V2Elems->second.begin(), V2Elems->second.end())) {
1978+
if (llvm::includes(V1Elems->second, V2Elems->second)) {
19801979
return collapseToPrimitiveShadow(V1, Pos);
19811980
}
1982-
if (std::includes(V2Elems->second.begin(), V2Elems->second.end(),
1983-
V1Elems->second.begin(), V1Elems->second.end())) {
1981+
if (llvm::includes(V2Elems->second, V1Elems->second)) {
19841982
return collapseToPrimitiveShadow(V2, Pos);
19851983
}
19861984
} else if (V1Elems != ShadowElements.end()) {

llvm/tools/sancov/sancov.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -889,8 +889,7 @@ symbolize(const RawCoverage &Data, const std::string ObjectFile) {
889889
}
890890

891891
std::set<uint64_t> AllAddrs = findCoveragePointAddrs(ObjectFile);
892-
if (!std::includes(AllAddrs.begin(), AllAddrs.end(), Data.Addrs->begin(),
893-
Data.Addrs->end())) {
892+
if (!llvm::includes(AllAddrs, *Data.Addrs)) {
894893
fail("Coverage points in binary and .sancov file do not match.");
895894
}
896895
Coverage->Points = getCoveragePoints(ObjectFile, AllAddrs, *Data.Addrs);

llvm/unittests/ADT/DAGDeltaAlgorithmTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "llvm/ADT/DAGDeltaAlgorithm.h"
10+
#include "llvm/ADT/STLExtras.h"
1011
#include "gtest/gtest.h"
1112
#include <algorithm>
1213
#include <cstdarg>
@@ -23,8 +24,7 @@ class FixedDAGDeltaAlgorithm : public DAGDeltaAlgorithm {
2324
protected:
2425
bool ExecuteOneTest(const changeset_ty &Changes) override {
2526
++NumTests;
26-
return std::includes(Changes.begin(), Changes.end(),
27-
FailingSet.begin(), FailingSet.end());
27+
return llvm::includes(Changes, FailingSet);
2828
}
2929

3030
public:

llvm/unittests/ADT/DeltaAlgorithmTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "llvm/ADT/DeltaAlgorithm.h"
10+
#include "llvm/ADT/STLExtras.h"
1011
#include "gtest/gtest.h"
1112
#include <algorithm>
1213
#include <cstdarg>
@@ -38,8 +39,7 @@ class FixedDeltaAlgorithm final : public DeltaAlgorithm {
3839
protected:
3940
bool ExecuteOneTest(const changeset_ty &Changes) override {
4041
++NumTests;
41-
return std::includes(Changes.begin(), Changes.end(),
42-
FailingSet.begin(), FailingSet.end());
42+
return llvm::includes(Changes, FailingSet);
4343
}
4444

4545
public:

llvm/utils/TableGen/AsmMatcherEmitter.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,8 +1330,7 @@ void AsmMatcherInfo::buildRegisterClasses(
13301330
for (const RegisterSet &RS : RegisterSets) {
13311331
ClassInfo *CI = RegisterSetClasses[RS];
13321332
for (const RegisterSet &RS2 : RegisterSets)
1333-
if (RS != RS2 && std::includes(RS2.begin(), RS2.end(), RS.begin(),
1334-
RS.end(), LessRecordByID()))
1333+
if (RS != RS2 && llvm::includes(RS2, RS, LessRecordByID()))
13351334
CI->SuperClasses.push_back(RegisterSetClasses[RS2]);
13361335
}
13371336

llvm/utils/TableGen/Common/CodeGenRegisters.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -933,9 +933,7 @@ bool CodeGenRegisterClass::Key::operator<(
933933
static bool testSubClass(const CodeGenRegisterClass *A,
934934
const CodeGenRegisterClass *B) {
935935
return A->RSI.isSubClassOf(B->RSI) &&
936-
std::includes(A->getMembers().begin(), A->getMembers().end(),
937-
B->getMembers().begin(), B->getMembers().end(),
938-
deref<std::less<>>());
936+
llvm::includes(A->getMembers(), B->getMembers(), deref<std::less<>>());
939937
}
940938

941939
/// Sorting predicate for register classes. This provides a topological
@@ -1995,8 +1993,7 @@ findRegUnitSet(const std::vector<RegUnitSet> &UniqueSets,
19951993
// Return true if the RUSubSet is a subset of RUSuperSet.
19961994
static bool isRegUnitSubSet(const std::vector<unsigned> &RUSubSet,
19971995
const std::vector<unsigned> &RUSuperSet) {
1998-
return std::includes(RUSuperSet.begin(), RUSuperSet.end(), RUSubSet.begin(),
1999-
RUSubSet.end());
1996+
return llvm::includes(RUSuperSet, RUSubSet);
20001997
}
20011998

20021999
/// Iteratively prune unit sets. Prune subsets that are close to the superset,

0 commit comments

Comments
 (0)