Coverage Report

Created: 2018-11-13 17:19

/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.8M
      : 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
44.1k
      : 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
32.0M
      : 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.04M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Value*>::ECValue::ECValue(llvm::Value* const&)
Line
Count
Source
79
25.6k
      : 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
494
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::Instruction* const&)
Line
Count
Source
79
225k
      : 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
8.04M
    const ECValue *getLeader() const {
82
8.04M
      if (isLeader()) 
return this7.72M
;
83
323k
      if (Leader->isLeader()) 
return Leader257k
;
84
66.8k
      // Path compression.
85
66.8k
      return Leader = Leader->getLeader();
86
66.8k
    }
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.6k
    const ECValue *getLeader() const {
82
39.6k
      if (isLeader()) 
return this11.3k
;
83
28.3k
      if (Leader->isLeader()) 
return Leader26.9k
;
84
1.37k
      // Path compression.
85
1.37k
      return Leader = Leader->getLeader();
86
1.37k
    }
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
326k
    const ECValue *getLeader() const {
82
326k
      if (isLeader()) 
return this230k
;
83
96.5k
      if (Leader->isLeader()) 
return Leader61.1k
;
84
35.4k
      // Path compression.
85
35.4k
      return Leader = Leader->getLeader();
86
35.4k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getLeader() const
Line
Count
Source
81
3.19M
    const ECValue *getLeader() const {
82
3.19M
      if (isLeader()) 
return this3.13M
;
83
61.6k
      if (Leader->isLeader()) 
return Leader57.2k
;
84
4.38k
      // Path compression.
85
4.38k
      return Leader = Leader->getLeader();
86
4.38k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getLeader() const
Line
Count
Source
81
4.23M
    const ECValue *getLeader() const {
82
4.23M
      if (isLeader()) 
return this4.22M
;
83
10.1k
      if (Leader->isLeader()) 
return Leader8.02k
;
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
26.4k
    const ECValue *getLeader() const {
82
26.4k
      if (isLeader()) 
return this14.5k
;
83
11.9k
      if (Leader->isLeader()) 
return Leader11.1k
;
84
881
      // Path compression.
85
881
      return Leader = Leader->getLeader();
86
881
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getLeader() const
Line
Count
Source
81
508
    const ECValue *getLeader() const {
82
508
      if (isLeader()) 
return this207
;
83
301
      if (Leader->isLeader()) 
return Leader287
;
84
14
      // Path compression.
85
14
      return Leader = Leader->getLeader();
86
14
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getLeader() const
Line
Count
Source
81
223k
    const ECValue *getLeader() const {
82
223k
      if (isLeader()) 
return this108k
;
83
114k
      if (Leader->isLeader()) 
return Leader92.2k
;
84
22.5k
      // Path compression.
85
22.5k
      return Leader = Leader->getLeader();
86
22.5k
    }
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.67M
    const ECValue *getEndOfList() const {
89
7.67M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
7.67M
      return Leader;
91
7.67M
    }
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.49k
    const ECValue *getEndOfList() const {
89
8.49k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
8.49k
      return Leader;
91
8.49k
    }
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
145k
    const ECValue *getEndOfList() const {
89
145k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
145k
      return Leader;
91
145k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getEndOfList() const
Line
Count
Source
88
4.22M
    const ECValue *getEndOfList() const {
89
4.22M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
4.22M
      return Leader;
91
4.22M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getEndOfList() const
Line
Count
Source
88
3.11M
    const ECValue *getEndOfList() const {
89
3.11M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
3.11M
      return Leader;
91
3.11M
    }
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
258
    const ECValue *getEndOfList() const {
89
258
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
258
      return Leader;
91
258
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getEndOfList() const
Line
Count
Source
88
168k
    const ECValue *getEndOfList() const {
89
168k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
168k
      return Leader;
91
168k
    }
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.83M
    void setNext(const ECValue *NewNext) const {
94
3.83M
      assert(getNext() == nullptr && "Already has a next pointer!");
95
3.83M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
3.83M
    }
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.24k
    void setNext(const ECValue *NewNext) const {
94
4.24k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
4.24k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
4.24k
    }
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.8k
    void setNext(const ECValue *NewNext) const {
94
72.8k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
72.8k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
72.8k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const*) const
Line
Count
Source
93
2.11M
    void setNext(const ECValue *NewNext) const {
94
2.11M
      assert(getNext() == nullptr && "Already has a next pointer!");
95
2.11M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
2.11M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const*) const
Line
Count
Source
93
1.55M
    void setNext(const ECValue *NewNext) const {
94
1.55M
      assert(getNext() == nullptr && "Already has a next pointer!");
95
1.55M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
1.55M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value*>::ECValue const*) const
Line
Count
Source
93
6.03k
    void setNext(const ECValue *NewNext) const {
94
6.03k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
6.03k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
6.03k
    }
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
129
    void setNext(const ECValue *NewNext) const {
94
129
      assert(getNext() == nullptr && "Already has a next pointer!");
95
129
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
129
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const*) const
Line
Count
Source
93
84.3k
    void setNext(const ECValue *NewNext) const {
94
84.3k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
84.3k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
84.3k
    }
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.84M
                                  Data(RHS.Data) {
101
4.84M
      // Only support copying of singleton nodes.
102
4.84M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
4.84M
    }
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.97k
                                  Data(RHS.Data) {
101
5.97k
      // Only support copying of singleton nodes.
102
5.97k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
5.97k
    }
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.48M
                                  Data(RHS.Data) {
101
2.48M
      // Only support copying of singleton nodes.
102
2.48M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
2.48M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const&)
Line
Count
Source
100
2.10M
                                  Data(RHS.Data) {
101
2.10M
      // Only support copying of singleton nodes.
102
2.10M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
2.10M
    }
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
202
                                  Data(RHS.Data) {
101
202
      // Only support copying of singleton nodes.
102
202
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
202
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const&)
Line
Count
Source
100
98.4k
                                  Data(RHS.Data) {
101
98.4k
      // Only support copying of singleton nodes.
102
98.4k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
98.4k
    }
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
213
    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
287k
    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.72M
    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
30.1M
    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.0M
    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
117k
    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.27k
    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.40M
    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.4M
    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
72.2k
    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
544k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::isLeader() const
Line
Count
Source
107
4.81M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::isLeader() const
Line
Count
Source
107
6.35M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::isLeader() const
Line
Count
Source
107
66.8k
    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.28k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::isLeader() const
Line
Count
Source
107
607k
    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.60M
    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.67k
    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.48M
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getData() const
Line
Count
Source
108
48.9k
    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
844
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getData() const
Line
Count
Source
108
67.4k
    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.26M
    const ECValue *getNext() const {
111
4.26M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
4.26M
    }
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.24k
    const ECValue *getNext() const {
111
4.24k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
4.24k
    }
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
425k
    const ECValue *getNext() const {
111
425k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
425k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getNext() const
Line
Count
Source
110
2.11M
    const ECValue *getNext() const {
111
2.11M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
2.11M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getNext() const
Line
Count
Source
110
1.55M
    const ECValue *getNext() const {
111
1.55M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
1.55M
    }
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
533
    const ECValue *getNext() const {
111
533
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
533
    }
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
142M
  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.73k
  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
71.2M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value const*>::EquivalenceClasses()
Line
Count
Source
123
71.2M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value*>::EquivalenceClasses()
Line
Count
Source
123
19.6k
  EquivalenceClasses() = default;
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::EquivalenceClasses()
Line
Count
Source
123
418
  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
23
  EquivalenceClasses() = default;
124
118
  EquivalenceClasses(const EquivalenceClasses &RHS) {
125
118
    operator=(RHS);
126
118
  }
127
128
279k
  const EquivalenceClasses &operator=(const EquivalenceClasses &RHS) {
129
279k
    TheMapping.clear();
130
279k
    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
279k
    return *this;
138
279k
  }
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
559k
  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
910
  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
61
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::Instruction*>::begin() const
Line
Count
Source
147
558k
  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
23
  iterator begin() const { return TheMapping.begin(); }
148
566k
  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
910
  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
61
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::Instruction*>::end() const
Line
Count
Source
148
565k
  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
23
  iterator end() const { return TheMapping.end(); }
149
150
439
  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
418
  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.2k
:
nullptr181k
);
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.5k
  member_iterator member_begin(iterator I) const {
155
48.5k
    // Only leaders provide anything to iterate over.
156
48.5k
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
157
48.5k
  }
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.3k
  member_iterator member_begin(iterator I) const {
155
22.3k
    // Only leaders provide anything to iterate over.
156
22.3k
    return member_iterator(I->isLeader() ? 
&*I4.29k
:
nullptr18.0k
);
157
22.3k
  }
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
146
  member_iterator member_begin(iterator I) const {
155
146
    // Only leaders provide anything to iterate over.
156
146
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
157
146
  }
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
184k
  member_iterator member_begin(iterator I) const {
155
184k
    // Only leaders provide anything to iterate over.
156
184k
    return member_iterator(I->isLeader() ? 
&*I21.1k
:
nullptr163k
);
157
184k
  }
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
63.5M
  member_iterator member_end() const {
159
63.5M
    return member_iterator(nullptr);
160
63.5M
  }
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.5k
  member_iterator member_end() const {
159
48.5k
    return member_iterator(nullptr);
160
48.5k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_end() const
Line
Count
Source
158
57.6M
  member_iterator member_end() const {
159
57.6M
    return member_iterator(nullptr);
160
57.6M
  }
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.3k
  member_iterator member_end() const {
159
22.3k
    return member_iterator(nullptr);
160
22.3k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_end() const
Line
Count
Source
158
550
  member_iterator member_end() const {
159
550
    return member_iterator(nullptr);
160
550
  }
llvm::EquivalenceClasses<llvm::Instruction*>::member_end() const
Line
Count
Source
158
214k
  member_iterator member_end() const {
159
214k
    return member_iterator(nullptr);
160
214k
  }
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.6k
  iterator findValue(const ElemTy &V) const {
165
55.6k
    return TheMapping.find(V);
166
55.6k
  }
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.5k
  iterator findValue(const ElemTy &V) const {
165
48.5k
    return TheMapping.find(V);
166
48.5k
  }
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
154k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
154k
    member_iterator MI = findLeader(V);
173
154k
    assert(MI != member_end() && "Value is not in the set!");
174
154k
    return *MI;
175
154k
  }
llvm::EquivalenceClasses<int>::getLeaderValue(int const&) const
Line
Count
Source
171
6.67k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
6.67k
    member_iterator MI = findLeader(V);
173
6.67k
    assert(MI != member_end() && "Value is not in the set!");
174
6.67k
    return *MI;
175
6.67k
  }
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
11.9k
  const ElemTy &getOrInsertLeaderValue(const ElemTy &V) {
181
11.9k
    member_iterator MI = findLeader(insert(V));
182
11.9k
    assert(MI != member_end() && "Value is not in the set!");
183
11.9k
    return *MI;
184
11.9k
  }
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.93M
  iterator insert(const ElemTy &Data) {
201
7.93M
    return TheMapping.insert(ECValue(Data)).first;
202
7.93M
  }
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.8k
  iterator insert(const ElemTy &Data) {
201
15.8k
    return TheMapping.insert(ECValue(Data)).first;
202
15.8k
  }
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.22M
  iterator insert(const ElemTy &Data) {
201
4.22M
    return TheMapping.insert(ECValue(Data)).first;
202
4.22M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::insert(llvm::SCEV const* const&)
Line
Count
Source
200
3.11M
  iterator insert(const ElemTy &Data) {
201
3.11M
    return TheMapping.insert(ECValue(Data)).first;
202
3.11M
  }
llvm::EquivalenceClasses<llvm::Value*>::insert(llvm::Value* const&)
Line
Count
Source
200
25.6k
  iterator insert(const ElemTy &Data) {
201
25.6k
    return TheMapping.insert(ECValue(Data)).first;
202
25.6k
  }
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
494
  iterator insert(const ElemTy &Data) {
201
494
    return TheMapping.insert(ECValue(Data)).first;
202
494
  }
llvm::EquivalenceClasses<llvm::Instruction*>::insert(llvm::Instruction* const&)
Line
Count
Source
200
196k
  iterator insert(const ElemTy &Data) {
201
196k
    return TheMapping.insert(ECValue(Data)).first;
202
196k
  }
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.6M
  member_iterator findLeader(iterator I) const {
209
39.6M
    if (I == TheMapping.end()) 
return member_end()31.6M
;
210
7.97M
    return member_iterator(I->getLeader());
211
7.97M
  }
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
38.2k
  member_iterator findLeader(iterator I) const {
209
38.2k
    if (I == TheMapping.end()) 
return member_end()6
;
210
38.2k
    return member_iterator(I->getLeader());
211
38.2k
  }
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
291k
  member_iterator findLeader(iterator I) const {
209
291k
    if (I == TheMapping.end()) 
return member_end()0
;
210
291k
    return member_iterator(I->getLeader());
211
291k
  }
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
32.0M
  member_iterator findLeader(iterator I) const {
209
32.0M
    if (I == TheMapping.end()) 
return member_end()28.8M
;
210
3.18M
    return member_iterator(I->getLeader());
211
3.18M
  }
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.04M
  member_iterator findLeader(iterator I) const {
209
7.04M
    if (I == TheMapping.end()) 
return member_end()2.80M
;
210
4.23M
    return member_iterator(I->getLeader());
211
4.23M
  }
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
25.6k
  member_iterator findLeader(iterator I) const {
209
25.6k
    if (I == TheMapping.end()) 
return member_end()0
;
210
25.6k
    return member_iterator(I->getLeader());
211
25.6k
  }
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
494
  member_iterator findLeader(iterator I) const {
209
494
    if (I == TheMapping.end()) 
return member_end()0
;
210
494
    return member_iterator(I->getLeader());
211
494
  }
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
212k
  member_iterator findLeader(iterator I) const {
209
212k
    if (I == TheMapping.end()) 
return member_end()11.8k
;
210
200k
    return member_iterator(I->getLeader());
211
200k
  }
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.8M
  member_iterator findLeader(const ElemTy &V) const {
213
31.8M
    return findLeader(TheMapping.find(V));
214
31.8M
  }
llvm::EquivalenceClasses<int>::findLeader(int const&) const
Line
Count
Source
212
28.2k
  member_iterator findLeader(const ElemTy &V) const {
213
28.2k
    return findLeader(TheMapping.find(V));
214
28.2k
  }
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.8M
  member_iterator findLeader(const ElemTy &V) const {
213
28.8M
    return findLeader(TheMapping.find(V));
214
28.8M
  }
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.85M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
3.85M
    iterator V1I = insert(V1), V2I = insert(V2);
220
3.85M
    return unionSets(findLeader(V1I), findLeader(V2I));
221
3.85M
  }
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
5.00k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
5.00k
    iterator V1I = insert(V1), V2I = insert(V2);
220
5.00k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
5.00k
  }
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.8k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
73.8k
    iterator V1I = insert(V1), V2I = insert(V2);
220
73.8k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
73.8k
  }
llvm::EquivalenceClasses<llvm::Value const*>::unionSets(llvm::Value const* const&, llvm::Value const* const&)
Line
Count
Source
218
2.11M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
2.11M
    iterator V1I = insert(V1), V2I = insert(V2);
220
2.11M
    return unionSets(findLeader(V1I), findLeader(V2I));
221
2.11M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::unionSets(llvm::SCEV const* const&, llvm::SCEV const* const&)
Line
Count
Source
218
1.55M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
1.55M
    iterator V1I = insert(V1), V2I = insert(V2);
220
1.55M
    return unionSets(findLeader(V1I), findLeader(V2I));
221
1.55M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::Value* const&, llvm::Value* const&)
Line
Count
Source
218
6.80k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
6.80k
    iterator V1I = insert(V1), V2I = insert(V2);
220
6.80k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
6.80k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::Instruction* const&, llvm::Instruction* const&)
Line
Count
Source
218
95.2k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
95.2k
    iterator V1I = insert(V1), V2I = insert(V2);
220
95.2k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
95.2k
  }
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.85M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
3.85M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
3.85M
    if (L1 == L2) 
return L113.6k
; // Unifying the same two sets, noop.
225
3.83M
226
3.83M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
3.83M
    // point to the L2 leader node.
228
3.83M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
3.83M
    L1LV.getEndOfList()->setNext(&L2LV);
230
3.83M
231
3.83M
    // Update L1LV's end of list pointer.
232
3.83M
    L1LV.Leader = L2LV.getEndOfList();
233
3.83M
234
3.83M
    // Clear L2's leader flag:
235
3.83M
    L2LV.Next = L2LV.getNext();
236
3.83M
237
3.83M
    // L2's leader is now L1.
238
3.83M
    L2LV.Leader = &L1LV;
239
3.83M
    return L1;
240
3.83M
  }
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
5.00k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
5.00k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
5.00k
    if (L1 == L2) 
return L1763
; // Unifying the same two sets, noop.
225
4.24k
226
4.24k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
4.24k
    // point to the L2 leader node.
228
4.24k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
4.24k
    L1LV.getEndOfList()->setNext(&L2LV);
230
4.24k
231
4.24k
    // Update L1LV's end of list pointer.
232
4.24k
    L1LV.Leader = L2LV.getEndOfList();
233
4.24k
234
4.24k
    // Clear L2's leader flag:
235
4.24k
    L2LV.Next = L2LV.getNext();
236
4.24k
237
4.24k
    // L2's leader is now L1.
238
4.24k
    L2LV.Leader = &L1LV;
239
4.24k
    return L1;
240
4.24k
  }
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.8k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
73.8k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
73.8k
    if (L1 == L2) 
return L1975
; // Unifying the same two sets, noop.
225
72.8k
226
72.8k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
72.8k
    // point to the L2 leader node.
228
72.8k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
72.8k
    L1LV.getEndOfList()->setNext(&L2LV);
230
72.8k
231
72.8k
    // Update L1LV's end of list pointer.
232
72.8k
    L1LV.Leader = L2LV.getEndOfList();
233
72.8k
234
72.8k
    // Clear L2's leader flag:
235
72.8k
    L2LV.Next = L2LV.getNext();
236
72.8k
237
72.8k
    // L2's leader is now L1.
238
72.8k
    L2LV.Leader = &L1LV;
239
72.8k
    return L1;
240
72.8k
  }
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.11M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
2.11M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
2.11M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
225
2.11M
226
2.11M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
2.11M
    // point to the L2 leader node.
228
2.11M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
2.11M
    L1LV.getEndOfList()->setNext(&L2LV);
230
2.11M
231
2.11M
    // Update L1LV's end of list pointer.
232
2.11M
    L1LV.Leader = L2LV.getEndOfList();
233
2.11M
234
2.11M
    // Clear L2's leader flag:
235
2.11M
    L2LV.Next = L2LV.getNext();
236
2.11M
237
2.11M
    // L2's leader is now L1.
238
2.11M
    L2LV.Leader = &L1LV;
239
2.11M
    return L1;
240
2.11M
  }
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.55M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
1.55M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
1.55M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
225
1.55M
226
1.55M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
1.55M
    // point to the L2 leader node.
