Coverage Report

Created: 2018-09-17 19:50

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/include/llvm/ADT/EquivalenceClasses.h
Line
Count
Source (jump to first uncovered line)
1
//===- llvm/ADT/EquivalenceClasses.h - Generic Equiv. Classes ---*- C++ -*-===//
2
//
3
//                     The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
//
10
// Generic implementation of equivalence classes through the use Tarjan's
11
// efficient union-find algorithm.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_ADT_EQUIVALENCECLASSES_H
16
#define LLVM_ADT_EQUIVALENCECLASSES_H
17
18
#include <cassert>
19
#include <cstddef>
20
#include <cstdint>
21
#include <iterator>
22
#include <set>
23
24
namespace llvm {
25
26
/// EquivalenceClasses - This represents a collection of equivalence classes and
27
/// supports three efficient operations: insert an element into a class of its
28
/// own, union two classes, and find the class for a given element.  In
29
/// addition to these modification methods, it is possible to iterate over all
30
/// of the equivalence classes and all of the elements in a class.
31
///
32
/// This implementation is an efficient implementation that only stores one copy
33
/// of the element being indexed per entry in the set, and allows any arbitrary
34
/// type to be indexed (as long as it can be ordered with operator<).
35
///
36
/// Here is a simple example using integers:
37
///
38
/// \code
39
///  EquivalenceClasses<int> EC;
40
///  EC.unionSets(1, 2);                // insert 1, 2 into the same set
41
///  EC.insert(4); EC.insert(5);        // insert 4, 5 into own sets
42
///  EC.unionSets(5, 1);                // merge the set for 1 with 5's set.
43
///
44
///  for (EquivalenceClasses<int>::iterator I = EC.begin(), E = EC.end();
45
///       I != E; ++I) {           // Iterate over all of the equivalence sets.
46
///    if (!I->isLeader()) continue;   // Ignore non-leader sets.
47
///    for (EquivalenceClasses<int>::member_iterator MI = EC.member_begin(I);
48
///         MI != EC.member_end(); ++MI)   // Loop over members in this set.
49
///      cerr << *MI << " ";  // Print member.
50
///    cerr << "\n";   // Finish set.
51
///  }
52
/// \endcode
53
///
54
/// This example prints:
55
///   4
56
///   5 1 2
57
///
58
template <class ElemTy>
59
class EquivalenceClasses {
60
  /// ECValue - The EquivalenceClasses data structure is just a set of these.
61
  /// Each of these represents a relation for a value.  First it stores the
62
  /// value itself, which provides the ordering that the set queries.  Next, it
63
  /// provides a "next pointer", which is used to enumerate all of the elements
64
  /// in the unioned set.  Finally, it defines either a "end of list pointer" or
65
  /// "leader pointer" depending on whether the value itself is a leader.  A
66
  /// "leader pointer" points to the node that is the leader for this element,
67
  /// if the node is not a leader.  A "end of list pointer" points to the last
68
  /// node in the list of members of this list.  Whether or not a node is a
69
  /// leader is determined by a bit stolen from one of the pointers.
70
  class ECValue {
71
    friend class EquivalenceClasses;
72
73
    mutable const ECValue *Leader, *Next;
74
    ElemTy Data;
75
76
    // ECValue ctor - Start out with EndOfList pointing to this node, Next is
77
    // Null, isLeader = true.
78
    ECValue(const ElemTy &Elt)
79
39.4M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::ECValue((anonymous namespace)::Chain* const&)
Line
Count
Source
79
183
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<int>::ECValue::ECValue(int const&)
Line
Count
Source
79
43.2k
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue::ECValue(llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > const&)
Line
Count
Source
79
550k
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::ECValue(llvm::SCEV const* const&)
Line
Count
Source
79
31.5M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::ECValue(llvm::Value const* const&)
Line
Count
Source
79
7.03M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Value*>::ECValue::ECValue(llvm::Value* const&)
Line
Count
Source
79
26.1k
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::ECValue(llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> const&)
Line
Count
Source
79
476
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::Instruction* const&)
Line
Count
Source
79
224k
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::ECValue((anonymous namespace)::InstPartition* const&)
Line
Count
Source
79
6
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::ECValue(llvm::GlobalValue const* const&)
Line
Count
Source
79
90
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
80
81
7.98M
    const ECValue *getLeader() const {
82
7.98M
      if (isLeader()) 
return this7.65M
;
83
322k
      if (Leader->isLeader()) 
return Leader256k
;
84
66.2k
      // Path compression.
85
66.2k
      return Leader = Leader->getLeader();
86
66.2k
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::getLeader() const
Line
Count
Source
81
64
    const ECValue *getLeader() const {
82
64
      if (isLeader()) 
return this48
;
83
16
      if (Leader->isLeader()) return Leader;
84
0
      // Path compression.
85
0
      return Leader = Leader->getLeader();
86
0
    }
llvm::EquivalenceClasses<int>::ECValue::getLeader() const
Line
Count
Source
81
39.0k
    const ECValue *getLeader() const {
82
39.0k
      if (isLeader()) 
return this11.0k
;
83
27.9k
      if (Leader->isLeader()) 
return Leader26.6k
;
84
1.35k
      // Path compression.
85
1.35k
      return Leader = Leader->getLeader();
86
1.35k
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue::getLeader() const
Line
Count
Source
81
325k
    const ECValue *getLeader() const {
82
325k
      if (isLeader()) 
return this229k
;
83
95.3k
      if (Leader->isLeader()) 
return Leader60.4k
;
84
34.9k
      // Path compression.
85
34.9k
      return Leader = Leader->getLeader();
86
34.9k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getLeader() const
Line
Count
Source
81
3.13M
    const ECValue *getLeader() const {
82
3.13M
      if (isLeader()) 
return this3.07M
;
83
61.2k
      if (Leader->isLeader()) 
return Leader56.9k
;
84
4.33k
      // Path compression.
85
4.33k
      return Leader = Leader->getLeader();
86
4.33k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getLeader() const
Line
Count
Source
81
4.22M
    const ECValue *getLeader() const {
82
4.22M
      if (isLeader()) 
return this4.21M
;
83
10.1k
      if (Leader->isLeader()) 
return Leader8.05k
;
84
2.13k
      // Path compression.
85
2.13k
      return Leader = Leader->getLeader();
86
2.13k
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getLeader() const
Line
Count
Source
81
27.0k
    const ECValue *getLeader() const {
82
27.0k
      if (isLeader()) 
return this14.5k
;
83
12.4k
      if (Leader->isLeader()) 
return Leader11.5k
;
84
903
      // Path compression.
85
903
      return Leader = Leader->getLeader();
86
903
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getLeader() const
Line
Count
Source
81
490
    const ECValue *getLeader() const {
82
490
      if (isLeader()) 
return this191
;
83
299
      if (Leader->isLeader()) 
return Leader285
;
84
14
      // Path compression.
85
14
      return Leader = Leader->getLeader();
86
14
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getLeader() const
Line
Count
Source
81
222k
    const ECValue *getLeader() const {
82
222k
      if (isLeader()) 
return this107k
;
83
114k
      if (Leader->isLeader()) 
return Leader92.0k
;
84
22.6k
      // Path compression.
85
22.6k
      return Leader = Leader->getLeader();
86
22.6k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::getLeader() const
Line
Count
Source
81
6
    const ECValue *getLeader() const {
82
6
      if (isLeader()) 
return this5
;
83
1
      if (Leader->isLeader()) return Leader;
84
0
      // Path compression.
85
0
      return Leader = Leader->getLeader();
86
0
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::getLeader() const
Line
Count
Source
81
109
    const ECValue *getLeader() const {
82
109
      if (isLeader()) 
return this91
;
83
18
      if (Leader->isLeader()) 
return Leader16
;
84
2
      // Path compression.
85
2
      return Leader = Leader->getLeader();
86
2
    }
87
88
7.61M
    const ECValue *getEndOfList() const {
89
7.61M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
7.61M
      return Leader;
91
7.61M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::getEndOfList() const
Line
Count
Source
88
32
    const ECValue *getEndOfList() const {
89
32
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
32
      return Leader;
91
32
    }
llvm::EquivalenceClasses<int>::ECValue::getEndOfList() const
Line
Count
Source
88
8.17k
    const ECValue *getEndOfList() const {
89
8.17k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
8.17k
      return Leader;
91
8.17k
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue::getEndOfList() const
Line
Count
Source
88
144k
    const ECValue *getEndOfList() const {
89
144k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
144k
      return Leader;
91
144k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getEndOfList() const
Line
Count
Source
88
4.21M
    const ECValue *getEndOfList() const {
89
4.21M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
4.21M
      return Leader;
91
4.21M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getEndOfList() const
Line
Count
Source
88
3.06M
    const ECValue *getEndOfList() const {
89
3.06M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
3.06M
      return Leader;
91
3.06M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getEndOfList() const
Line
Count
Source
88
12.0k
    const ECValue *getEndOfList() const {
89
12.0k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
12.0k
      return Leader;
91
12.0k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getEndOfList() const
Line
Count
Source
88
240
    const ECValue *getEndOfList() const {
89
240
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
240
      return Leader;
91
240
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getEndOfList() const
Line
Count
Source
88
167k
    const ECValue *getEndOfList() const {
89
167k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
167k
      return Leader;
91
167k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::getEndOfList() const
Line
Count
Source
88
4
    const ECValue *getEndOfList() const {
89
4
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
4
      return Leader;
91
4
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::getEndOfList() const
Line
Count
Source
88
78
    const ECValue *getEndOfList() const {
89
78
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
78
      return Leader;
91
78
    }
92
93
3.80M
    void setNext(const ECValue *NewNext) const {
94
3.80M
      assert(getNext() == nullptr && "Already has a next pointer!");
95
3.80M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
3.80M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::setNext(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue const*) const
Line
Count
Source
93
16
    void setNext(const ECValue *NewNext) const {
94
16
      assert(getNext() == nullptr && "Already has a next pointer!");
95
16
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
16
    }
llvm::EquivalenceClasses<int>::ECValue::setNext(llvm::EquivalenceClasses<int>::ECValue const*) const
Line
Count
Source
93
4.08k
    void setNext(const ECValue *NewNext) const {
94
4.08k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
4.08k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
4.08k
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue::setNext(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue const*) const
Line
Count
Source
93
72.3k
    void setNext(const ECValue *NewNext) const {
94
72.3k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
72.3k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
72.3k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const*) const
Line
Count
Source
93
2.10M
    void setNext(const ECValue *NewNext) const {
94
2.10M
      assert(getNext() == nullptr && "Already has a next pointer!");
95
2.10M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
2.10M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const*) const
Line
Count
Source
93
1.53M
    void setNext(const ECValue *NewNext) const {
94
1.53M
      assert(getNext() == nullptr && "Already has a next pointer!");
95
1.53M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
1.53M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value*>::ECValue const*) const
Line
Count
Source
93
6.04k
    void setNext(const ECValue *NewNext) const {
94
6.04k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
6.04k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
6.04k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::setNext(llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue const*) const
Line
Count
Source
93
120
    void setNext(const ECValue *NewNext) const {
94
120
      assert(getNext() == nullptr && "Already has a next pointer!");
95
120
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
120
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const*) const
Line
Count
Source
93
83.9k
    void setNext(const ECValue *NewNext) const {
94
83.9k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
83.9k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
83.9k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::setNext(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue const*) const
Line
Count
Source
93
2
    void setNext(const ECValue *NewNext) const {
94
2
      assert(getNext() == nullptr && "Already has a next pointer!");
95
2
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
2
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue const*) const
Line
Count
Source
93
39
    void setNext(const ECValue *NewNext) const {
94
39
      assert(getNext() == nullptr && "Already has a next pointer!");
95
39
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
39
    }
97
98
  public:
99
    ECValue(const ECValue &RHS) : Leader(this), Next((ECValue*)(intptr_t)1),
100
4.79M
                                  Data(RHS.Data) {
101
4.79M
      // Only support copying of singleton nodes.
102
4.79M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
4.79M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::ECValue(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue const&)
Line
Count
Source
100
119
                                  Data(RHS.Data) {
101
119
      // Only support copying of singleton nodes.
102
119
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
119
    }
llvm::EquivalenceClasses<int>::ECValue::ECValue(llvm::EquivalenceClasses<int>::ECValue const&)
Line
Count
Source
100
5.75k
                                  Data(RHS.Data) {
101
5.75k
      // Only support copying of singleton nodes.
102
5.75k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
5.75k
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue::ECValue(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue const&)
Line
Count
Source
100
147k
                                  Data(RHS.Data) {
101
147k
      // Only support copying of singleton nodes.
102
147k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
147k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const&)
Line
Count
Source
100
2.47M
                                  Data(RHS.Data) {
101
2.47M
      // Only support copying of singleton nodes.
102
2.47M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
2.47M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const&)
Line
Count
Source
100
2.06M
                                  Data(RHS.Data) {
101
2.06M
      // Only support copying of singleton nodes.
102
2.06M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
2.06M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Value*>::ECValue const&)
Line
Count
Source
100
7.46k
                                  Data(RHS.Data) {
101
7.46k
      // Only support copying of singleton nodes.
102
7.46k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
7.46k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::ECValue(llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue const&)
Line
Count
Source
100
188
                                  Data(RHS.Data) {
101
188
      // Only support copying of singleton nodes.
102
188
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
188
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const&)
Line
Count
Source
100
97.9k
                                  Data(RHS.Data) {
101
97.9k
      // Only support copying of singleton nodes.
102
97.9k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
97.9k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::ECValue(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue const&)
Line
Count
Source
100
4
                                  Data(RHS.Data) {
101
4
      // Only support copying of singleton nodes.
102
4
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
4
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue const&)
Line
Count
Source
100
56
                                  Data(RHS.Data) {
101
56
      // Only support copying of singleton nodes.
102
56
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
56
    }
104
105
85.7M
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::operator<(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue const&) const
Line
Count
Source
105
209
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<int>::ECValue::operator<(llvm::EquivalenceClasses<int>::ECValue const&) const
Line
Count
Source
105
283k
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue::operator<(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue const&) const
Line
Count
Source
105
2.71M
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::operator<(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const&) const
Line
Count
Source
105
29.3M
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::operator<(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const&) const
Line
Count
Source
105
51.7M
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::operator<(llvm::EquivalenceClasses<llvm::Value*>::ECValue const&) const
Line
Count
Source
105
122k
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::operator<(llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue const&) const
Line
Count
Source
105
1.34k
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::operator<(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const&) const
Line
Count
Source
105
1.41M
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::operator<(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue const&) const
Line
Count
Source
105
10
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::operator<(llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue const&) const
Line
Count
Source
105
235
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
106
107
12.3M
    bool isLeader() const { return (intptr_t)Next & 1; }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::isLeader() const
Line
Count
Source
107
215
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<int>::ECValue::isLeader() const
Line
Count
Source
107
71.1k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue::isLeader() const
Line
Count
Source
107
541k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::isLeader() const
Line
Count
Source
107
4.72M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::isLeader() const
Line
Count
Source
107
6.34M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::isLeader() const
Line
Count
Source
107
67.9k
    bool isLeader() const { return (intptr_t)Next & 1; }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::isLeader() const
Line
Count
Source
107
1.23k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::isLeader() const
Line
Count
Source
107
604k
    bool isLeader() const { return (intptr_t)Next & 1; }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::isLeader() const
Line
Count
Source
107
15
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::isLeader() const
Line
Count
Source
107
239
    bool isLeader() const { return (intptr_t)Next & 1; }
108
1.44M
    const ElemTy &getData() const { return Data; }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::getData() const
Line
Count
Source
108
119
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<int>::ECValue::getData() const
Line
Count
Source
108
6.44k
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue::getData() const
Line
Count
Source
108
1.32M
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getData() const
Line
Count
Source
108
49.4k
    const ElemTy &getData() const { return Data; }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getData() const
Line
Count
Source
108
780
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getData() const
Line
Count
Source
108
67.1k
    const ElemTy &getData() const { return Data; }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::getData() const
Line
Count
Source
108
4
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::getData() const
Line
Count
Source
108
172
    const ElemTy &getData() const { return Data; }
109
110
4.20M
    const ECValue *getNext() const {
111
4.20M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
4.20M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::getNext() const
Line
Count
Source
110
254
    const ECValue *getNext() const {
111
254
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
254
    }
llvm::EquivalenceClasses<int>::ECValue::getNext() const
Line
Count
Source
110
4.08k
    const ECValue *getNext() const {
111
4.08k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
4.08k
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue::getNext() const
Line
Count
Source
110
397k
    const ECValue *getNext() const {
111
397k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
397k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getNext() const
Line
Count
Source
110
2.10M
    const ECValue *getNext() const {
111
2.10M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
2.10M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getNext() const
Line
Count
Source
110
1.53M
    const ECValue *getNext() const {
111
1.53M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
1.53M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getNext() const
Line
Count
Source
110
28.4k
    const ECValue *getNext() const {
111
28.4k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
28.4k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getNext() const
Line
Count
Source
110
496
    const ECValue *getNext() const {
111
496
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
496
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getNext() const
Line
Count
Source
110
137k
    const ECValue *getNext() const {
111
137k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
137k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::getNext() const
Line
Count
Source
110
6
    const ECValue *getNext() const {
111
6
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
6
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::getNext() const
Line
Count
Source
110
151
    const ECValue *getNext() const {
111
151
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
151
    }
113
114
    template<typename T>
115
    bool operator<(const T &Val) const { return Data < Val; }
116
  };
117
118
  /// TheMapping - This implicitly provides a mapping from ElemTy values to the
119
  /// ECValues, it just keeps the key as part of the value.
120
  std::set<ECValue> TheMapping;
121
122
public:
123
140M
  EquivalenceClasses() = default;
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::EquivalenceClasses()
Line
Count
Source
123
255
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<int>::EquivalenceClasses()
Line
Count
Source
123
2.67k
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::EquivalenceClasses()
Line
Count
Source
123
55.7k
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::SCEV const*>::EquivalenceClasses()
Line
Count
Source
123
69.9M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value const*>::EquivalenceClasses()
Line
Count
Source
123
69.9M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value*>::EquivalenceClasses()
Line
Count
Source
123
19.3k
  EquivalenceClasses() = default;
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::EquivalenceClasses()
Line
Count
Source
123
381
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Instruction*>::EquivalenceClasses()
Line
Count
Source
123
296k
  EquivalenceClasses() = default;
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::EquivalenceClasses()
Line
Count
Source
123
21
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::GlobalValue const*>::EquivalenceClasses()
Line
Count
Source
123
22
  EquivalenceClasses() = default;
124
108
  EquivalenceClasses(const EquivalenceClasses &RHS) {
125
108
    operator=(RHS);
126
108
  }
127
128
278k
  const EquivalenceClasses &operator=(const EquivalenceClasses &RHS) {
129
278k
    TheMapping.clear();
130
278k
    for (iterator I = RHS.begin(), E = RHS.end(); I != E; 
++I0
)
131
0
      if (I->isLeader()) {
132
0
        member_iterator MI = RHS.member_begin(I);
133
0
        member_iterator LeaderIt = member_begin(insert(*MI));
134
0
        for (++MI; MI != member_end(); ++MI)
135
0
          unionSets(LeaderIt, member_begin(insert(*MI)));
136
0
      }
137
278k
    return *this;
138
278k
  }
139
140
  //===--------------------------------------------------------------------===//
141
  // Inspection methods
142
  //
143
144
  /// iterator* - Provides a way to iterate over all values in the set.
145
  using iterator = typename std::set<ECValue>::const_iterator;
146
147
558k
  iterator begin() const { return TheMapping.begin(); }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::begin() const
Line
Count
Source
147
255
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::Value*>::begin() const
Line
Count
Source
147
904
  iterator begin() const { return TheMapping.begin(); }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::begin() const
Line
Count
Source
147
58
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::Instruction*>::begin() const
Line
Count
Source
147
556k
  iterator begin() const { return TheMapping.begin(); }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::begin() const
Line
Count
Source
147
2
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::begin() const
Line
Count
Source
147
22
  iterator begin() const { return TheMapping.begin(); }
148
565k
  iterator end() const { return TheMapping.end(); }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::end() const
Line
Count
Source
148
255
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::Value*>::end() const
Line
Count
Source
148
904
  iterator end() const { return TheMapping.end(); }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::end() const
Line
Count
Source
148
58
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::Instruction*>::end() const
Line
Count
Source
148
564k
  iterator end() const { return TheMapping.end(); }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::end() const
Line
Count
Source
148
2
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::end() const
Line
Count
Source
148
22
  iterator end() const { return TheMapping.end(); }
149
150
402
  bool empty() const { return TheMapping.empty(); }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::empty() const
Line
Count
Source
150
381
  bool empty() const { return TheMapping.empty(); }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::empty() const
Line
Count
Source
150
21
  bool empty() const { return TheMapping.empty(); }
151
152
  /// member_* Iterate over the members of an equivalence class.
153
  class member_iterator;
154
255k
  member_iterator member_begin(iterator I) const {
155
255k
    // Only leaders provide anything to iterate over.
156
255k
    return member_iterator(I->isLeader() ? 
&*I74.1k
:
nullptr180k
);
157
255k
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue, void*>*, long>) const
Line
Count
Source
154
119
  member_iterator member_begin(iterator I) const {
155
119
    // Only leaders provide anything to iterate over.
156
119
    return member_iterator(I->isLeader() ? 
&*I103
:
nullptr16
);
157
119
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue, void*>*, long>) const
Line
Count
Source
154
48.6k
  member_iterator member_begin(iterator I) const {
155
48.6k
    // Only leaders provide anything to iterate over.
156
48.6k
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
157
48.6k
  }
llvm::EquivalenceClasses<llvm::Value*>::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::Value*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::Value*>::ECValue, void*>*, long>) const
Line
Count
Source
154
22.4k
  member_iterator member_begin(iterator I) const {
155
22.4k
    // Only leaders provide anything to iterate over.
156
22.4k
    return member_iterator(I->isLeader() ? 
&*I4.28k
:
nullptr18.1k
);
157
22.4k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue, void*>*, long>) const
Line
Count
Source
154
136
  member_iterator member_begin(iterator I) const {
155
136
    // Only leaders provide anything to iterate over.
156
136
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
157
136
  }
llvm::EquivalenceClasses<llvm::Instruction*>::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::Instruction*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::Instruction*>::ECValue, void*>*, long>) const
Line
Count
Source
154
183k
  member_iterator member_begin(iterator I) const {
155
183k
    // Only leaders provide anything to iterate over.
156
183k
    return member_iterator(I->isLeader() ? 
&*I20.9k
:
nullptr162k
);
157
183k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue, void*>*, long>) const
Line
Count
Source
154
2
  member_iterator member_begin(iterator I) const {
155
2
    // Only leaders provide anything to iterate over.
156
2
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
157
2
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue, void*>*, long>) const
Line
Count
Source
154
17
  member_iterator member_begin(iterator I) const {
155
17
    // Only leaders provide anything to iterate over.
156
17
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
157
17
  }
158
62.8M
  member_iterator member_end() const {
159
62.8M
    return member_iterator(nullptr);
160
62.8M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_end() const
Line
Count
Source
158
119
  member_iterator member_end() const {
159
119
    return member_iterator(nullptr);
160
119
  }
llvm::EquivalenceClasses<int>::member_end() const
Line
Count
Source
158
10.8k
  member_iterator member_end() const {
159
10.8k
    return member_iterator(nullptr);
160
10.8k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_end() const
Line
Count
Source
158
48.6k
  member_iterator member_end() const {
159
48.6k
    return member_iterator(nullptr);
160
48.6k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_end() const
Line
Count
Source
158
56.8M
  member_iterator member_end() const {
159
56.8M
    return member_iterator(nullptr);
160
56.8M
  }
llvm::EquivalenceClasses<llvm::Value const*>::member_end() const
Line
Count
Source
158
5.61M
  member_iterator member_end() const {
159
5.61M
    return member_iterator(nullptr);
160
5.61M
  }
llvm::EquivalenceClasses<llvm::Value*>::member_end() const
Line
Count
Source
158
22.4k
  member_iterator member_end() const {
159
22.4k
    return member_iterator(nullptr);
160
22.4k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_end() const
Line
Count
Source
158
512
  member_iterator member_end() const {
159
512
    return member_iterator(nullptr);
160
512
  }
llvm::EquivalenceClasses<llvm::Instruction*>::member_end() const
Line
Count
Source
158
213k
  member_iterator member_end() const {
159
213k
    return member_iterator(nullptr);
160
213k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_end() const
Line
Count
Source
158
2
  member_iterator member_end() const {
159
2
    return member_iterator(nullptr);
160
2
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_end() const
Line
Count
Source
158
90
  member_iterator member_end() const {
159
90
    return member_iterator(nullptr);
160
90
  }
161
162
  /// findValue - Return an iterator to the specified value.  If it does not
163
  /// exist, end() is returned.
164
55.8k
  iterator findValue(const ElemTy &V) const {
165
55.8k
    return TheMapping.find(V);
166
55.8k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::findValue(llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > const&) const
Line
Count
Source
164
48.6k
  iterator findValue(const ElemTy &V) const {
165
48.6k
    return TheMapping.find(V);
166
48.6k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::findValue(llvm::Instruction* const&) const
Line
Count
Source
164
7.16k
  iterator findValue(const ElemTy &V) const {
165
7.16k
    return TheMapping.find(V);
166
7.16k
  }
167
168
  /// getLeaderValue - Return the leader for the specified value that is in the
169
  /// set.  It is an error to call this method for a value that is not yet in
170
  /// the set.  For that, call getOrInsertLeaderValue(V).
171
153k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
153k
    member_iterator MI = findLeader(V);
173
153k
    assert(MI != member_end() && "Value is not in the set!");
174
153k
    return *MI;
175
153k
  }
llvm::EquivalenceClasses<int>::getLeaderValue(int const&) const
Line
Count
Source
171
6.44k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
6.44k
    member_iterator MI = findLeader(V);
173
6.44k
    assert(MI != member_end() && "Value is not in the set!");
174
6.44k
    return *MI;
175
6.44k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::getLeaderValue(llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > const&) const
Line
Count
Source
171
143k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
143k
    member_iterator MI = findLeader(V);
173
143k
    assert(MI != member_end() && "Value is not in the set!");
174
143k
    return *MI;
175
143k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::getLeaderValue(llvm::Instruction* const&) const
Line
Count
Source
171
3.90k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
3.90k
    member_iterator MI = findLeader(V);
173
3.90k
    assert(MI != member_end() && "Value is not in the set!");
174
3.90k
    return *MI;
175
3.90k
  }
176
177
  /// getOrInsertLeaderValue - Return the leader for the specified value that is
178
  /// in the set.  If the member is not in the set, it is inserted, then
179
  /// returned.
180
12.4k
  const ElemTy &getOrInsertLeaderValue(const ElemTy &V) {
181
12.4k
    member_iterator MI = findLeader(insert(V));
182
12.4k
    assert(MI != member_end() && "Value is not in the set!");
183
12.4k
    return *MI;
184
12.4k
  }
185
186
  /// getNumClasses - Return the number of equivalence classes in this set.
187
  /// Note that this is a linear time operation.
188
  unsigned getNumClasses() const {
189
    unsigned NC = 0;
190
    for (iterator I = begin(), E = end(); I != E; ++I)
191
      if (I->isLeader()) ++NC;
192
    return NC;
193
  }
194
195
  //===--------------------------------------------------------------------===//
196
  // Mutation methods
197
198
  /// insert - Insert a new value into the union/find set, ignoring the request
199
  /// if the value already exists.
200
7.87M
  iterator insert(const ElemTy &Data) {
201
7.87M
    return TheMapping.insert(ECValue(Data)).first;
202
7.87M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::insert((anonymous namespace)::Chain* const&)
Line
Count
Source
200
183
  iterator insert(const ElemTy &Data) {
201
183
    return TheMapping.insert(ECValue(Data)).first;
202
183
  }
llvm::EquivalenceClasses<int>::insert(int const&)
Line
Count
Source
200
15.2k
  iterator insert(const ElemTy &Data) {
201
15.2k
    return TheMapping.insert(ECValue(Data)).first;
202
15.2k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::insert(llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > const&)
Line
Count
Source
200
358k
  iterator insert(const ElemTy &Data) {
201
358k
    return TheMapping.insert(ECValue(Data)).first;
202
358k
  }
llvm::EquivalenceClasses<llvm::Value const*>::insert(llvm::Value const* const&)
Line
Count
Source
200
4.21M
  iterator insert(const ElemTy &Data) {
201
4.21M
    return TheMapping.insert(ECValue(Data)).first;
202
4.21M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::insert(llvm::SCEV const* const&)
Line
Count
Source
200
3.06M
  iterator insert(const ElemTy &Data) {
201
3.06M
    return TheMapping.insert(ECValue(Data)).first;
202
3.06M
  }
llvm::EquivalenceClasses<llvm::Value*>::insert(llvm::Value* const&)
Line
Count
Source
200
26.1k
  iterator insert(const ElemTy &Data) {
201
26.1k
    return TheMapping.insert(ECValue(Data)).first;
202
26.1k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::insert(llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> const&)
Line
Count
Source
200
476
  iterator insert(const ElemTy &Data) {
201
476
    return TheMapping.insert(ECValue(Data)).first;
202
476
  }
llvm::EquivalenceClasses<llvm::Instruction*>::insert(llvm::Instruction* const&)
Line
Count
Source
200
195k
  iterator insert(const ElemTy &Data) {
201
195k
    return TheMapping.insert(ECValue(Data)).first;
202
195k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::insert((anonymous namespace)::InstPartition* const&)
Line
Count
Source
200
6
  iterator insert(const ElemTy &Data) {
201
6
    return TheMapping.insert(ECValue(Data)).first;
202
6
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::insert(llvm::GlobalValue const* const&)
Line
Count
Source
200
90
  iterator insert(const ElemTy &Data) {
201
90
    return TheMapping.insert(ECValue(Data)).first;
202
90
  }
203
204
  /// findLeader - Given a value in the set, return a member iterator for the
205
  /// equivalence class it is in.  This does the path-compression part that
206
  /// makes union-find "union findy".  This returns an end iterator if the value
207
  /// is not in the equivalence class.
208
39.1M
  member_iterator findLeader(iterator I) const {
209
39.1M
    if (I == TheMapping.end()) 
return member_end()31.2M
;
210
7.91M
    return member_iterator(I->getLeader());
211
7.91M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue, void*>*, long>) const
Line
Count
Source
208
64
  member_iterator findLeader(iterator I) const {
209
64
    if (I == TheMapping.end()) 
return member_end()0
;
210
64
    return member_iterator(I->getLeader());
211
64
  }
llvm::EquivalenceClasses<int>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<int>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<int>::ECValue, void*>*, long>) const
Line
Count
Source
208
37.6k
  member_iterator findLeader(iterator I) const {
209
37.6k
    if (I == TheMapping.end()) 
return member_end()6
;
210
37.6k
    return member_iterator(I->getLeader());
211
37.6k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue, void*>*, long>) const
Line
Count
Source
208
290k
  member_iterator findLeader(iterator I) const {
209
290k
    if (I == TheMapping.end()) 
return member_end()0
;
210
290k
    return member_iterator(I->getLeader());
211
290k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue, void*>*, long>) const
Line
Count
Source
208
31.5M
  member_iterator findLeader(iterator I) const {
209
31.5M
    if (I == TheMapping.end()) 
return member_end()28.4M
;
210
3.13M
    return member_iterator(I->getLeader());
211
3.13M
  }
llvm::EquivalenceClasses<llvm::Value const*>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::Value const*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::Value const*>::ECValue, void*>*, long>) const
Line
Count
Source
208
7.03M
  member_iterator findLeader(iterator I) const {
209
7.03M
    if (I == TheMapping.end()) 
return member_end()2.80M
;
210
4.22M
    return member_iterator(I->getLeader());
211
4.22M
  }
llvm::EquivalenceClasses<llvm::Value*>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::Value*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::Value*>::ECValue, void*>*, long>) const
Line
Count
Source
208
26.1k
  member_iterator findLeader(iterator I) const {
209
26.1k
    if (I == TheMapping.end()) 
return member_end()0
;
210
26.1k
    return member_iterator(I->getLeader());
211
26.1k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue, void*>*, long>) const
Line
Count
Source
208
476
  member_iterator findLeader(iterator I) const {
209
476
    if (I == TheMapping.end()) 
return member_end()0
;
210
476
    return member_iterator(I->getLeader());
211
476
  }
llvm::EquivalenceClasses<llvm::Instruction*>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::Instruction*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::Instruction*>::ECValue, void*>*, long>) const
Line
Count
Source
208
211k
  member_iterator findLeader(iterator I) const {
209
211k
    if (I == TheMapping.end()) 
return member_end()11.8k
;
210
199k
    return member_iterator(I->getLeader());
211
199k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue, void*>*, long>) const
Line
Count
Source
208
6
  member_iterator findLeader(iterator I) const {
209
6
    if (I == TheMapping.end()) 
return member_end()0
;
210
6
    return member_iterator(I->getLeader());
211
6
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue, void*>*, long>) const
Line
Count
Source
208
107
  member_iterator findLeader(iterator I) const {
209
107
    if (I == TheMapping.end()) 
return member_end()0
;
210
107
    return member_iterator(I->getLeader());
211
107
  }
212
31.5M
  member_iterator findLeader(const ElemTy &V) const {
213
31.5M
    return findLeader(TheMapping.find(V));
214
31.5M
  }
llvm::EquivalenceClasses<int>::findLeader(int const&) const
Line
Count
Source
212
28.0k
  member_iterator findLeader(const ElemTy &V) const {
213
28.0k
    return findLeader(TheMapping.find(V));
214
28.0k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::findLeader(llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > const&) const
Line
Count
Source
212
143k
  member_iterator findLeader(const ElemTy &V) const {
213
143k
    return findLeader(TheMapping.find(V));
214
143k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::findLeader(llvm::SCEV const* const&) const
Line
Count
Source
212
28.5M
  member_iterator findLeader(const ElemTy &V) const {
213
28.5M
    return findLeader(TheMapping.find(V));
214
28.5M
  }
llvm::EquivalenceClasses<llvm::Value const*>::findLeader(llvm::Value const* const&) const
Line
Count
Source
212
2.81M
  member_iterator findLeader(const ElemTy &V) const {
213
2.81M
    return findLeader(TheMapping.find(V));
214
2.81M
  }
llvm::EquivalenceClasses<llvm::Instruction*>::findLeader(llvm::Instruction* const&) const
Line
Count
Source
212
21.7k
  member_iterator findLeader(const ElemTy &V) const {
213
21.7k
    return findLeader(TheMapping.find(V));
214
21.7k
  }
215
216
  /// union - Merge the two equivalence sets for the specified values, inserting
217
  /// them if they do not already exist in the equivalence set.
218
3.81M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
3.81M
    iterator V1I = insert(V1), V2I = insert(V2);
220
3.81M
    return unionSets(findLeader(V1I), findLeader(V2I));
221
3.81M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::unionSets((anonymous namespace)::Chain* const&, (anonymous namespace)::Chain* const&)
Line
Count
Source
218
32
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
32
    iterator V1I = insert(V1), V2I = insert(V2);
220
32
    return unionSets(findLeader(V1I), findLeader(V2I));
221
32
  }
llvm::EquivalenceClasses<int>::unionSets(int const&, int const&)
Line
Count
Source
218
4.82k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
4.82k
    iterator V1I = insert(V1), V2I = insert(V2);
220
4.82k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
4.82k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::unionSets(llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > const&, llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > const&)
Line
Count
Source
218
73.3k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
73.3k
    iterator V1I = insert(V1), V2I = insert(V2);
220
73.3k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
73.3k
  }
llvm::EquivalenceClasses<llvm::Value const*>::unionSets(llvm::Value const* const&, llvm::Value const* const&)
Line
Count
Source
218
2.10M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
2.10M
    iterator V1I = insert(V1), V2I = insert(V2);
220
2.10M
    return unionSets(findLeader(V1I), findLeader(V2I));
221
2.10M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::unionSets(llvm::SCEV const* const&, llvm::SCEV const* const&)
Line
Count
Source
218
1.53M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
1.53M
    iterator V1I = insert(V1), V2I = insert(V2);
220
1.53M
    return unionSets(findLeader(V1I), findLeader(V2I));
221
1.53M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::Value* const&, llvm::Value* const&)
Line
Count
Source
218
6.82k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
6.82k
    iterator V1I = insert(V1), V2I = insert(V2);
220
6.82k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
6.82k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::Instruction* const&, llvm::Instruction* const&)
Line
Count
Source
218
94.8k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
94.8k
    iterator V1I = insert(V1), V2I = insert(V2);
220
94.8k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
94.8k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::unionSets((anonymous namespace)::InstPartition* const&, (anonymous namespace)::InstPartition* const&)
Line
Count
Source
218
3
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
3
    iterator V1I = insert(V1), V2I = insert(V2);
220
3
    return unionSets(findLeader(V1I), findLeader(V2I));
221
3
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::unionSets(llvm::GlobalValue const* const&, llvm::GlobalValue const* const&)
Line
Count
Source
218
45
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
45
    iterator V1I = insert(V1), V2I = insert(V2);
220
45
    return unionSets(findLeader(V1I), findLeader(V2I));
221
45
  }
222
3.81M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
3.81M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
3.81M
    if (L1 == L2) 
return L113.7k
; // Unifying the same two sets, noop.
225
3.80M
226
3.80M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
3.80M
    // point to the L2 leader node.
228
3.80M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
3.80M
    L1LV.getEndOfList()->setNext(&L2LV);
230
3.80M
231
3.80M
    // Update L1LV's end of list pointer.
232
3.80M
    L1LV.Leader = L2LV.getEndOfList();
233
3.80M
234
3.80M
    // Clear L2's leader flag:
235
3.80M
    L2LV.Next = L2LV.getNext();
236
3.80M
237
3.80M
    // L2's leader is now L1.
238
3.80M
    L2LV.Leader = &L1LV;
239
3.80M
    return L1;
240
3.80M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::unionSets(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator, llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator)
Line
Count
Source
222
32
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
32
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
32
    if (L1 == L2) 
return L116
; // Unifying the same two sets, noop.
225
16
226
16
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
16
    // point to the L2 leader node.
228
16
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
16
    L1LV.getEndOfList()->setNext(&L2LV);
230
16
231
16
    // Update L1LV's end of list pointer.
232
16
    L1LV.Leader = L2LV.getEndOfList();
233
16
234
16
    // Clear L2's leader flag:
235
16
    L2LV.Next = L2LV.getNext();
236
16
237
16
    // L2's leader is now L1.
238
16
    L2LV.Leader = &L1LV;
239
16
    return L1;
240
16
  }
llvm::EquivalenceClasses<int>::unionSets(llvm::EquivalenceClasses<int>::member_iterator, llvm::EquivalenceClasses<int>::member_iterator)
Line
Count
Source
222
4.82k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
4.82k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
4.82k
    if (L1 == L2) 
return L1731
; // Unifying the same two sets, noop.
225
4.08k
226
4.08k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
4.08k
    // point to the L2 leader node.
228
4.08k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
4.08k
    L1LV.getEndOfList()->setNext(&L2LV);
230
4.08k
231
4.08k
    // Update L1LV's end of list pointer.
232
4.08k
    L1LV.Leader = L2LV.getEndOfList();
233
4.08k
234
4.08k
    // Clear L2's leader flag:
235
4.08k
    L2LV.Next = L2LV.getNext();
236
4.08k
237
4.08k
    // L2's leader is now L1.
238
4.08k
    L2LV.Leader = &L1LV;
239
4.08k
    return L1;
240
4.08k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::unionSets(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator, llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator)
Line
Count
Source
222
73.3k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
73.3k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
73.3k
    if (L1 == L2) 
return L1996
; // Unifying the same two sets, noop.
225
72.3k
226
72.3k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
72.3k
    // point to the L2 leader node.
228
72.3k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
72.3k
    L1LV.getEndOfList()->setNext(&L2LV);
230
72.3k
231
72.3k
    // Update L1LV's end of list pointer.
232
72.3k
    L1LV.Leader = L2LV.getEndOfList();
233
72.3k
234
72.3k
    // Clear L2's leader flag:
235
72.3k
    L2LV.Next = L2LV.getNext();
236
72.3k
237
72.3k
    // L2's leader is now L1.
238
72.3k
    L2LV.Leader = &L1LV;
239
72.3k
    return L1;
240
72.3k
  }
llvm::EquivalenceClasses<llvm::Value const*>::unionSets(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator, llvm::EquivalenceClasses<llvm::Value const*>::member_iterator)
Line
Count
Source
222
2.10M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
2.10M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
2.10M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
225
2.10M
226
2.10M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
2.10M
    // point to the L2 leader node.
228
2.10M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
2.10M
    L1LV.getEndOfList()->setNext(&L2LV);
230
2.10M
231
2.10M
    // Update L1LV's end of list pointer.
232
2.10M
    L1LV.Leader = L2LV.getEndOfList();
233
2.10M
234
2.10M
    // Clear L2's leader flag:
235
2.10M
    L2LV.Next = L2LV.getNext();
236
2.10M
237
2.10M
    // L2's leader is now L1.
238
2.10M
    L2LV.Leader = &L1LV;
239
2.10M
    return L1;
240
2.10M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::unionSets(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator, llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator)
Line
Count
Source
222
1.53M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
1.53M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
1.53M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
225
1.53M
226
1.53M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
1.53M
    // point to the L2 leader node.
228
1.53M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
1.53M
    L1LV.getEndOfList()->setNext(&L2LV);
230
1.53M
231
1.53M
    // Update L1LV's end of list pointer.
232
1.53M
    L1LV.Leader = L2LV.getEndOfList();
233
1.53M
234
1.53M
    // Clear L2's leader flag:
235
1.53M
    L2LV.Next = L2LV.getNext();
236
1.53M
237
1.53M
    // L2's leader is now L1.
238
1.53M
    L2LV.Leader = &L1LV;
239
1.53M
    return L1;
240
1.53M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::EquivalenceClasses<llvm::Value*>::member_iterator, llvm::EquivalenceClasses<llvm::Value*>::member_iterator)
Line
Count
Source
222
6.82k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
6.82k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
6.82k
    if (L1 == L2) 
return L1786
; // Unifying the same two sets, noop.
225
6.04k
226
6.04k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
6.04k
    // point to the L2 leader node.
228
6.04k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
6.04k
    L1LV.getEndOfList()->setNext(&L2LV);
230
6.04k
231
6.04k
    // Update L1LV's end of list pointer.
232
6.04k
    L1LV.Leader = L2LV.getEndOfList();
233
6.04k
234
6.04k
    // Clear L2's leader flag:
235
6.04k
    L2LV.Next = L2LV.getNext();
236
6.04k
237
6.04k
    // L2's leader is now L1.
238
6.04k
    L2LV.Leader = &L1LV;
239
6.04k
    return L1;
240
6.04k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::unionSets(llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator, llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator)
Line
Count
Source
222
391
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
391
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
391
    if (L1 == L2) 
return L1271
; // Unifying the same two sets, noop.
225
120
226
120
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
120
    // point to the L2 leader node.
228
120
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
120
    L1LV.getEndOfList()->setNext(&L2LV);
230
120
231
120
    // Update L1LV's end of list pointer.
232
120
    L1LV.Leader = L2LV.getEndOfList();
233
120
234
120
    // Clear L2's leader flag:
235
120
    L2LV.Next = L2LV.getNext();
236
120
237
120
    // L2's leader is now L1.
238
120
    L2LV.Leader = &L1LV;
239
120
    return L1;
240
120
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator, llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator)
Line
Count
Source
222
94.8k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
94.8k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
94.8k
    if (L1 == L2) 
return L110.9k
; // Unifying the same two sets, noop.
225
83.9k
226
83.9k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
83.9k
    // point to the L2 leader node.
228
83.9k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
83.9k
    L1LV.getEndOfList()->setNext(&L2LV);
230
83.9k
231
83.9k
    // Update L1LV's end of list pointer.
232
83.9k
    L1LV.Leader = L2LV.getEndOfList();
233
83.9k
234
83.9k
    // Clear L2's leader flag:
235
83.9k
    L2LV.Next = L2LV.getNext();
236
83.9k
237
83.9k
    // L2's leader is now L1.
238
83.9k
    L2LV.Leader = &L1LV;
239
83.9k
    return L1;
240
83.9k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::unionSets(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator, llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator)
Line
Count
Source
222
3
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
3
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
3
    if (L1 == L2) 
return L11
; // Unifying the same two sets, noop.
225
2
226
2
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
2
    // point to the L2 leader node.
228
2
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
2
    L1LV.getEndOfList()->setNext(&L2LV);
230
2
231
2
    // Update L1LV's end of list pointer.
232
2
    L1LV.Leader = L2LV.getEndOfList();
233
2
234
2
    // Clear L2's leader flag:
235
2
    L2LV.Next = L2LV.getNext();
236
2
237
2
    // L2's leader is now L1.
238
2
    L2LV.Leader = &L1LV;
239
2
    return L1;
240
2
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::unionSets(llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator, llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator)
Line
Count
Source
222
45
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
45
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
45
    if (L1 == L2) 
return L16
; // Unifying the same two sets, noop.
225
39
226
39
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
39
    // point to the L2 leader node.
228
39
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
39
    L1LV.getEndOfList()->setNext(&L2LV);
230
39
231
39
    // Update L1LV's end of list pointer.
232
39
    L1LV.Leader = L2LV.getEndOfList();
233
39
234
39
    // Clear L2's leader flag:
235
39
    L2LV.Next = L2LV.getNext();
236
39
237
39
    // L2's leader is now L1.
238
39
    L2LV.Leader = &L1LV;
239
39
    return L1;
240
39
  }
241
242
  // isEquivalent - Return true if V1 is equivalent to V2. This can happen if
243
  // V1 is equal to V2 or if they belong to one equivalence class.
244
31.3M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
245
31.3M
    // Fast path: any element is equivalent to itself.
246
31.3M
    if (V1 == V2)
247
45.8k
      return true;
248
31.2M
    auto It = findLeader(V1);
249
31.2M
    return It != member_end() && 
It == findLeader(V2)43.4k
;
250
31.2M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::isEquivalent(llvm::SCEV const* const&, llvm::SCEV const* const&) const
Line
Count
Source
244
28.4M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
245
28.4M
    // Fast path: any element is equivalent to itself.
246
28.4M
    if (V1 == V2)
247
0
      return true;
248
28.4M
    auto It = findLeader(V1);
249
28.4M
    return It != member_end() && 
It == findLeader(V2)38.2k
;
250
28.4M
  }
llvm::EquivalenceClasses<llvm::Value const*>::isEquivalent(llvm::Value const* const&, llvm::Value const* const&) const
Line
Count
Source
244
2.85M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
245
2.85M
    // Fast path: any element is equivalent to itself.
246
2.85M
    if (V1 == V2)
247
45.8k
      return true;
248
2.81M
    auto It = findLeader(V1);
249
2.81M
    return It != member_end() && 
It == findLeader(V2)5.21k
;
250
2.81M
  }
251
252
  class member_iterator : public std::iterator<std::forward_iterator_tag,
253
                                               const ElemTy, ptrdiff_t> {
254
    friend class EquivalenceClasses;
255
256
    using super = std::iterator<std::forward_iterator_tag,
257
                                const ElemTy, ptrdiff_t>;
258
259
    const ECValue *Node;
260
261
  public:
262
    using size_type = size_t;
263
    using pointer = typename super::pointer;
264
    using reference = typename super::reference;
265
266
    explicit member_iterator() = default;
267
70.9M
    explicit member_iterator(const ECValue *N) : Node(N) {}
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator::member_iterator(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue const*)
Line
Count
Source
267
302
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<int>::member_iterator::member_iterator(llvm::EquivalenceClasses<int>::ECValue const*)
Line
Count
Source
267
48.4k
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue const*)
Line
Count
Source
267
387k
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const*)
Line
Count
Source
267
60.0M
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const*)
Line
Count
Source
267
9.84M
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::Value*>::ECValue const*)
Line
Count
Source
267
70.9k
    explicit member_iterator(const ECValue *N) : Node(N) {}
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue const*)
Line
Count
Source
267
1.12k
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const*)
Line
Count
Source
267
597k
    explicit member_iterator(const ECValue *N) : Node(N) {}
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::member_iterator(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue const*)
Line
Count
Source
267
10
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue const*)
Line
Count
Source
267
214
    explicit member_iterator(const ECValue *N) : Node(N) {}
268
269
1.44M
    reference operator*() const {
270
1.44M
      assert(Node != nullptr && "Dereferencing end()!");
271
1.44M
      return Node->getData();
272
1.44M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator::operator*() const
Line
Count
Source
269
119
    reference operator*() const {
270
119
      assert(Node != nullptr && "Dereferencing end()!");
271
119
      return Node->getData();
272
119
    }
llvm::EquivalenceClasses<int>::member_iterator::operator*() const
Line
Count
Source
269
6.44k
    reference operator*() const {
270
6.44k
      assert(Node != nullptr && "Dereferencing end()!");
271
6.44k
      return Node->getData();
272
6.44k
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::operator*() const
Line
Count
Source
269
1.32M
    reference operator*() const {
270
1.32M
      assert(Node != nullptr && "Dereferencing end()!");
271
1.32M
      return Node->getData();
272
1.32M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator*() const
Line
Count
Source
269
49.4k
    reference operator*() const {
270
49.4k
      assert(Node != nullptr && "Dereferencing end()!");
271
49.4k
      return Node->getData();
272
49.4k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator*() const
Line
Count
Source
269
780
    reference operator*() const {
270
780
      assert(Node != nullptr && "Dereferencing end()!");
271
780
      return Node->getData();
272
780
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator*() const
Line
Count
Source
269
67.1k
    reference operator*() const {
270
67.1k
      assert(Node != nullptr && "Dereferencing end()!");
271
67.1k
      return Node->getData();
272
67.1k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::operator*() const
Line
Count
Source
269
2
    reference operator*() const {
270
2
      assert(Node != nullptr && "Dereferencing end()!");
271
2
      return Node->getData();
272
2
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator::operator*() const
Line
Count
Source
269
168
    reference operator*() const {
270
168
      assert(Node != nullptr && "Dereferencing end()!");
271
168
      return Node->getData();
272
168
    }
273
34.1k
    pointer operator->() const { return &operator*(); }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::operator->() const
Line
Count
Source
273
33.3k
    pointer operator->() const { return &operator*(); }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator->() const
Line
Count
Source
273
780
    pointer operator->() const { return &operator*(); }
274
275
401k
    member_iterator &operator++() {
276
401k
      assert(Node != nullptr && "++'d off the end of the list!");
277
401k
      Node = Node->getNext();
278
401k
      return *this;
279
401k
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator::operator++()
Line
Count
Source
275
238
    member_iterator &operator++() {
276
238
      assert(Node != nullptr && "++'d off the end of the list!");
277
238
      Node = Node->getNext();
278
238
      return *this;
279
238
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::operator++()
Line
Count
Source
275
325k
    member_iterator &operator++() {
276
325k
      assert(Node != nullptr && "++'d off the end of the list!");
277
325k
      Node = Node->getNext();
278
325k
      return *this;
279
325k
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator++()
Line
Count
Source
275
22.4k
    member_iterator &operator++() {
276
22.4k
      assert(Node != nullptr && "++'d off the end of the list!");
277
22.4k
      Node = Node->getNext();
278
22.4k
      return *this;
279
22.4k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator++()
Line
Count
Source
275
376
    member_iterator &operator++() {
276
376
      assert(Node != nullptr && "++'d off the end of the list!");
277
376
      Node = Node->getNext();
278
376
      return *this;
279
376
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator++()
Line
Count
Source
275
53.1k
    member_iterator &operator++() {
276
53.1k
      assert(Node != nullptr && "++'d off the end of the list!");
277
53.1k
      Node = Node->getNext();
278
53.1k
      return *this;
279
53.1k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::operator++()
Line
Count
Source
275
4
    member_iterator &operator++() {
276
4
      assert(Node != nullptr && "++'d off the end of the list!");
277
4
      Node = Node->getNext();
278
4
      return *this;
279
4
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator::operator++()
Line
Count
Source
275
112
    member_iterator &operator++() {
276
112
      assert(Node != nullptr && "++'d off the end of the list!");
277
112
      Node = Node->getNext();
278
112
      return *this;
279
112
    }
280
281
57.2k
    member_iterator operator++(int) {    // postincrement operators.
282
57.2k
      member_iterator tmp = *this;
283
57.2k
      ++*this;
284
57.2k
      return tmp;
285
57.2k
    }
286
287
3.98M
    bool operator==(const member_iterator &RHS) const {
288
3.98M
      return Node == RHS.Node;
289
3.98M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator::operator==(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator const&) const
Line
Count
Source
287
32
    bool operator==(const member_iterator &RHS) const {
288
32
      return Node == RHS.Node;
289
32
    }
llvm::EquivalenceClasses<int>::member_iterator::operator==(llvm::EquivalenceClasses<int>::member_iterator const&) const
Line
Count
Source
287
15.6k
    bool operator==(const member_iterator &RHS) const {
288
15.6k
      return Node == RHS.Node;
289
15.6k
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::operator==(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator const&) const
Line
Count
Source
287
73.3k
    bool operator==(const member_iterator &RHS) const {
288
73.3k
      return Node == RHS.Node;
289
73.3k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
287
1.56M
    bool operator==(const member_iterator &RHS) const {
288
1.56M
      return Node == RHS.Node;
289
1.56M
    }
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator const&) const
Line
Count
Source
287
2.11M
    bool operator==(const member_iterator &RHS) const {
288
2.11M
      return Node == RHS.Node;
289
2.11M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Value*>::member_iterator const&) const
Line
Count
Source
287
6.82k
    bool operator==(const member_iterator &RHS) const {
288
6.82k
      return Node == RHS.Node;
289
6.82k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator==(llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator const&) const
Line
Count
Source
287
391
    bool operator==(const member_iterator &RHS) const {
288
391
      return Node == RHS.Node;
289
391
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator const&) const
Line
Count
Source
287
204k
    bool operator==(const member_iterator &RHS) const {
288
204k
      return Node == RHS.Node;
289
204k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::operator==(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator const&) const
Line
Count
Source
287
3
    bool operator==(const member_iterator &RHS) const {
288
3
      return Node == RHS.Node;
289
3
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator const&) const
Line
Count
Source
287
45
    bool operator==(const member_iterator &RHS) const {
288
45
      return Node == RHS.Node;
289
45
    }
290
31.8M
    bool operator!=(const member_iterator &RHS) const {
291
31.8M
      return Node != RHS.Node;
292
31.8M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator::operator!=(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator const&) const
Line
Count
Source
290
460
    bool operator!=(const member_iterator &RHS) const {
291
460
      return Node != RHS.Node;
292
460
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator const&) const
Line
Count
Source
290
373k
    bool operator!=(const member_iterator &RHS) const {
291
373k
      return Node != RHS.Node;
292
373k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
290
28.4M
    bool operator!=(const member_iterator &RHS) const {
291
28.4M
      return Node != RHS.Node;
292
28.4M
    }
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator const&) const
Line
Count
Source
290
2.81M
    bool operator!=(const member_iterator &RHS) const {
291
2.81M
      return Node != RHS.Node;
292
2.81M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Value*>::member_iterator const&) const
Line
Count
Source
290
44.8k
    bool operator!=(const member_iterator &RHS) const {
291
44.8k
      return Node != RHS.Node;
292
44.8k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator const&) const
Line
Count
Source
290
512
    bool operator!=(const member_iterator &RHS) const {
291
512
      return Node != RHS.Node;
292
512
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator const&) const
Line
Count
Source
290
145k
    bool operator!=(const member_iterator &RHS) const {
291
145k
      return Node != RHS.Node;
292
145k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::operator!=(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator const&) const
Line
Count
Source
290
4
    bool operator!=(const member_iterator &RHS) const {
291
4
      return Node != RHS.Node;
292
4
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator const&) const
Line
Count
Source
290
146
    bool operator!=(const member_iterator &RHS) const {
291
146
      return Node != RHS.Node;
292
146
    }
293
  };
294
};
295
296
} // end namespace llvm
297
298
#endif // LLVM_ADT_EQUIVALENCECLASSES_H