Coverage Report

Created: 2018-11-16 02:38

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/include/llvm/ADT/simple_ilist.h
Line
Count
Source (jump to first uncovered line)
1
//===- llvm/ADT/simple_ilist.h - Simple Intrusive List ----------*- C++ -*-===//
2
//
3
//                     The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
10
#ifndef LLVM_ADT_SIMPLE_ILIST_H
11
#define LLVM_ADT_SIMPLE_ILIST_H
12
13
#include "llvm/ADT/ilist_base.h"
14
#include "llvm/ADT/ilist_iterator.h"
15
#include "llvm/ADT/ilist_node.h"
16
#include "llvm/ADT/ilist_node_options.h"
17
#include "llvm/Support/Compiler.h"
18
#include <algorithm>
19
#include <cassert>
20
#include <cstddef>
21
#include <functional>
22
#include <iterator>
23
#include <utility>
24
25
namespace llvm {
26
27
/// A simple intrusive list implementation.
28
///
29
/// This is a simple intrusive list for a \c T that inherits from \c
30
/// ilist_node<T>.  The list never takes ownership of anything inserted in it.
31
///
32
/// Unlike \a iplist<T> and \a ilist<T>, \a simple_ilist<T> never allocates or
33
/// deletes values, and has no callback traits.
34
///
35
/// The API for adding nodes include \a push_front(), \a push_back(), and \a
36
/// insert().  These all take values by reference (not by pointer), except for
37
/// the range version of \a insert().
38
///
39
/// There are three sets of API for discarding nodes from the list: \a
40
/// remove(), which takes a reference to the node to remove, \a erase(), which
41
/// takes an iterator or iterator range and returns the next one, and \a
42
/// clear(), which empties out the container.  All three are constant time
43
/// operations.  None of these deletes any nodes; in particular, if there is a
44
/// single node in the list, then these have identical semantics:
45
/// \li \c L.remove(L.front());
46
/// \li \c L.erase(L.begin());
47
/// \li \c L.clear();
48
///
49
/// As a convenience for callers, there are parallel APIs that take a \c
50
/// Disposer (such as \c std::default_delete<T>): \a removeAndDispose(), \a
51
/// eraseAndDispose(), and \a clearAndDispose().  These have different names
52
/// because the extra semantic is otherwise non-obvious.  They are equivalent
53
/// to calling \a std::for_each() on the range to be discarded.
54
///
55
/// The currently available \p Options customize the nodes in the list.  The
56
/// same options must be specified in the \a ilist_node instantation for
57
/// compatibility (although the order is irrelevant).
58
/// \li Use \a ilist_tag to designate which ilist_node for a given \p T this
59
/// list should use.  This is useful if a type \p T is part of multiple,
60
/// independent lists simultaneously.
61
/// \li Use \a ilist_sentinel_tracking to always (or never) track whether a
62
/// node is a sentinel.  Specifying \c true enables the \a
63
/// ilist_node::isSentinel() API.  Unlike \a ilist_node::isKnownSentinel(),
64
/// which is only appropriate for assertions, \a ilist_node::isSentinel() is
65
/// appropriate for real logic.
66
///
67
/// Here are examples of \p Options usage:
68
/// \li \c simple_ilist<T> gives the defaults.  \li \c
69
/// simple_ilist<T,ilist_sentinel_tracking<true>> enables the \a
70
/// ilist_node::isSentinel() API.
71
/// \li \c simple_ilist<T,ilist_tag<A>,ilist_sentinel_tracking<false>>
72
/// specifies a tag of A and that tracking should be off (even when
73
/// LLVM_ENABLE_ABI_BREAKING_CHECKS are enabled).
74
/// \li \c simple_ilist<T,ilist_sentinel_tracking<false>,ilist_tag<A>> is
75
/// equivalent to the last.
76
///
77
/// See \a is_valid_option for steps on adding a new option.
78
template <typename T, class... Options>
79
class simple_ilist
80
    : ilist_detail::compute_node_options<T, Options...>::type::list_base_type,
81
      ilist_detail::SpecificNodeAccess<
82
          typename ilist_detail::compute_node_options<T, Options...>::type> {
83
  static_assert(ilist_detail::check_options<Options...>::value,
84
                "Unrecognized node option!");
85
  using OptionsT =
86
      typename ilist_detail::compute_node_options<T, Options...>::type;
87
  using list_base_type = typename OptionsT::list_base_type;
88
  ilist_sentinel<OptionsT> Sentinel;
89
90
public:
91
  using value_type = typename OptionsT::value_type;
92
  using pointer = typename OptionsT::pointer;
93
  using reference = typename OptionsT::reference;
94
  using const_pointer = typename OptionsT::const_pointer;
95
  using const_reference = typename OptionsT::const_reference;
96
  using iterator = ilist_iterator<OptionsT, false, false>;
97
  using const_iterator = ilist_iterator<OptionsT, false, true>;
98
  using reverse_iterator = ilist_iterator<OptionsT, true, false>;
99
  using const_reverse_iterator = ilist_iterator<OptionsT, true, true>;
100
  using size_type = size_t;
101
  using difference_type = ptrdiff_t;
102
103
22.9M
  simple_ilist() = default;
llvm::simple_ilist<llvm::AliasSet>::simple_ilist()
Line
Count
Source
103
573k
  simple_ilist() = default;
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::simple_ilist()
Line
Count
Source
103
6
  simple_ilist() = default;
GCNILPSched.cpp:llvm::simple_ilist<(anonymous namespace)::GCNILPScheduler::Candidate>::simple_ilist()
Line
Count
Source
103
4
  simple_ilist() = default;
llvm::simple_ilist<llvm::IVStrideUse>::simple_ilist()
Line
Count
Source
103
207k
  simple_ilist() = default;
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::simple_ilist()
Line
Count
Source
103
2.17M
  simple_ilist() = default;
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::simple_ilist()
Line
Count
Source
103
1.78M
  simple_ilist() = default;
llvm::simple_ilist<llvm::MachineBasicBlock>::simple_ilist()
Line
Count
Source
103
484k
  simple_ilist() = default;
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::simple_ilist()
Line
Count
Source
103
4.38M
  simple_ilist() = default;
llvm::simple_ilist<llvm::IndexListEntry>::simple_ilist()
Line
Count
Source
103
68.3k
  simple_ilist() = default;
llvm::simple_ilist<llvm::Instruction>::simple_ilist()
Line
Count
Source
103
7.41M
  simple_ilist() = default;
llvm::simple_ilist<llvm::BasicBlock>::simple_ilist()
Line
Count
Source
103
2.09M
  simple_ilist() = default;
llvm::simple_ilist<llvm::GlobalVariable>::simple_ilist()
Line
Count
Source
103
60.0k
  simple_ilist() = default;
llvm::simple_ilist<llvm::Function>::simple_ilist()
Line
Count
Source
103
60.0k
  simple_ilist() = default;
llvm::simple_ilist<llvm::GlobalAlias>::simple_ilist()
Line
Count
Source
103
60.0k
  simple_ilist() = default;
llvm::simple_ilist<llvm::GlobalIFunc>::simple_ilist()
Line
Count
Source
103
60.0k
  simple_ilist() = default;
llvm::simple_ilist<llvm::NamedMDNode>::simple_ilist()
Line
Count
Source
103
60.0k
  simple_ilist() = default;
llvm::simple_ilist<llvm::MCFragment>::simple_ilist()
Line
Count
Source
103
2.70M
  simple_ilist() = default;
llvm::simple_ilist<llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node>::simple_ilist()
Line
Count
Source
103
3.24k
  simple_ilist() = default;
llvm::simple_ilist<llvm::PredicateBase>::simple_ilist()
Line
Count
Source
103
581k
  simple_ilist() = default;
llvm::simple_ilist<llvm::VPRecipeBase>::simple_ilist()
Line
Count
Source
103
92.1k
  simple_ilist() = default;
llvm::simple_ilist<llvm::SDNode>::simple_ilist()
Line
Count
Source
103
35.6k
  simple_ilist() = default;
llvm::simple_ilist<clang::ento::BugReport>::simple_ilist()
Line
Count
Source
103
10.0k
  simple_ilist() = default;
llvm::simple_ilist<lld::SimpleReference>::simple_ilist()
Line
Count
Source
103
855
  simple_ilist() = default;
llvm::simple_ilist<lld::mach_o::normalized::TrieEdge>::simple_ilist()
Line
Count
Source
103
368
  simple_ilist() = default;
104
  ~simple_ilist() = default;
105
106
  // No copy constructors.
107
  simple_ilist(const simple_ilist &) = delete;
108
  simple_ilist &operator=(const simple_ilist &) = delete;
109
110
  // Move constructors.
111
24
  simple_ilist(simple_ilist &&X) { splice(end(), X); }
112
  simple_ilist &operator=(simple_ilist &&X) {
113
    clear();
114
    splice(end(), X);
115
    return *this;
116
  }
117
118
1.74G
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::begin()
Line
Count
Source
118
5.46M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::begin()
Line
Count
Source
118
45.6M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::begin()
Line
Count
Source
118
517M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::begin()
Line
Count
Source
118
719M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::Function>::begin()
Line
Count
Source
118
1.25M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::BasicBlock>::begin()
Line
Count
Source
118
139M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalAlias>::begin()
Line
Count
Source
118
357k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalVariable>::begin()
Line
Count
Source
118
631k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::SDNode>::begin()
Line
Count
Source
118
233M
  iterator begin() { return ++iterator(Sentinel); }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::begin()
Line
Count
Source
118
49.5k
  iterator begin() { return ++iterator(Sentinel); }
GCNILPSched.cpp:llvm::simple_ilist<(anonymous namespace)::GCNILPScheduler::Candidate>::begin()
Line
Count
Source
118
1.49k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::MCFragment>::begin()
Line
Count
Source
118
58.2M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::IVStrideUse>::begin()
Line
Count
Source
118
946k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::begin()
Line
Count
Source
118
14.1M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::begin()
Line
Count
Source
118
694k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::IndexListEntry>::begin()
Line
Count
Source
118
1.11M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalIFunc>::begin()
Line
Count
Source
118
234k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::NamedMDNode>::begin()
Line
Count
Source
118
135k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node>::begin()
Line
Count
Source
118
8.71M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::PredicateBase>::begin()
Line
Count
Source
118
581k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::VPRecipeBase>::begin()
Line
Count
Source
118
205k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<clang::ento::BugReport>::begin()
Line
Count
Source
118
29.5k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<lld::SimpleReference>::begin()
Line
Count
Source
118
7.13k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<lld::mach_o::normalized::TrieEdge>::begin()
Line
Count
Source
118
2.01k
  iterator begin() { return ++iterator(Sentinel); }
119
219M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::begin() const
Line
Count
Source
119
70.7k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::begin() const
Line
Count
Source
119
29.0M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::begin() const
Line
Count
Source
119
37.5M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::begin() const
Line
Count
Source
119
106M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::Function>::begin() const
Line
Count
Source
119
326k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::BasicBlock>::begin() const
Line
Count
Source
119
38.2M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalAlias>::begin() const
Line
Count
Source
119
194k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalVariable>::begin() const
Line
Count
Source
119
297k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::SDNode>::begin() const
Line
Count
Source
119
26.3k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::begin() const
Line
Count
Source
119
1.97k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MCFragment>::begin() const
Line
Count
Source
119
7.09M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::IVStrideUse>::begin() const
Line
Count
Source
119
23
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::begin() const
Line
Count
Source
119
45.1k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalIFunc>::begin() const
Line
Count
Source
119
76.3k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::NamedMDNode>::begin() const
Line
Count
Source
119
166k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::begin() const
Line
Count
Source
119
401
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::VPRecipeBase>::begin() const
Line
Count
Source
119
2
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<clang::ento::BugReport>::begin() const
Line
Count
Source
119
745
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<lld::mach_o::normalized::TrieEdge>::begin() const
Line
Count
Source
119
368
  const_iterator begin() const { return ++const_iterator(Sentinel); }
120
1.93G
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::end()
Line
Count
Source
120
6.46M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::end()
Line
Count
Source
120
109M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::end()
Line
Count
Source
120
727M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::end()
Line
Count
Source
120
714M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::Function>::end()
Line
Count
Source
120
3.39M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::BasicBlock>::end()
Line
Count
Source
120
151M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalAlias>::end()
Line
Count
Source
120
361k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalVariable>::end()
Line
Count
Source
120
1.23M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::SDNode>::end()
Line
Count
Source
120
101M
  iterator end() { return iterator(Sentinel); }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::end()
Line
Count
Source
120
672
  iterator end() { return iterator(Sentinel); }
GCNILPSched.cpp:llvm::simple_ilist<(anonymous namespace)::GCNILPScheduler::Candidate>::end()
Line
Count
Source
120
1.04k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::MCFragment>::end()
Line
Count
Source
120
4.87M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::IVStrideUse>::end()
Line
Count
Source
120
1.53M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::end()
Line
Count
Source
120
13.5M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::end()
Line
Count
Source
120
3.09M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::IndexListEntry>::end()
Line
Count
Source
120
86.3M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalIFunc>::end()
Line
Count
Source
120
234k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::NamedMDNode>::end()
Line
Count
Source
120
191k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node>::end()
Line
Count
Source
120
1.52M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::PredicateBase>::end()
Line
Count
Source
120
3.75M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::VPRecipeBase>::end()
Line
Count
Source
120
574k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<clang::ento::BugReport>::end()
Line
Count
Source
120
40.1k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<lld::SimpleReference>::end()
Line
Count
Source
120
8.63k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<lld::mach_o::normalized::TrieEdge>::end()
Line
Count
Source
120
2.28k
  iterator end() { return iterator(Sentinel); }
121
272M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::end() const
Line
Count
Source
121
70.7k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::end() const
Line
Count
Source
121
33.2M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::end() const
Line
Count
Source
121
58.5M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::end() const
Line
Count
Source
121
157M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::Function>::end() const
Line
Count
Source
121
326k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::BasicBlock>::end() const
Line
Count
Source
121
21.2M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalAlias>::end() const
Line
Count
Source
121
194k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalVariable>::end() const
Line
Count
Source
121
297k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::SDNode>::end() const
Line
Count
Source
121
26.3k
  const_iterator end() const { return const_iterator(Sentinel); }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::end() const
Line
Count
Source
121
1.97k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MCFragment>::end() const
Line
Count
Source
121
491k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::IVStrideUse>::end() const
Line
Count
Source
121
23
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::end() const
Line
Count
Source
121
45.1k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalIFunc>::end() const
Line
Count
Source
121
76.3k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::NamedMDNode>::end() const
Line
Count
Source
121
166k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::end() const
Line
Count
Source
121
401
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::VPRecipeBase>::end() const
Line
Count
Source
121
2
  const_iterator end() const { return const_iterator(Sentinel); }
Unexecuted instantiation: llvm::simple_ilist<clang::ento::BugReport>::end() const
llvm::simple_ilist<lld::mach_o::normalized::TrieEdge>::end() const
Line
Count
Source
121
368
  const_iterator end() const { return const_iterator(Sentinel); }
122
98.7M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::rbegin()
Line
Count
Source
122
10.5M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::rbegin()
Line
Count
Source
122
12.5M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::rbegin()
Line
Count
Source
122
1.29M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::rbegin()
Line
Count
Source
122
1.89M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::IVStrideUse>::rbegin()
Line
Count
Source
122
592k
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::rbegin()
Line
Count
Source
122
19
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::IndexListEntry>::rbegin()
Line
Count
Source
122
70.8M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
Unexecuted instantiation: llvm::simple_ilist<llvm::Function>::rbegin()
llvm::simple_ilist<llvm::MCFragment>::rbegin()
Line
Count
Source
122
983k
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::VPRecipeBase>::rbegin()
Line
Count
Source
122
77.2k
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
123
4.23G
  const_reverse_iterator rbegin() const {
124
4.23G
    return ++const_reverse_iterator(Sentinel);
125
4.23G
  }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::rbegin() const
Line
Count
Source
123
2.24M
  const_reverse_iterator rbegin() const {
124
2.24M
    return ++const_reverse_iterator(Sentinel);
125
2.24M
  }
llvm::simple_ilist<llvm::Instruction>::rbegin() const
Line
Count
Source
123
4.23G
  const_reverse_iterator rbegin() const {
124
4.23G
    return ++const_reverse_iterator(Sentinel);
125
4.23G
  }
llvm::simple_ilist<llvm::MachineBasicBlock>::rbegin() const
Line
Count
Source
123
399k
  const_reverse_iterator rbegin() const {
124
399k
    return ++const_reverse_iterator(Sentinel);
125
399k
  }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::rbegin() const
Line
Count
Source
123
721k
  const_reverse_iterator rbegin() const {
124
721k
    return ++const_reverse_iterator(Sentinel);
125
721k
  }
llvm::simple_ilist<llvm::Function>::rbegin() const
Line
Count
Source
123
3.42k
  const_reverse_iterator rbegin() const {
124
3.42k
    return ++const_reverse_iterator(Sentinel);
125
3.42k
  }
Unexecuted instantiation: llvm::simple_ilist<llvm::BasicBlock>::rbegin() const
llvm::simple_ilist<llvm::MCFragment>::rbegin() const
Line
Count
Source
123
560k
  const_reverse_iterator rbegin() const {
124
560k
    return ++const_reverse_iterator(Sentinel);
125
560k
  }
Unexecuted instantiation: llvm::simple_ilist<llvm::VPRecipeBase>::rbegin() const
126
49.1M
  reverse_iterator rend() { return reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::rend()
Line
Count
Source
126
13.6M
  reverse_iterator rend() { return reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::rend()
Line
Count
Source
126
34.5M
  reverse_iterator rend() { return reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::rend()
Line
Count
Source
126
993k
  reverse_iterator rend() { return reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::rend()
Line
Count
Source
126
33
  reverse_iterator rend() { return reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::rend()
Line
Count
Source
126
19
  reverse_iterator rend() { return reverse_iterator(Sentinel); }
Unexecuted instantiation: llvm::simple_ilist<llvm::Function>::rend()
Unexecuted instantiation: llvm::simple_ilist<llvm::MCFragment>::rend()
Unexecuted instantiation: llvm::simple_ilist<llvm::VPRecipeBase>::rend()
127
2.29M
  const_reverse_iterator rend() const {
128
2.29M
    return const_reverse_iterator(Sentinel);
129
2.29M
  }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::rend() const
Line
Count
Source
127
2.29M
  const_reverse_iterator rend() const {
128
2.29M
    return const_reverse_iterator(Sentinel);
129
2.29M
  }
Unexecuted instantiation: llvm::simple_ilist<llvm::Instruction>::rend() const
Unexecuted instantiation: llvm::simple_ilist<llvm::MachineBasicBlock>::rend() const
llvm::simple_ilist<llvm::Function>::rend() const
Line
Count
Source
127
3.42k
  const_reverse_iterator rend() const {
128
3.42k
    return const_reverse_iterator(Sentinel);
129
3.42k
  }
Unexecuted instantiation: llvm::simple_ilist<llvm::MCFragment>::rend() const
Unexecuted instantiation: llvm::simple_ilist<llvm::VPRecipeBase>::rend() const
130
131
  /// Check if the list is empty in constant time.
132
2.39G
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::empty() const
Line
Count
Source
132
80.7M
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::BasicBlock>::empty() const
Line
Count
Source
132
79.1M
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::empty() const
Line
Count
Source
132
1.97k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
GCNILPSched.cpp:llvm::simple_ilist<(anonymous namespace)::GCNILPScheduler::Candidate>::empty() const
Line
Count
Source
132
1.43k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::Instruction>::empty() const
Line
Count
Source
132
2.18G
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::MachineBasicBlock>::empty() const
Line
Count
Source
132
7.13M
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::GlobalVariable>::empty() const
Line
Count
Source
132
21.9k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::IVStrideUse>::empty() const
Line
Count
Source
132
331k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::empty() const
Line
Count
Source
132
8.01k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::empty() const
Line
Count
Source
132
108k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
Unexecuted instantiation: llvm::simple_ilist<llvm::IndexListEntry>::empty() const
llvm::simple_ilist<llvm::Function>::empty() const
Line
Count
Source
132
8.50k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::GlobalAlias>::empty() const
Line
Count
Source
132
17.2k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::GlobalIFunc>::empty() const
Line
Count
Source
132
17.2k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::NamedMDNode>::empty() const
Line
Count
Source
132
21.5k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::MCFragment>::empty() const
Line
Count
Source
132
491k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node>::empty() const
Line
Count
Source
132
6.08M
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::VPRecipeBase>::empty() const
Line
Count
Source
132
78.6k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::SDNode>::empty() const
Line
Count
Source
132
40.0M
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
133
134
  /// Calculate the size of the list in linear time.
135
17.1M
  LLVM_NODISCARD size_type size() const {
136
17.1M
    return std::distance(begin(), end());
137
17.1M
  }
llvm::simple_ilist<llvm::BasicBlock>::size() const
Line
Count
Source
135
8.82M
  LLVM_NODISCARD size_type size() const {
136
8.82M
    return std::distance(begin(), end());
137
8.82M
  }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::size() const
Line
Count
Source
135
652k
  LLVM_NODISCARD size_type size() const {
136
652k
    return std::distance(begin(), end());
137
652k
  }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::size() const
Line
Count
Source
135
1.97k
  LLVM_NODISCARD size_type size() const {
136
1.97k
    return std::distance(begin(), end());
137
1.97k
  }
llvm::simple_ilist<llvm::MachineBasicBlock>::size() const
Line
Count
Source
135
4.43M
  LLVM_NODISCARD size_type size() const {
136
4.43M
    return std::distance(begin(), end());
137
4.43M
  }
llvm::simple_ilist<llvm::SDNode>::size() const
Line
Count
Source
135
26.3k
  LLVM_NODISCARD size_type size() const {
136
26.3k
    return std::distance(begin(), end());
137
26.3k
  }
llvm::simple_ilist<llvm::GlobalAlias>::size() const
Line
Count
Source
135
246
  LLVM_NODISCARD size_type size() const {
136
246
    return std::distance(begin(), end());
137
246
  }
llvm::simple_ilist<llvm::GlobalVariable>::size() const
Line
Count
Source
135
649
  LLVM_NODISCARD size_type size() const {
136
649
    return std::distance(begin(), end());
137
649
  }
llvm::simple_ilist<llvm::AliasSet>::size() const
Line
Count
Source
135
149
  LLVM_NODISCARD size_type size() const {
136
149
    return std::distance(begin(), end());
137
149
  }
llvm::simple_ilist<llvm::Function>::size() const
Line
Count
Source
135
2.08k
  LLVM_NODISCARD size_type size() const {
136
2.08k
    return std::distance(begin(), end());
137
2.08k
  }
llvm::simple_ilist<llvm::Instruction>::size() const
Line
Count
Source
135
3.18M
  LLVM_NODISCARD size_type size() const {
136
3.18M
    return std::distance(begin(), end());
137
3.18M
  }
Unexecuted instantiation: llvm::simple_ilist<llvm::GlobalIFunc>::size() const
llvm::simple_ilist<llvm::MCFragment>::size() const
Line
Count
Source
135
8
  LLVM_NODISCARD size_type size() const {
136
8
    return std::distance(begin(), end());
137
8
  }
llvm::simple_ilist<lld::mach_o::normalized::TrieEdge>::size() const
Line
Count
Source
135
368
  LLVM_NODISCARD size_type size() const {
136
368
    return std::distance(begin(), end());
137
368
  }
138
139
175M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::front()
Line
Count
Source
139
24.1M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::MachineBasicBlock>::front()
Line
Count
Source
139
11.0M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::BasicBlock>::front()
Line
Count
Source
139
82.1M
  reference front() { return *begin(); }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::front()
Line
Count
Source
139
1.97k
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::Instruction>::front()
Line
Count
Source
139
11.5M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::front()
Line
Count
Source
139
4.79M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::IndexListEntry>::front()
Line
Count
Source
139
67.2k
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node>::front()
Line
Count
Source
139
3.51M
  reference front() { return *begin(); }
Unexecuted instantiation: llvm::simple_ilist<llvm::VPRecipeBase>::front()
llvm::simple_ilist<llvm::SDNode>::front()
Line
Count
Source
139
38.1M
  reference front() { return *begin(); }
140
35.0M
  const_reference front() const { return *begin(); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::front() const
Line
Count
Source
140
4
  const_reference front() const { return *begin(); }
llvm::simple_ilist<llvm::MachineBasicBlock>::front() const
Line
Count
Source
140
7.02M
  const_reference front() const { return *begin(); }
llvm::simple_ilist<llvm::BasicBlock>::front() const
Line
Count
Source
140
23.2M
  const_reference front() const { return *begin(); }
llvm::simple_ilist<llvm::Instruction>::front() const
Line
Count
Source
140
4.79M
  const_reference front() const { return *begin(); }
Unexecuted instantiation: llvm::simple_ilist<llvm::VPRecipeBase>::front() const
llvm::simple_ilist<clang::ento::BugReport>::front() const
Line
Count
Source
140
745
  const_reference front() const { return *begin(); }
141
74.3M
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::Instruction>::back()
Line
Count
Source
141
620k
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::MachineBasicBlock>::back()
Line
Count
Source
141
295k
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::back()
Line
Count
Source
141
19
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::AliasSet>::back()
Line
Count
Source
141
1.89M
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::IVStrideUse>::back()
Line
Count
Source
141
592k
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::IndexListEntry>::back()
Line
Count
Source
141
70.8M
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::VPRecipeBase>::back()
Line
Count
Source
141
77.2k
  reference back() { return *rbegin(); }
142
4.23G
  const_reference back() const { return *rbegin(); }
llvm::simple_ilist<llvm::Instruction>::back() const
Line
Count
Source
142
4.23G
  const_reference back() const { return *rbegin(); }
llvm::simple_ilist<llvm::MachineBasicBlock>::back() const
Line
Count
Source
142
399k
  const_reference back() const { return *rbegin(); }
Unexecuted instantiation: llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::back() const
Unexecuted instantiation: llvm::simple_ilist<llvm::BasicBlock>::back() const
llvm::simple_ilist<llvm::MCFragment>::back() const
Line
Count
Source
142
560k
  const_reference back() const { return *rbegin(); }
Unexecuted instantiation: llvm::simple_ilist<llvm::VPRecipeBase>::back() const
143
144
  /// Insert a node at the front; never copies.
145
739k
  void push_front(reference Node) { insert(begin(), Node); }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::push_front((anonymous namespace)::GCNMinRegScheduler::Candidate&)
Line
Count
Source
145
44.0k
  void push_front(reference Node) { insert(begin(), Node); }
GCNILPSched.cpp:llvm::simple_ilist<(anonymous namespace)::GCNILPScheduler::Candidate>::push_front((anonymous namespace)::GCNILPScheduler::Candidate&)
Line
Count
Source
145
452
  void push_front(reference Node) { insert(begin(), Node); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::push_front(llvm::MemoryAccess&)
Line
Count
Source
145
694k
  void push_front(reference Node) { insert(begin(), Node); }
146
147
  /// Insert a node at the back; never copies.
148
3.09M
  void push_back(reference Node) { insert(end(), Node); }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::push_back((anonymous namespace)::GCNMinRegScheduler::Candidate&)
Line
Count
Source
148
16
  void push_back(reference Node) { insert(end(), Node); }
GCNILPSched.cpp:llvm::simple_ilist<(anonymous namespace)::GCNILPScheduler::Candidate>::push_back((anonymous namespace)::GCNILPScheduler::Candidate&)
Line
Count
Source
148
454
  void push_back(reference Node) { insert(end(), Node); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::push_back(llvm::MemoryAccess&)
Line
Count
Source
148
3.09M
  void push_back(reference Node) { insert(end(), Node); }
149
150
  /// Remove the node at the front; never deletes.
151
  void pop_front() { erase(begin()); }
152
153
  /// Remove the node at the back; never deletes.
154
  void pop_back() { erase(--end()); }
155
156
  /// Swap with another list in place using std::swap.
157
  void swap(simple_ilist &X) { std::swap(*this, X); }
158
159
  /// Insert a node by reference; never copies.
160
316M
  iterator insert(iterator I, reference Node) {
161
316M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
316M
    return iterator(&Node);
163
316M
  }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineInstr, true, true, void>, false, false>, llvm::MachineInstr&)
Line
Count
Source
160
70.6M
  iterator insert(iterator I, reference Node) {
161
70.6M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
70.6M
    return iterator(&Node);
163
70.6M
  }
llvm::simple_ilist<llvm::MachineBasicBlock>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineBasicBlock, false, false, void>, false, false>, llvm::MachineBasicBlock&)
Line
Count
Source
160
4.38M
  iterator insert(iterator I, reference Node) {
161
4.38M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
4.38M
    return iterator(&Node);
163
4.38M
  }
llvm::simple_ilist<llvm::Instruction>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::Instruction&)
Line
Count
Source
160
51.8M
  iterator insert(iterator I, reference Node) {
161
51.8M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
51.8M
    return iterator(&Node);
163
51.8M
  }
llvm::simple_ilist<llvm::Function>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, false, false, void>, false, false>, llvm::Function&)
Line
Count
Source
160
2.09M
  iterator insert(iterator I, reference Node) {
161
2.09M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
2.09M
    return iterator(&Node);
163
2.09M
  }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<(anonymous namespace)::GCNMinRegScheduler::Candidate, false, false, void>, false, false>, (anonymous namespace)::GCNMinRegScheduler::Candidate&)
Line
Count
Source
160
44.0k
  iterator insert(iterator I, reference Node) {
161
44.0k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
44.0k
    return iterator(&Node);
163
44.0k
  }
llvm::simple_ilist<llvm::IndexListEntry>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::IndexListEntry, false, false, void>, false, false>, llvm::IndexListEntry&)
Line
Count
Source
160
62.1M
  iterator insert(iterator I, reference Node) {
161
62.1M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
62.1M
    return iterator(&Node);
163
62.1M
  }
GCNILPSched.cpp:llvm::simple_ilist<(anonymous namespace)::GCNILPScheduler::Candidate>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<(anonymous namespace)::GCNILPScheduler::Candidate, false, false, void>, false, false>, (anonymous namespace)::GCNILPScheduler::Candidate&)
Line
Count
Source
160
906
  iterator insert(iterator I, reference Node) {
161
906
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
906
    return iterator(&Node);
163
906
  }
llvm::simple_ilist<llvm::SDNode>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::SDNode, false, false, void>, false, false>, llvm::SDNode&)
Line
Count
Source
160
94.8M
  iterator insert(iterator I, reference Node) {
161
94.8M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
94.8M
    return iterator(&Node);
163
94.8M
  }
llvm::simple_ilist<llvm::GlobalVariable>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::GlobalVariable, false, false, void>, false, false>, llvm::GlobalVariable&)
Line
Count
Source
160
601k
  iterator insert(iterator I, reference Node) {
161
601k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
601k
    return iterator(&Node);
163
601k
  }
llvm::simple_ilist<llvm::AliasSet>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::AliasSet, false, false, void>, false, false>, llvm::AliasSet&)
Line
Count
Source
160
1.00M
  iterator insert(iterator I, reference Node) {
161
1.00M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
1.00M
    return iterator(&Node);
163
1.00M
  }