228
1.55M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
1.55M
    L1LV.getEndOfList()->setNext(&L2LV);
230
1.55M
231
1.55M
    // Update L1LV's end of list pointer.
232
1.55M
    L1LV.Leader = L2LV.getEndOfList();
233
1.55M
234
1.55M
    // Clear L2's leader flag:
235
1.55M
    L2LV.Next = L2LV.getNext();
236
1.55M
237
1.55M
    // L2's leader is now L1.
238
1.55M
    L2LV.Leader = &L1LV;
239
1.55M
    return L1;
240
1.55M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::EquivalenceClasses<llvm::Value*>::member_iterator, llvm::EquivalenceClasses<llvm::Value*>::member_iterator)
Line
Count
Source
222
6.80k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
6.80k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
6.80k
    if (L1 == L2) 
return L1778
; // Unifying the same two sets, noop.
225
6.03k
226
6.03k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
6.03k
    // point to the L2 leader node.
228
6.03k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
6.03k
    L1LV.getEndOfList()->setNext(&L2LV);
230
6.03k
231
6.03k
    // Update L1LV's end of list pointer.
232
6.03k
    L1LV.Leader = L2LV.getEndOfList();
233
6.03k
234
6.03k
    // Clear L2's leader flag:
235
6.03k
    L2LV.Next = L2LV.getNext();
