Skip to content

Commit b0c93bb

Browse files
authored
Merge pull request swiftlang#27077 from gottesmm/pr-e1f0b2947769b49a7a4022ca7a513181461bde87
2 parents bfec410 + 4c803c9 commit b0c93bb

File tree

3 files changed

+3
-102
lines changed

3 files changed

+3
-102
lines changed

include/swift/Basic/Range.h

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -239,97 +239,6 @@ static inline auto reverse_range(unsigned start, unsigned end) ->
239239
return reversed(range(start+1, end+1));
240240
}
241241

242-
/// A random access range that provides iterators that can be used to iterate
243-
/// over the (element, index) pairs of a collection.
244-
template <typename IterTy> class EnumeratorRange {
245-
public:
246-
using IterTraitsTy = typename std::iterator_traits<IterTy>;
247-
static_assert(std::is_same<typename IterTraitsTy::iterator_category,
248-
std::random_access_iterator_tag>::value,
249-
"Expected a random access iterator");
250-
251-
private:
252-
IterTy Begin;
253-
IterTy End;
254-
255-
public:
256-
EnumeratorRange(IterTy begin, IterTy end) : Begin(begin), End(end) {}
257-
258-
class iterator {
259-
friend class EnumeratorRange;
260-
IterTy Begin;
261-
IterTy Iter;
262-
263-
iterator(IterTy begin, IterTy iter) : Begin(begin), Iter(iter) {}
264-
265-
public:
266-
using value_type =
267-
std::pair<typename std::iterator_traits<IterTy>::value_type, int>;
268-
using reference =
269-
std::pair<typename std::iterator_traits<IterTy>::value_type, int>;
270-
using pointer = void;
271-
using iterator_category = std::random_access_iterator_tag;
272-
using difference_type = int;
273-
274-
value_type operator*() const { return {*Iter, std::distance(Begin, Iter)}; }
275-
iterator &operator++() {
276-
Iter++;
277-
return *this;
278-
}
279-
iterator operator++(int) { return iterator(Begin, Iter++); }
280-
iterator &operator--() {
281-
Iter--;
282-
return *this;
283-
}
284-
iterator operator--(int) { return iterator(Begin, Iter--); }
285-
bool operator==(iterator rhs) { return Iter == rhs.Iter; }
286-
bool operator!=(iterator rhs) { return !(*this == rhs); }
287-
288-
iterator &operator+=(difference_type i) {
289-
std::advance(Iter, i);
290-
return *this;
291-
}
292-
iterator operator+(difference_type i) const {
293-
auto IterCopy = Iter;
294-
std::advance(IterCopy, i);
295-
return iterator(Begin, IterCopy);
296-
}
297-
friend iterator operator+(difference_type i, iterator base) {
298-
std::advance(base.Iter, i);
299-
return base;
300-
}
301-
iterator &operator-=(difference_type i) {
302-
*this += -i;
303-
return *this;
304-
}
305-
iterator operator-(difference_type i) const {
306-
auto NewIter = *this;
307-
return NewIter -= i;
308-
}
309-
difference_type operator-(iterator rhs) const {
310-
return difference_type(std::distance(Iter, rhs.Iter));
311-
}
312-
};
313-
314-
iterator begin() const { return iterator(Begin, Begin); }
315-
iterator end() const { return iterator(Begin, End); }
316-
317-
using reverse_iterator = std::reverse_iterator<iterator>;
318-
reverse_iterator rbegin() const { return reverse_iterator(end()); }
319-
reverse_iterator rend() const { return reverse_iterator(begin()); }
320-
};
321-
322-
/// enumerate - Given a type that's subscriptable with integers, return an
323-
/// IntEnumerateRange consisting of the valid subscripts.
324-
template <class T>
325-
EnumeratorRange<typename T::iterator> enumerate(T &collection) {
326-
return EnumeratorRange<typename T::iterator>(collection.begin(),
327-
collection.end());
328-
}
329-
template <class T> EnumeratorRange<T> enumerate(T Begin, T End) {
330-
return EnumeratorRange<T>(Begin, End);
331-
}
332-
333242
} // end namespace swift
334243

335244
#endif // SWIFT_BASIC_RANGE_H

include/swift/SIL/PostOrder.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,6 @@ class PostOrderFunctionInfo {
7070
PostOrder.rend());
7171
}
7272

73-
using enumerated_range = EnumeratorRange<decltype(PostOrder)::iterator>;
74-
enumerated_range getEnumeratedPostOrder() { return enumerate(PostOrder); }
75-
using reverse_enumerated_range =
76-
EnumeratorRange<decltype(PostOrder)::reverse_iterator>;
77-
reverse_enumerated_range getEnumeratedReversePostOrder() {
78-
return enumerate(PostOrder.rbegin(), PostOrder.rend());
79-
}
80-
8173
unsigned size() const { return PostOrder.size(); }
8274

8375
Optional<unsigned> getPONumber(SILBasicBlock *BB) const {

lib/SILOptimizer/Analysis/LoopRegionAnalysis.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,9 @@ void LoopRegionFunctionInfo::initializeBlockRegions(PostOrderFunctionInfo *PI,
355355
// Initialize regions for each BB and associate RPO numbers with each BB.
356356
//
357357
// We use the RPO number of a BB as its Index in our data structures.
358-
for (auto P : PI->getEnumeratedReversePostOrder()) {
359-
BlockTy *BB = P.first;
360-
unsigned RPOIndex = P.second;
358+
for (auto P : llvm::enumerate(PI->getReversePostOrder())) {
359+
BlockTy *BB = P.value();
360+
unsigned RPOIndex = P.index();
361361
auto *BBRegion = createRegion(BB, RPOIndex);
362362
assert(BBRegion && "Create region fail to create a BB?");
363363
assert(*PI->getRPONumber(BB) == RPOIndex &&

0 commit comments

Comments
 (0)