llvm::simple_ilist<llvm::IVStrideUse>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::IVStrideUse, false, false, void>, false, false>, llvm::IVStrideUse&)
Line
Count
Source
160
592k
  iterator insert(iterator I, reference Node) {
161
592k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
592k
    return iterator(&Node);
163
592k
  }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MemoryAccess, false, false, llvm::MSSAHelpers::AllAccessTag>, false, false>, llvm::MemoryAccess&)
Line
Count
Source
160
5.58M
  iterator insert(iterator I, reference Node) {
161
5.58M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
5.58M
    return iterator(&Node);
163
5.58M
  }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MemoryAccess, false, false, llvm::MSSAHelpers::DefsOnlyTag>, false, false>, llvm::MemoryAccess&)
Line
Count
Source
160
3.78M
  iterator insert(iterator I, reference Node) {
161
3.78M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
3.78M
    return iterator(&Node);
163
3.78M
  }
llvm::simple_ilist<llvm::BasicBlock>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, false, false, void>, false, false>, llvm::BasicBlock&)
Line
Count
Source
160
7.05M
  iterator insert(iterator I, reference Node) {
161
7.05M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
7.05M
    return iterator(&Node);
163
7.05M
  }
llvm::simple_ilist<llvm::GlobalAlias>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::GlobalAlias, false, false, void>, false, false>, llvm::GlobalAlias&)
Line
Count
Source
160
3.56k
  iterator insert(iterator I, reference Node) {
161
3.56k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
3.56k
    return iterator(&Node);
163
3.56k
  }