236
6.03k
237
6.03k
    // L2's leader is now L1.
238
6.03k
    L2LV.Leader = &L1LV;
239
6.03k
    return L1;
240
6.03k
  }
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
402
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
402
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
402
    if (L1 == L2) 
return L1273
; // Unifying the same two sets, noop.
225
129
226
129
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
129
    // point to the L2 leader node.
228
129
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
129
    L1LV.getEndOfList()->setNext(&L2LV);
230
129
231
129
    // Update L1LV's end of list pointer.
232
129
    L1LV.Leader = L2LV.getEndOfList();
233
129
234
129
    // Clear L2's leader flag:
235
129
    L2LV.Next = L2LV.getNext();
236
129
237
129
    // L2's leader is now L1.
238
129
    L2LV.Leader = &L1LV;
239
129
    return L1;
240
129
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator, llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator)
Line
Count
Source
222
95.2k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
95.2k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
95.2k
    if (L1 == L2) 
return L110.8k
; // Unifying the same two sets, noop.
225
84.3k
226
84.3k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
84.3k
    // point to the L2 leader node.
228
84.3k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
84.3k
    L1LV.getEndOfList()->setNext(&L2LV);
230
84.3k
231
84.3k
    // Update L1LV's end of list pointer.
232
84.3k
    L1LV.Leader = L2LV.getEndOfList();
