Coverage Report

Created: 2019-02-20 00:17

/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
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// Generic implementation of equivalence classes through the use Tarjan's
10
// efficient union-find algorithm.
11
//
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_ADT_EQUIVALENCECLASSES_H
15
#define LLVM_ADT_EQUIVALENCECLASSES_H
16
17
#include <cassert>
18
#include <cstddef>
19
#include <cstdint>
20
#include <iterator>
21
#include <set>
22
23
namespace llvm {
24
25
/// EquivalenceClasses - This represents a collection of equivalence classes and
26
/// supports three efficient operations: insert an element into a class of its
27
/// own, union two classes, and find the class for a given element.  In
28
/// addition to these modification methods, it is possible to iterate over all
29
/// of the equivalence classes and all of the elements in a class.
30
///
31
/// This implementation is an efficient implementation that only stores one copy
32
/// of the element being indexed per entry in the set, and allows any arbitrary
33
/// type to be indexed (as long as it can be ordered with operator<).
34
///
35
/// Here is a simple example using integers:
36
///
37
/// \code
38
///  EquivalenceClasses<int> EC;
39
///  EC.unionSets(1, 2);                // insert 1, 2 into the same set
40
///  EC.insert(4); EC.insert(5);        // insert 4, 5 into own sets
41
///  EC.unionSets(5, 1);                // merge the set for 1 with 5's set.
42
///
43
///  for (EquivalenceClasses<int>::iterator I = EC.begin(), E = EC.end();
44
///       I != E; ++I) {           // Iterate over all of the equivalence sets.
45
///    if (!I->isLeader()) continue;   // Ignore non-leader sets.
46
///    for (EquivalenceClasses<int>::member_iterator MI = EC.member_begin(I);
47
///         MI != EC.member_end(); ++MI)   // Loop over members in this set.
48
///      cerr << *MI << " ";  // Print member.
49
///    cerr << "\n";   // Finish set.
50
///  }
51
/// \endcode
52
///
53
/// This example prints:
54
///   4
55
///   5 1 2
56
///
57
template <class ElemTy>
58
class EquivalenceClasses {
59
  /// ECValue - The EquivalenceClasses data structure is just a set of these.
60
  /// Each of these represents a relation for a value.  First it stores the
61
  /// value itself, which provides the ordering that the set queries.  Next, it
62
  /// provides a "next pointer", which is used to enumerate all of the elements
63
  /// in the unioned set.  Finally, it defines either a "end of list pointer" or
64
  /// "leader pointer" depending on whether the value itself is a leader.  A
65
  /// "leader pointer" points to the node that is the leader for this element,
66
  /// if the node is not a leader.  A "end of list pointer" points to the last
67
  /// node in the list of members of this list.  Whether or not a node is a
68
  /// leader is determined by a bit stolen from one of the pointers.
69
  class ECValue {
70
    friend class EquivalenceClasses;
71
72
    mutable const ECValue *Leader, *Next;
73
    ElemTy Data;
74
75
    // ECValue ctor - Start out with EndOfList pointing to this node, Next is
76
    // Null, isLeader = true.
77
    ECValue(const ElemTy &Elt)
78
46.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
78
183
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<int>::ECValue::ECValue(int const&)
Line
Count
Source
78
65.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
78
552k
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::ECValue(llvm::SCEV const* const&)
Line
Count
Source
78
34.2M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::ECValue(llvm::Value const* const&)
Line
Count
Source
78
10.9M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Value*>::ECValue::ECValue(llvm::Value* const&)
Line
Count
Source
78
25.5k
      : 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
78
494
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::Instruction* const&)
Line
Count
Source
78
225k
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::ECValue((anonymous namespace)::InstPartition* const&)
Line
Count
Source
78
6
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::ECValue(llvm::GlobalValue const* const&)
Line
Count
Source
78
90
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
79
80
12.1M
    const ECValue *getLeader() const {
81
12.1M
      if (isLeader()) 
return this11.8M
;
82
303k
      if (Leader->isLeader()) 
return Leader235k
;
83
67.3k
      // Path compression.
84
67.3k
      return Leader = Leader->getLeader();
85
67.3k
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::getLeader() const
Line
Count
Source
80
64
    const ECValue *getLeader() const {
81
64
      if (isLeader()) 
return this48
;
82
16
      if (Leader->isLeader()) return Leader;
83
0
      // Path compression.
84
0
      return Leader = Leader->getLeader();
85
0
    }
llvm::EquivalenceClasses<int>::ECValue::getLeader() const
Line
Count
Source
80
58.5k
    const ECValue *getLeader() const {
81
58.5k
      if (isLeader()) 
return this17.4k
;
82
41.0k
      if (Leader->isLeader()) 
return Leader37.6k
;
83
3.45k
      // Path compression.
84
3.45k
      return Leader = Leader->getLeader();
85
3.45k
    }
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
80
328k
    const ECValue *getLeader() const {
81
328k
      if (isLeader()) 
return this230k
;
82
97.0k
      if (Leader->isLeader()) 
return Leader61.4k
;
83
35.5k
      // Path compression.
84
35.5k
      return Leader = Leader->getLeader();
85
35.5k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getLeader() const
Line
Count
Source
80
4.72M
    const ECValue *getLeader() const {
81
4.72M
      if (isLeader()) 
return this4.69M
;
82
27.2k
      if (Leader->isLeader()) 
return Leader24.7k
;
83
2.41k
      // Path compression.
84
2.41k
      return Leader = Leader->getLeader();
85
2.41k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getLeader() const
Line
Count
Source
80
6.79M
    const ECValue *getLeader() const {
81
6.79M
      if (isLeader()) 
return this6.78M
;
82
10.2k
      if (Leader->isLeader()) 
return Leader8.08k
;
83
2.13k
      // Path compression.
84
2.13k
      return Leader = Leader->getLeader();
85
2.13k
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getLeader() const
Line
Count
Source
80
26.4k
    const ECValue *getLeader() const {
81
26.4k
      if (isLeader()) 
return this14.4k
;
82
11.9k
      if (Leader->isLeader()) 
return Leader11.0k
;
83
881
      // Path compression.
84
881
      return Leader = Leader->getLeader();
85
881
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getLeader() const
Line
Count
Source
80
508
    const ECValue *getLeader() const {
81
508
      if (isLeader()) 
return this207
;
82
301
      if (Leader->isLeader()) 
return Leader287
;
83
14
      // Path compression.
84
14
      return Leader = Leader->getLeader();
85
14
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getLeader() const
Line
Count
Source
80
223k
    const ECValue *getLeader() const {
81
223k
      if (isLeader()) 
return this108k
;
82
115k
      if (Leader->isLeader()) 
return Leader92.4k
;
83
22.8k
      // Path compression.
84
22.8k
      return Leader = Leader->getLeader();
85
22.8k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::getLeader() const
Line
Count
Source
80
6
    const ECValue *getLeader() const {
81
6
      if (isLeader()) 
return this5
;
82
1
      if (Leader->isLeader()) return Leader;
83
0
      // Path compression.
84
0
      return Leader = Leader->getLeader();
85
0
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::getLeader() const
Line
Count
Source
80
109
    const ECValue *getLeader() const {
81
109
      if (isLeader()) 
return this91
;
82
18
      if (Leader->isLeader()) 
return Leader16
;
83
2
      // Path compression.
84
2
      return Leader = Leader->getLeader();
85
2
    }
86
87
11.8M
    const ECValue *getEndOfList() const {
88
11.8M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
11.8M
      return Leader;
90
11.8M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::getEndOfList() const
Line
Count
Source
87
32
    const ECValue *getEndOfList() const {
88
32
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
32
      return Leader;
90
32
    }
llvm::EquivalenceClasses<int>::ECValue::getEndOfList() const
Line
Count
Source
87
17.2k
    const ECValue *getEndOfList() const {
88
17.2k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
17.2k
      return Leader;
90
17.2k
    }
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
87
146k
    const ECValue *getEndOfList() const {
88
146k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
146k
      return Leader;
90
146k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getEndOfList() const
Line
Count
Source
87
6.78M
    const ECValue *getEndOfList() const {
88
6.78M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
6.78M
      return Leader;
90
6.78M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getEndOfList() const
Line
Count
Source
87
4.69M
    const ECValue *getEndOfList() const {
88
4.69M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
4.69M
      return Leader;
90
4.69M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getEndOfList() const
Line
Count
Source
87
12.0k
    const ECValue *getEndOfList() const {
88
12.0k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
12.0k
      return Leader;
90
12.0k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getEndOfList() const
Line
Count
Source
87
258
    const ECValue *getEndOfList() const {
88
258
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
258
      return Leader;
90
258
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getEndOfList() const
Line
Count
Source
87
168k
    const ECValue *getEndOfList() const {
88
168k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
168k
      return Leader;
90
168k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::getEndOfList() const
Line
Count
Source
87
4
    const ECValue *getEndOfList() const {
88
4
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
4
      return Leader;
90
4
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::getEndOfList() const
Line
Count
Source
87
78
    const ECValue *getEndOfList() const {
88
78
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
78
      return Leader;
90
78
    }
91
92
5.91M
    void setNext(const ECValue *NewNext) const {
93
5.91M
      assert(getNext() == nullptr && "Already has a next pointer!");
94
5.91M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
5.91M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::setNext(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue const*) const
Line
Count
Source
92
16
    void setNext(const ECValue *NewNext) const {
93
16
      assert(getNext() == nullptr && "Already has a next pointer!");
94
16
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
16
    }
llvm::EquivalenceClasses<int>::ECValue::setNext(llvm::EquivalenceClasses<int>::ECValue const*) const
Line
Count
Source
92
8.61k
    void setNext(const ECValue *NewNext) const {
93
8.61k
      assert(getNext() == nullptr && "Already has a next pointer!");
94
8.61k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
8.61k
    }
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
92
73.1k
    void setNext(const ECValue *NewNext) const {
93
73.1k
      assert(getNext() == nullptr && "Already has a next pointer!");
94
73.1k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
73.1k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const*) const
Line
Count
Source
92
3.39M
    void setNext(const ECValue *NewNext) const {
93
3.39M
      assert(getNext() == nullptr && "Already has a next pointer!");
94
3.39M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
3.39M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const*) const
Line
Count
Source
92
2.34M
    void setNext(const ECValue *NewNext) const {
93
2.34M
      assert(getNext() == nullptr && "Already has a next pointer!");
94
2.34M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
2.34M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value*>::ECValue const*) const
Line
Count
Source
92
6.01k
    void setNext(const ECValue *NewNext) const {
93
6.01k
      assert(getNext() == nullptr && "Already has a next pointer!");
94
6.01k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
6.01k
    }
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
92
129
    void setNext(const ECValue *NewNext) const {
93
129
      assert(getNext() == nullptr && "Already has a next pointer!");
94
129
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
129
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const*) const
Line
Count
Source
92
84.4k
    void setNext(const ECValue *NewNext) const {
93
84.4k
      assert(getNext() == nullptr && "Already has a next pointer!");
94
84.4k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
84.4k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::setNext(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue const*) const
Line
Count
Source
92
2
    void setNext(const ECValue *NewNext) const {
93
2
      assert(getNext() == nullptr && "Already has a next pointer!");
94
2
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
2
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue const*) const
Line
Count
Source
92
39
    void setNext(const ECValue *NewNext) const {
93
39
      assert(getNext() == nullptr && "Already has a next pointer!");
94
39
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
39
    }
96
97
  public:
98
    ECValue(const ECValue &RHS) : Leader(this), Next((ECValue*)(intptr_t)1),
99
7.06M
                                  Data(RHS.Data) {
100
7.06M
      // Only support copying of singleton nodes.
101
7.06M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
7.06M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::ECValue(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue const&)
Line
Count
Source
99
119
                                  Data(RHS.Data) {
100
119
      // Only support copying of singleton nodes.
101
119
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
119
    }
llvm::EquivalenceClasses<int>::ECValue::ECValue(llvm::EquivalenceClasses<int>::ECValue const&)
Line
Count
Source
99
10.9k
                                  Data(RHS.Data) {
100
10.9k
      // Only support copying of singleton nodes.
101
10.9k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
10.9k
    }
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
99
147k
                                  Data(RHS.Data) {
100
147k
      // Only support copying of singleton nodes.
101
147k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
147k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const&)
Line
Count
Source
99
3.84M
                                  Data(RHS.Data) {
100
3.84M
      // Only support copying of singleton nodes.
101
3.84M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
3.84M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const&)
Line
Count
Source
99
2.96M
                                  Data(RHS.Data) {
100
2.96M
      // Only support copying of singleton nodes.
101
2.96M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
2.96M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Value*>::ECValue const&)
Line
Count
Source
99
7.43k
                                  Data(RHS.Data) {
100
7.43k
      // Only support copying of singleton nodes.
101
7.43k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
7.43k
    }
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
99
202
                                  Data(RHS.Data) {
100
202
      // Only support copying of singleton nodes.
101
202
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
202
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const&)
Line
Count
Source
99
98.3k
                                  Data(RHS.Data) {
100
98.3k
      // Only support copying of singleton nodes.
101
98.3k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
98.3k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::ECValue(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue const&)
Line
Count
Source
99
4
                                  Data(RHS.Data) {
100
4
      // Only support copying of singleton nodes.
101
4
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
4
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue const&)
Line
Count
Source
99
56
                                  Data(RHS.Data) {
100
56
      // Only support copying of singleton nodes.
101
56
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
56
    }
103
104
144M
    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
104
214
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<int>::ECValue::operator<(llvm::EquivalenceClasses<int>::ECValue const&) const
Line
Count
Source
104
473k
    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
104
2.73M
    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
104
51.4M
    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
104
88.3M
    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
104
116k
    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
104
1.27k
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::operator<(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const&) const
Line
Count
Source
104
1.41M
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::operator<(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue const&) const
Line
Count
Source
104
9
    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
104
236
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
105
106
18.6M
    bool isLeader() const { return (intptr_t)Next & 1; }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::isLeader() const
Line
Count
Source
106
215
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<int>::ECValue::isLeader() const
Line
Count
Source
106
108k
    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
106
546k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::isLeader() const
Line
Count
Source
106
7.09M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::isLeader() const
Line
Count
Source
106
10.1M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::isLeader() const
Line
Count
Source
106
66.6k
    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
106
1.28k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::isLeader() const
Line
Count
Source
106
607k
    bool isLeader() const { return (intptr_t)Next & 1; }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::isLeader() const
Line
Count
Source
106
15
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::isLeader() const
Line
Count
Source
106
239
    bool isLeader() const { return (intptr_t)Next & 1; }
107
1.61M
    const ElemTy &getData() const { return Data; }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::getData() const
Line
Count
Source
107
119
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<int>::ECValue::getData() const
Line
Count
Source
107
12.0k
    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
107
1.48M
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getData() const
Line
Count
Source
107
48.7k
    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
107
844
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getData() const
Line
Count
Source
107
67.6k
    const ElemTy &getData() const { return Data; }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::getData() const
Line
Count
Source
107
4
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::getData() const
Line
Count
Source
107
172
    const ElemTy &getData() const { return Data; }
108
109
6.34M
    const ECValue *getNext() const {
110
6.34M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
6.34M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue::getNext() const
Line
Count
Source
109
254
    const ECValue *getNext() const {
110
254
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
254
    }
llvm::EquivalenceClasses<int>::ECValue::getNext() const
Line
Count
Source
109
8.61k
    const ECValue *getNext() const {
110
8.61k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
8.61k
    }
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
109
426k
    const ECValue *getNext() const {
110
426k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
426k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getNext() const
Line
Count
Source
109
3.39M
    const ECValue *getNext() const {
110
3.39M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
3.39M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getNext() const
Line
Count
Source
109
2.34M
    const ECValue *getNext() const {
110
2.34M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
2.34M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getNext() const
Line
Count
Source
109
28.3k
    const ECValue *getNext() const {
110
28.3k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
28.3k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getNext() const
Line
Count
Source
109
533
    const ECValue *getNext() const {
110
533
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
533
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getNext() const
Line
Count
Source
109
138k
    const ECValue *getNext() const {
110
138k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
138k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue::getNext() const
Line
Count
Source
109
6
    const ECValue *getNext() const {
110
6
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
6
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::ECValue::getNext() const
Line
Count
Source
109
151
    const ECValue *getNext() const {
110
151
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
151
    }
112
113
    template<typename T>
114
    bool operator<(const T &Val) const { return Data < Val; }
115
  };
116
117
  /// TheMapping - This implicitly provides a mapping from ElemTy values to the
118
  /// ECValues, it just keeps the key as part of the value.
119
  std::set<ECValue> TheMapping;
120
121
public:
122
142M
  EquivalenceClasses() = default;
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::EquivalenceClasses()
Line
Count
Source
122
255
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<int>::EquivalenceClasses()
Line
Count
Source
122
3.05k
  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
122
55.6k
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::SCEV const*>::EquivalenceClasses()
Line
Count
Source
122
71.1M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value const*>::EquivalenceClasses()
Line
Count
Source
122
71.1M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value*>::EquivalenceClasses()
Line
Count
Source
122
19.5k
  EquivalenceClasses() = default;
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::EquivalenceClasses()
Line
Count
Source
122
447
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Instruction*>::EquivalenceClasses()
Line
Count
Source
122
294k
  EquivalenceClasses() = default;
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::EquivalenceClasses()
Line
Count
Source
122
24
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::GlobalValue const*>::EquivalenceClasses()
Line
Count
Source
122
23
  EquivalenceClasses() = default;
123
130
  EquivalenceClasses(const EquivalenceClasses &RHS) {
124
130
    operator=(RHS);
125
130
  }
126
127
277k
  const EquivalenceClasses &operator=(const EquivalenceClasses &RHS) {
128
277k
    TheMapping.clear();
129
277k
    for (iterator I = RHS.begin(), E = RHS.end(); I != E; 
++I0
)
130
0
      if (I->isLeader()) {
131
0
        member_iterator MI = RHS.member_begin(I);
132
0
        member_iterator LeaderIt = member_begin(insert(*MI));
133
0
        for (++MI; MI != member_end(); ++MI)
134
0
          unionSets(LeaderIt, member_begin(insert(*MI)));
135
0
      }
136
277k
    return *this;
137
277k
  }
138
139
  //===--------------------------------------------------------------------===//
140
  // Inspection methods
141
  //
142
143
  /// iterator* - Provides a way to iterate over all values in the set.
144
  using iterator = typename std::set<ECValue>::const_iterator;
145
146
555k
  iterator begin() const { return TheMapping.begin(); }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::begin() const
Line
Count
Source
146
255
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::Value*>::begin() const
Line
Count
Source
146
906
  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
146
61
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::Instruction*>::begin() const
Line
Count
Source
146
554k
  iterator begin() const { return TheMapping.begin(); }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::begin() const
Line
Count
Source
146
2
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::begin() const
Line
Count
Source
146
23
  iterator begin() const { return TheMapping.begin(); }
147
562k
  iterator end() const { return TheMapping.end(); }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::end() const
Line
Count
Source
147
255
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::Value*>::end() const
Line
Count
Source
147
906
  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
147
61
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::Instruction*>::end() const
Line
Count
Source
147
561k
  iterator end() const { return TheMapping.end(); }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::end() const
Line
Count
Source
147
2
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::end() const
Line
Count
Source
147
23
  iterator end() const { return TheMapping.end(); }
148
149
471
  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
149
447
  bool empty() const { return TheMapping.empty(); }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::empty() const
Line
Count
Source
149
24
  bool empty() const { return TheMapping.empty(); }
150
151
  /// member_* Iterate over the members of an equivalence class.
152
  class member_iterator;
153
255k
  member_iterator member_begin(iterator I) const {
154
255k
    // Only leaders provide anything to iterate over.
155
255k
    return member_iterator(I->isLeader() ? 
&*I74.2k
:
nullptr181k
);
156
255k
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::ECValue, void*>*, long>) const
Line
Count
Source
153
119
  member_iterator member_begin(iterator I) const {
154
119
    // Only leaders provide anything to iterate over.
155
119
    return member_iterator(I->isLeader() ? 
&*I103
:
nullptr16
);
156
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
153
48.6k
  member_iterator member_begin(iterator I) const {
154
48.6k
    // Only leaders provide anything to iterate over.
155
48.6k
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
156
48.6k
  }
llvm::EquivalenceClasses<llvm::Value*>::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::Value*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::Value*>::ECValue, void*>*, long>) const
Line
Count
Source
153
22.2k
  member_iterator member_begin(iterator I) const {
154
22.2k
    // Only leaders provide anything to iterate over.
155
22.2k
    return member_iterator(I->isLeader() ? 
&*I4.26k
:
nullptr18.0k
);
156
22.2k
  }
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
153
146
  member_iterator member_begin(iterator I) const {
154
146
    // Only leaders provide anything to iterate over.
155
146
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
156
146
  }
llvm::EquivalenceClasses<llvm::Instruction*>::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::Instruction*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::Instruction*>::ECValue, void*>*, long>) const
Line
Count
Source
153
184k
  member_iterator member_begin(iterator I) const {
154
184k
    // Only leaders provide anything to iterate over.
155
184k
    return member_iterator(I->isLeader() ? 
&*I21.0k
:
nullptr163k
);
156
184k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue, void*>*, long>) const
Line
Count
Source
153
2
  member_iterator member_begin(iterator I) const {
154
2
    // Only leaders provide anything to iterate over.
155
2
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
156
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
153
17
  member_iterator member_begin(iterator I) const {
154
17
    // Only leaders provide anything to iterate over.
155
17
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
156
17
  }
157
67.6M
  member_iterator member_end() const {
158
67.6M
    return member_iterator(nullptr);
159
67.6M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_end() const
Line
Count
Source
157
119
  member_iterator member_end() const {
158
119
    return member_iterator(nullptr);
159
119
  }
llvm::EquivalenceClasses<int>::member_end() const
Line
Count
Source
157
10.8k
  member_iterator member_end() const {
158
10.8k
    return member_iterator(nullptr);
159
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
157
48.6k
  member_iterator member_end() const {
158
48.6k
    return member_iterator(nullptr);
159
48.6k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_end() const
Line
Count
Source
157
59.0M
  member_iterator member_end() const {
158
59.0M
    return member_iterator(nullptr);
159
59.0M
  }
llvm::EquivalenceClasses<llvm::Value const*>::member_end() const
Line
Count
Source
157
8.27M
  member_iterator member_end() const {
158
8.27M
    return member_iterator(nullptr);
159
8.27M
  }
llvm::EquivalenceClasses<llvm::Value*>::member_end() const
Line
Count
Source
157
22.2k
  member_iterator member_end() const {
158
22.2k
    return member_iterator(nullptr);
159
22.2k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_end() const
Line
Count
Source
157
550
  member_iterator member_end() const {
158
550
    return member_iterator(nullptr);
159
550
  }
llvm::EquivalenceClasses<llvm::Instruction*>::member_end() const
Line
Count
Source
157
214k
  member_iterator member_end() const {
158
214k
    return member_iterator(nullptr);
159
214k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_end() const
Line
Count
Source
157
2
  member_iterator member_end() const {
158
2
    return member_iterator(nullptr);
159
2
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_end() const
Line
Count
Source
157
90
  member_iterator member_end() const {
158
90
    return member_iterator(nullptr);
159
90
  }
160
161
  /// findValue - Return an iterator to the specified value.  If it does not
162
  /// exist, end() is returned.
163
55.8k
  iterator findValue(const ElemTy &V) const {
164
55.8k
    return TheMapping.find(V);
165
55.8k
  }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::findValue(llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > const&) const
Line
Count
Source
163
48.6k
  iterator findValue(const ElemTy &V) const {
164
48.6k
    return TheMapping.find(V);
165
48.6k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::findValue(llvm::Instruction* const&) const
Line
Count
Source
163
7.16k
  iterator findValue(const ElemTy &V) const {
164
7.16k
    return TheMapping.find(V);
165
7.16k
  }
166
167
  /// getLeaderValue - Return the leader for the specified value that is in the
168
  /// set.  It is an error to call this method for a value that is not yet in
169
  /// the set.  For that, call getOrInsertLeaderValue(V).
170
160k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
171
160k
    member_iterator MI = findLeader(V);
172
160k
    assert(MI != member_end() && "Value is not in the set!");
173
160k
    return *MI;
174
160k
  }
llvm::EquivalenceClasses<int>::getLeaderValue(int const&) const
Line
Count
Source
170
12.0k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
171
12.0k
    member_iterator MI = findLeader(V);
172
12.0k
    assert(MI != member_end() && "Value is not in the set!");
173
12.0k
    return *MI;
174
12.0k
  }
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
170
144k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
171
144k
    member_iterator MI = findLeader(V);
172
144k
    assert(MI != member_end() && "Value is not in the set!");
173
144k
    return *MI;
174
144k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::getLeaderValue(llvm::Instruction* const&) const
Line
Count
Source
170
3.90k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
171
3.90k
    member_iterator MI = findLeader(V);
172
3.90k
    assert(MI != member_end() && "Value is not in the set!");
173
3.90k
    return *MI;
174
3.90k
  }
175
176
  /// getOrInsertLeaderValue - Return the leader for the specified value that is
177
  /// in the set.  If the member is not in the set, it is inserted, then
178
  /// returned.
179
11.9k
  const ElemTy &getOrInsertLeaderValue(const ElemTy &V) {
180
11.9k
    member_iterator MI = findLeader(insert(V));
181
11.9k
    assert(MI != member_end() && "Value is not in the set!");
182
11.9k
    return *MI;
183
11.9k
  }
184
185
  /// getNumClasses - Return the number of equivalence classes in this set.
186
  /// Note that this is a linear time operation.
187
  unsigned getNumClasses() const {
188
    unsigned NC = 0;
189
    for (iterator I = begin(), E = end(); I != E; ++I)
190
      if (I->isLeader()) ++NC;
191
    return NC;
192
  }
193
194
  //===--------------------------------------------------------------------===//
195
  // Mutation methods
196
197
  /// insert - Insert a new value into the union/find set, ignoring the request
198
  /// if the value already exists.
199
12.0M
  iterator insert(const ElemTy &Data) {
200
12.0M
    return TheMapping.insert(ECValue(Data)).first;
201
12.0M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::insert((anonymous namespace)::Chain* const&)
Line
Count
Source
199
183
  iterator insert(const ElemTy &Data) {
200
183
    return TheMapping.insert(ECValue(Data)).first;
201
183
  }
llvm::EquivalenceClasses<int>::insert(int const&)
Line
Count
Source
199
32.1k
  iterator insert(const ElemTy &Data) {
200
32.1k
    return TheMapping.insert(ECValue(Data)).first;
201
32.1k
  }
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
199
359k
  iterator insert(const ElemTy &Data) {
200
359k
    return TheMapping.insert(ECValue(Data)).first;
201
359k
  }
llvm::EquivalenceClasses<llvm::Value const*>::insert(llvm::Value const* const&)
Line
Count
Source
199
6.78M
  iterator insert(const ElemTy &Data) {
200
6.78M
    return TheMapping.insert(ECValue(Data)).first;
201
6.78M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::insert(llvm::SCEV const* const&)
Line
Count
Source
199
4.69M
  iterator insert(const ElemTy &Data) {
200
4.69M
    return TheMapping.insert(ECValue(Data)).first;
201
4.69M
  }
llvm::EquivalenceClasses<llvm::Value*>::insert(llvm::Value* const&)
Line
Count
Source
199
25.5k
  iterator insert(const ElemTy &Data) {
200
25.5k
    return TheMapping.insert(ECValue(Data)).first;
201
25.5k
  }
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
199
494
  iterator insert(const ElemTy &Data) {
200
494
    return TheMapping.insert(ECValue(Data)).first;
201
494
  }
llvm::EquivalenceClasses<llvm::Instruction*>::insert(llvm::Instruction* const&)
Line
Count
Source
199
196k
  iterator insert(const ElemTy &Data) {
200
196k
    return TheMapping.insert(ECValue(Data)).first;
201
196k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::insert((anonymous namespace)::InstPartition* const&)
Line
Count
Source
199
6
  iterator insert(const ElemTy &Data) {
200
6
    return TheMapping.insert(ECValue(Data)).first;
201
6
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::insert(llvm::GlobalValue const* const&)
Line
Count
Source
199
90
  iterator insert(const ElemTy &Data) {
200
90
    return TheMapping.insert(ECValue(Data)).first;
201
90
  }
202
203
  /// findLeader - Given a value in the set, return a member iterator for the
204
  /// equivalence class it is in.  This does the path-compression part that
205
  /// makes union-find "union findy".  This returns an end iterator if the value
206
  /// is not in the equivalence class.
207
45.7M
  member_iterator findLeader(iterator I) const {
208
45.7M
    if (I == TheMapping.end()) 
return member_end()33.6M
;
209
12.0M
    return member_iterator(I->getLeader());
210
12.0M
  }
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
207
64
  member_iterator findLeader(iterator I) const {
208
64
    if (I == TheMapping.end()) 
return member_end()0
;
209
64
    return member_iterator(I->getLeader());
210
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
207
55.0k
  member_iterator findLeader(iterator I) const {
208
55.0k
    if (I == TheMapping.end()) 
return member_end()6
;
209
55.0k
    return member_iterator(I->getLeader());
210
55.0k
  }
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
207
292k
  member_iterator findLeader(iterator I) const {
208
292k
    if (I == TheMapping.end()) 
return member_end()0
;
209
292k
    return member_iterator(I->getLeader());
210
292k
  }
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
207
34.2M
  member_iterator findLeader(iterator I) const {
208
34.2M
    if (I == TheMapping.end()) 
return member_end()29.5M
;
209
4.72M
    return member_iterator(I->getLeader());
210
4.72M
  }
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
207
10.9M
  member_iterator findLeader(iterator I) const {
208
10.9M
    if (I == TheMapping.end()) 
return member_end()4.13M
;
209
6.79M
    return member_iterator(I->getLeader());
210
6.79M
  }
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
207
25.5k
  member_iterator findLeader(iterator I) const {
208
25.5k
    if (I == TheMapping.end()) 
return member_end()0
;
209
25.5k
    return member_iterator(I->getLeader());
210
25.5k
  }
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
207
494
  member_iterator findLeader(iterator I) const {
208
494
    if (I == TheMapping.end()) 
return member_end()0
;
209
494
    return member_iterator(I->getLeader());
210
494
  }
llvm::EquivalenceClasses<llvm::Instruction*>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::Instruction*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::Instruction*>::ECValue, void*>*, long>) const
Line
Count
Source
207
212k
  member_iterator findLeader(iterator I) const {
208
212k
    if (I == TheMapping.end()) 
return member_end()11.8k
;
209
200k
    return member_iterator(I->getLeader());
210
200k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue, void*>*, long>) const
Line
Count
Source
207
6
  member_iterator findLeader(iterator I) const {
208
6
    if (I == TheMapping.end()) 
return member_end()0
;
209
6
    return member_iterator(I->getLeader());
210
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
207
107
  member_iterator findLeader(iterator I) const {
208
107
    if (I == TheMapping.end()) 
return member_end()0
;
209
107
    return member_iterator(I->getLeader());
210
107
  }
211
33.9M
  member_iterator findLeader(const ElemTy &V) const {
212
33.9M
    return findLeader(TheMapping.find(V));
213
33.9M
  }
llvm::EquivalenceClasses<int>::findLeader(int const&) const
Line
Count
Source
211
33.6k
  member_iterator findLeader(const ElemTy &V) const {
212
33.6k
    return findLeader(TheMapping.find(V));
213
33.6k
  }
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
211
144k
  member_iterator findLeader(const ElemTy &V) const {
212
144k
    return findLeader(TheMapping.find(V));
213
144k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::findLeader(llvm::SCEV const* const&) const
Line
Count
Source
211
29.5M
  member_iterator findLeader(const ElemTy &V) const {
212
29.5M
    return findLeader(TheMapping.find(V));
213
29.5M
  }
llvm::EquivalenceClasses<llvm::Value const*>::findLeader(llvm::Value const* const&) const
Line
Count
Source
211
4.14M
  member_iterator findLeader(const ElemTy &V) const {
212
4.14M
    return findLeader(TheMapping.find(V));
213
4.14M
  }
llvm::EquivalenceClasses<llvm::Instruction*>::findLeader(llvm::Instruction* const&) const
Line
Count
Source
211
21.7k
  member_iterator findLeader(const ElemTy &V) const {
212
21.7k
    return findLeader(TheMapping.find(V));
213
21.7k
  }
214
215
  /// union - Merge the two equivalence sets for the specified values, inserting
216
  /// them if they do not already exist in the equivalence set.
217
5.92M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
5.92M
    iterator V1I = insert(V1), V2I = insert(V2);
219
5.92M
    return unionSets(findLeader(V1I), findLeader(V2I));
220
5.92M
  }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::unionSets((anonymous namespace)::Chain* const&, (anonymous namespace)::Chain* const&)
Line
Count
Source
217
32
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
32
    iterator V1I = insert(V1), V2I = insert(V2);
219
32
    return unionSets(findLeader(V1I), findLeader(V2I));
220
32
  }
llvm::EquivalenceClasses<int>::unionSets(int const&, int const&)
Line
Count
Source
217
10.6k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
10.6k
    iterator V1I = insert(V1), V2I = insert(V2);
219
10.6k
    return unionSets(findLeader(V1I), findLeader(V2I));
220
10.6k
  }
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
217
74.1k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
74.1k
    iterator V1I = insert(V1), V2I = insert(V2);
219
74.1k
    return unionSets(findLeader(V1I), findLeader(V2I));
220
74.1k
  }
llvm::EquivalenceClasses<llvm::Value const*>::unionSets(llvm::Value const* const&, llvm::Value const* const&)
Line
Count
Source
217
3.39M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
3.39M
    iterator V1I = insert(V1), V2I = insert(V2);
219
3.39M
    return unionSets(findLeader(V1I), findLeader(V2I));
220
3.39M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::unionSets(llvm::SCEV const* const&, llvm::SCEV const* const&)
Line
Count
Source
217
2.34M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
2.34M
    iterator V1I = insert(V1), V2I = insert(V2);
219
2.34M
    return unionSets(findLeader(V1I), findLeader(V2I));
220
2.34M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::Value* const&, llvm::Value* const&)
Line
Count
Source
217
6.78k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
6.78k
    iterator V1I = insert(V1), V2I = insert(V2);
219
6.78k
    return unionSets(findLeader(V1I), findLeader(V2I));
220
6.78k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::Instruction* const&, llvm::Instruction* const&)
Line
Count
Source
217
95.3k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
95.3k
    iterator V1I = insert(V1), V2I = insert(V2);
219
95.3k
    return unionSets(findLeader(V1I), findLeader(V2I));
220
95.3k
  }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::unionSets((anonymous namespace)::InstPartition* const&, (anonymous namespace)::InstPartition* const&)
Line
Count
Source
217
3
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
3
    iterator V1I = insert(V1), V2I = insert(V2);
219
3
    return unionSets(findLeader(V1I), findLeader(V2I));
220
3
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::unionSets(llvm::GlobalValue const* const&, llvm::GlobalValue const* const&)
Line
Count
Source
217
45
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
45
    iterator V1I = insert(V1), V2I = insert(V2);
219
45
    return unionSets(findLeader(V1I), findLeader(V2I));
220
45
  }
221
5.92M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
5.92M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
5.92M
    if (L1 == L2) 
return L115.0k
; // Unifying the same two sets, noop.
224
5.91M
225
5.91M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
5.91M
    // point to the L2 leader node.
227
5.91M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
5.91M
    L1LV.getEndOfList()->setNext(&L2LV);
229
5.91M
230
5.91M
    // Update L1LV's end of list pointer.
231
5.91M
    L1LV.Leader = L2LV.getEndOfList();
232
5.91M
233
5.91M
    // Clear L2's leader flag:
234
5.91M
    L2LV.Next = L2LV.getNext();
235
5.91M
236
5.91M
    // L2's leader is now L1.
237
5.91M
    L2LV.Leader = &L1LV;
238
5.91M
    return L1;
239
5.91M
  }
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
221
32
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
32
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
32
    if (L1 == L2) 
return L116
; // Unifying the same two sets, noop.
224
16
225
16
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
16
    // point to the L2 leader node.
227
16
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
16
    L1LV.getEndOfList()->setNext(&L2LV);
229
16
230
16
    // Update L1LV's end of list pointer.
231
16
    L1LV.Leader = L2LV.getEndOfList();
232
16
233
16
    // Clear L2's leader flag:
234
16
    L2LV.Next = L2LV.getNext();
235
16
236
16
    // L2's leader is now L1.
237
16
    L2LV.Leader = &L1LV;
238
16
    return L1;
239
16
  }
llvm::EquivalenceClasses<int>::unionSets(llvm::EquivalenceClasses<int>::member_iterator, llvm::EquivalenceClasses<int>::member_iterator)
Line
Count
Source
221
10.6k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
10.6k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
10.6k
    if (L1 == L2) 
return L12.07k
; // Unifying the same two sets, noop.
224
8.61k
225
8.61k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
8.61k
    // point to the L2 leader node.
227
8.61k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
8.61k
    L1LV.getEndOfList()->setNext(&L2LV);
229
8.61k
230
8.61k
    // Update L1LV's end of list pointer.
231
8.61k
    L1LV.Leader = L2LV.getEndOfList();
232
8.61k
233
8.61k
    // Clear L2's leader flag:
234
8.61k
    L2LV.Next = L2LV.getNext();
235
8.61k
236
8.61k
    // L2's leader is now L1.
237
8.61k
    L2LV.Leader = &L1LV;
238
8.61k
    return L1;
239
8.61k
  }
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
221
74.1k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
74.1k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
74.1k
    if (L1 == L2) 
return L1982
; // Unifying the same two sets, noop.
224
73.1k
225
73.1k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
73.1k
    // point to the L2 leader node.
227
73.1k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
73.1k
    L1LV.getEndOfList()->setNext(&L2LV);
229
73.1k
230
73.1k
    // Update L1LV's end of list pointer.
231
73.1k
    L1LV.Leader = L2LV.getEndOfList();
232
73.1k
233
73.1k
    // Clear L2's leader flag:
234
73.1k
    L2LV.Next = L2LV.getNext();
235
73.1k
236
73.1k
    // L2's leader is now L1.
237
73.1k
    L2LV.Leader = &L1LV;
238
73.1k
    return L1;
239
73.1k
  }
llvm::EquivalenceClasses<llvm::Value const*>::unionSets(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator, llvm::EquivalenceClasses<llvm::Value const*>::member_iterator)
Line
Count
Source
221
3.39M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
3.39M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
3.39M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
224
3.39M
225
3.39M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
3.39M
    // point to the L2 leader node.
227
3.39M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
3.39M
    L1LV.getEndOfList()->setNext(&L2LV);
229
3.39M
230
3.39M
    // Update L1LV's end of list pointer.
231
3.39M
    L1LV.Leader = L2LV.getEndOfList();
232
3.39M
233
3.39M
    // Clear L2's leader flag:
234
3.39M
    L2LV.Next = L2LV.getNext();
235
3.39M
236
3.39M
    // L2's leader is now L1.
237
3.39M
    L2LV.Leader = &L1LV;
238
3.39M
    return L1;
239
3.39M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::unionSets(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator, llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator)
Line
Count
Source
221
2.34M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
2.34M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
2.34M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
224
2.34M
225
2.34M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
2.34M
    // point to the L2 leader node.
227
2.34M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
2.34M
    L1LV.getEndOfList()->setNext(&L2LV);
229
2.34M
230
2.34M
    // Update L1LV's end of list pointer.
231
2.34M
    L1LV.Leader = L2LV.getEndOfList();
232
2.34M
233
2.34M
    // Clear L2's leader flag:
234
2.34M
    L2LV.Next = L2LV.getNext();
235
2.34M
236
2.34M
    // L2's leader is now L1.
237
2.34M
    L2LV.Leader = &L1LV;
238
2.34M
    return L1;
239
2.34M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::EquivalenceClasses<llvm::Value*>::member_iterator, llvm::EquivalenceClasses<llvm::Value*>::member_iterator)
Line
Count
Source
221
6.78k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
6.78k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
6.78k
    if (L1 == L2) 
return L1778
; // Unifying the same two sets, noop.
224
6.01k
225
6.01k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
6.01k
    // point to the L2 leader node.
227
6.01k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
6.01k
    L1LV.getEndOfList()->setNext(&L2LV);
229
6.01k
230
6.01k
    // Update L1LV's end of list pointer.
231
6.01k
    L1LV.Leader = L2LV.getEndOfList();
232
6.01k
233
6.01k
    // Clear L2's leader flag:
234
6.01k
    L2LV.Next = L2LV.getNext();
235
6.01k
236
6.01k
    // L2's leader is now L1.
237
6.01k
    L2LV.Leader = &L1LV;
238
6.01k
    return L1;
239
6.01k
  }
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
221
402
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
402
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
402
    if (L1 == L2) 
return L1273
; // Unifying the same two sets, noop.
224
129
225
129
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
129
    // point to the L2 leader node.
227
129
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
129
    L1LV.getEndOfList()->setNext(&L2LV);
229
129
230
129
    // Update L1LV's end of list pointer.
231
129
    L1LV.Leader = L2LV.getEndOfList();
232
129
233
129
    // Clear L2's leader flag:
234
129
    L2LV.Next = L2LV.getNext();
235
129
236
129
    // L2's leader is now L1.
237
129
    L2LV.Leader = &L1LV;
238
129
    return L1;
239
129
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator, llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator)
Line
Count
Source
221
95.3k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
95.3k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
95.3k
    if (L1 == L2) 
return L110.9k
; // Unifying the same two sets, noop.
224
84.4k
225
84.4k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
84.4k
    // point to the L2 leader node.
227
84.4k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
84.4k
    L1LV.getEndOfList()->setNext(&L2LV);
229
84.4k
230
84.4k
    // Update L1LV's end of list pointer.
231
84.4k
    L1LV.Leader = L2LV.getEndOfList();
232
84.4k
233
84.4k
    // Clear L2's leader flag:
234
84.4k
    L2LV.Next = L2LV.getNext();
235
84.4k
236
84.4k
    // L2's leader is now L1.
237
84.4k
    L2LV.Leader = &L1LV;
238
84.4k
    return L1;
239
84.4k
  }
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
221
3
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
3
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
3
    if (L1 == L2) 
return L11
; // Unifying the same two sets, noop.
224
2
225
2
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
2
    // point to the L2 leader node.
227
2
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
2
    L1LV.getEndOfList()->setNext(&L2LV);
229
2
230
2
    // Update L1LV's end of list pointer.
231
2
    L1LV.Leader = L2LV.getEndOfList();
232
2
233
2
    // Clear L2's leader flag:
234
2
    L2LV.Next = L2LV.getNext();
235
2
236
2
    // L2's leader is now L1.
237
2
    L2LV.Leader = &L1LV;
238
2
    return L1;
239
2
  }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::unionSets(llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator, llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator)
Line
Count
Source
221
45
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
45
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
45
    if (L1 == L2) 
return L16
; // Unifying the same two sets, noop.
224
39
225
39
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
39
    // point to the L2 leader node.
227
39
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
39
    L1LV.getEndOfList()->setNext(&L2LV);
229
39
230
39
    // Update L1LV's end of list pointer.
231
39
    L1LV.Leader = L2LV.getEndOfList();
232
39
233
39
    // Clear L2's leader flag:
234
39
    L2LV.Next = L2LV.getNext();
235
39
236
39
    // L2's leader is now L1.
237
39
    L2LV.Leader = &L1LV;
238
39
    return L1;
239
39
  }
240
241
  // isEquivalent - Return true if V1 is equivalent to V2. This can happen if
242
  // V1 is equal to V2 or if they belong to one equivalence class.
243
33.7M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
244
33.7M
    // Fast path: any element is equivalent to itself.
245
33.7M
    if (V1 == V2)
246
81.8k
      return true;
247
33.6M
    auto It = findLeader(V1);
248
33.6M
    return It != member_end() && 
It == findLeader(V2)23.2k
;
249
33.6M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::isEquivalent(llvm::SCEV const* const&, llvm::SCEV const* const&) const
Line
Count
Source
243
29.5M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
244
29.5M
    // Fast path: any element is equivalent to itself.
245
29.5M
    if (V1 == V2)
246
0
      return true;
247
29.5M
    auto It = findLeader(V1);
248
29.5M
    return It != member_end() && 
It == findLeader(V2)18.0k
;
249
29.5M
  }
llvm::EquivalenceClasses<llvm::Value const*>::isEquivalent(llvm::Value const* const&, llvm::Value const* const&) const
Line
Count
Source
243
4.22M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
244
4.22M
    // Fast path: any element is equivalent to itself.
245
4.22M
    if (V1 == V2)
246
81.8k
      return true;
247
4.14M
    auto It = findLeader(V1);
248
4.14M
    return It != member_end() && 
It == findLeader(V2)5.25k
;
249
4.14M
  }
250
251
  class member_iterator : public std::iterator<std::forward_iterator_tag,
252
                                               const ElemTy, ptrdiff_t> {
253
    friend class EquivalenceClasses;
254
255
    using super = std::iterator<std::forward_iterator_tag,
256
                                const ElemTy, ptrdiff_t>;
257
258
    const ECValue *Node;
259
260
  public:
261
    using size_type = size_t;
262
    using pointer = typename super::pointer;
263
    using reference = typename super::reference;
264
265
    explicit member_iterator() = default;
266
80.0M
    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
266
302
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<int>::member_iterator::member_iterator(llvm::EquivalenceClasses<int>::ECValue const*)
Line
Count
Source
266
65.8k
    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
266
389k
    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
266
63.8M
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const*)
Line
Count
Source
266
15.0M
    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
266
70.1k
    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
266
1.19k
    explicit member_iterator(const ECValue *N) : Node(N) {}
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const*)
Line
Count
Source
266
599k
    explicit member_iterator(const ECValue *N) : Node(N) {}
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::member_iterator(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::ECValue const*)
Line
Count
Source
266
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
266
214
    explicit member_iterator(const ECValue *N) : Node(N) {}
267
268
1.61M
    reference operator*() const {
269
1.61M
      assert(Node != nullptr && "Dereferencing end()!");
270
1.61M
      return Node->getData();
271
1.61M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator::operator*() const
Line
Count
Source
268
119
    reference operator*() const {
269
119
      assert(Node != nullptr && "Dereferencing end()!");
270
119
      return Node->getData();
271
119
    }
llvm::EquivalenceClasses<int>::member_iterator::operator*() const
Line
Count
Source
268
12.0k
    reference operator*() const {
269
12.0k
      assert(Node != nullptr && "Dereferencing end()!");
270
12.0k
      return Node->getData();
271
12.0k
    }
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
268
1.48M
    reference operator*() const {
269
1.48M
      assert(Node != nullptr && "Dereferencing end()!");
270
1.48M
      return Node->getData();
271
1.48M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator*() const
Line
Count
Source
268
48.7k
    reference operator*() const {
269
48.7k
      assert(Node != nullptr && "Dereferencing end()!");
270
48.7k
      return Node->getData();
271
48.7k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator*() const
Line
Count
Source
268
844
    reference operator*() const {
269
844
      assert(Node != nullptr && "Dereferencing end()!");
270
844
      return Node->getData();
271
844
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator*() const
Line
Count
Source
268
67.6k
    reference operator*() const {
269
67.6k
      assert(Node != nullptr && "Dereferencing end()!");
270
67.6k
      return Node->getData();
271
67.6k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::operator*() const
Line
Count
Source
268
2
    reference operator*() const {
269
2
      assert(Node != nullptr && "Dereferencing end()!");
270
2
      return Node->getData();
271
2
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator::operator*() const
Line
Count
Source
268
168
    reference operator*() const {
269
168
      assert(Node != nullptr && "Dereferencing end()!");
270
168
      return Node->getData();
271
168
    }
272
34.7k
    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
272
33.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
272
844
    pointer operator->() const { return &operator*(); }
273
274
430k
    member_iterator &operator++() {
275
430k
      assert(Node != nullptr && "++'d off the end of the list!");
276
430k
      Node = Node->getNext();
277
430k
      return *this;
278
430k
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator::operator++()
Line
Count
Source
274
238
    member_iterator &operator++() {
275
238
      assert(Node != nullptr && "++'d off the end of the list!");
276
238
      Node = Node->getNext();
277
238
      return *this;
278
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
274
353k
    member_iterator &operator++() {
275
353k
      assert(Node != nullptr && "++'d off the end of the list!");
276
353k
      Node = Node->getNext();
277
353k
      return *this;
278
353k
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator++()
Line
Count
Source
274
22.2k
    member_iterator &operator++() {
275
22.2k
      assert(Node != nullptr && "++'d off the end of the list!");
276
22.2k
      Node = Node->getNext();
277
22.2k
      return *this;
278
22.2k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion3<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator++()
Line
Count
Source
274
404
    member_iterator &operator++() {
275
404
      assert(Node != nullptr && "++'d off the end of the list!");
276
404
      Node = Node->getNext();
277
404
      return *this;
278
404
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator++()
Line
Count
Source
274
53.6k
    member_iterator &operator++() {
275
53.6k
      assert(Node != nullptr && "++'d off the end of the list!");
276
53.6k
      Node = Node->getNext();
277
53.6k
      return *this;
278
53.6k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::operator++()
Line
Count
Source
274
4
    member_iterator &operator++() {
275
4
      assert(Node != nullptr && "++'d off the end of the list!");
276
4
      Node = Node->getNext();
277
4
      return *this;
278
4
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator::operator++()
Line
Count
Source
274
112
    member_iterator &operator++() {
275
112
      assert(Node != nullptr && "++'d off the end of the list!");
276
112
      Node = Node->getNext();
277
112
      return *this;
278
112
    }
279
280
58.0k
    member_iterator operator++(int) {    // postincrement operators.
281
58.0k
      member_iterator tmp = *this;
282
58.0k
      ++*this;
283
58.0k
      return tmp;
284
58.0k
    }
285
286
6.06M
    bool operator==(const member_iterator &RHS) const {
287
6.06M
      return Node == RHS.Node;
288
6.06M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator::operator==(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator const&) const
Line
Count
Source
286
32
    bool operator==(const member_iterator &RHS) const {
287
32
      return Node == RHS.Node;
288
32
    }
llvm::EquivalenceClasses<int>::member_iterator::operator==(llvm::EquivalenceClasses<int>::member_iterator const&) const
Line
Count
Source
286
21.4k
    bool operator==(const member_iterator &RHS) const {
287
21.4k
      return Node == RHS.Node;
288
21.4k
    }
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
286
74.1k
    bool operator==(const member_iterator &RHS) const {
287
74.1k
      return Node == RHS.Node;
288
74.1k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
286
2.36M
    bool operator==(const member_iterator &RHS) const {
287
2.36M
      return Node == RHS.Node;
288
2.36M
    }
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator const&) const
Line
Count
Source
286
3.39M
    bool operator==(const member_iterator &RHS) const {
287
3.39M
      return Node == RHS.Node;
288
3.39M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Value*>::member_iterator const&) const
Line
Count
Source
286
6.78k
    bool operator==(const member_iterator &RHS) const {
287
6.78k
      return Node == RHS.Node;
288
6.78k
    }
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
286
402
    bool operator==(const member_iterator &RHS) const {
287
402
      return Node == RHS.Node;
288
402
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator const&) const
Line
Count
Source
286
205k
    bool operator==(const member_iterator &RHS) const {
287
205k
      return Node == RHS.Node;
288
205k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::operator==(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator const&) const
Line
Count
Source
286
3
    bool operator==(const member_iterator &RHS) const {
287
3
      return Node == RHS.Node;
288
3
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator const&) const
Line
Count
Source
286
45
    bool operator==(const member_iterator &RHS) const {
287
45
      return Node == RHS.Node;
288
45
    }
289
34.2M
    bool operator!=(const member_iterator &RHS) const {
290
34.2M
      return Node != RHS.Node;
291
34.2M
    }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator::operator!=(llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::member_iterator const&) const
Line
Count
Source
289
460
    bool operator!=(const member_iterator &RHS) const {
290
460
      return Node != RHS.Node;
291
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
289
402k
    bool operator!=(const member_iterator &RHS) const {
290
402k
      return Node != RHS.Node;
291
402k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
289
29.5M
    bool operator!=(const member_iterator &RHS) const {
290
29.5M
      return Node != RHS.Node;
291
29.5M
    }
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator const&) const
Line
Count
Source
289
4.14M
    bool operator!=(const member_iterator &RHS) const {
290
4.14M
      return Node != RHS.Node;
291
4.14M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Value*>::member_iterator const&) const
Line
Count
Source
289
44.5k
    bool operator!=(const member_iterator &RHS) const {
290
44.5k
      return Node != RHS.Node;
291
44.5k
    }
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
289
550
    bool operator!=(const member_iterator &RHS) const {
290
550
      return Node != RHS.Node;
291
550
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator const&) const
Line
Count
Source
289
146k
    bool operator!=(const member_iterator &RHS) const {
290
146k
      return Node != RHS.Node;
291
146k
    }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator::operator!=(llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::member_iterator const&) const
Line
Count
Source
289
4
    bool operator!=(const member_iterator &RHS) const {
290
4
      return Node != RHS.Node;
291
4
    }
llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::GlobalValue const*>::member_iterator const&) const
Line
Count
Source
289
146
    bool operator!=(const member_iterator &RHS) const {
290
146
      return Node != RHS.Node;
291
146
    }
292
  };
293
};
294
295
} // end namespace llvm
296
297
#endif // LLVM_ADT_EQUIVALENCECLASSES_H