Coverage Report

Created: 2018-07-20 23:04

/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
21.3M
  simple_ilist() = default;
llvm::simple_ilist<llvm::AliasSet>::simple_ilist()
Line
Count
Source
103
561k
  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
202k
  simple_ilist() = default;
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::simple_ilist()
Line
Count
Source
103
2.09M
  simple_ilist() = default;
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::simple_ilist()
Line
Count
Source
103
1.71M
  simple_ilist() = default;
llvm::simple_ilist<llvm::MachineBasicBlock>::simple_ilist()
Line
Count
Source
103
461k
  simple_ilist() = default;
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::simple_ilist()
Line
Count
Source
103
4.24M
  simple_ilist() = default;
llvm::simple_ilist<llvm::IndexListEntry>::simple_ilist()
Line
Count
Source
103
65.0k
  simple_ilist() = default;
llvm::simple_ilist<llvm::Instruction>::simple_ilist()
Line
Count
Source
103
7.08M
  simple_ilist() = default;
llvm::simple_ilist<llvm::BasicBlock>::simple_ilist()
Line
Count
Source
103
1.99M
  simple_ilist() = default;
llvm::simple_ilist<llvm::GlobalVariable>::simple_ilist()
Line
Count
Source
103
57.2k
  simple_ilist() = default;
llvm::simple_ilist<llvm::Function>::simple_ilist()
Line
Count
Source
103
57.1k
  simple_ilist() = default;
llvm::simple_ilist<llvm::GlobalAlias>::simple_ilist()
Line
Count
Source
103
57.1k
  simple_ilist() = default;
llvm::simple_ilist<llvm::GlobalIFunc>::simple_ilist()
Line
Count
Source
103
57.1k
  simple_ilist() = default;
llvm::simple_ilist<llvm::NamedMDNode>::simple_ilist()
Line
Count
Source
103
57.1k
  simple_ilist() = default;
llvm::simple_ilist<llvm::MCFragment>::simple_ilist()
Line
Count
Source
103
2.52M
  simple_ilist() = default;
llvm::simple_ilist<llvm::AllocatorList<llvm::yaml::Token, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul> >::Node>::simple_ilist()
Line
Count
Source
103
2.91k
  simple_ilist() = default;
llvm::simple_ilist<llvm::PredicateBase>::simple_ilist()
Line
Count
Source
103
334
  simple_ilist() = default;
llvm::simple_ilist<llvm::VPRecipeBase>::simple_ilist()
Line
Count
Source
103
87.2k
  simple_ilist() = default;
llvm::simple_ilist<llvm::SDNode>::simple_ilist()
Line
Count
Source
103
34.1k
  simple_ilist() = default;
llvm::simple_ilist<clang::ento::BugReport>::simple_ilist()
Line
Count
Source
103
9.80k
  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.63G
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::begin()
Line
Count
Source
118
5.74M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::begin()
Line
Count
Source
118
42.7M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::begin()
Line
Count
Source
118
457M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::begin()
Line
Count
Source
118
691M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::Function>::begin()
Line
Count
Source
118
1.19M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::BasicBlock>::begin()
Line
Count
Source
118
131M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalAlias>::begin()
Line
Count
Source
118
344k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalVariable>::begin()
Line
Count
Source
118
608k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::SDNode>::begin()
Line
Count
Source
118
223M
  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
56.8M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::IVStrideUse>::begin()
Line
Count
Source
118
923k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::begin()
Line
Count
Source
118
13.6M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::begin()
Line
Count
Source
118
666k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::IndexListEntry>::begin()
Line
Count
Source
118
1.05M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalIFunc>::begin()
Line
Count
Source
118
223k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::NamedMDNode>::begin()
Line
Count
Source
118
127k
  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.02M
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::PredicateBase>::begin()
Line
Count
Source
118
334
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<llvm::VPRecipeBase>::begin()
Line
Count
Source
118
194k
  iterator begin() { return ++iterator(Sentinel); }
llvm::simple_ilist<clang::ento::BugReport>::begin()
Line
Count
Source
118
28.8k
  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
