summaryrefslogtreecommitdiff
path: root/include/llvm/ADT/EquivalenceClasses.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/ADT/EquivalenceClasses.h')
-rw-r--r--include/llvm/ADT/EquivalenceClasses.h22
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) {}