llvm::simple_ilist<llvm::GlobalIFunc>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::GlobalIFunc, false, false, void>, false, false>, llvm::GlobalIFunc&)
Line
Count
Source
160
135
  iterator insert(iterator I, reference Node) {
161
135
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
135
    return iterator(&Node);
163
135
  }
llvm::simple_ilist<llvm::NamedMDNode>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::NamedMDNode, false, false, void>, false, false>, llvm::NamedMDNode&)
Line
Count
Source
160
56.9k
  iterator insert(iterator I, reference Node) {
161
56.9k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
56.9k
    return iterator(&Node);
163
56.9k
  }
llvm::simple_ilist<llvm::MCFragment>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MCFragment, false, false, void>, false, false>, llvm::MCFragment&)
Line
Count
Source
160
7.22M
  iterator insert(iterator I, reference Node) {
161
7.22M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
7.22M
    return iterator(&Node);
163
7.22M
  }
llvm::simple_ilist<llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node, false, false, void>, false, false>, llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node&)
Line
Count
Source
160
1.09M
  iterator insert(iterator I, reference Node) {
161
1.09M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
1.09M
    return iterator(&Node);
163
1.09M
  }
llvm::simple_ilist<llvm::PredicateBase>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::PredicateBase, false, false, void>, false, false>, llvm::PredicateBase&)
Line
Count
Source
160
3.16M
  iterator insert(iterator I, reference Node) {
161
3.16M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
3.16M
    return iterator(&Node);
163
3.16M
  }