233
84.3k
234
84.3k
    // Clear L2's leader flag:
235
84.3k
    L2LV.Next = L2LV.getNext();
236
84.3k
237
84.3k
    // L2's leader is now L1.
238
84.3k
    L2LV.Leader = &L1LV;
239
84.3k
    return L1;
240
84.3k
  }
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.7M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
245
31.7M
    // Fast path: any element is equivalent to itself.
246
31.7M
    if (V1 == V2)
247
47.5k
      return true;
248
31.6M
    auto It = findLeader(V1);
249
31.6M
    return It != member_end() && 
It == findLeader(V2)43.4k
;
250
31.6M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::isEquivalent(llvm::SCEV const* const&, llvm::SCEV const* const&) const
Line
Count
Source
244
28.8M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
245
28.8M
    // Fast path: any element is equivalent to itself.
246
28.8M
    if (V1 == V2)
247
0
      return true;
248
28.8M
    auto It = findLeader(V1);
249
28.8M
    return It != member_end() && 
It == findLeader(V2)38.2k
;
250
28.8M
  }
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
47.5k
      return true;
248
2.81M
    auto It = findLeader(V1);
249
2.81M
    return It != member_end() && 
It == findLeader(V2)5.19k
;
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
71.8M
    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
49.0k
    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
388k
    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.8M
    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.85M
    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.3k
    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.19k
    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
