mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-28 02:11:43 +00:00
[wpiutil] Vendor llvm and update to 13.0.0 (#4224)
This commit is contained in:
266
upstream_utils/llvm_patches/0010-Remove-reverse-iterator.patch
Normal file
266
upstream_utils/llvm_patches/0010-Remove-reverse-iterator.patch
Normal file
@@ -0,0 +1,266 @@
|
||||
From 29e7b322eab2284b434cc270bb36ade7c8a62755 Mon Sep 17 00:00:00 2001
|
||||
From: PJ Reiniger <pj.reiniger@gmail.com>
|
||||
Date: Sat, 7 May 2022 23:02:07 -0400
|
||||
Subject: [PATCH 10/31] Remove reverse iterator
|
||||
|
||||
---
|
||||
llvm/include/llvm/ADT/DenseMap.h | 74 ++++-------------------------
|
||||
llvm/include/llvm/ADT/SmallPtrSet.h | 21 +-------
|
||||
2 files changed, 11 insertions(+), 84 deletions(-)
|
||||
|
||||
diff --git a/llvm/include/llvm/ADT/DenseMap.h b/llvm/include/llvm/ADT/DenseMap.h
|
||||
index 588c39faea2f..5e5c020adf0b 100644
|
||||
--- a/llvm/include/llvm/ADT/DenseMap.h
|
||||
+++ b/llvm/include/llvm/ADT/DenseMap.h
|
||||
@@ -76,8 +76,6 @@ public:
|
||||
// empty buckets.
|
||||
if (empty())
|
||||
return end();
|
||||
- if (shouldReverseIterate<KeyT>())
|
||||
- return makeIterator(getBucketsEnd() - 1, getBuckets(), *this);
|
||||
return makeIterator(getBuckets(), getBucketsEnd(), *this);
|
||||
}
|
||||
inline iterator end() {
|
||||
@@ -86,8 +84,6 @@ public:
|
||||
inline const_iterator begin() const {
|
||||
if (empty())
|
||||
return end();
|
||||
- if (shouldReverseIterate<KeyT>())
|
||||
- return makeConstIterator(getBucketsEnd() - 1, getBuckets(), *this);
|
||||
return makeConstIterator(getBuckets(), getBucketsEnd(), *this);
|
||||
}
|
||||
inline const_iterator end() const {
|
||||
@@ -150,18 +146,14 @@ public:
|
||||
iterator find(const_arg_type_t<KeyT> Val) {
|
||||
BucketT *TheBucket;
|
||||
if (LookupBucketFor(Val, TheBucket))
|
||||
- return makeIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>() ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return makeIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true);
|
||||
return end();
|
||||
}
|
||||
const_iterator find(const_arg_type_t<KeyT> Val) const {
|
||||
const BucketT *TheBucket;
|
||||
if (LookupBucketFor(Val, TheBucket))
|
||||
- return makeConstIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>() ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return makeConstIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true);
|
||||
return end();
|
||||
}
|
||||
@@ -175,9 +167,7 @@ public:
|
||||
iterator find_as(const LookupKeyT &Val) {
|
||||
BucketT *TheBucket;
|
||||
if (LookupBucketFor(Val, TheBucket))
|
||||
- return makeIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>() ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return makeIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true);
|
||||
return end();
|
||||
}
|
||||
@@ -185,9 +175,7 @@ public:
|
||||
const_iterator find_as(const LookupKeyT &Val) const {
|
||||
const BucketT *TheBucket;
|
||||
if (LookupBucketFor(Val, TheBucket))
|
||||
- return makeConstIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>() ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return makeConstIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true);
|
||||
return end();
|
||||
}
|
||||
@@ -222,20 +210,14 @@ public:
|
||||
std::pair<iterator, bool> try_emplace(KeyT &&Key, Ts &&... Args) {
|
||||
BucketT *TheBucket;
|
||||
if (LookupBucketFor(Key, TheBucket))
|
||||
- return std::make_pair(makeIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>()
|
||||
- ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return std::make_pair(makeIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true),
|
||||
false); // Already in map.
|
||||
|
||||
// Otherwise, insert the new element.
|
||||
TheBucket =
|
||||
InsertIntoBucket(TheBucket, std::move(Key), std::forward<Ts>(Args)...);
|
||||
- return std::make_pair(makeIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>()
|
||||
- ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return std::make_pair(makeIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true),
|
||||
true);
|
||||
}
|
||||
@@ -247,19 +229,13 @@ public:
|
||||
std::pair<iterator, bool> try_emplace(const KeyT &Key, Ts &&... Args) {
|
||||
BucketT *TheBucket;
|
||||
if (LookupBucketFor(Key, TheBucket))
|
||||
- return std::make_pair(makeIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>()
|
||||
- ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return std::make_pair(makeIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true),
|
||||
false); // Already in map.
|
||||
|
||||
// Otherwise, insert the new element.
|
||||
TheBucket = InsertIntoBucket(TheBucket, Key, std::forward<Ts>(Args)...);
|
||||
- return std::make_pair(makeIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>()
|
||||
- ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return std::make_pair(makeIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true),
|
||||
true);
|
||||
}
|
||||
@@ -274,20 +250,14 @@ public:
|
||||
const LookupKeyT &Val) {
|
||||
BucketT *TheBucket;
|
||||
if (LookupBucketFor(Val, TheBucket))
|
||||
- return std::make_pair(makeIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>()
|
||||
- ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return std::make_pair(makeIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true),
|
||||
false); // Already in map.
|
||||
|
||||
// Otherwise, insert the new element.
|
||||
TheBucket = InsertIntoBucketWithLookup(TheBucket, std::move(KV.first),
|
||||
std::move(KV.second), Val);
|
||||
- return std::make_pair(makeIterator(TheBucket,
|
||||
- shouldReverseIterate<KeyT>()
|
||||
- ? getBuckets()
|
||||
- : getBucketsEnd(),
|
||||
+ return std::make_pair(makeIterator(TheBucket, getBucketsEnd(),
|
||||
*this, true),
|
||||
true);
|
||||
}
|
||||
@@ -464,20 +434,12 @@ private:
|
||||
iterator makeIterator(BucketT *P, BucketT *E,
|
||||
DebugEpochBase &Epoch,
|
||||
bool NoAdvance=false) {
|
||||
- if (shouldReverseIterate<KeyT>()) {
|
||||
- BucketT *B = P == getBucketsEnd() ? getBuckets() : P + 1;
|
||||
- return iterator(B, E, Epoch, NoAdvance);
|
||||
- }
|
||||
return iterator(P, E, Epoch, NoAdvance);
|
||||
}
|
||||
|
||||
const_iterator makeConstIterator(const BucketT *P, const BucketT *E,
|
||||
const DebugEpochBase &Epoch,
|
||||
const bool NoAdvance=false) const {
|
||||
- if (shouldReverseIterate<KeyT>()) {
|
||||
- const BucketT *B = P == getBucketsEnd() ? getBuckets() : P + 1;
|
||||
- return const_iterator(B, E, Epoch, NoAdvance);
|
||||
- }
|
||||
return const_iterator(P, E, Epoch, NoAdvance);
|
||||
}
|
||||
|
||||
@@ -1214,10 +1176,6 @@ public:
|
||||
assert(isHandleInSync() && "invalid construction!");
|
||||
|
||||
if (NoAdvance) return;
|
||||
- if (shouldReverseIterate<KeyT>()) {
|
||||
- RetreatPastEmptyBuckets();
|
||||
- return;
|
||||
- }
|
||||
AdvancePastEmptyBuckets();
|
||||
}
|
||||
|
||||
@@ -1232,16 +1190,10 @@ public:
|
||||
|
||||
reference operator*() const {
|
||||
assert(isHandleInSync() && "invalid iterator access!");
|
||||
- assert(Ptr != End && "dereferencing end() iterator");
|
||||
- if (shouldReverseIterate<KeyT>())
|
||||
- return Ptr[-1];
|
||||
return *Ptr;
|
||||
}
|
||||
pointer operator->() const {
|
||||
assert(isHandleInSync() && "invalid iterator access!");
|
||||
- assert(Ptr != End && "dereferencing end() iterator");
|
||||
- if (shouldReverseIterate<KeyT>())
|
||||
- return &(Ptr[-1]);
|
||||
return Ptr;
|
||||
}
|
||||
|
||||
@@ -1261,12 +1213,6 @@ public:
|
||||
|
||||
inline DenseMapIterator& operator++() { // Preincrement
|
||||
assert(isHandleInSync() && "invalid iterator access!");
|
||||
- assert(Ptr != End && "incrementing end() iterator");
|
||||
- if (shouldReverseIterate<KeyT>()) {
|
||||
- --Ptr;
|
||||
- RetreatPastEmptyBuckets();
|
||||
- return *this;
|
||||
- }
|
||||
++Ptr;
|
||||
AdvancePastEmptyBuckets();
|
||||
return *this;
|
||||
diff --git a/llvm/include/llvm/ADT/SmallPtrSet.h b/llvm/include/llvm/ADT/SmallPtrSet.h
|
||||
index 981b741669b0..e46a5171e301 100644
|
||||
--- a/llvm/include/llvm/ADT/SmallPtrSet.h
|
||||
+++ b/llvm/include/llvm/ADT/SmallPtrSet.h
|
||||
@@ -226,10 +226,6 @@ protected:
|
||||
public:
|
||||
explicit SmallPtrSetIteratorImpl(const void *const *BP, const void*const *E)
|
||||
: Bucket(BP), End(E) {
|
||||
- if (shouldReverseIterate()) {
|
||||
- RetreatIfNotValid();
|
||||
- return;
|
||||
- }
|
||||
AdvanceIfNotValid();
|
||||
}
|
||||
|
||||
@@ -281,22 +277,11 @@ public:
|
||||
// Most methods are provided by the base class.
|
||||
|
||||
const PtrTy operator*() const {
|
||||
- assert(isHandleInSync() && "invalid iterator access!");
|
||||
- if (shouldReverseIterate()) {
|
||||
- assert(Bucket > End);
|
||||
- return PtrTraits::getFromVoidPointer(const_cast<void *>(Bucket[-1]));
|
||||
- }
|
||||
assert(Bucket < End);
|
||||
return PtrTraits::getFromVoidPointer(const_cast<void*>(*Bucket));
|
||||
}
|
||||
|
||||
inline SmallPtrSetIterator& operator++() { // Preincrement
|
||||
- assert(isHandleInSync() && "invalid iterator access!");
|
||||
- if (shouldReverseIterate()) {
|
||||
- --Bucket;
|
||||
- RetreatIfNotValid();
|
||||
- return *this;
|
||||
- }
|
||||
++Bucket;
|
||||
AdvanceIfNotValid();
|
||||
return *this;
|
||||
@@ -400,8 +385,6 @@ public:
|
||||
}
|
||||
|
||||
iterator begin() const {
|
||||
- if (shouldReverseIterate())
|
||||
- return makeIterator(EndPointer() - 1);
|
||||
return makeIterator(CurArray);
|
||||
}
|
||||
iterator end() const { return makeIterator(EndPointer()); }
|
||||
@@ -409,9 +392,7 @@ public:
|
||||
private:
|
||||
/// Create an iterator that dereferences to same place as the given pointer.
|
||||
iterator makeIterator(const void *const *P) const {
|
||||
- if (shouldReverseIterate())
|
||||
- return iterator(P == EndPointer() ? CurArray : P + 1, CurArray, *this);
|
||||
- return iterator(P, EndPointer(), *this);
|
||||
+ return iterator(P, EndPointer());
|
||||
}
|
||||
};
|
||||
|
||||
--
|
||||
2.20.1.windows.1
|
||||
|
||||
Reference in New Issue
Block a user