llvm::simple_ilist<llvm::VPRecipeBase>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::VPRecipeBase, false, false, void>, false, false>, llvm::VPRecipeBase&)
Line
Count
Source
160
332k
  iterator insert(iterator I, reference Node) {
161
332k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
332k
    return iterator(&Node);
163
332k
  }
llvm::simple_ilist<clang::ento::BugReport>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<clang::ento::BugReport, false, false, void>, false, false>, clang::ento::BugReport&)
Line
Count
Source
160
10.6k
  iterator insert(iterator I, reference Node) {
161
10.6k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
10.6k
    return iterator(&Node);
163
10.6k
  }
llvm::simple_ilist<lld::SimpleReference>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<lld::SimpleReference, false, false, void>, false, false>, lld::SimpleReference&)
Line
Count
Source
160
1.47k
  iterator insert(iterator I, reference Node) {
161
1.47k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
1.47k
    return iterator(&Node);
163
1.47k
  }
llvm::simple_ilist<lld::mach_o::normalized::TrieEdge>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<lld::mach_o::normalized::TrieEdge, false, false, void>, false, false>, lld::mach_o::normalized::TrieEdge&)
Line
Count
Source
160
276
  iterator insert(iterator I, reference Node) {
161
276
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
276
    return iterator(&Node);
163
276
  }