599k
    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.60M
    reference operator*() const {
270
1.60M
      assert(Node != nullptr && "Dereferencing end()!");
271
1.60M
      return Node->getData();
272
1.60M
    }
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.67k
    reference operator*() const {
270
6.67k
      assert(Node != nullptr && "Dereferencing end()!");
271
6.67k
      return Node->getData();
272
6.67k
    }
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.48M
    reference operator*() const {
270
1.48M
      assert(Node != nullptr && "Dereferencing end()!");
271
1.48M
      return Node->getData();
272
1.48M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator*() const
Line
Count
Source
269
48.9k
    reference operator*() const {
270
48.9k
      assert(Node != nullptr && "Dereferencing end()!");
271
48.9k
      return Node->getData();
272
48.9k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator*() const
Line
Count
Source
269
844
    reference operator*() const {
270
844
      assert(Node != nullptr && "Dereferencing end()!");
271
844
      return Node->getData();
272
844
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator*() const
Line
Count
Source
269
67.4k
    reference operator*() const {
270
67.4k
      assert(Node != nullptr && "Dereferencing end()!");
271
67.4k
      return Node->getData();
272
67.4k
    }
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.5k
    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.6k
    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
844
    pointer operator->() const { return &operator*(); }
274
275
428k
    member_iterator &operator++() {
276
428k
      assert(Node != nullptr && "++'d off the end of the list!");
277
428k
      Node = Node->getNext();
278
428k
      return *this;
279
428k
    }
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
352k
    member_iterator &operator++() {
276
352k
      assert(Node != nullptr && "++'d off the end of the list!");
277
352k
      Node = Node->getNext();
278
352k
      return *this;
279
352k
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator++()
Line
Count
Source
275
22.3k
    member_iterator &operator++() {
276
22.3k
      assert(Node != nullptr && "++'d off the end of the list!");
277
22.3k
      Node = Node->getNext();
278
22.3k
      return *this;
279
22.3k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator++()
Line
Count
Source
275
404
    member_iterator &operator++() {
276
404
      assert(Node != nullptr && "++'d off the end of the list!");
277
404
      Node = Node->getNext();
278
404
      return *this;
279
404
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator++()
Line
Count
Source
275
53.3k
    member_iterator &operator++() {
276
53.3k
      assert(Node != nullptr && "++'d off the end of the list!");
277
53.3k
      Node = Node->getNext();
278
53.3k
      return *this;
279
53.3k
    }
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.7k
    member_iterator operator++(int) {    // postincrement operators.
282
57.7k
      member_iterator tmp = *this;
283
57.7k
      ++*this;
284
57.7k
      return tmp;
285
57.7k
    }
286
287
4.01M
    bool operator==(const member_iterator &RHS) const {
288
4.01M
      return Node == RHS.Node;
289
4.01M
    }
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.8k
    bool operator==(const member_iterator &RHS) const {
288
15.8k
      return Node == RHS.Node;
289
15.8k
    }
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.8k
    bool operator==(const member_iterator &RHS) const {
288
73.8k
      return Node == RHS.Node;
289
73.8k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
287
1.59M
    bool operator==(const member_iterator &RHS) const {
288
1.59M
      return Node == RHS.Node;
289
1.59M
    }
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.80k
    bool operator==(const member_iterator &RHS) const {
288
6.80k
      return Node == RHS.Node;
289
6.80k
    }
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
402
    bool operator==(const member_iterator &RHS) const {
288
402
      return Node == RHS.Node;
289
402
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator const&) const
Line
Count
Source
287
205k
    bool operator==(const member_iterator &RHS) const {
288
205k
      return Node == RHS.Node;
289
205k
    }
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
32.2M
    bool operator!=(const member_iterator &RHS) const {
291
32.2M
      return Node != RHS.Node;
292
32.2M
    }
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
400k
    bool operator!=(const member_iterator &RHS) const {
291
400k
      return Node != RHS.Node;
292
400k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
290
28.8M
    bool operator!=(const member_iterator &RHS) const {
291
28.8M
      return Node != RHS.Node;
292
28.8M
    }
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.7k
    bool operator!=(const member_iterator &RHS) const {
291
44.7k
      return Node != RHS.Node;
292
44.7k
    }
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
550
    bool operator!=(const member_iterator &RHS) const {
291
550
      return Node != RHS.Node;
292
550
    }
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