207M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::begin() const
Line
Count
Source
119
69.3k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::begin() const
Line
Count
Source
119
26.9M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::begin() const
Line
Count
Source
119
36.2M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::begin() const
Line
Count
Source
119
101M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::Function>::begin() const
Line
Count
Source
119
302k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::BasicBlock>::begin() const
Line
Count
Source
119
34.7M
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalAlias>::begin() const
Line
Count
Source
119
183k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalVariable>::begin() const
Line
Count
Source
119
276k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::SDNode>::begin() const
Line
Count
Source
119
121k
  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.03M
  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
44.0k
  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
587
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalIFunc>::begin() const
Line
Count
Source
119
72.6k
  const_iterator begin() const { return ++const_iterator(Sentinel); }
llvm::simple_ilist<llvm::NamedMDNode>::begin() const
Line
Count
Source
119
156k
  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
797
  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.80G
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::end()
Line
Count
Source
120
6.72M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::end()
Line
Count
Source
120
105M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::end()
Line
Count
Source
120
653M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::end()
Line
Count
Source
120
680M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::Function>::end()
Line
Count
Source
120
3.22M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::BasicBlock>::end()
Line
Count
Source
120
143M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalAlias>::end()
Line
Count
Source
120
347k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalVariable>::end()
Line
Count
Source
120
1.20M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::SDNode>::end()
Line
Count
Source
120
98.6M
  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.66M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::IVStrideUse>::end()
Line
Count
Source
120
1.50M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::end()
Line
Count
Source
120
13.0M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::end()
Line
Count
Source
120
2.97M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::IndexListEntry>::end()
Line
Count
Source
120
84.7M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalIFunc>::end()
Line
Count
Source
120
223k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::NamedMDNode>::end()
Line
Count
Source
120
182k
  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.40M
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::PredicateBase>::end()
Line
Count
Source
120
1.09k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<llvm::VPRecipeBase>::end()
Line
Count
Source
120
548k
  iterator end() { return iterator(Sentinel); }
llvm::simple_ilist<clang::ento::BugReport>::end()
Line
Count
Source
120
39.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
259M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::end() const
Line
Count
Source
121
69.3k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::end() const
Line
Count
Source
121
31.6M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::end() const
Line
Count
Source
121
55.9M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::end() const
Line
Count
Source
121
149M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::Function>::end() const
Line
Count
Source
121
301k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::BasicBlock>::end() const
Line
Count
Source
121
20.4M
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalAlias>::end() const
Line
Count
Source
121
183k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalVariable>::end() const
Line
Count
Source
121
276k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::SDNode>::end() const
Line
Count
Source
121
121k
  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
485k
  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
44.5k
  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
929
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::GlobalIFunc>::end() const
Line
Count
Source
121
72.6k
  const_iterator end() const { return const_iterator(Sentinel); }
llvm::simple_ilist<llvm::NamedMDNode>::end() const
Line
Count
Source
121
156k
  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
92.9M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::rbegin()
Line
Count
Source
122
7.47M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::rbegin()
Line
Count
Source
122
12.0M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineBasicBlock>::rbegin()
Line
Count
Source
122
1.22M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::AliasSet>::rbegin()
Line
Count
Source
122
1.83M
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::IVStrideUse>::rbegin()
Line
Count
Source
122
577k
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::rbegin()
Line
Count
Source
122
17
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::IndexListEntry>::rbegin()
Line
Count
Source
122
68.7M
  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
970k
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::VPRecipeBase>::rbegin()
Line
Count
Source
122
76.1k
  reverse_iterator rbegin() { return ++reverse_iterator(Sentinel); }
123
2.01G
  const_reverse_iterator rbegin() const {
124
2.01G
    return ++const_reverse_iterator(Sentinel);
125
2.01G
  }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::rbegin() const
Line
Count
Source
123
2.18M
  const_reverse_iterator rbegin() const {
124
2.18M
    return ++const_reverse_iterator(Sentinel);
125
2.18M
  }
llvm::simple_ilist<llvm::Instruction>::rbegin() const
Line
Count
Source
123
2.00G
  const_reverse_iterator rbegin() const {
124
2.00G
    return ++const_reverse_iterator(Sentinel);
125
2.00G
  }