164
165
  /// Insert a range of nodes; never copies.
166
  template <class Iterator>
167
  void insert(iterator I, Iterator First, Iterator Last) {
168
    for (; First != Last; ++First)
169
      insert(I, *First);
170
  }
171
172
  /// Clone another list.
173
  template <class Cloner, class Disposer>
174
  void cloneFrom(const simple_ilist &L2, Cloner clone, Disposer dispose) {
175
    clearAndDispose(dispose);
176
    for (const_reference V : L2)
177
      push_back(*clone(V));
178
  }
179
180
  /// Remove a node by reference; never deletes.
181
  ///
182
  /// \see \a erase() for removing by iterator.
183
  /// \see \a removeAndDispose() if the node should be deleted.
184
263M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::AliasSet>::remove(llvm::AliasSet&)
Line
Count
Source
184
1.00M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::remove(llvm::MachineInstr&)
Line
Count
Source
184
39.2M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
GCNMinRegStrategy.cpp:llvm::simple_ilist<(anonymous namespace)::GCNMinRegScheduler::Candidate>::remove((anonymous namespace)::GCNMinRegScheduler::Candidate&)
Line
Count
Source
184
44.0k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
GCNILPSched.cpp:llvm::simple_ilist<(anonymous namespace)::GCNILPScheduler::Candidate>::remove((anonymous namespace)::GCNILPScheduler::Candidate&)
Line
Count
Source
184
906
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::SDNode>::remove(llvm::SDNode&)
Line
Count
Source
184
94.8M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::MachineBasicBlock>::remove(llvm::MachineBasicBlock&)
Line
Count
Source
184
4.38M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::GlobalVariable>::remove(llvm::GlobalVariable&)
Line
Count
Source
184
168k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::Function>::remove(llvm::Function&)
Line
Count
Source
184
1.64M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::IVStrideUse>::remove(llvm::IVStrideUse&)
Line
Count
Source
184
592k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::remove(llvm::MemoryAccess&)
Line
Count
Source
184
5.58M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::remove(llvm::MemoryAccess&)
Line
Count
Source
184
8.01k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::IndexListEntry>::remove(llvm::IndexListEntry&)
Line
Count
Source
184
62.1M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::Instruction>::remove(llvm::Instruction&)
Line
Count
Source
184
37.5M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::BasicBlock>::remove(llvm::BasicBlock&)
Line
Count
Source
184
4.71M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::GlobalAlias>::remove(llvm::GlobalAlias&)
Line
Count
Source
184
3.56k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::GlobalIFunc>::remove(llvm::GlobalIFunc&)
Line
Count
Source
184
135
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::NamedMDNode>::remove(llvm::NamedMDNode&)
Line
Count
Source
184
29.3k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::MCFragment>::remove(llvm::MCFragment&)
Line
Count
Source
184
7.22M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node>::remove(llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node&)
Line
Count
Source
184
1.09M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::PredicateBase>::remove(llvm::PredicateBase&)
Line
Count
Source
184
3.16M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::VPRecipeBase>::remove(llvm::VPRecipeBase&)
Line
Count
Source
184
332k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<clang::ento::BugReport>::remove(clang::ento::BugReport&)
Line
Count
Source
184
10.6k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
Unexecuted instantiation: llvm::simple_ilist<lld::SimpleReference>::remove(lld::SimpleReference&)
Unexecuted instantiation: llvm::simple_ilist<lld::mach_o::normalized::TrieEdge>::remove(lld::mach_o::normalized::TrieEdge&)
185
186
  /// Remove a node by reference and dispose of it.
