Coverage Report

Created: 2018-07-19 03:59

/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
37.0M
      : 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
41.8k
      : 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
530k
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::ECValue(llvm::SCEV const* const&)
Line
Count
Source
79
29.3M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::ECValue(llvm::Value const* const&)
Line
Count
Source
79
6.87M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Value*>::ECValue::ECValue(llvm::Value* const&)
Line
Count
Source
79
25.4k
      : 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
456
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::Instruction* const&)
Line
Count
Source
79
220k
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::ECValue((anonymous namespace)::InstPartition* const&)
Line
Count
Source
79
6
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::ECValue(llvm::GlobalValue const* const&)
Line
Count
Source
79
90
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
80
81
7.70M
    const ECValue *getLeader() const {
82
7.70M
      if (isLeader()) 
return this7.39M
;
83
305k
      if (Leader->isLeader()) 
return Leader240k
;
84
64.9k
      // Path compression.
85
64.9k
      return Leader = Leader->getLeader();
86
64.9k
    }
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
37.8k
    const ECValue *getLeader() const {
82
37.8k
      if (isLeader()) 
return this10.5k
;
83
27.2k
      if (Leader->isLeader()) 
return Leader26.0k
;
84
1.25k
      // Path compression.
85
1.25k
      return Leader = Leader->getLeader();
86
1.25k
    }
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
314k
    const ECValue *getLeader() const {
82
314k
      if (isLeader()) 
return this222k
;
83
92.1k
      if (Leader->isLeader()) 
return Leader58.0k
;
84
34.1k
      // Path compression.
85
34.1k
      return Leader = Leader->getLeader();
86
34.1k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getLeader() const
Line
Count
Source
81
2.96M
    const ECValue *getLeader() const {
82
2.96M
      if (isLeader()) 
return this2.91M
;
83
51.0k
      if (Leader->isLeader()) 
return Leader46.8k
;
84
4.22k
      // Path compression.
85
4.22k
      return Leader = Leader->getLeader();
86
4.22k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getLeader() const
Line
Count
Source
81
4.13M
    const ECValue *getLeader() const {
82
4.13M
      if (isLeader()) 
return this4.12M
;
83
10.2k
      if (Leader->isLeader()) 
return Leader8.11k
;
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.3k
    const ECValue *getLeader() const {
82
26.3k
      if (isLeader()) 
return this14.4k
;
83
11.9k
      if (Leader->isLeader()) 
return Leader11.0k
;
84
884
      // Path compression.
85
884
      return Leader = Leader->getLeader();
86
884
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getLeader() const
Line
Count
Source
81
468
    const ECValue *getLeader() const {
82
468
      if (isLeader()) 
return this173
;
83
295
      if (Leader->isLeader()) 
return Leader283
;
84
12
      // Path compression.
85
12
      return Leader = Leader->getLeader();
86
12
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getLeader() const
Line
Count
Source
81
218k
    const ECValue *getLeader() const {
82
218k
      if (isLeader()) 
return this105k
;
83
112k
      if (Leader->isLeader()) 
return Leader90.1k
;
84
22.3k
      // Path compression.
85
22.3k
      return Leader = Leader->getLeader();
86
22.3k
    }
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.35M
    const ECValue *getEndOfList() const {
89
7.35M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
7.35M
      return Leader;
91
7.35M
    }
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
7.59k
    const ECValue *getEndOfList() const {
89
7.59k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
7.59k
      return Leader;
91
7.59k
    }
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
141k
    const ECValue *getEndOfList() const {
89
141k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
141k
      return Leader;
91
141k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getEndOfList() const
Line
Count
Source
88
4.12M
    const ECValue *getEndOfList() const {
89
4.12M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
4.12M
      return Leader;
91
4.12M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getEndOfList() const
Line
Count
Source
88
2.90M
    const ECValue *getEndOfList() const {
89
2.90M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
2.90M
      return Leader;
91
2.90M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getEndOfList() const
Line
Count
Source
88
11.9k
    const ECValue *getEndOfList() const {
89
11.9k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
11.9k
      return Leader;
91
11.9k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getEndOfList() const
Line
Count
Source
88
220
    const ECValue *getEndOfList() const {
89
220
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
220
      return Leader;
91
220
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getEndOfList() const
Line
Count
Source
88
164k
    const ECValue *getEndOfList() const {
89
164k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
90
164k
      return Leader;
91
164k
    }
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.67M
    void setNext(const ECValue *NewNext) const {
94
3.67M
      assert(getNext() == nullptr && "Already has a next pointer!");
95
3.67M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
3.67M
    }
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
3.79k
    void setNext(const ECValue *NewNext) const {
94
3.79k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
3.79k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
3.79k
    }
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
70.5k
    void setNext(const ECValue *NewNext) const {
94
70.5k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
70.5k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
70.5k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const*) const
Line
Count
Source
93
2.06M
    void setNext(const ECValue *NewNext) const {
94
2.06M
      assert(getNext() == nullptr && "Already has a next pointer!");
95
2.06M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
2.06M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const*) const
Line
Count
Source
93
1.45M
    void setNext(const ECValue *NewNext) const {
94
1.45M
      assert(getNext() == nullptr && "Already has a next pointer!");
95
1.45M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
1.45M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value*>::ECValue const*) const
Line
Count
Source
93
5.97k
    void setNext(const ECValue *NewNext) const {
94
5.97k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
5.97k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
5.97k
    }
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
110
    void setNext(const ECValue *NewNext) const {
94
110
      assert(getNext() == nullptr && "Already has a next pointer!");
95
110
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
110
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const*) const
Line
Count
Source
93
82.3k
    void setNext(const ECValue *NewNext) const {
94
82.3k
      assert(getNext() == nullptr && "Already has a next pointer!");
95
82.3k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
96
82.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.55M
                                  Data(RHS.Data) {
101
4.55M
      // Only support copying of singleton nodes.
102
4.55M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
4.55M
    }
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.36k
                                  Data(RHS.Data) {
101
5.36k
      // Only support copying of singleton nodes.
102
5.36k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
5.36k
    }
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
142k
                                  Data(RHS.Data) {
101
142k
      // Only support copying of singleton nodes.
102
142k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
142k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const&)
Line
Count
Source
100
2.39M
                                  Data(RHS.Data) {
101
2.39M
      // Only support copying of singleton nodes.
102
2.39M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
2.39M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const&)
Line
Count
Source
100
1.90M
                                  Data(RHS.Data) {
101
1.90M
      // Only support copying of singleton nodes.
102
1.90M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
1.90M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Value*>::ECValue const&)
Line
Count
Source
100
7.39k
                                  Data(RHS.Data) {
101
7.39k
      // Only support copying of singleton nodes.
102
7.39k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
7.39k
    }
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
172
                                  Data(RHS.Data) {
101
172
      // Only support copying of singleton nodes.
102
172
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
172
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const&)
Line
Count
Source
100
96.0k
                                  Data(RHS.Data) {
101
96.0k
      // Only support copying of singleton nodes.
102
96.0k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
103
96.0k
    }
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
84.1M
    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
212
    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
276k
    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.60M
    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
28.8M
    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
50.9M
    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
118k
    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.18k
    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.37M
    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
237
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
106
107
11.9M
    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
68.9k
    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
523k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::isLeader() const
Line
Count
Source
107
4.46M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::isLeader() const
Line
Count
Source
107
6.21M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::isLeader() const
Line
Count
Source
107
66.4k
    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.16k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::isLeader() const
Line
Count
Source
107
592k
    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.39M
    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
5.99k
    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.27M
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getData() const
Line
Count
Source
108
48.5k
    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
712
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getData() const
Line
Count
Source
108
66.2k
    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.06M
    const ECValue *getNext() const {
111
4.06M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
4.06M
    }
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
3.79k
    const ECValue *getNext() const {
111
3.79k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
3.79k
    }
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
380k
    const ECValue *getNext() const {
111
380k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
380k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getNext() const
Line
Count
Source
110
2.06M
    const ECValue *getNext() const {
111
2.06M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
2.06M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getNext() const
Line
Count
Source
110
1.45M
    const ECValue *getNext() const {
111
1.45M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
1.45M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getNext() const
Line
Count
Source
110
28.1k
    const ECValue *getNext() const {
111
28.1k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
28.1k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getNext() const
Line
Count
Source
110
454
    const ECValue *getNext() const {
111
454
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
454
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getNext() const
Line
Count
Source
110
134k
    const ECValue *getNext() const {
111
134k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
112
134k
    }
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
134M
  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.62k
  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
54.6k
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::SCEV const*>::EquivalenceClasses()
Line
Count
Source
123
67.0M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value const*>::EquivalenceClasses()
Line
Count
Source
123
67.0M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value*>::EquivalenceClasses()
Line
Count
Source
123
18.8k
  EquivalenceClasses() = default;
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::EquivalenceClasses()
Line
Count
Source
123
357
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Instruction*>::EquivalenceClasses()
Line
Count
Source
123
294k
  EquivalenceClasses() = default;
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::EquivalenceClasses()
Line
Count
Source
123
21
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::GlobalValue const*>::EquivalenceClasses()
Line
Count
Source
123
22
  EquivalenceClasses() = default;
124
104
  EquivalenceClasses(const EquivalenceClasses &RHS) {
125
104
    operator=(RHS);
126
104
  }
127
128
276k
  const EquivalenceClasses &operator=(const EquivalenceClasses &RHS) {
129
276k
    TheMapping.clear();
130
276k
    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
276k
    return *this;
138
276k
  }
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
554k
  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
900
  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
53
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::Instruction*>::begin() const
Line
Count
Source
147
552k
  iterator begin() const { return TheMapping.begin(); }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::begin() const
Line
Count
Source
147
2
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::begin() const
Line
Count
Source
147
22
  iterator begin() const { return TheMapping.begin(); }
148
561k
  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
900
  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
53
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::Instruction*>::end() const
Line
Count
Source
148
559k
  iterator end() const { return TheMapping.end(); }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::end() const
Line
Count
Source
148
2
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::end() const
Line
Count
Source
148
22
  iterator end() const { return TheMapping.end(); }
149
150
378
  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
357
  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
248k
  member_iterator member_begin(iterator I) const {
155
248k
    // Only leaders provide anything to iterate over.
156
248k
    return member_iterator(I->isLeader() ? 
&*I71.0k
:
nullptr177k
);
157
248k
  }
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
45.9k
  member_iterator member_begin(iterator I) const {
155
45.9k
    // Only leaders provide anything to iterate over.
156
45.9k
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
157
45.9k
  }
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.1k
  member_iterator member_begin(iterator I) const {
155
22.1k
    // Only leaders provide anything to iterate over.
156
22.1k
    return member_iterator(I->isLeader() ? 
&*I4.25k
:
nullptr17.9k
);
157
22.1k
  }
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
124
  member_iterator member_begin(iterator I) const {
155
124
    // Only leaders provide anything to iterate over.
156
124
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
157
124
  }
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
180k
  member_iterator member_begin(iterator I) const {
155
180k
    // Only leaders provide anything to iterate over.
156
180k
    return member_iterator(I->isLeader() ? 
&*I20.5k
:
nullptr159k
);
157
180k
  }
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
58.5M
  member_iterator member_end() const {
159
58.5M
    return member_iterator(nullptr);
160
58.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
45.9k
  member_iterator member_end() const {
159
45.9k
    return member_iterator(nullptr);
160
45.9k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_end() const
Line
Count
Source
158
52.7M
  member_iterator member_end() const {
159
52.7M
    return member_iterator(nullptr);
160
52.7M
  }
llvm::EquivalenceClasses<llvm::Value const*>::member_end() const
Line
Count
Source
158
5.48M
  member_iterator member_end() const {
159
5.48M
    return member_iterator(nullptr);
160
5.48M
  }
llvm::EquivalenceClasses<llvm::Value*>::member_end() const
Line
Count
Source
158
22.1k
  member_iterator member_end() const {
159
22.1k
    return member_iterator(nullptr);
160
22.1k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_end() const
Line
Count
Source
158
468
  member_iterator member_end() const {
159
468
    return member_iterator(nullptr);
160
468
  }
llvm::EquivalenceClasses<llvm::Instruction*>::member_end() const
Line
Count
Source
158
209k
  member_iterator member_end() const {
159
209k
    return member_iterator(nullptr);
160
209k
  }
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
53.1k
  iterator findValue(const ElemTy &V) const {
165
53.1k
    return TheMapping.find(V);
166
53.1k
  }
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
45.9k
  iterator findValue(const ElemTy &V) const {
165
45.9k
    return TheMapping.find(V);
166
45.9k
  }
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
147k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
147k
    member_iterator MI = findLeader(V);
173
147k
    assert(MI != member_end() && "Value is not in the set!");
174
147k
    return *MI;
175
147k
  }
llvm::EquivalenceClasses<int>::getLeaderValue(int const&) const
Line
Count
Source
171
5.99k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
5.99k
    member_iterator MI = findLeader(V);
173
5.99k
    assert(MI != member_end() && "Value is not in the set!");
174
5.99k
    return *MI;
175
5.99k
  }
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
137k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
137k
    member_iterator MI = findLeader(V);
173
137k
    assert(MI != member_end() && "Value is not in the set!");
174
137k
    return *MI;
175
137k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::getLeaderValue(llvm::Instruction* const&) const
Line
Count
Source
171
3.89k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
172
3.89k
    member_iterator MI = findLeader(V);
173
3.89k
    assert(MI != member_end() && "Value is not in the set!");
174
3.89k
    return *MI;
175
3.89k
  }
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.60M
  iterator insert(const ElemTy &Data) {
201
7.60M
    return TheMapping.insert(ECValue(Data)).first;
202
7.60M
  }
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
14.2k
  iterator insert(const ElemTy &Data) {
201
14.2k
    return TheMapping.insert(ECValue(Data)).first;
202
14.2k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::insert(llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > const&)
Line
Count
Source
200
346k
  iterator insert(const ElemTy &Data) {
201
346k
    return TheMapping.insert(ECValue(Data)).first;
202
346k
  }
llvm::EquivalenceClasses<llvm::Value const*>::insert(llvm::Value const* const&)
Line
Count
Source
200
4.12M
  iterator insert(const ElemTy &Data) {
201
4.12M
    return TheMapping.insert(ECValue(Data)).first;
202
4.12M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::insert(llvm::SCEV const* const&)
Line
Count
Source
200
2.90M
  iterator insert(const ElemTy &Data) {
201
2.90M
    return TheMapping.insert(ECValue(Data)).first;
202
2.90M
  }
llvm::EquivalenceClasses<llvm::Value*>::insert(llvm::Value* const&)
Line
Count
Source
200
25.4k
  iterator insert(const ElemTy &Data) {
201
25.4k
    return TheMapping.insert(ECValue(Data)).first;
202
25.4k
  }
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
456
  iterator insert(const ElemTy &Data) {
201
456
    return TheMapping.insert(ECValue(Data)).first;
202
456
  }
llvm::EquivalenceClasses<llvm::Instruction*>::insert(llvm::Instruction* const&)
Line
Count
Source
200
191k
  iterator insert(const ElemTy &Data) {
201
191k
    return TheMapping.insert(ECValue(Data)).first;
202
191k
  }
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
36.7M
  member_iterator findLeader(iterator I) const {
209
36.7M
    if (I == TheMapping.end()) 
return member_end()29.1M
;
210
7.63M
    return member_iterator(I->getLeader());
211
7.63M
  }
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
36.6k
  member_iterator findLeader(iterator I) const {
209
36.6k
    if (I == TheMapping.end()) 
return member_end()6
;
210
36.6k
    return member_iterator(I->getLeader());
211
36.6k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue, void*>*, long>) const
Line
Count
Source
208
280k
  member_iterator findLeader(iterator I) const {
209
280k
    if (I == TheMapping.end()) 
return member_end()0
;
210
280k
    return member_iterator(I->getLeader());
211
280k
  }
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
29.3M
  member_iterator findLeader(iterator I) const {
209
29.3M
    if (I == TheMapping.end()) 
return member_end()26.3M
;
210
2.96M
    return member_iterator(I->getLeader());
211
2.96M
  }
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
6.87M
  member_iterator findLeader(iterator I) const {
209
6.87M
    if (I == TheMapping.end()) 
return member_end()2.74M
;
210
4.13M
    return member_iterator(I->getLeader());
211
4.13M
  }
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.4k
  member_iterator findLeader(iterator I) const {
209
25.4k
    if (I == TheMapping.end()) 
return member_end()0
;
210
25.4k
    return member_iterator(I->getLeader());
211
25.4k
  }
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
456
  member_iterator findLeader(iterator I) const {
209
456
    if (I == TheMapping.end()) 
return member_end()0
;
210
456
    return member_iterator(I->getLeader());
211
456
  }
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
207k
  member_iterator findLeader(iterator I) const {
209
207k
    if (I == TheMapping.end()) 
return member_end()11.8k
;
210
195k
    return member_iterator(I->getLeader());
211
195k
  }
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
29.3M
  member_iterator findLeader(const ElemTy &V) const {
213
29.3M
    return findLeader(TheMapping.find(V));
214
29.3M
  }
llvm::EquivalenceClasses<int>::findLeader(int const&) const
Line
Count
Source
212
27.5k
  member_iterator findLeader(const ElemTy &V) const {
213
27.5k
    return findLeader(TheMapping.find(V));
214
27.5k
  }
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
137k
  member_iterator findLeader(const ElemTy &V) const {
213
137k
    return findLeader(TheMapping.find(V));
214
137k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::findLeader(llvm::SCEV const* const&) const
Line
Count
Source
212
26.4M
  member_iterator findLeader(const ElemTy &V) const {
213
26.4M
    return findLeader(TheMapping.find(V));
214
26.4M
  }
llvm::EquivalenceClasses<llvm::Value const*>::findLeader(llvm::Value const* const&) const
Line
Count
Source
212
2.75M
  member_iterator findLeader(const ElemTy &V) const {
213
2.75M
    return findLeader(TheMapping.find(V));
214
2.75M
  }
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.68M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
3.68M
    iterator V1I = insert(V1), V2I = insert(V2);
220
3.68M
    return unionSets(findLeader(V1I), findLeader(V2I));
221
3.68M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::unionSets((anonymous namespace)::Chain* const&, (anonymous namespace)::Chain* const&)
Line
Count
Source
218
32
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
32
    iterator V1I = insert(V1), V2I = insert(V2);
220
32
    return unionSets(findLeader(V1I), findLeader(V2I));
221
32
  }
llvm::EquivalenceClasses<int>::unionSets(int const&, int const&)
Line
Count
Source
218
4.51k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
4.51k
    iterator V1I = insert(V1), V2I = insert(V2);
220
4.51k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
4.51k
  }
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
71.4k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
71.4k
    iterator V1I = insert(V1), V2I = insert(V2);
220
71.4k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
71.4k
  }
llvm::EquivalenceClasses<llvm::Value const*>::unionSets(llvm::Value const* const&, llvm::Value const* const&)
Line
Count
Source
218
2.06M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
2.06M
    iterator V1I = insert(V1), V2I = insert(V2);
220
2.06M
    return unionSets(findLeader(V1I), findLeader(V2I));
221
2.06M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::unionSets(llvm::SCEV const* const&, llvm::SCEV const* const&)
Line
Count
Source
218
1.45M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
1.45M
    iterator V1I = insert(V1), V2I = insert(V2);
220
1.45M
    return unionSets(findLeader(V1I), findLeader(V2I));
221
1.45M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::Value* const&, llvm::Value* const&)
Line
Count
Source
218
6.76k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
6.76k
    iterator V1I = insert(V1), V2I = insert(V2);
220
6.76k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
6.76k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::Instruction* const&, llvm::Instruction* const&)
Line
Count
Source
218
92.9k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
219
92.9k
    iterator V1I = insert(V1), V2I = insert(V2);
220
92.9k
    return unionSets(findLeader(V1I), findLeader(V2I));
221
92.9k
  }
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.69M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
3.69M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
3.69M
    if (L1 == L2) 
return L113.3k
; // Unifying the same two sets, noop.
225
3.67M
226
3.67M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
3.67M
    // point to the L2 leader node.
228
3.67M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
3.67M
    L1LV.getEndOfList()->setNext(&L2LV);
230
3.67M
231
3.67M
    // Update L1LV's end of list pointer.
232
3.67M
    L1LV.Leader = L2LV.getEndOfList();
233
3.67M
234
3.67M
    // Clear L2's leader flag:
235
3.67M
    L2LV.Next = L2LV.getNext();
236
3.67M
237
3.67M
    // L2's leader is now L1.
238
3.67M
    L2LV.Leader = &L1LV;
239
3.67M
    return L1;
240
3.67M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::unionSets(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator, llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator)
Line
Count
Source
222
32
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
32
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
32
    if (L1 == L2) 
return L116
; // Unifying the same two sets, noop.
225
16
226
16
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
16
    // point to the L2 leader node.
228
16
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
16
    L1LV.getEndOfList()->setNext(&L2LV);
230
16
231
16
    // Update L1LV's end of list pointer.
232
16
    L1LV.Leader = L2LV.getEndOfList();
233
16
234
16
    // Clear L2's leader flag:
235
16
    L2LV.Next = L2LV.getNext();
236
16
237
16
    // L2's leader is now L1.
238
16
    L2LV.Leader = &L1LV;
239
16
    return L1;
240
16
  }
llvm::EquivalenceClasses<int>::unionSets(llvm::EquivalenceClasses<int>::member_iterator, llvm::EquivalenceClasses<int>::member_iterator)
Line
Count
Source
222
4.51k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
4.51k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
4.51k
    if (L1 == L2) 
return L1715
; // Unifying the same two sets, noop.
225
3.79k
226
3.79k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
3.79k
    // point to the L2 leader node.
228
3.79k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
3.79k
    L1LV.getEndOfList()->setNext(&L2LV);
230
3.79k
231
3.79k
    // Update L1LV's end of list pointer.
232
3.79k
    L1LV.Leader = L2LV.getEndOfList();
233
3.79k
234
3.79k
    // Clear L2's leader flag:
235
3.79k
    L2LV.Next = L2LV.getNext();
236
3.79k
237
3.79k
    // L2's leader is now L1.
238
3.79k
    L2LV.Leader = &L1LV;
239
3.79k
    return L1;
240
3.79k
  }
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
71.4k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
71.4k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
71.4k
    if (L1 == L2) 
return L1942
; // Unifying the same two sets, noop.
225
70.5k
226
70.5k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
70.5k
    // point to the L2 leader node.
228
70.5k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
70.5k
    L1LV.getEndOfList()->setNext(&L2LV);
230
70.5k
231
70.5k
    // Update L1LV's end of list pointer.
232
70.5k
    L1LV.Leader = L2LV.getEndOfList();
233
70.5k
234
70.5k
    // Clear L2's leader flag:
235
70.5k
    L2LV.Next = L2LV.getNext();
236
70.5k
237
70.5k
    // L2's leader is now L1.
238
70.5k
    L2LV.Leader = &L1LV;
239
70.5k
    return L1;
240
70.5k
  }
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.06M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
2.06M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
2.06M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
225
2.06M
226
2.06M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
2.06M
    // point to the L2 leader node.
228
2.06M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
2.06M
    L1LV.getEndOfList()->setNext(&L2LV);
230
2.06M
231
2.06M
    // Update L1LV's end of list pointer.
232
2.06M
    L1LV.Leader = L2LV.getEndOfList();
233
2.06M
234
2.06M
    // Clear L2's leader flag:
235
2.06M
    L2LV.Next = L2LV.getNext();
236
2.06M
237
2.06M
    // L2's leader is now L1.
238
2.06M
    L2LV.Leader = &L1LV;
239
2.06M
    return L1;
240
2.06M
  }
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.45M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
1.45M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
1.45M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
225
1.45M
226
1.45M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
1.45M
    // point to the L2 leader node.
228
1.45M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
1.45M
    L1LV.getEndOfList()->setNext(&L2LV);
230
1.45M
231
1.45M
    // Update L1LV's end of list pointer.
232
1.45M
    L1LV.Leader = L2LV.getEndOfList();
233
1.45M
234
1.45M
    // Clear L2's leader flag:
235
1.45M
    L2LV.Next = L2LV.getNext();
236
1.45M
237
1.45M
    // L2's leader is now L1.
238
1.45M
    L2LV.Leader = &L1LV;
239
1.45M
    return L1;
240
1.45M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::EquivalenceClasses<llvm::Value*>::member_iterator, llvm::EquivalenceClasses<llvm::Value*>::member_iterator)
Line
Count
Source
222
6.76k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
6.76k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
6.76k
    if (L1 == L2) 
return L1788
; // Unifying the same two sets, noop.
225
5.97k
226
5.97k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
5.97k
    // point to the L2 leader node.
228
5.97k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
5.97k
    L1LV.getEndOfList()->setNext(&L2LV);
230
5.97k
231
5.97k
    // Update L1LV's end of list pointer.
232
5.97k
    L1LV.Leader = L2LV.getEndOfList();
233
5.97k
234
5.97k
    // Clear L2's leader flag:
235
5.97k
    L2LV.Next = L2LV.getNext();
236
5.97k
237
5.97k
    // L2's leader is now L1.
238
5.97k
    L2LV.Leader = &L1LV;
239
5.97k
    return L1;
240
5.97k
  }
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
379
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
379
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
379
    if (L1 == L2) 
return L1269
; // Unifying the same two sets, noop.
225
110
226
110
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
110
    // point to the L2 leader node.
228
110
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
110
    L1LV.getEndOfList()->setNext(&L2LV);
230
110
231
110
    // Update L1LV's end of list pointer.
232
110
    L1LV.Leader = L2LV.getEndOfList();
233
110
234
110
    // Clear L2's leader flag:
235
110
    L2LV.Next = L2LV.getNext();
236
110
237
110
    // L2's leader is now L1.
238
110
    L2LV.Leader = &L1LV;
239
110
    return L1;
240
110
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator, llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator)
Line
Count
Source
222
92.9k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
223
92.9k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
224
92.9k
    if (L1 == L2) 
return L110.5k
; // Unifying the same two sets, noop.
225
82.3k
226
82.3k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
227
82.3k
    // point to the L2 leader node.
228
82.3k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
229
82.3k
    L1LV.getEndOfList()->setNext(&L2LV);
230
82.3k
231
82.3k
    // Update L1LV's end of list pointer.
232
82.3k
    L1LV.Leader = L2LV.getEndOfList();
233
82.3k
234
82.3k
    // Clear L2's leader flag:
235
82.3k
    L2LV.Next = L2LV.getNext();
236
82.3k
237
82.3k
    // L2's leader is now L1.
238
82.3k
    L2LV.Leader = &L1LV;
239
82.3k
    return L1;
240
82.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
29.1M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
245
29.1M
    // Fast path: any element is equivalent to itself.
246
29.1M
    if (V1 == V2)
247
45.0k
      return true;
248
29.1M
    auto It = findLeader(V1);
249
29.1M
    return It != member_end() && 
It == findLeader(V2)35.2k
;
250
29.1M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::isEquivalent(llvm::SCEV const* const&, llvm::SCEV const* const&) const
Line
Count
Source
244
26.3M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
245
26.3M
    // Fast path: any element is equivalent to itself.
246
26.3M
    if (V1 == V2)
247
0
      return true;
248
26.3M
    auto It = findLeader(V1);
249
26.3M
    return It != member_end() && 
It == findLeader(V2)29.9k
;
250
26.3M
  }
llvm::EquivalenceClasses<llvm::Value const*>::isEquivalent(llvm::Value const* const&, llvm::Value const* const&) const
Line
Count
Source
244
2.79M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
245
2.79M
    // Fast path: any element is equivalent to itself.
246
2.79M
    if (V1 == V2)
247
45.0k
      return true;
248
2.74M
    auto It = findLeader(V1);
249
2.74M
    return It != member_end() && 
It == findLeader(V2)5.21k
;
250
2.74M
  }
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
66.3M
    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
47.4k
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::ECValue const*)
Line
Count
Source
267
372k
    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
55.6M
    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.62M
    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
69.8k
    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.04k
    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
585k
    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.39M
    reference operator*() const {
270
1.39M
      assert(Node != nullptr && "Dereferencing end()!");
271
1.39M
      return Node->getData();
272
1.39M
    }
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
5.99k
    reference operator*() const {
270
5.99k
      assert(Node != nullptr && "Dereferencing end()!");
271
5.99k
      return Node->getData();
272
5.99k
    }
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.27M
    reference operator*() const {
270
1.27M
      assert(Node != nullptr && "Dereferencing end()!");
271
1.27M
      return Node->getData();
272
1.27M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator*() const
Line
Count
Source
269
48.5k
    reference operator*() const {
270
48.5k
      assert(Node != nullptr && "Dereferencing end()!");
271
48.5k
      return Node->getData();
272
48.5k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator*() const
Line
Count
Source
269
712
    reference operator*() const {
270
712
      assert(Node != nullptr && "Dereferencing end()!");
271
712
      return Node->getData();
272
712
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator*() const
Line
Count
Source
269
66.2k
    reference operator*() const {
270
66.2k
      assert(Node != nullptr && "Dereferencing end()!");
271
66.2k
      return Node->getData();
272
66.2k
    }
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
31.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
30.8k
    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
712
    pointer operator->() const { return &operator*(); }
274
275
385k
    member_iterator &operator++() {
276
385k
      assert(Node != nullptr && "++'d off the end of the list!");
277
385k
      Node = Node->getNext();
278
385k
      return *this;
279
385k
    }
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
310k
    member_iterator &operator++() {
276
310k
      assert(Node != nullptr && "++'d off the end of the list!");
277
310k
      Node = Node->getNext();
278
310k
      return *this;
279
310k
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator++()
Line
Count
Source
275
22.1k
    member_iterator &operator++() {
276
22.1k
      assert(Node != nullptr && "++'d off the end of the list!");
277
22.1k
      Node = Node->getNext();
278
22.1k
      return *this;
279
22.1k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator++()
Line
Count
Source
275
344
    member_iterator &operator++() {
276
344
      assert(Node != nullptr && "++'d off the end of the list!");
277
344
      Node = Node->getNext();
278
344
      return *this;
279
344
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator++()
Line
Count
Source
275
52.3k
    member_iterator &operator++() {
276
52.3k
      assert(Node != nullptr && "++'d off the end of the list!");
277
52.3k
      Node = Node->getNext();
278
52.3k
      return *this;
279
52.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
54.7k
    member_iterator operator++(int) {    // postincrement operators.
282
54.7k
      member_iterator tmp = *this;
283
54.7k
      ++*this;
284
54.7k
      return tmp;
285
54.7k
    }
286
287
3.84M
    bool operator==(const member_iterator &RHS) const {
288
3.84M
      return Node == RHS.Node;
289
3.84M
    }
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.3k
    bool operator==(const member_iterator &RHS) const {
288
15.3k
      return Node == RHS.Node;
289
15.3k
    }
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
71.4k
    bool operator==(const member_iterator &RHS) const {
288
71.4k
      return Node == RHS.Node;
289
71.4k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
287
1.48M
    bool operator==(const member_iterator &RHS) const {
288
1.48M
      return Node == RHS.Node;
289
1.48M
    }
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator const&) const
Line
Count
Source
287
2.06M
    bool operator==(const member_iterator &RHS) const {
288
2.06M
      return Node == RHS.Node;
289
2.06M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Value*>::member_iterator const&) const
Line
Count
Source
287
6.76k
    bool operator==(const member_iterator &RHS) const {
288
6.76k
      return Node == RHS.Node;
289
6.76k
    }
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
379
    bool operator==(const member_iterator &RHS) const {
288
379
      return Node == RHS.Node;
289
379
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator const&) const
Line
Count
Source
287
200k
    bool operator==(const member_iterator &RHS) const {
288
200k
      return Node == RHS.Node;
289
200k
    }
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
29.6M
    bool operator!=(const member_iterator &RHS) const {
291
29.6M
      return Node != RHS.Node;
292
29.6M
    }
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
356k
    bool operator!=(const member_iterator &RHS) const {
291
356k
      return Node != RHS.Node;
292
356k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
290
26.3M
    bool operator!=(const member_iterator &RHS) const {
291
26.3M
      return Node != RHS.Node;
292
26.3M
    }
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator const&) const
Line
Count
Source
290
2.74M
    bool operator!=(const member_iterator &RHS) const {
291
2.74M
      return Node != RHS.Node;
292
2.74M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Value*>::member_iterator const&) const
Line
Count
Source
290
44.3k
    bool operator!=(const member_iterator &RHS) const {
291
44.3k
      return Node != RHS.Node;
292
44.3k
    }
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
468
    bool operator!=(const member_iterator &RHS) const {
291
468
      return Node != RHS.Node;
292
468
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator const&) const
Line
Count
Source
290
142k
    bool operator!=(const member_iterator &RHS) const {
291
142k
      return Node != RHS.Node;
292
142k
    }
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