llvm::simple_ilist<llvm::MachineBasicBlock>::rbegin() const
Line
Count
Source
123
397k
  const_reverse_iterator rbegin() const {
124
397k
    return ++const_reverse_iterator(Sentinel);
125
397k
  }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::rbegin() const
Line
Count
Source
123
694k
  const_reverse_iterator rbegin() const {
124
694k
    return ++const_reverse_iterator(Sentinel);
125
694k
  }
llvm::simple_ilist<llvm::Function>::rbegin() const
Line
Count
Source
123
3.34k
  const_reverse_iterator rbegin() const {
124
3.34k
    return ++const_reverse_iterator(Sentinel);
125
3.34k
  }
Unexecuted instantiation: llvm::simple_ilist<llvm::BasicBlock>::rbegin() const
llvm::simple_ilist<llvm::MCFragment>::rbegin() const
Line
Count
Source
123
526k
  const_reverse_iterator rbegin() const {
124
526k
    return ++const_reverse_iterator(Sentinel);
125
526k
  }
Unexecuted instantiation: llvm::simple_ilist<llvm::VPRecipeBase>::rbegin() const
126
44.2M
  reverse_iterator rend() { return reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::rend()
Line
Count
Source
126
10.4M
  reverse_iterator rend() { return reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::Instruction>::rend()
Line
Count
Source
126
32.8M
  reverse_iterator rend() { return reverse_iterator(Sentinel); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::DefsOnlyTag> >::rend()
Line
Count
Source
126
30
  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); }
llvm::simple_ilist<llvm::MachineBasicBlock>::rend()
Line
Count
Source
126
941k
  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.23M
  const_reverse_iterator rend() const {
128
2.23M
    return const_reverse_iterator(Sentinel);
129
2.23M
  }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::rend() const
Line
Count
Source
127
2.23M
  const_reverse_iterator rend() const {
128
2.23M
    return const_reverse_iterator(Sentinel);
129
2.23M
  }
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.34k
  const_reverse_iterator rend() const {
128
3.34k
    return const_reverse_iterator(Sentinel);
129
3.34k
  }
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.23G
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::empty() const
Line
Count
Source
132
34.9M
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::BasicBlock>::empty() const
Line
Count
Source
132
73.9M
  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.06G
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::MachineBasicBlock>::empty() const
Line
Count
Source
132
6.51M
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::GlobalVariable>::empty() const
Line
Count
Source
132
20.7k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::IVStrideUse>::empty() const
Line
Count
Source
132
323k
  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
7.50k
  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
98.0k
  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
742
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::GlobalAlias>::empty() const
Line
Count
Source
132
16.3k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::GlobalIFunc>::empty() const
Line
Count
Source
132
16.3k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::NamedMDNode>::empty() const
Line
Count
Source
132
20.4k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::MCFragment>::empty() const
Line
Count
Source
132
485k
  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
5.59M
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::VPRecipeBase>::empty() const
Line
Count
Source
132
77.3k
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
llvm::simple_ilist<llvm::SDNode>::empty() const
Line
Count
Source
132
38.7M
  LLVM_NODISCARD bool empty() const { return Sentinel.empty(); }
133
134
  /// Calculate the size of the list in linear time.
135
16.5M
  LLVM_NODISCARD size_type size() const {
136
16.5M
    return std::distance(begin(), end());
137
16.5M
  }
llvm::simple_ilist<llvm::BasicBlock>::size() const
Line
Count
Source
135
8.46M
  LLVM_NODISCARD size_type size() const {
136
8.46M
    return std::distance(begin(), end());
137
8.46M
  }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::size() const
Line
Count
Source
135
634k
  LLVM_NODISCARD size_type size() const {
136
634k
    return std::distance(begin(), end());
137
634k
  }
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.27M
  LLVM_NODISCARD size_type size() const {
136
4.27M
    return std::distance(begin(), end());
137
4.27M
  }
llvm::simple_ilist<llvm::SDNode>::size() const
Line
Count
Source
135
121k
  LLVM_NODISCARD size_type size() const {
136
121k
    return std::distance(begin(), end());
137
121k
  }
llvm::simple_ilist<llvm::GlobalAlias>::size() const
Line
Count
Source
135
242
  LLVM_NODISCARD size_type size() const {
136
242
    return std::distance(begin(), end());
137
242
  }
llvm::simple_ilist<llvm::GlobalVariable>::size() const
Line
Count
Source
135
595
  LLVM_NODISCARD size_type size() const {
136
595
    return std::distance(begin(), end());
137
595
  }
llvm::simple_ilist<llvm::AliasSet>::size() const
Line
Count
Source
135
21
  LLVM_NODISCARD size_type size() const {
136
21
    return std::distance(begin(), end());
137
21
  }
llvm::simple_ilist<llvm::Function>::size() const
Line
Count
Source
135
1.87k
  LLVM_NODISCARD size_type size() const {
136
1.87k
    return std::distance(begin(), end());
137
1.87k
  }
llvm::simple_ilist<llvm::Instruction>::size() const
Line
Count
Source
135
3.07M
  LLVM_NODISCARD size_type size() const {
136
3.07M
    return std::distance(begin(), end());
137
3.07M
  }
Unexecuted instantiation: llvm::simple_ilist<llvm::GlobalIFunc>::size() const
Unexecuted instantiation: llvm::simple_ilist<llvm::MCFragment>::size() const
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
149M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::front()
Line
Count
Source
139
6.69M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::MachineBasicBlock>::front()
Line
Count
Source
139
10.3M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::BasicBlock>::front()
Line
Count
Source
139
76.7M
  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.0M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::MemoryAccess, llvm::ilist_tag<llvm::MSSAHelpers::AllAccessTag> >::front()
Line
Count
Source
139
4.62M
  reference front() { return *begin(); }
llvm::simple_ilist<llvm::IndexListEntry>::front()
Line
Count
Source
139
62.6k
  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.23M
  reference front() { return *begin(); }
Unexecuted instantiation: llvm::simple_ilist<llvm::VPRecipeBase>::front()
llvm::simple_ilist<llvm::SDNode>::front()
Line
Count
Source
139
36.9M
  reference front() { return *begin(); }
140
31.1M
  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
6.40M
  const_reference front() const { return *begin(); }
llvm::simple_ilist<llvm::BasicBlock>::front() const
Line
Count
Source
140
20.2M
  const_reference front() const { return *begin(); }
llvm::simple_ilist<llvm::Instruction>::front() const
Line
Count
Source
140
4.46M
  const_reference front() const { return *begin(); }
llvm::simple_ilist<llvm::Function>::front() const
Line
Count
Source
140
422
  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
797
  const_reference front() const { return *begin(); }
141
71.9M
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::Instruction>::back()
Line
Count
Source
141
414k
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::MachineBasicBlock>::back()
Line
Count
Source
141
276k
  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.83M
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::IVStrideUse>::back()
Line
Count
Source
141
577k
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::IndexListEntry>::back()
Line
Count
Source
141
68.7M
  reference back() { return *rbegin(); }
llvm::simple_ilist<llvm::VPRecipeBase>::back()
Line
Count
Source
141
76.1k
  reference back() { return *rbegin(); }
142
2.01G
  const_reference back() const { return *rbegin(); }
llvm::simple_ilist<llvm::Instruction>::back() const
Line
Count
Source
142
2.00G
  const_reference back() const { return *rbegin(); }
llvm::simple_ilist<llvm::MachineBasicBlock>::back() const
Line
Count
Source
142
397k
  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
526k
  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
711k
  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
666k
  void push_front(reference Node) { insert(begin(), Node); }
146
147
  /// Insert a node at the back; never copies.
148
2.97M
  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
2.97M
  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
301M
  iterator insert(iterator I, reference Node) {
161
301M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
301M
    return iterator(&Node);
163
301M
  }
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
68.4M
  iterator insert(iterator I, reference Node) {
161
68.4M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
68.4M
    return iterator(&Node);
163
68.4M
  }
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.24M
  iterator insert(iterator I, reference Node) {
161
4.24M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
4.24M
    return iterator(&Node);
163
4.24M
  }
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
46.8M
  iterator insert(iterator I, reference Node) {
161
46.8M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
46.8M
    return iterator(&Node);
163
46.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
1.99M
  iterator insert(iterator I, reference Node) {
161
1.99M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
1.99M
    return iterator(&Node);
163
1.99M
  }
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
60.9M
  iterator insert(iterator I, reference Node) {
161
60.9M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
60.9M
    return iterator(&Node);
163
60.9M
  }
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
92.6M
  iterator insert(iterator I, reference Node) {
161
92.6M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
92.6M
    return iterator(&Node);
163
92.6M
  }
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
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::AliasSet>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::AliasSet, false, false, void>, false, false>, llvm::AliasSet&)
Line
Count
Source
160
980k
  iterator insert(iterator I, reference Node) {
161
980k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
980k
    return iterator(&Node);
163
980k
  }
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
577k
  iterator insert(iterator I, reference Node) {
161
577k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
577k
    return iterator(&Node);
163
577k
  }
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.31M
  iterator insert(iterator I, reference Node) {
161
5.31M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
5.31M
    return iterator(&Node);
163
5.31M
  }
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.63M
  iterator insert(iterator I, reference Node) {
161
3.63M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
3.63M
    return iterator(&Node);
163
3.63M
  }
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
6.75M
  iterator insert(iterator I, reference Node) {
161
6.75M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
6.75M
    return iterator(&Node);
163
6.75M
  }
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.48k
  iterator insert(iterator I, reference Node) {
161
3.48k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
3.48k
    return iterator(&Node);
163
3.48k
  }
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
55.2k
  iterator insert(iterator I, reference Node) {
161
55.2k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
55.2k
    return iterator(&Node);
163
55.2k
  }
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.04M
  iterator insert(iterator I, reference Node) {
161
7.04M
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
7.04M
    return iterator(&Node);
163
7.04M
  }
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.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::PredicateBase>::insert(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::PredicateBase, false, false, void>, false, false>, llvm::PredicateBase&)
Line
Count
Source
160
764
  iterator insert(iterator I, reference Node) {
161
764
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
764
    return iterator(&Node);
163
764
  }
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
317k
  iterator insert(iterator I, reference Node) {
161
317k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
317k
    return iterator(&Node);
163
317k
  }
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.3k
  iterator insert(iterator I, reference Node) {
161
10.3k
    list_base_type::insertBefore(*I.getNodePtr(), *this->getNodePtr(&Node));
162
10.3k
    return iterator(&Node);
163
10.3k
  }
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
250M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::AliasSet>::remove(llvm::AliasSet&)
Line
Count
Source
184
980k
  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
37.9M
  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
92.6M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::MachineBasicBlock>::remove(llvm::MachineBasicBlock&)
Line
Count
Source
184
4.24M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::GlobalVariable>::remove(llvm::GlobalVariable&)
Line
Count
Source
184
161k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::Function>::remove(llvm::Function&)
Line
Count
Source
184
1.54M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::IVStrideUse>::remove(llvm::IVStrideUse&)
Line
Count
Source
184
577k
  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.31M
  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
7.50k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::IndexListEntry>::remove(llvm::IndexListEntry&)
Line
Count
Source
184
60.9M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::Instruction>::remove(llvm::Instruction&)
Line
Count
Source
184
33.0M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::BasicBlock>::remove(llvm::BasicBlock&)
Line
Count
Source
184
4.47M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::GlobalAlias>::remove(llvm::GlobalAlias&)
Line
Count
Source
184
3.48k
  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
27.9k
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::MCFragment>::remove(llvm::MCFragment&)
Line
Count
Source
184
7.03M
  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.00M
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::PredicateBase>::remove(llvm::PredicateBase&)
Line
Count
Source
184
764
  void remove(reference N) { list_base_type::remove(*this->getNodePtr(&N)); }
llvm::simple_ilist<llvm::VPRecipeBase>::remove(llvm::VPRecipeBase&)
Line
Count
Source
184
317k
  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.3k
  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.00M
  iterator erase(iterator I) {
198
1.00M
    assert(I != end() && "Cannot remove end of list!");
199
1.00M
    remove(*I++);
200
1.00M
    return I;
201
1.00M
  }
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.00M
  iterator eraseAndDispose(iterator I, Disposer dispose) {
214
1.00M
    auto Next = std::next(I);
215
1.00M
    erase(I);
216
1.00M
    dispose(&*I);
217
1.00M
    return Next;
218
1.00M
  }
219
220
  /// Remove a range of nodes and dispose of them.
221
  template <class Disposer>
222
2.89k
  iterator eraseAndDispose(iterator First, iterator Last, Disposer dispose) {
223
5.87k
    while (First != Last)
224
2.98k
      First = eraseAndDispose(First, dispose);
225
2.89k
    return Last;
226
2.89k
  }
227
228
  /// Clear the list; never deletes.
229
  ///
230
  /// \see \a clearAndDispose() if the nodes should be deleted.
231
3.73M
  void clear() { Sentinel.reset(); }
llvm::simple_ilist<llvm::MachineInstr, llvm::ilist_sentinel_tracking<true> >::clear()
Line
Count
Source
231
3.67M
  void clear() { Sentinel.reset(); }
llvm::simple_ilist<llvm::IndexListEntry>::clear()
Line
Count
Source
231
64.8k
  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
2.89k
  template <class Disposer> void clearAndDispose(Disposer dispose) {
235
2.89k
    eraseAndDispose(begin(), end(), dispose);
236
2.89k
  }
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
9.20M
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
9.20M
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
9.20M
                                   *Last.getNodePtr());