187
  template <class Disposer>
188
  void removeAndDispose(reference N, Disposer dispose) {
189
    remove(N);
190
    dispose(&N);
191
  }
192
193
  /// Remove a node by iterator; never deletes.
194
  ///
195
  /// \see \a remove() for removing by reference.
196
  /// \see \a eraseAndDispose() it the node should be deleted.
197
1.09M
  iterator erase(iterator I) {
198
1.09M
    assert(I != end() && "Cannot remove end of list!");
199
1.09M
    remove(*I++);
200
1.09M
    return I;
201
1.09M
  }
202
203
  /// Remove a range of nodes; never deletes.
204
  ///
205
  /// \see \a eraseAndDispose() if the nodes should be deleted.
206
  iterator erase(iterator First, iterator Last) {
207
    list_base_type::removeRange(*First.getNodePtr(), *Last.getNodePtr());
208
    return Last;
209
  }
210
211
  /// Remove a node by iterator and dispose of it.
212
  template <class Disposer>
213
1.09M
  iterator eraseAndDispose(iterator I, Disposer dispose) {
214
1.09M
    auto Next = std::next(I);
215
1.09M
    erase(I);
216
1.09M
    dispose(&*I);
217
1.09M
    return Next;
218
1.09M
  }
219
220
  /// Remove a range of nodes and dispose of them.
