Coverage Report

Created: 2019-07-24 05:18

/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.7M
      : 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
74.7k
      : 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
560k
      : 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.7M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::ECValue(llvm::Value const* const&)
Line
Count
Source
78
11.1M
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Value*>::ECValue::ECValue(llvm::Value* const&)
Line
Count
Source
78
25.3k
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::ECValue(llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> const&)
Line
Count
Source
78
508
      : Leader(this), Next((ECValue*)(intptr_t)1), Data(Elt) {}
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::Instruction* const&)
Line
Count
Source
78
226k
      : 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.2M
    const ECValue *getLeader() const {
81
12.2M
      if (isLeader()) 
return this11.9M
;
82
309k
      if (Leader->isLeader()) 
return Leader240k
;
83
68.5k
      // Path compression.
84
68.5k
      return Leader = Leader->getLeader();
85
68.5k
    }
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
65.6k
    const ECValue *getLeader() const {
81
65.6k
      if (isLeader()) 
return this20.5k
;
82
45.0k
      if (Leader->isLeader()) 
return Leader40.9k
;
83
4.09k
      // Path compression.
84
4.09k
      return Leader = Leader->getLeader();
85
4.09k
    }
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
333k
    const ECValue *getLeader() const {
81
333k
      if (isLeader()) 
return this234k
;
82
98.6k
      if (Leader->isLeader()) 
return Leader62.6k
;
83
36.0k
      // Path compression.
84
36.0k
      return Leader = Leader->getLeader();
85
36.0k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getLeader() const
Line
Count
Source
80
4.76M
    const ECValue *getLeader() const {
81
4.76M
      if (isLeader()) 
return this4.73M
;
82
27.8k
      if (Leader->isLeader()) 
return Leader25.2k
;
83
2.59k
      // Path compression.
84
2.59k
      return Leader = Leader->getLeader();
85
2.59k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getLeader() const
Line
Count
Source
80
6.86M
    const ECValue *getLeader() const {
81
6.86M
      if (isLeader()) 
return this6.85M
;
82
10.4k
      if (Leader->isLeader()) 
return Leader8.26k
;
83
2.18k
      // Path compression.
84
2.18k
      return Leader = Leader->getLeader();
85
2.18k
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getLeader() const
Line
Count
Source
80
26.2k
    const ECValue *getLeader() const {
81
26.2k
      if (isLeader()) 
return this14.3k
;
82
11.8k
      if (Leader->isLeader()) 
return Leader10.9k
;
83
879
      // Path compression.
84
879
      return Leader = Leader->getLeader();
85
879
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getLeader() const
Line
Count
Source
80
522
    const ECValue *getLeader() const {
81
522
      if (isLeader()) 
return this221
;
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
224k
    const ECValue *getLeader() const {
81
224k
      if (isLeader()) 
return this108k
;
82
115k
      if (Leader->isLeader()) 
return Leader92.6k
;
83
22.7k
      // Path compression.
84
22.7k
      return Leader = Leader->getLeader();
85
22.7k
    }
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.9M
    const ECValue *getEndOfList() const {
88
11.9M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
11.9M
      return Leader;
90
11.9M
    }
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
20.4k
    const ECValue *getEndOfList() const {
88
20.4k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
20.4k
      return Leader;
90
20.4k
    }
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
147k
    const ECValue *getEndOfList() const {
88
147k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
147k
      return Leader;
90
147k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getEndOfList() const
Line
Count
Source
87
6.85M
    const ECValue *getEndOfList() const {
88
6.85M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
6.85M
      return Leader;
90
6.85M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getEndOfList() const
Line
Count
Source
87
4.73M
    const ECValue *getEndOfList() const {
88
4.73M
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
4.73M
      return Leader;
90
4.73M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getEndOfList() const
Line
Count
Source
87
11.9k
    const ECValue *getEndOfList() const {
88
11.9k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
11.9k
      return Leader;
90
11.9k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getEndOfList() const
Line
Count
Source
87
278
    const ECValue *getEndOfList() const {
88
278
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
278
      return Leader;
90
278
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getEndOfList() const
Line
Count
Source
87
169k
    const ECValue *getEndOfList() const {
88
169k
      assert(isLeader() && "Cannot get the end of a list for a non-leader!");
89
169k
      return Leader;
90
169k
    }
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.97M
    void setNext(const ECValue *NewNext) const {
93
5.97M
      assert(getNext() == nullptr && "Already has a next pointer!");
94
5.97M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
5.97M
    }
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
10.2k
    void setNext(const ECValue *NewNext) const {
93
10.2k
      assert(getNext() == nullptr && "Already has a next pointer!");
94
10.2k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
10.2k
    }
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.9k
    void setNext(const ECValue *NewNext) const {
93
73.9k
      assert(getNext() == nullptr && "Already has a next pointer!");
94
73.9k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
73.9k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const*) const
Line
Count
Source
92
3.42M
    void setNext(const ECValue *NewNext) const {
93
3.42M
      assert(getNext() == nullptr && "Already has a next pointer!");
94
3.42M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
3.42M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const*) const
Line
Count
Source
92
2.36M
    void setNext(const ECValue *NewNext) const {
93
2.36M
      assert(getNext() == nullptr && "Already has a next pointer!");
94
2.36M
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
2.36M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Value*>::ECValue const*) const
Line
Count
Source
92
5.97k
    void setNext(const ECValue *NewNext) const {
93
5.97k
      assert(getNext() == nullptr && "Already has a next pointer!");
94
5.97k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
5.97k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::setNext(llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue const*) const
Line
Count
Source
92
139
    void setNext(const ECValue *NewNext) const {
93
139
      assert(getNext() == nullptr && "Already has a next pointer!");
94
139
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
139
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::setNext(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const*) const
Line
Count
Source
92
84.7k
    void setNext(const ECValue *NewNext) const {
93
84.7k
      assert(getNext() == nullptr && "Already has a next pointer!");
94
84.7k
      Next = (const ECValue*)((intptr_t)NewNext | (intptr_t)isLeader());
95
84.7k
    }
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.17M
                                  Data(RHS.Data) {
100
7.17M
      // Only support copying of singleton nodes.
101
7.17M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
7.17M
    }
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
13.4k
                                  Data(RHS.Data) {
100
13.4k
      // Only support copying of singleton nodes.
101
13.4k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
13.4k
    }
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
149k
                                  Data(RHS.Data) {
100
149k
      // Only support copying of singleton nodes.
101
149k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
149k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const&)
Line
Count
Source
99
3.90M
                                  Data(RHS.Data) {
100
3.90M
      // Only support copying of singleton nodes.
101
3.90M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
3.90M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue const&)
Line
Count
Source
99
3.00M
                                  Data(RHS.Data) {
100
3.00M
      // Only support copying of singleton nodes.
101
3.00M
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
3.00M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Value*>::ECValue const&)
Line
Count
Source
99
7.39k
                                  Data(RHS.Data) {
100
7.39k
      // Only support copying of singleton nodes.
101
7.39k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
7.39k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::ECValue(llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue const&)
Line
Count
Source
99
216
                                  Data(RHS.Data) {
100
216
      // Only support copying of singleton nodes.
101
216
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
216
    }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::ECValue(llvm::EquivalenceClasses<llvm::Instruction*>::ECValue const&)
Line
Count
Source
99
98.8k
                                  Data(RHS.Data) {
100
98.8k
      // Only support copying of singleton nodes.
101
98.8k
      assert(RHS.isLeader() && RHS.getNext() == nullptr && "Not a singleton!");
102
98.8k
    }
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
146M
    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
221
    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
525k
    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.76M
    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.3M
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::operator<(llvm::EquivalenceClasses<llvm::Value const*>::ECValue const&) const
Line
Count
Source
104
90.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::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::operator<(llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue const&) const
Line
Count
Source
104
1.29k
    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
240
    bool operator<(const ECValue &UFN) const { return Data < UFN.Data; }
105
106
18.8M
    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
120k
    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
555k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::isLeader() const
Line
Count
Source
106
7.15M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::isLeader() const
Line
Count
Source
106
10.3M
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::isLeader() const
Line
Count
Source
106
66.1k
    bool isLeader() const { return (intptr_t)Next & 1; }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::isLeader() const
Line
Count
Source
106
1.33k
    bool isLeader() const { return (intptr_t)Next & 1; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::isLeader() const
Line
Count
Source
106
609k
    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.63M
    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
14.8k
    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.50M
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getData() const
Line
Count
Source
107
48.4k
    const ElemTy &getData() const { return Data; }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getData() const
Line
Count
Source
107
910
    const ElemTy &getData() const { return Data; }
llvm::EquivalenceClasses<llvm::Instruction*>::ECValue::getData() const
Line
Count
Source
107
67.9k
    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.40M
    const ECValue *getNext() const {
110
6.40M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
6.40M
    }
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
10.2k
    const ECValue *getNext() const {
110
10.2k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
10.2k
    }
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
433k
    const ECValue *getNext() const {
110
433k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
433k
    }
llvm::EquivalenceClasses<llvm::Value const*>::ECValue::getNext() const
Line
Count
Source
109
3.42M
    const ECValue *getNext() const {
110
3.42M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
3.42M
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::ECValue::getNext() const
Line
Count
Source
109
2.36M
    const ECValue *getNext() const {
110
2.36M
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
2.36M
    }
llvm::EquivalenceClasses<llvm::Value*>::ECValue::getNext() const
Line
Count
Source
109
28.1k
    const ECValue *getNext() const {
110
28.1k
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
28.1k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue::getNext() const
Line
Count
Source
109
571
    const ECValue *getNext() const {
110
571
      return (ECValue*)((intptr_t)Next & ~(intptr_t)1);
111
571
    }
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
145M
  EquivalenceClasses() = default;
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::EquivalenceClasses()
Line
Count
Source
122
256
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<int>::EquivalenceClasses()
Line
Count
Source
122
3.36k
  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
56.2k
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::SCEV const*>::EquivalenceClasses()
Line
Count
Source
122
72.4M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value const*>::EquivalenceClasses()
Line
Count
Source
122
72.4M
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Value*>::EquivalenceClasses()
Line
Count
Source
122
19.9k
  EquivalenceClasses() = default;
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::EquivalenceClasses()
Line
Count
Source
122
489
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::Instruction*>::EquivalenceClasses()
Line
Count
Source
122
297k
  EquivalenceClasses() = default;
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::EquivalenceClasses()
Line
Count
Source
122
41
  EquivalenceClasses() = default;
llvm::EquivalenceClasses<llvm::GlobalValue const*>::EquivalenceClasses()
Line
Count
Source
122
23
  EquivalenceClasses() = default;
123
276
  EquivalenceClasses(const EquivalenceClasses &RHS) {
124
276
    operator=(RHS);
125
276
  }
126
127
279k
  const EquivalenceClasses &operator=(const EquivalenceClasses &RHS) {
128
279k
    TheMapping.clear();
129
279k
    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
279k
    return *this;
137
279k
  }
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
559k
  iterator begin() const { return TheMapping.begin(); }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::begin() const
Line
Count
Source
146
256
  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::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::begin() const
Line
Count
Source
146
65
  iterator begin() const { return TheMapping.begin(); }
llvm::EquivalenceClasses<llvm::Instruction*>::begin() const
Line
Count
Source
146
558k
  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
567k
  iterator end() const { return TheMapping.end(); }
AArch64A57FPLoadBalancing.cpp:llvm::EquivalenceClasses<(anonymous namespace)::Chain*>::end() const
Line
Count
Source
147
256
  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::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::end() const
Line
Count
Source
147
65
  iterator end() const { return TheMapping.end(); }
llvm::EquivalenceClasses<llvm::Instruction*>::end() const
Line
Count
Source
147
565k
  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
530
  bool empty() const { return TheMapping.empty(); }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::empty() const
Line
Count
Source
149
489
  bool empty() const { return TheMapping.empty(); }
LoopDistribute.cpp:llvm::EquivalenceClasses<(anonymous namespace)::InstPartition*>::empty() const
Line
Count
Source
149
41
  bool empty() const { return TheMapping.empty(); }
150
151
  /// member_* Iterate over the members of an equivalence class.
152
  class member_iterator;
153
258k
  member_iterator member_begin(iterator I) const {
154
258k
    // Only leaders provide anything to iterate over.
155
258k
    return member_iterator(I->isLeader() ? 
&*I75.9k
:
nullptr182k
);
156
258k
  }
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
50.1k
  member_iterator member_begin(iterator I) const {
154
50.1k
    // Only leaders provide anything to iterate over.
155
50.1k
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
156
50.1k
  }
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.1k
  member_iterator member_begin(iterator I) const {
154
22.1k
    // Only leaders provide anything to iterate over.
155
22.1k
    return member_iterator(I->isLeader() ? 
&*I4.25k
:
nullptr17.9k
);
156
22.1k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_begin(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue, void*>*, long>) const
Line
Count
Source
153
154
  member_iterator member_begin(iterator I) const {
154
154
    // Only leaders provide anything to iterate over.
155
154
    return member_iterator(I->isLeader() ? &*I : 
nullptr0
);
156
154
  }
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
185k
  member_iterator member_begin(iterator I) const {
154
185k
    // Only leaders provide anything to iterate over.
155
185k
    return member_iterator(I->isLeader() ? 
&*I21.2k
:
nullptr164k
);
156
185k
  }
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
68.7M
  member_iterator member_end() const {
158
68.7M
    return member_iterator(nullptr);
159
68.7M
  }
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
50.1k
  member_iterator member_end() const {
158
50.1k
    return member_iterator(nullptr);
159
50.1k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_end() const
Line
Count
Source
157
59.9M
  member_iterator member_end() const {
158
59.9M
    return member_iterator(nullptr);
159
59.9M
  }
llvm::EquivalenceClasses<llvm::Value const*>::member_end() const
Line
Count
Source
157
8.49M
  member_iterator member_end() const {
158
8.49M
    return member_iterator(nullptr);
159
8.49M
  }
llvm::EquivalenceClasses<llvm::Value*>::member_end() const
Line
Count
Source
157
22.1k
  member_iterator member_end() const {
158
22.1k
    return member_iterator(nullptr);
159
22.1k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_end() const
Line
Count
Source
157
586
  member_iterator member_end() const {
158
586
    return member_iterator(nullptr);
159
586
  }
llvm::EquivalenceClasses<llvm::Instruction*>::member_end() const
Line
Count
Source
157
215k
  member_iterator member_end() const {
158
215k
    return member_iterator(nullptr);
159
215k
  }
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
57.3k
  iterator findValue(const ElemTy &V) const {
164
57.3k
    return TheMapping.find(V);
165
57.3k
  }
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
50.1k
  iterator findValue(const ElemTy &V) const {
164
50.1k
    return TheMapping.find(V);
165
50.1k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::findValue(llvm::Instruction* const&) const
Line
Count
Source
163
7.21k
  iterator findValue(const ElemTy &V) const {
164
7.21k
    return TheMapping.find(V);
165
7.21k
  }
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
166k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
171
166k
    member_iterator MI = findLeader(V);
172
166k
    assert(MI != member_end() && "Value is not in the set!");
173
166k
    return *MI;
174
166k
  }
llvm::EquivalenceClasses<int>::getLeaderValue(int const&) const
Line
Count
Source
170
14.8k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
171
14.8k
    member_iterator MI = findLeader(V);
172
14.8k
    assert(MI != member_end() && "Value is not in the set!");
173
14.8k
    return *MI;
174
14.8k
  }
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
147k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
171
147k
    member_iterator MI = findLeader(V);
172
147k
    assert(MI != member_end() && "Value is not in the set!");
173
147k
    return *MI;
174
147k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::getLeaderValue(llvm::Instruction* const&) const
Line
Count
Source
170
3.92k
  const ElemTy &getLeaderValue(const ElemTy &V) const {
171
3.92k
    member_iterator MI = findLeader(V);
172
3.92k
    assert(MI != member_end() && "Value is not in the set!");
173
3.92k
    return *MI;
174
3.92k
  }
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.8k
  const ElemTy &getOrInsertLeaderValue(const ElemTy &V) {
180
11.8k
    member_iterator MI = findLeader(insert(V));
181
11.8k
    assert(MI != member_end() && "Value is not in the set!");
182
11.8k
    return *MI;
183
11.8k
  }
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.2M
  iterator insert(const ElemTy &Data) {
200
12.2M
    return TheMapping.insert(ECValue(Data)).first;
201
12.2M
  }
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
38.3k
  iterator insert(const ElemTy &Data) {
200
38.3k
    return TheMapping.insert(ECValue(Data)).first;
201
38.3k
  }
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
363k
  iterator insert(const ElemTy &Data) {
200
363k
    return TheMapping.insert(ECValue(Data)).first;
201
363k
  }
llvm::EquivalenceClasses<llvm::Value const*>::insert(llvm::Value const* const&)
Line
Count
Source
199
6.85M
  iterator insert(const ElemTy &Data) {
200
6.85M
    return TheMapping.insert(ECValue(Data)).first;
201
6.85M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::insert(llvm::SCEV const* const&)
Line
Count
Source
199
4.73M
  iterator insert(const ElemTy &Data) {
200
4.73M
    return TheMapping.insert(ECValue(Data)).first;
201
4.73M
  }
llvm::EquivalenceClasses<llvm::Value*>::insert(llvm::Value* const&)
Line
Count
Source
199
25.3k
  iterator insert(const ElemTy &Data) {
200
25.3k
    return TheMapping.insert(ECValue(Data)).first;
201
25.3k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::insert(llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> const&)
Line
Count
Source
199
508
  iterator insert(const ElemTy &Data) {
200
508
    return TheMapping.insert(ECValue(Data)).first;
201
508
  }
llvm::EquivalenceClasses<llvm::Instruction*>::insert(llvm::Instruction* const&)
Line
Count
Source
199
197k
  iterator insert(const ElemTy &Data) {
200
197k
    return TheMapping.insert(ECValue(Data)).first;
201
197k
  }
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
46.4M
  member_iterator findLeader(iterator I) const {
208
46.4M
    if (I == TheMapping.end()) 
return member_end()34.2M
;
209
12.2M
    return member_iterator(I->getLeader());
210
12.2M
  }
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
61.5k
  member_iterator findLeader(iterator I) const {
208
61.5k
    if (I == TheMapping.end()) 
return member_end()6
;
209
61.5k
    return member_iterator(I->getLeader());
210
61.5k
  }
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
297k
  member_iterator findLeader(iterator I) const {
208
297k
    if (I == TheMapping.end()) 
return member_end()0
;
209
297k
    return member_iterator(I->getLeader());
210
297k
  }
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.7M
  member_iterator findLeader(iterator I) const {
208
34.7M
    if (I == TheMapping.end()) 
return member_end()29.9M
;
209
4.76M
    return member_iterator(I->getLeader());
210
4.76M
  }
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
11.1M
  member_iterator findLeader(iterator I) const {
208
11.1M
    if (I == TheMapping.end()) 
return member_end()4.24M
;
209
6.86M
    return member_iterator(I->getLeader());
210
6.86M
  }
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.3k
  member_iterator findLeader(iterator I) const {
208
25.3k
    if (I == TheMapping.end()) 
return member_end()0
;
209
25.3k
    return member_iterator(I->getLeader());
210
25.3k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::findLeader(std::__1::__tree_const_iterator<llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue, std::__1::__tree_node<llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue, void*>*, long>) const
Line
Count
Source
207
508
  member_iterator findLeader(iterator I) const {
208
508
    if (I == TheMapping.end()) 
return member_end()0
;
209
508
    return member_iterator(I->getLeader());
210
508
  }
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
213k
  member_iterator findLeader(iterator I) const {
208
213k
    if (I == TheMapping.end()) 
return member_end()11.9k
;
209
201k
    return member_iterator(I->getLeader());
210
201k
  }
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
34.4M
  member_iterator findLeader(const ElemTy &V) const {
212
34.4M
    return findLeader(TheMapping.find(V));
213
34.4M
  }
llvm::EquivalenceClasses<int>::findLeader(int const&) const
Line
Count
Source
211
36.4k
  member_iterator findLeader(const ElemTy &V) const {
212
36.4k
    return findLeader(TheMapping.find(V));
213
36.4k
  }
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
147k
  member_iterator findLeader(const ElemTy &V) const {
212
147k
    return findLeader(TheMapping.find(V));
213
147k
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::findLeader(llvm::SCEV const* const&) const
Line
Count
Source
211
29.9M
  member_iterator findLeader(const ElemTy &V) const {
212
29.9M
    return findLeader(TheMapping.find(V));
213
29.9M
  }
llvm::EquivalenceClasses<llvm::Value const*>::findLeader(llvm::Value const* const&) const
Line
Count
Source
211
4.25M
  member_iterator findLeader(const ElemTy &V) const {
212
4.25M
    return findLeader(TheMapping.find(V));
213
4.25M
  }
llvm::EquivalenceClasses<llvm::Instruction*>::findLeader(llvm::Instruction* const&) const
Line
Count
Source
211
21.9k
  member_iterator findLeader(const ElemTy &V) const {
212
21.9k
    return findLeader(TheMapping.find(V));
213
21.9k
  }
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.98M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
5.98M
    iterator V1I = insert(V1), V2I = insert(V2);
219
5.98M
    return unionSets(findLeader(V1I), findLeader(V2I));
220
5.98M
  }
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
12.5k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
12.5k
    iterator V1I = insert(V1), V2I = insert(V2);
219
12.5k
    return unionSets(findLeader(V1I), findLeader(V2I));
220
12.5k
  }
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.8k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
74.8k
    iterator V1I = insert(V1), V2I = insert(V2);
219
74.8k
    return unionSets(findLeader(V1I), findLeader(V2I));
220
74.8k
  }
llvm::EquivalenceClasses<llvm::Value const*>::unionSets(llvm::Value const* const&, llvm::Value const* const&)
Line
Count
Source
217
3.42M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
3.42M
    iterator V1I = insert(V1), V2I = insert(V2);
219
3.42M
    return unionSets(findLeader(V1I), findLeader(V2I));
220
3.42M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::unionSets(llvm::SCEV const* const&, llvm::SCEV const* const&)
Line
Count
Source
217
2.36M
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
2.36M
    iterator V1I = insert(V1), V2I = insert(V2);
219
2.36M
    return unionSets(findLeader(V1I), findLeader(V2I));
220
2.36M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::Value* const&, llvm::Value* const&)
Line
Count
Source
217
6.74k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
6.74k
    iterator V1I = insert(V1), V2I = insert(V2);
219
6.74k
    return unionSets(findLeader(V1I), findLeader(V2I));
220
6.74k
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::Instruction* const&, llvm::Instruction* const&)
Line
Count
Source
217
95.6k
  member_iterator unionSets(const ElemTy &V1, const ElemTy &V2) {
218
95.6k
    iterator V1I = insert(V1), V2I = insert(V2);
219
95.6k
    return unionSets(findLeader(V1I), findLeader(V2I));
220
95.6k
  }
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.98M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
5.98M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
5.98M
    if (L1 == L2) 
return L115.2k
; // Unifying the same two sets, noop.
224
5.97M
225
5.97M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
5.97M
    // point to the L2 leader node.
227
5.97M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
5.97M
    L1LV.getEndOfList()->setNext(&L2LV);
229
5.97M
230
5.97M
    // Update L1LV's end of list pointer.
231
5.97M
    L1LV.Leader = L2LV.getEndOfList();
232
5.97M
233
5.97M
    // Clear L2's leader flag:
234
5.97M
    L2LV.Next = L2LV.getNext();
235
5.97M
236
5.97M
    // L2's leader is now L1.
237
5.97M
    L2LV.Leader = &L1LV;
238
5.97M
    return L1;
239
5.97M
  }
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
12.5k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
12.5k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
12.5k
    if (L1 == L2) 
return L12.31k
; // Unifying the same two sets, noop.
224
10.2k
225
10.2k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
10.2k
    // point to the L2 leader node.
227
10.2k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
10.2k
    L1LV.getEndOfList()->setNext(&L2LV);
229
10.2k
230
10.2k
    // Update L1LV's end of list pointer.
231
10.2k
    L1LV.Leader = L2LV.getEndOfList();
232
10.2k
233
10.2k
    // Clear L2's leader flag:
234
10.2k
    L2LV.Next = L2LV.getNext();
235
10.2k
236
10.2k
    // L2's leader is now L1.
237
10.2k
    L2LV.Leader = &L1LV;
238
10.2k
    return L1;
239
10.2k
  }
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.8k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
74.8k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
74.8k
    if (L1 == L2) 
return L1986
; // Unifying the same two sets, noop.
224
73.9k
225
73.9k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
73.9k
    // point to the L2 leader node.
227
73.9k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
73.9k
    L1LV.getEndOfList()->setNext(&L2LV);
229
73.9k
230
73.9k
    // Update L1LV's end of list pointer.
231
73.9k
    L1LV.Leader = L2LV.getEndOfList();
232
73.9k
233
73.9k
    // Clear L2's leader flag:
234
73.9k
    L2LV.Next = L2LV.getNext();
235
73.9k
236
73.9k
    // L2's leader is now L1.
237
73.9k
    L2LV.Leader = &L1LV;
238
73.9k
    return L1;
239
73.9k
  }
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.42M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
3.42M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
3.42M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
224
3.42M
225
3.42M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
3.42M
    // point to the L2 leader node.
227
3.42M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
3.42M
    L1LV.getEndOfList()->setNext(&L2LV);
229
3.42M
230
3.42M
    // Update L1LV's end of list pointer.
231
3.42M
    L1LV.Leader = L2LV.getEndOfList();
232
3.42M
233
3.42M
    // Clear L2's leader flag:
234
3.42M
    L2LV.Next = L2LV.getNext();
235
3.42M
236
3.42M
    // L2's leader is now L1.
237
3.42M
    L2LV.Leader = &L1LV;
238
3.42M
    return L1;
239
3.42M
  }
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.36M
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
2.36M
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
2.36M
    if (L1 == L2) 
return L10
; // Unifying the same two sets, noop.
224
2.36M
225
2.36M
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
2.36M
    // point to the L2 leader node.
227
2.36M
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
2.36M
    L1LV.getEndOfList()->setNext(&L2LV);
229
2.36M
230
2.36M
    // Update L1LV's end of list pointer.
231
2.36M
    L1LV.Leader = L2LV.getEndOfList();
232
2.36M
233
2.36M
    // Clear L2's leader flag:
234
2.36M
    L2LV.Next = L2LV.getNext();
235
2.36M
236
2.36M
    // L2's leader is now L1.
237
2.36M
    L2LV.Leader = &L1LV;
238
2.36M
    return L1;
239
2.36M
  }
llvm::EquivalenceClasses<llvm::Value*>::unionSets(llvm::EquivalenceClasses<llvm::Value*>::member_iterator, llvm::EquivalenceClasses<llvm::Value*>::member_iterator)
Line
Count
Source
221
6.74k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
6.74k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
6.74k
    if (L1 == L2) 
return L1766
; // Unifying the same two sets, noop.
224
5.97k
225
5.97k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
5.97k
    // point to the L2 leader node.
227
5.97k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
5.97k
    L1LV.getEndOfList()->setNext(&L2LV);
229
5.97k
230
5.97k
    // Update L1LV's end of list pointer.
231
5.97k
    L1LV.Leader = L2LV.getEndOfList();
232
5.97k
233
5.97k
    // Clear L2's leader flag:
234
5.97k
    L2LV.Next = L2LV.getNext();
235
5.97k
236
5.97k
    // L2's leader is now L1.
237
5.97k
    L2LV.Leader = &L1LV;
238
5.97k
    return L1;
239
5.97k
  }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::unionSets(llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator, llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator)
Line
Count
Source
221
412
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
412
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
412
    if (L1 == L2) 
return L1273
; // Unifying the same two sets, noop.
224
139
225
139
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
139
    // point to the L2 leader node.
227
139
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
139
    L1LV.getEndOfList()->setNext(&L2LV);
229
139
230
139
    // Update L1LV's end of list pointer.
231
139
    L1LV.Leader = L2LV.getEndOfList();
232
139
233
139
    // Clear L2's leader flag:
234
139
    L2LV.Next = L2LV.getNext();
235
139
236
139
    // L2's leader is now L1.
237
139
    L2LV.Leader = &L1LV;
238
139
    return L1;
239
139
  }
llvm::EquivalenceClasses<llvm::Instruction*>::unionSets(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator, llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator)
Line
Count
Source
221
95.6k
  member_iterator unionSets(member_iterator L1, member_iterator L2) {
222
95.6k
    assert(L1 != member_end() && L2 != member_end() && "Illegal inputs!");
223
95.6k
    if (L1 == L2) 
return L110.9k
; // Unifying the same two sets, noop.
224
84.7k
225
84.7k
    // Otherwise, this is a real union operation.  Set the end of the L1 list to
226
84.7k
    // point to the L2 leader node.
227
84.7k
    const ECValue &L1LV = *L1.Node, &L2LV = *L2.Node;
228
84.7k
    L1LV.getEndOfList()->setNext(&L2LV);
229
84.7k
230
84.7k
    // Update L1LV's end of list pointer.
231
84.7k
    L1LV.Leader = L2LV.getEndOfList();
232
84.7k
233
84.7k
    // Clear L2's leader flag:
234
84.7k
    L2LV.Next = L2LV.getNext();
235
84.7k
236
84.7k
    // L2's leader is now L1.
237
84.7k
    L2LV.Leader = &L1LV;
238
84.7k
    return L1;
239
84.7k
  }
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
34.3M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
244
34.3M
    // Fast path: any element is equivalent to itself.
245
34.3M
    if (V1 == V2)
246
82.9k
      return true;
247
34.2M
    auto It = findLeader(V1);
248
34.2M
    return It != member_end() && 
It == findLeader(V2)23.3k
;
249
34.2M
  }
llvm::EquivalenceClasses<llvm::SCEV const*>::isEquivalent(llvm::SCEV const* const&, llvm::SCEV const* const&) const
Line
Count
Source
243
29.9M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
244
29.9M
    // Fast path: any element is equivalent to itself.
245
29.9M
    if (V1 == V2)
246
0
      return true;
247
29.9M
    auto It = findLeader(V1);
248
29.9M
    return It != member_end() && 
It == findLeader(V2)17.9k
;
249
29.9M
  }
llvm::EquivalenceClasses<llvm::Value const*>::isEquivalent(llvm::Value const* const&, llvm::Value const* const&) const
Line
Count
Source
243
4.33M
  bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
244
4.33M
    // Fast path: any element is equivalent to itself.
245
4.33M
    if (V1 == V2)
246
82.9k
      return true;
247
4.24M
    auto It = findLeader(V1);
248
4.24M
    return It != member_end() && 
It == findLeader(V2)5.38k
;
249
4.24M
  }
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
81.2M
    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
72.3k
    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
397k
    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
64.7M
    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.3M
    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
69.6k
    explicit member_iterator(const ECValue *N) : Node(N) {}
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::member_iterator(llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::ECValue const*)
Line
Count
Source
266
1.24k
    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
602k
    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.63M
    reference operator*() const {
269
1.63M
      assert(Node != nullptr && "Dereferencing end()!");
270
1.63M
      return Node->getData();
271
1.63M
    }
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
14.8k
    reference operator*() const {
269
14.8k
      assert(Node != nullptr && "Dereferencing end()!");
270
14.8k
      return Node->getData();
271
14.8k
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::operator*() const
Line
Count
Source
268
1.50M
    reference operator*() const {
269
1.50M
      assert(Node != nullptr && "Dereferencing end()!");
270
1.50M
      return Node->getData();
271
1.50M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator*() const
Line
Count
Source
268
48.4k
    reference operator*() const {
269
48.4k
      assert(Node != nullptr && "Dereferencing end()!");
270
48.4k
      return Node->getData();
271
48.4k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator*() const
Line
Count
Source
268
910
    reference operator*() const {
269
910
      assert(Node != nullptr && "Dereferencing end()!");
270
910
      return Node->getData();
271
910
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator*() const
Line
Count
Source
268
67.9k
    reference operator*() const {
269
67.9k
      assert(Node != nullptr && "Dereferencing end()!");
270
67.9k
      return Node->getData();
271
67.9k
    }
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
36.1k
    pointer operator->() const { return &operator*(); }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::operator->() const
Line
Count
Source
272
35.2k
    pointer operator->() const { return &operator*(); }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator->() const
Line
Count
Source
272
910
    pointer operator->() const { return &operator*(); }
273
274
436k
    member_iterator &operator++() {
275
436k
      assert(Node != nullptr && "++'d off the end of the list!");
276
436k
      Node = Node->getNext();
277
436k
      return *this;
278
436k
    }
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
359k
    member_iterator &operator++() {
275
359k
      assert(Node != nullptr && "++'d off the end of the list!");
276
359k
      Node = Node->getNext();
277
359k
      return *this;
278
359k
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator++()
Line
Count
Source
274
22.1k
    member_iterator &operator++() {
275
22.1k
      assert(Node != nullptr && "++'d off the end of the list!");
276
22.1k
      Node = Node->getNext();
277
22.1k
      return *this;
278
22.1k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator++()
Line
Count
Source
274
432
    member_iterator &operator++() {
275
432
      assert(Node != nullptr && "++'d off the end of the list!");
276
432
      Node = Node->getNext();
277
432
      return *this;
278
432
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator++()
Line
Count
Source
274
53.8k
    member_iterator &operator++() {
275
53.8k
      assert(Node != nullptr && "++'d off the end of the list!");
276
53.8k
      Node = Node->getNext();
277
53.8k
      return *this;
278
53.8k
    }
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
59.3k
    member_iterator operator++(int) {    // postincrement operators.
281
59.3k
      member_iterator tmp = *this;
282
59.3k
      ++*this;
283
59.3k
      return tmp;
284
59.3k
    }
285
286
6.13M
    bool operator==(const member_iterator &RHS) const {
287
6.13M
      return Node == RHS.Node;
288
6.13M
    }
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
23.3k
    bool operator==(const member_iterator &RHS) const {
287
23.3k
      return Node == RHS.Node;
288
23.3k
    }
llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator::operator==(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*> > > >::member_iterator const&) const
Line
Count
Source
286
74.8k
    bool operator==(const member_iterator &RHS) const {
287
74.8k
      return Node == RHS.Node;
288
74.8k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
286
2.38M
    bool operator==(const member_iterator &RHS) const {
287
2.38M
      return Node == RHS.Node;
288
2.38M
    }
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator const&) const
Line
Count
Source
286
3.43M
    bool operator==(const member_iterator &RHS) const {
287
3.43M
      return Node == RHS.Node;
288
3.43M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Value*>::member_iterator const&) const
Line
Count
Source
286
6.74k
    bool operator==(const member_iterator &RHS) const {
287
6.74k
      return Node == RHS.Node;
288
6.74k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator==(llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator const&) const
Line
Count
Source
286
412
    bool operator==(const member_iterator &RHS) const {
287
412
      return Node == RHS.Node;
288
412
    }
llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator::operator==(llvm::EquivalenceClasses<llvm::Instruction*>::member_iterator const&) const
Line
Count
Source
286
206k
    bool operator==(const member_iterator &RHS) const {
287
206k
      return Node == RHS.Node;
288
206k
    }
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.8M
    bool operator!=(const member_iterator &RHS) const {
290
34.8M
      return Node != RHS.Node;
291
34.8M
    }
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
409k
    bool operator!=(const member_iterator &RHS) const {
290
409k
      return Node != RHS.Node;
291
409k
    }
llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::SCEV const*>::member_iterator const&) const
Line
Count
Source
289
29.9M
    bool operator!=(const member_iterator &RHS) const {
290
29.9M
      return Node != RHS.Node;
291
29.9M
    }
llvm::EquivalenceClasses<llvm::Value const*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Value const*>::member_iterator const&) const
Line
Count
Source
289
4.24M
    bool operator!=(const member_iterator &RHS) const {
290
4.24M
      return Node != RHS.Node;
291
4.24M
    }
llvm::EquivalenceClasses<llvm::Value*>::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::Value*>::member_iterator const&) const
Line
Count
Source
289
44.3k
    bool operator!=(const member_iterator &RHS) const {
290
44.3k
      return Node != RHS.Node;
291
44.3k
    }
LowerTypeTests.cpp:llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator::operator!=(llvm::EquivalenceClasses<llvm::PointerUnion<(anonymous namespace)::GlobalTypeMember*, llvm::Metadata*, (anonymous namespace)::ICallBranchFunnel*> >::member_iterator const&) const
Line
Count
Source
289
586
    bool operator!=(const member_iterator &RHS) const {
290
586
      return Node != RHS.Node;
291
586
    }
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