252
9.20M
  }
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
5.06M
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
5.06M
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
5.06M
                                   *Last.getNodePtr());
252
5.06M
  }
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.40M
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
1.40M
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
1.40M
                                   *Last.getNodePtr());
252
1.40M
  }
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
457k
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
457k
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
457k
                                   *Last.getNodePtr());
252
457k
  }
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.25M
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
2.25M
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
2.25M
                                   *Last.getNodePtr());
252
2.25M
  }
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
405
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
405
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
405
                                   *Last.getNodePtr());
252
405
  }
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
22.9k
  void splice(iterator I, simple_ilist &, iterator First, iterator Last) {
250
22.9k
    list_base_type::transferBefore(*I.getNodePtr(), *First.getNodePtr(),
251
22.9k
                                   *Last.getNodePtr());
252
22.9k
  }
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
310
void simple_ilist<T, Options...>::merge(simple_ilist &RHS, Compare comp) {
272
310
  if (this == &RHS || RHS.empty())
273
0
    return;
274
310
  iterator LI = begin(), LE = end();
275
310
  iterator RI = RHS.begin(), RE = RHS.end();
276
704
  while (LI != LE) {
277
446
    if (comp(*RI, *LI)) {
278
81
      // Transfer a run of at least size 1 from RHS to LHS.
279
81
      iterator RunStart = RI++;
280
81
      RI = std::find_if(RI, RE, [&](reference RV) 
{ return !comp(RV, *LI); }67
);
281
81
      splice(LI, RHS, RunStart, RI);
282
81
      if (RI == RE)
283
52
        return;
284
394
    }
285
394
    ++LI;
286
394
  }
287
310
  // Transfer the remaining RHS nodes once LHS is finished.
288
310
  splice(LE, RHS, RI, RE);
289
258
}
290
291
template <class T, class... Options>
292
template <class Compare>
293
690
void simple_ilist<T, Options...>::sort(Compare comp) {
294
690
  // Vacuously sorted.
295
690
  if (empty() || std::next(begin()) == end())
296
380
    return;
297
310
298
310
  // Split the list in the middle.
299
310
  iterator Center = begin(), End = begin();
300
760
  while (End != end() && 
++End != end()562
) {
301
450
    ++Center;
302
450
    ++End;
303
450
  }
304
310
  simple_ilist RHS;
305
310
  RHS.splice(RHS.end(), *this, Center, end());
306
310
307
310
  // Sort the sublists and merge back together.
308
310
  sort(comp);
309
310
  RHS.sort(comp);
310
310
  merge(RHS, comp);
311
310
}
312
313
} // end namespace llvm
314
315
#endif // LLVM_ADT_SIMPLE_ILIST_H