221
  template <class Disposer>
222
3.21k
  iterator eraseAndDispose(iterator First, iterator Last, Disposer dispose) {
223
6.52k
    while (First != Last)
224
3.31k
      First = eraseAndDispose(First, dispose);
225
3.21k
    return Last;
226
3.21k
  }
227
228
  /// Clear the list; never deletes.
229
  ///
230
  /// \see \a clearAndDispose() if the nodes should be deleted.
231
3.86M
  void clear() { Sentinel.reset(); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::clear()
Line
Count
Source
231
3.79M
  void clear() { Sentinel.reset(); }
llvm::simple_ilist<llvm::IndexListEntry>::clear()
Line
Count
Source
231
68.0k
  void clear() { Sentinel.reset(); }
llvm::simple_ilist<lld::SimpleReference>::clear()
Line
Count
Source
231
1.35k
  void clear() { Sentinel.reset(); }
232
233
  /// Clear the list and dispose of the nodes.
234
3.21k
  template <class Disposer> void clearAndDispose(Disposer dispose) {
235
3.21k
    eraseAndDispose(begin(), end(), dispose);
236
3.21k
  }
237
238
  /// Splice in another list.
239
24
  void splice(iterator I, simple_ilist &L2) {
240
24
    splice(I, L2, L2.begin(), L2.end());
241
24
  }
242
243
  /// Splice in a node from another list.
244
  void splice(iterator I, simple_ilist &L2, iterator Node) {
245
    splice(I, L2, Node, std::next(Node));
246
  }
247
248
  /// Splice in a range of nodes from another list.
249
8.96M
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
8.96M
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
8.96M
                                   *Last.getNodePtr());
