diff options
Diffstat (limited to 'include/llvm/ADT/EquivalenceClasses.h')
-rw-r--r-- | include/llvm/ADT/EquivalenceClasses.h | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/include/llvm/ADT/EquivalenceClasses.h b/include/llvm/ADT/EquivalenceClasses.h index 8fcac178ffc9..af293d4c1422 100644 --- a/include/llvm/ADT/EquivalenceClasses.h +++ b/include/llvm/ADT/EquivalenceClasses.h @@ -1,4 +1,4 @@ -//===-- llvm/ADT/EquivalenceClasses.h - Generic Equiv. Classes --*- C++ -*-===// +//===- llvm/ADT/EquivalenceClasses.h - Generic Equiv. Classes ---*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -69,6 +69,7 @@ class EquivalenceClasses { /// leader is determined by a bit stolen from one of the pointers. class ECValue { friend class EquivalenceClasses; + mutable const ECValue *Leader, *Next; ElemTy Data; @@ -141,14 +142,14 @@ public: // /// iterator* - Provides a way to iterate over all values in the set. - typedef typename std::set<ECValue>::const_iterator iterator; + using iterator = typename std::set<ECValue>::const_iterator; + iterator begin() const { return TheMapping.begin(); } iterator end() const { return TheMapping.end(); } bool empty() const { return TheMapping.empty(); } /// member_* Iterate over the members of an equivalence class. - /// class member_iterator; member_iterator member_begin(iterator I) const { // Only leaders provide anything to iterate over. @@ -204,7 +205,6 @@ public: /// equivalence class it is in. This does the path-compression part that /// makes union-find "union findy". This returns an end iterator if the value /// is not in the equivalence class. - /// member_iterator findLeader(iterator I) const { if (I == TheMapping.end()) return member_end(); return member_iterator(I->getLeader()); @@ -241,15 +241,17 @@ public: class member_iterator : public std::iterator<std::forward_iterator_tag, const ElemTy, ptrdiff_t> { - typedef std::iterator<std::forward_iterator_tag, - const ElemTy, ptrdiff_t> super; - const ECValue *Node; friend class EquivalenceClasses; + using super = std::iterator<std::forward_iterator_tag, + const ElemTy, ptrdiff_t>; + + const ECValue *Node; + public: - typedef size_t size_type; - typedef typename super::pointer pointer; - typedef typename super::reference reference; + using size_type = size_t; + using pointer = typename super::pointer; + using reference = typename super::reference; explicit member_iterator() = default; explicit member_iterator(const ECValue *N) : Node(N) {} |