252
8.96M
  }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::splice(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineInstr, true, true, void>, false, false>, llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >&, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineInstr, true, true, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineInstr, true, true, void>, false, false>)
Line
Count
Source
249
4.60M
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
4.60M
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
4.60M
                                   *Last.getNodePtr());
252
4.60M
  }
llvm::simple_ilist<llvm::MachineBasicBlock>::splice(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineBasicBlock, false, false, void>, false, false>, llvm::simple_ilist<llvm::MachineBasicBlock>&, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineBasicBlock, false, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineBasicBlock, false, false, void>, false, false>)
Line
Count
Source
249
1.44M
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
1.44M
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
1.44M
                                   *Last.getNodePtr());
252
1.44M
  }
llvm::simple_ilist<llvm::BasicBlock>::splice(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, false, false, void>, false, false>, llvm::simple_ilist<llvm::BasicBlock>&, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, false, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, false, false, void>, false, false>)
Line
Count
Source
249
482k
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
482k
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
482k
                                   *Last.getNodePtr());
252
482k
  }
llvm::simple_ilist<llvm::IVStrideUse>::splice(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::IVStrideUse, false, false, void>, false, false>, llvm::simple_ilist<llvm::IVStrideUse>&, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::IVStrideUse, false, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::IVStrideUse, false, false, void>, false, false>)
Line
Count
Source
249
24
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
24
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
24
                                   *Last.getNodePtr());
252
24
  }
llvm::simple_ilist<llvm::Instruction>::splice(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::simple_ilist<llvm::Instruction>&, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, false>)
Line
Count
Source
249
2.40M
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
2.40M
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
2.40M
                                   *Last.getNodePtr());
252
2.40M
  }
llvm::simple_ilist<llvm::GlobalVariable>::splice(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::GlobalVariable, false, false, void>, false, false>, llvm::simple_ilist<llvm::GlobalVariable>&, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::GlobalVariable, false, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::GlobalVariable, false, false, void>, false, false>)
Line
Count
Source
249
444
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
444
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
444
                                   *Last.getNodePtr());
252
444
  }
llvm::simple_ilist<llvm::Function>::splice(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, false, false, void>, false, false>, llvm::simple_ilist<llvm::Function>&, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, false, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, false, false, void>, false, false>)
Line
Count
Source
249
26.5k
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
26.5k
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
26.5k
                                   *Last.getNodePtr());
252
26.5k
  }
253
254
  /// Merge in another list.
255
  ///
256
  /// \pre \c this and \p RHS are sorted.
257
  ///@{
258
  void merge(simple_ilist &RHS) { merge(RHS, std::less<T>()); }
259
  template <class Compare> void merge(simple_ilist &RHS, Compare comp);
260
  ///@}
261
262
  /// Sort the list.
263
  ///@{
264
  void sort() { sort(std::less<T>()); }
265
  template <class Compare> void sort(Compare comp);
266
  ///@}
267
};
268
269
template <class T, class... Options>
270
template <class Compare>
271
327
void simple_ilist<T, Options...>::merge(simple_ilist &RHS, Compare comp) {
272
327
  if (this == &RHS || RHS.empty())
273
0
    return;
274
327
  iterator LI = begin(), LE = end();
275
327
  iterator RI = RHS.begin(), RE = RHS.end();
276
738
  while (LI != LE) {
277
466
    if (comp(*RI, *LI)) {
278
84
      // Transfer a run of at least size 1 from RHS to LHS.
279
84
      iterator RunStart = RI++;
280
84
      RI = std::find_if(RI, RE, [&](reference RV) 
{ return !comp(RV, *LI); }69
);
281
84
      splice(LI, RHS, RunStart, RI);
282
84
      if (RI == RE)
283
55
        return;
284
411
    }
285
411
    ++LI;
286
411
  }
287
327
  // Transfer the remaining RHS nodes once LHS is finished.
288
327
  splice(LE, RHS, RI, RE);
289
272
}
290
291
template <class T, class... Options>
292
template <class Compare>
293
730
void simple_ilist<T, Options...>::sort(Compare comp) {
294
730
  // Vacuously sorted.
295
730
  if (empty() || std::next(begin()) == end())
296
403
    return;
297
327
298
327
  // Split the list in the middle.
299
327
  iterator Center = begin(), End = begin();
300
797
  while (End != end() && 
++End != end()589
) {
301
470
    ++Center;
302
470
    ++End;
303
470
  }
304
327
  simple_ilist RHS;
305
327
  RHS.splice(RHS.end(), *this, Center, end());
306
327
307
327
  // Sort the sublists and merge back together.
308
327
  sort(comp);
309
327
  RHS.sort(comp);
310
327
  merge(RHS, comp);
311
327
}
312
313
} // end namespace llvm
314
315
#endif // LLVM_ADT_SIMPLE_ILIST_H