Coverage Report

Created: 2017-10-03 07:32

/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h
Line
Count
Source
1
//==- llvm/ADT/IntrusiveRefCntPtr.h - Smart Refcounting Pointer --*- 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
// This file defines the RefCountedBase, ThreadSafeRefCountedBase, and
11
// IntrusiveRefCntPtr classes.
12
//
13
// IntrusiveRefCntPtr is a smart pointer to an object which maintains a
14
// reference count.  (ThreadSafe)RefCountedBase is a mixin class that adds a
15
// refcount member variable and methods for updating the refcount.  An object
16
// that inherits from (ThreadSafe)RefCountedBase deletes itself when its
17
// refcount hits zero.
18
//
19
// For example:
20
//
21
//   class MyClass : public RefCountedBase<MyClass> {};
22
//
23
//   void foo() {
24
//     // Constructing an IntrusiveRefCntPtr increases the pointee's refcount by
25
//     // 1 (from 0 in this case).
26
//     IntrusiveRefCntPtr<MyClass> Ptr1(new MyClass());
27
//
28
//     // Copying an IntrusiveRefCntPtr increases the pointee's refcount by 1.
29
//     IntrusiveRefCntPtr<MyClass> Ptr2(Ptr1);
30
//
31
//     // Constructing an IntrusiveRefCntPtr has no effect on the object's
32
//     // refcount.  After a move, the moved-from pointer is null.
33
//     IntrusiveRefCntPtr<MyClass> Ptr3(std::move(Ptr1));
34
//     assert(Ptr1 == nullptr);
35
//
36
//     // Clearing an IntrusiveRefCntPtr decreases the pointee's refcount by 1.
37
//     Ptr2.reset();
38
//
39
//     // The object deletes itself when we return from the function, because
40
//     // Ptr3's destructor decrements its refcount to 0.
41
//   }
42
//
43
// You can use IntrusiveRefCntPtr with isa<T>(), dyn_cast<T>(), etc.:
44
//
45
//   IntrusiveRefCntPtr<MyClass> Ptr(new MyClass());
46
//   OtherClass *Other = dyn_cast<OtherClass>(Ptr);  // Ptr.get() not required
47
//
48
// IntrusiveRefCntPtr works with any class that
49
//
50
//  - inherits from (ThreadSafe)RefCountedBase,
51
//  - has Retain() and Release() methods, or
52
//  - specializes IntrusiveRefCntPtrInfo.
53
//
54
//===----------------------------------------------------------------------===//
55
56
#ifndef LLVM_ADT_INTRUSIVEREFCNTPTR_H
57
#define LLVM_ADT_INTRUSIVEREFCNTPTR_H
58
59
#include <atomic>
60
#include <cassert>
61
#include <cstddef>
62
63
namespace llvm {
64
65
/// A CRTP mixin class that adds reference counting to a type.
66
///
67
/// The lifetime of an object which inherits from RefCountedBase is managed by
68
/// calls to Release() and Retain(), which increment and decrement the object's
69
/// refcount, respectively.  When a Release() call decrements the refcount to 0,
70
/// the object deletes itself.
71
template <class Derived> class RefCountedBase {
72
  mutable unsigned RefCount = 0;
73
74
public:
75
728k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ASTContext>::RefCountedBase()
Line
Count
Source
75
29.6k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::AnalyzerOptions>::RefCountedBase()
Line
Count
Source
75
43.6k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticOptions>::RefCountedBase()
Line
Count
Source
75
139k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticsEngine>::RefCountedBase()
Line
Count
Source
75
132k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticIDs>::RefCountedBase()
Line
Count
Source
75
129k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::FileManager>::RefCountedBase()
Line
Count
Source
75
101k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::SourceManager>::RefCountedBase()
Line
Count
Source
75
65.9k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::TargetInfo>::RefCountedBase()
Line
Count
Source
75
40.2k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::MemoryBufferCache>::RefCountedBase()
Line
Count
Source
75
40.2k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ExternalASTSource>::RefCountedBase()
Line
Count
Source
75
6.13k
  RefCountedBase() = default;
76
4.08k
  RefCountedBase(const RefCountedBase &) {}
77
78
1.08M
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::SourceManager>::Retain() const
Line
Count
Source
78
42.7k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::MemoryBufferCache>::Retain() const
Line
Count
Source
78
44.7k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::FileManager>::Retain() const
Line
Count
Source
78
45.9k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::TargetInfo>::Retain() const
Line
Count
Source
78
42.1k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ExternalASTSource>::Retain() const
Line
Count
Source
78
13.1k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Retain() const
Line
Count
Source
78
49.4k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ASTContext>::Retain() const
Line
Count
Source
78
31.7k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::AnalyzerOptions>::Retain() const
Line
Count
Source
78
153k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticIDs>::Retain() const
Line
Count
Source
78
306k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticOptions>::Retain() const
Line
Count
Source
78
356k
  void Retain() const { ++RefCount; }
79
80
887k
  void Release() const {
81
887k
    assert(RefCount > 0 && "Reference count is already zero.");
82
887k
    if (--RefCount == 0)
83
391k
      delete static_cast<const Derived *>(this);
84
887k
  }
llvm::RefCountedBase<clang::DiagnosticOptions>::Release() const
Line
Count
Source
80
299k
  void Release() const {
81
299k
    assert(RefCount > 0 && "Reference count is already zero.");
82
299k
    if (--RefCount == 0)
83
124k
      delete static_cast<const Derived *>(this);
84
299k
  }
llvm::RefCountedBase<clang::FileManager>::Release() const
Line
Count
Source
80
26.9k
  void Release() const {
81
26.9k
    assert(RefCount > 0 && "Reference count is already zero.");
82
26.9k
    if (--RefCount == 0)
83
19.2k
      delete static_cast<const Derived *>(this);
84
26.9k
  }
llvm::RefCountedBase<clang::ExternalASTSource>::Release() const
Line
Count
Source
80
13.0k
  void Release() const {
81
13.0k
    assert(RefCount > 0 && "Reference count is already zero.");
82
13.0k
    if (--RefCount == 0)
83
5.94k
      delete static_cast<const Derived *>(this);
84
13.0k
  }
llvm::RefCountedBase<clang::TargetInfo>::Release() const
Line
Count
Source
80
23.1k
  void Release() const {
81
23.1k
    assert(RefCount > 0 && "Reference count is already zero.");
82
23.1k
    if (--RefCount == 0)
83
21.1k
      delete static_cast<const Derived *>(this);
84
23.1k
  }
llvm::RefCountedBase<clang::MemoryBufferCache>::Release() const
Line
Count
Source
80
25.6k
  void Release() const {
81
25.6k
    assert(RefCount > 0 && "Reference count is already zero.");
82
25.6k
    if (--RefCount == 0)
83
21.1k
      delete static_cast<const Derived *>(this);
84
25.6k
  }
llvm::RefCountedBase<clang::SourceManager>::Release() const
Line
Count
Source
80
23.7k
  void Release() const {
81
23.7k
    assert(RefCount > 0 && "Reference count is already zero.");
82
23.7k
    if (--RefCount == 0)
83
21.0k
      delete static_cast<const Derived *>(this);
84
23.7k
  }
llvm::RefCountedBase<clang::DiagnosticIDs>::Release() const
Line
Count
Source
80
287k
  void Release() const {
81
287k
    assert(RefCount > 0 && "Reference count is already zero.");
82
287k
    if (--RefCount == 0)
83
110k
      delete static_cast<const Derived *>(this);
84
287k
  }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Release() const
Line
Count
Source
80
30.3k
  void Release() const {
81
30.3k
    assert(RefCount > 0 && "Reference count is already zero.");
82
30.3k
    if (--RefCount == 0)
83
22.6k
      delete static_cast<const Derived *>(this);
84
30.3k
  }
llvm::RefCountedBase<clang::ASTContext>::Release() const
Line
Count
Source
80
22.4k
  void Release() const {
81
22.4k
    assert(RefCount > 0 && "Reference count is already zero.");
82
22.4k
    if (--RefCount == 0)
83
20.3k
      delete static_cast<const Derived *>(this);
84
22.4k
  }
llvm::RefCountedBase<clang::AnalyzerOptions>::Release() const
Line
Count
Source
80
134k
  void Release() const {
81
134k
    assert(RefCount > 0 && "Reference count is already zero.");
82
134k
    if (--RefCount == 0)
83
24.6k
      delete static_cast<const Derived *>(this);
84
134k
  }
85
};
86
87
/// A thread-safe version of \c RefCountedBase.
88
template <class Derived> class ThreadSafeRefCountedBase {
89
  mutable std::atomic<int> RefCount;
90
91
protected:
92
316k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::ThreadSafeRefCountedBase()
Line
Count
Source
92
222k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<clang::vfs::FileSystem>::ThreadSafeRefCountedBase()
Line
Count
Source
92
94.7k
  ThreadSafeRefCountedBase() : RefCount(0) {}
93
94
public:
95
1.54M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
llvm::ThreadSafeRefCountedBase<clang::vfs::FileSystem>::Retain() const
Line
Count
Source
95
320k
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Retain() const
Line
Count
Source
95
1.21M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
96
97
1.50M
  void Release() const {
98
1.50M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
99
1.50M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
100
1.50M
    if (NewRefCount == 0)
101
296k
      delete static_cast<const Derived *>(this);
102
1.50M
  }
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Release() const
Line
Count
Source
97
1.21M
  void Release() const {
98
1.21M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
99
1.21M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
100
1.21M
    if (NewRefCount == 0)
101
220k
      delete static_cast<const Derived *>(this);
102
1.21M
  }
llvm::ThreadSafeRefCountedBase<clang::vfs::FileSystem>::Release() const
Line
Count
Source
97
282k
  void Release() const {
98
282k
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
99
282k
    assert(NewRefCount >= 0 && "Reference count was already zero.");
100
282k
    if (NewRefCount == 0)
101
75.6k
      delete static_cast<const Derived *>(this);
102
282k
  }
103
};
104
105
/// Class you can specialize to provide custom retain/release functionality for
106
/// a type.
107
///
108
/// Usually specializing this class is not necessary, as IntrusiveRefCntPtr
109
/// works with any type which defines Retain() and Release() functions -- you
110
/// can define those functions yourself if RefCountedBase doesn't work for you.
111
///
112
/// One case when you might want to specialize this type is if you have
113
///  - Foo.h defines type Foo and includes Bar.h, and
114
///  - Bar.h uses IntrusiveRefCntPtr<Foo> in inline functions.
115
///
116
/// Because Foo.h includes Bar.h, Bar.h can't include Foo.h in order to pull in
117
/// the declaration of Foo.  Without the declaration of Foo, normally Bar.h
118
/// wouldn't be able to use IntrusiveRefCntPtr<Foo>, which wants to call
119
/// T::Retain and T::Release.
120
///
121
/// To resolve this, Bar.h could include a third header, FooFwd.h, which
122
/// forward-declares Foo and specializes IntrusiveRefCntPtrInfo<Foo>.  Then
123
/// Bar.h could use IntrusiveRefCntPtr<Foo>, although it still couldn't call any
124
/// functions on Foo itself, because Foo would be an incomplete type.
125
template <typename T> struct IntrusiveRefCntPtrInfo {
126
5.91M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::retain(clang::ento::CallEvent const*)
Line
Count
Source
126
352k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::retain(clang::ento::ObjCMethodCall const*)
Line
Count
Source
126
23.7k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::retain(clang::ento::CXXDestructorCall const*)
Line
Count
Source
126
475
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::retain(clang::ento::CXXConstructorCall const*)
Line
Count
Source
126
18.5k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::retain(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
126
299
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::retain(clang::RopeRefCountString*)
Line
Count
Source
126
2.89M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::retain(clang::DiagnosticOptions*)
Line
Count
Source
126
356k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::retain(clang::DiagnosticIDs*)
Line
Count
Source
126
306k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::FileSystem>::retain(clang::vfs::FileSystem*)
Line
Count
Source
126
289k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ast_matchers::internal::DynMatcherInterface>::retain(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
126
1.21M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::retain(clang::AnalyzerOptions*)
Line
Count
Source
126
153k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::retain(clang::ASTContext*)
Line
Count
Source
126
31.7k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::retain(clang::DiagnosticsEngine*)
Line
Count
Source
126
49.4k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::InMemoryFileSystem>::retain(clang::vfs::InMemoryFileSystem*)
Line
Count
Source
126
28.1k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::OverlayFileSystem>::retain(clang::vfs::OverlayFileSystem*)
Line
Count
Source
126
2.73k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::retain(clang::ASTReader*)
Line
Count
Source
126
7.15k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::retain(clang::TargetInfo*)
Line
Count
Source
126
42.1k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::retain(clang::FileManager*)
Line
Count
Source
126
45.9k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::retain(clang::SourceManager*)
Line
Count
Source
126
42.7k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::MemoryBufferCache>::retain(clang::MemoryBufferCache*)
Line
Count
Source
126
44.7k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::retain(clang::ExternalASTSource*)
Line
Count
Source
126
3.52k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalSemaSource>::retain(clang::ExternalSemaSource*)
Line
Count
Source
126
47
  static void retain(T *obj) { obj->Retain(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtrInfo<(anonymous namespace)::ChainedIncludesSource>::retain((anonymous namespace)::ChainedIncludesSource*)
Line
Count
Source
126
23
  static void retain(T *obj) { obj->Retain(); }
127
5.67M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::release(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
127
299
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::release(clang::ento::CXXConstructorCall const*)
Line
Count
Source
127
18.5k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::release(clang::ento::CXXDestructorCall const*)
Line
Count
Source
127
475
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::release(clang::ento::ObjCMethodCall const*)
Line
Count
Source
127
23.7k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::release(clang::ento::CallEvent const*)
Line
Count
Source
127
352k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ast_matchers::internal::DynMatcherInterface>::release(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
127
1.21M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::release(clang::RopeRefCountString*)
Line
Count
Source
127
2.89M
  static void release(T *obj) { obj->Release(); }
Unexecuted instantiation: ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtrInfo<(anonymous namespace)::ChainedIncludesSource>::release((anonymous namespace)::ChainedIncludesSource*)
llvm::IntrusiveRefCntPtrInfo<clang::ExternalSemaSource>::release(clang::ExternalSemaSource*)
Line
Count
Source
127
70
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::release(clang::ExternalASTSource*)
Line
Count
Source
127
3.47k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::release(clang::ASTReader*)
Line
Count
Source
127
7.10k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::release(clang::TargetInfo*)
Line
Count
Source
127
23.1k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::MemoryBufferCache>::release(clang::MemoryBufferCache*)
Line
Count
Source
127
25.6k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::release(clang::SourceManager*)
Line
Count
Source
127
23.7k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::release(clang::FileManager*)
Line
Count
Source
127
26.9k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::InMemoryFileSystem>::release(clang::vfs::InMemoryFileSystem*)
Line
Count
Source
127
28.1k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::OverlayFileSystem>::release(clang::vfs::OverlayFileSystem*)
Line
Count
Source
127
2.69k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::release(clang::DiagnosticsEngine*)
Line
Count
Source
127
30.3k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::release(clang::ASTContext*)
Line
Count
Source
127
22.4k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::release(clang::DiagnosticOptions*)
Line
Count
Source
127
299k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::release(clang::DiagnosticIDs*)
Line
Count
Source
127
287k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::FileSystem>::release(clang::vfs::FileSystem*)
Line
Count
Source
127
251k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::release(clang::AnalyzerOptions*)
Line
Count
Source
127
134k
  static void release(T *obj) { obj->Release(); }
128
};
129
130
/// A smart pointer to a reference-counted object that inherits from
131
/// RefCountedBase or ThreadSafeRefCountedBase.
132
///
133
/// This class increments its pointee's reference count when it is created, and
134
/// decrements its refcount when it's destroyed (or is changed to point to a
135
/// different object).
136
template <typename T> class IntrusiveRefCntPtr {
137
  T *Obj = nullptr;
138
139
public:
140
  using element_type = T;
141
142
775k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr()
Line
Count
Source
142
81.5k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr()
Line
Count
Source
142
41.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr()
Line
Count
Source
142
40.1k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr()
Line
Count
Source
142
40.1k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr()
Line
Count
Source
142
40.1k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::IntrusiveRefCntPtr()
Line
Count
Source
142
1.31k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr()
Line
Count
Source
142
41.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr()
Line
Count
Source
142
41.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr()
Line
Count
Source
142
41.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr()
Line
Count
Source
142
406k
  explicit IntrusiveRefCntPtr() = default;
143
5.55M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXConstructorCall const*)
Line
Count
Source
143
18.5k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::IntrusiveRefCntPtr(clang::ento::ObjCMethodCall const*)
Line
Count
Source
143
23.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::IntrusiveRefCntPtr(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
143
231k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr(clang::ento::ProgramState const*)
Line
Count
Source
143
2.01M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(clang::ExternalASTSource*)
Line
Count
Source
143
30.8k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(clang::AnalyzerOptions*)
Line
Count
Source
143
43.6k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::IntrusiveRefCntPtr((anonymous namespace)::ChainedIncludesSource*)
Line
Count
Source
143
23
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(clang::ExternalSemaSource*)
Line
Count
Source
143
24
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::IntrusiveRefCntPtr(clang::MemoryBufferCache*)
Line
Count
Source
143
44.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr(clang::SourceManager*)
Line
Count
Source
143
44.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr(clang::FileManager*)
Line
Count
Source
143
47.9k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr(clang::TargetInfo*)
Line
Count
Source
143
42.1k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(clang::ASTReader*)
Line
Count
Source
143
4.98k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr(clang::ASTContext*)
Line
Count
Source
143
52.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::IntrusiveRefCntPtr(clang::vfs::OverlayFileSystem*)
Line
Count
Source
143
2.73k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::IntrusiveRefCntPtr(clang::vfs::InMemoryFileSystem*)
Line
Count
Source
143
28.1k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(clang::DiagnosticsEngine*)
Line
Count
Source
143
45.4k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(clang::RopeRefCountString*)
Line
Count
Source
143
1.91M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::IntrusiveRefCntPtr(clang::ento::CallEvent const*)
Line
Count
Source
143
343k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXDestructorCall const*)
Line
Count
Source
143
475
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::IntrusiveRefCntPtr(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
143
299
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr(clang::vfs::FileSystem*)
Line
Count
Source
143
131k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(clang::DiagnosticIDs*)
Line
Count
Source
143
129k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(clang::DiagnosticOptions*)
Line
Count
Source
143
354k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
144
24.3M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString> const&)
Line
Count
Source
144
3.27M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const> const&)
Line
Count
Source
144
9.18k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface> const&)
Line
Count
Source
144
987k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> const&)
Line
Count
Source
144
19.6M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> const&)
Line
Count
Source
144
2.82k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource> const&)
Line
Count
Source
144
3
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource> const&)
Line
Count
Source
144
23
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions> const&)
Line
Count
Source
144
110k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
144
5.28k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
144
4.90k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&)
Line
Count
Source
144
195k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> const&)
Line
Count
Source
144
176k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
145
5.62M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>&&)
Line
Count
Source
145
567
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>&&)
Line
Count
Source
145
47
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ASTReader>&&)
Line
Count
Source
145
1.10k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>&&)
Line
Count
Source
145
192k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&&)
Line
Count
Source
145
1.14M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>&&)
Line
Count
Source
145
132k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>&&)
Line
Count
Source
145
211k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>&&)
Line
Count
Source
145
3.93M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&&)
Line
Count
Source
145
3.54k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
146
147
  template <class X>
148
70
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
149
70
    S.Obj = nullptr;
150
70
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>&&)
Line
Count
Source
148
47
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
149
47
    S.Obj = nullptr;
150
47
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>(llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>&&)
Line
Count
Source
148
23
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
149
23
    S.Obj = nullptr;
150
23
  }
151
152
  template <class X>
153
30.5k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
30.5k
    retain();
155
30.5k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr<clang::ASTReader>(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
153
2.35k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
2.35k
    retain();
155
2.35k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr<clang::ExternalSemaSource>(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource> const&)
Line
Count
Source
153
23
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
23
    retain();
155
23
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem> const&)
Line
Count
Source
153
28.1k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
28.1k
    retain();
155
28.1k
  }
156
157
34.0M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::~IntrusiveRefCntPtr()
Line
Count
Source
157
32.4k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::~IntrusiveRefCntPtr()
Line
Count
Source
157
75.1k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
157
571k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::~IntrusiveRefCntPtr()
Line
Count
Source
157
419k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
157
299k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
157
2.73k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
157
28.1k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
475
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
299
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
18.5k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
352k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
23.7k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::~IntrusiveRefCntPtr()
Line
Count
Source
157
1.41M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
23.9M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::~IntrusiveRefCntPtr()
Line
Count
Source
157
6.33M
  ~IntrusiveRefCntPtr() { release(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::~IntrusiveRefCntPtr()
Line
Count
Source
157
23
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::~IntrusiveRefCntPtr()
Line
Count
Source
157
21.2k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
157
135k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::~IntrusiveRefCntPtr()
Line
Count
Source
157
27.4k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::~IntrusiveRefCntPtr()
Line
Count
Source
157
72.6k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::~IntrusiveRefCntPtr()
Line
Count
Source
157
70.9k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::~IntrusiveRefCntPtr()
Line
Count
Source
157
67.0k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::~IntrusiveRefCntPtr()
Line
Count
Source
157
26.9k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::~IntrusiveRefCntPtr()
Line
Count
Source
157
85.6k
  ~IntrusiveRefCntPtr() { release(); }
158
159
5.57M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
5.57M
    swap(S);
161
5.57M
    return *this;
162
5.57M
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTReader>)
Line
Count
Source
159
5.62k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
5.62k
    swap(S);
161
5.62k
    return *this;
162
5.62k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::operator=(llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>)
Line
Count
Source
159
1.16k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
1.16k
    swap(S);
161
1.16k
    return *this;
162
1.16k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator=(llvm::IntrusiveRefCntPtr<clang::SourceManager>)
Line
Count
Source
159
44.0k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
44.0k
    swap(S);
161
44.0k
    return *this;
162
44.0k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator=(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>)
Line
Count
Source
159
47
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
47
    swap(S);
161
47
    return *this;
162
47
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator=(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>)
Line
Count
Source
159
1.93M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
1.93M
    swap(S);
161
1.93M
    return *this;
162
1.93M
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::operator=(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>)
Line
Count
Source
159
3.28M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
3.28M
    swap(S);
161
3.28M
    return *this;
162
3.28M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::operator=(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>)
Line
Count
Source
159
5.30k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
5.30k
    swap(S);
161
5.30k
    return *this;
162
5.30k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::operator=(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>)
Line
Count
Source
159
110k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
110k
    swap(S);
161
110k
    return *this;
162
110k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTContext>)
Line
Count
Source
159
52.7k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
52.7k
    swap(S);
161
52.7k
    return *this;
162
52.7k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator=(llvm::IntrusiveRefCntPtr<clang::TargetInfo>)
Line
Count
Source
159
42.1k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
42.1k
    swap(S);
161
42.1k
    return *this;
162
42.1k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator=(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>)
Line
Count
Source
159
42.3k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
42.3k
    swap(S);
161
42.3k
    return *this;
162
42.3k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator=(llvm::IntrusiveRefCntPtr<clang::FileManager>)
Line
Count
Source
159
44.8k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
44.8k
    swap(S);
161
44.8k
    return *this;
162
44.8k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator=(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>)
Line
Count
Source
159
3.54k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
3.54k
    swap(S);
161
3.54k
    return *this;
162
3.54k
  }
163
164
4.89M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator*() const
Line
Count
Source
164
23
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator*() const
Line
Count
Source
164
369k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator*() const
Line
Count
Source
164
602k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::operator*() const
Line
Count
Source
164
1.76M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator*() const
Line
Count
Source
164
618k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::operator*() const
Line
Count
Source
164
32.8k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator*() const
Line
Count
Source
164
425k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator*() const
Line
Count
Source
164
9
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator*() const
Line
Count
Source
164
88.5k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator*() const
Line
Count
Source
164
288k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator*() const
Line
Count
Source
164
184k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator*() const
Line
Count
Source
164
1.00k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::operator*() const
Line
Count
Source
164
52.0k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator*() const
Line
Count
Source
164
396k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::operator*() const
Line
Count
Source
164
33.1k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator*() const
Line
Count
Source
164
38.5k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator*() const
Line
Count
Source
164
444
  T &operator*() const { return *Obj; }
165
71.7M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::operator->() const
Line
Count
Source
165
7.62k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::operator->() const
Line
Count
Source
165
13.0k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator->() const
Line
Count
Source
165
65.3k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator->() const
Line
Count
Source
165
9.11M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::operator->() const
Line
Count
Source
165
7.73M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator->() const
Line
Count
Source
165
244k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator->() const
Line
Count
Source
165
1
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator->() const
Line
Count
Source
165
472k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator->() const
Line
Count
Source
165
113
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::operator->() const
Line
Count
Source
165
33.1k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator->() const
Line
Count
Source
165
337
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator->() const
Line
Count
Source
165
294
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator->() const
Line
Count
Source
165
21.0k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator->() const
Line
Count
Source
165
18.3k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator->() const
Line
Count
Source
165
2.64M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::operator->() const
Line
Count
Source
165
51.0M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator->() const
Line
Count
Source
165
146k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::operator->() const
Line
Count
Source
165
122k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::operator->() const
Line
Count
Source
165
28.2k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::operator->() const
Line
Count
Source
165
57.3k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator->() const
Line
Count
Source
165
121
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::operator->() const
Line
Count
Source
165
3.10k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator->() const
Line
Count
Source
165
10.1k
  T *operator->() const { return Obj; }
166
58.4M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::get() const
Line
Count
Source
166
12.2k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::get() const
Line
Count
Source
166
138
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::get() const
Line
Count
Source
166
4.07k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::get() const
Line
Count
Source
166
2
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::get() const
Line
Count
Source
166
1.17k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::get() const
Line
Count
Source
166
37.0k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::get() const
Line
Count
Source
166
7
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::get() const
Line
Count
Source
166
61.1k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::get() const
Line
Count
Source
166
19.1k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::get() const
Line
Count
Source
166
53.7M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::get() const
Line
Count
Source
166
28.4k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::get() const
Line
Count
Source
166
2.72k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::get() const
Line
Count
Source
166
2.33k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::get() const
Line
Count
Source
166
3.44k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::get() const
Line
Count
Source
166
1.59k
  T *get() const { return Obj; }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::get() const
Line
Count
Source
166
23
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::get() const
Line
Count
Source
166
47
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::get() const
Line
Count
Source
166
23.2k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::get() const
Line
Count
Source
166
57
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::get() const
Line
Count
Source
166
4.45M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::get() const
Line
Count
Source
166
1.86k
  T *get() const { return Obj; }
167
2.79M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator bool() const
Line
Count
Source
167
8.88k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator bool() const
Line
Count
Source
167
1.71M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator bool() const
Line
Count
Source
167
29.4k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator bool() const
Line
Count
Source
167
51.1k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator bool() const
Line
Count
Source
167
135k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::operator bool() const
Line
Count
Source
167
207k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator bool() const
Line
Count
Source
167
42.2k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator bool() const
Line
Count
Source
167
526k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator bool() const
Line
Count
Source
167
36.1k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator bool() const
Line
Count
Source
167
44.0k
  explicit operator bool() const { return Obj; }
168
169
5.57M
  void swap(IntrusiveRefCntPtr &other) {
170
5.57M
    T *tmp = other.Obj;
171
5.57M
    other.Obj = Obj;
172
5.57M
    Obj = tmp;
173
5.57M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::swap(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>&)
Line
Count
Source
169
5.30k
  void swap(IntrusiveRefCntPtr &other) {
170
5.30k
    T *tmp = other.Obj;
171
5.30k
    other.Obj = Obj;
172
5.30k
    Obj = tmp;
173
5.30k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::swap(llvm::IntrusiveRefCntPtr<clang::TargetInfo>&)
Line
Count
Source
169
42.1k
  void swap(IntrusiveRefCntPtr &other) {
170
42.1k
    T *tmp = other.Obj;
171
42.1k
    other.Obj = Obj;
172
42.1k
    Obj = tmp;
173
42.1k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::swap(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&)
Line
Count
Source
169
3.28M
  void swap(IntrusiveRefCntPtr &other) {
170
3.28M
    T *tmp = other.Obj;
171
3.28M
    other.Obj = Obj;
172
3.28M
    Obj = tmp;
173
3.28M
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::swap(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>&)
Line
Count
Source
169
47
  void swap(IntrusiveRefCntPtr &other) {
170
47
    T *tmp = other.Obj;
171
47
    other.Obj = Obj;
172
47
    Obj = tmp;
173
47
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::swap(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&)
Line
Count
Source
169
3.54k
  void swap(IntrusiveRefCntPtr &other) {
170
3.54k
    T *tmp = other.Obj;
171
3.54k
    other.Obj = Obj;
172
3.54k
    Obj = tmp;
173
3.54k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::swap(llvm::IntrusiveRefCntPtr<clang::ASTReader>&)
Line
Count
Source
169
5.62k
  void swap(IntrusiveRefCntPtr &other) {
170
5.62k
    T *tmp = other.Obj;
171
5.62k
    other.Obj = Obj;
172
5.62k
    Obj = tmp;
173
5.62k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::swap(llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>&)
Line
Count
Source
169
1.16k
  void swap(IntrusiveRefCntPtr &other) {
170
1.16k
    T *tmp = other.Obj;
171
1.16k
    other.Obj = Obj;
172
1.16k
    Obj = tmp;
173
1.16k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::swap(llvm::IntrusiveRefCntPtr<clang::SourceManager>&)
Line
Count
Source
169
44.0k
  void swap(IntrusiveRefCntPtr &other) {
170
44.0k
    T *tmp = other.Obj;
171
44.0k
    other.Obj = Obj;
172
44.0k
    Obj = tmp;
173
44.0k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::swap(llvm::IntrusiveRefCntPtr<clang::FileManager>&)
Line
Count
Source
169
44.8k
  void swap(IntrusiveRefCntPtr &other) {
170
44.8k
    T *tmp = other.Obj;
171
44.8k
    other.Obj = Obj;
172
44.8k
    Obj = tmp;
173
44.8k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::swap(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>&)
Line
Count
Source
169
110k
  void swap(IntrusiveRefCntPtr &other) {
170
110k
    T *tmp = other.Obj;
171
110k
    other.Obj = Obj;
172
110k
    Obj = tmp;
173
110k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::swap(llvm::IntrusiveRefCntPtr<clang::ASTContext>&)
Line
Count
Source
169
52.7k
  void swap(IntrusiveRefCntPtr &other) {
170
52.7k
    T *tmp = other.Obj;
171
52.7k
    other.Obj = Obj;
172
52.7k
    Obj = tmp;
173
52.7k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::swap(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>&)
Line
Count
Source
169
1.93M
  void swap(IntrusiveRefCntPtr &other) {
170
1.93M
    T *tmp = other.Obj;
171
1.93M
    other.Obj = Obj;
172
1.93M
    Obj = tmp;
173
1.93M
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::swap(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>&)
Line
Count
Source
169
42.3k
  void swap(IntrusiveRefCntPtr &other) {
170
42.3k
    T *tmp = other.Obj;
171
42.3k
    other.Obj = Obj;
172
42.3k
    Obj = tmp;
173
42.3k
  }
174
175
8.20k
  void reset() {
176
8.20k
    release();
177
8.20k
    Obj = nullptr;
178
8.20k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::reset()
Line
Count
Source
175
1.99k
  void reset() {
176
1.99k
    release();
177
1.99k
    Obj = nullptr;
178
1.99k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::reset()
Line
Count
Source
175
1.81k
  void reset() {
176
1.81k
    release();
177
1.81k
    Obj = nullptr;
178
1.81k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::reset()
Line
Count
Source
175
1.81k
  void reset() {
176
1.81k
    release();
177
1.81k
    Obj = nullptr;
178
1.81k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::reset()
Line
Count
Source
175
758
  void reset() {
176
758
    release();
177
758
    Obj = nullptr;
178
758
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::reset()
Line
Count
Source
175
1.81k
  void reset() {
176
1.81k
    release();
177
1.81k
    Obj = nullptr;
178
1.81k
  }
179
180
18.9k
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::resetWithoutRelease()
Line
Count
Source
180
7
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::resetWithoutRelease()
Line
Count
Source
180
18.9k
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::resetWithoutRelease()
Line
Count
Source
180
7
  void resetWithoutRelease() { Obj = nullptr; }
181
182
private:
183
29.9M
  void retain() {
184
29.9M
    if (Obj)
185
26.7M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
29.9M
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::retain()
Line
Count
Source
183
23
  void retain() {
184
23
    if (Obj)
185
23
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
23
  }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::retain()
Line
Count
Source
183
28.1k
  void retain() {
184
28.1k
    if (Obj)
185
28.1k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
28.1k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::retain()
Line
Count
Source
183
2.73k
  void retain() {
184
2.73k
    if (Obj)
185
2.73k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
2.73k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::retain()
Line
Count
Source
183
10.2k
  void retain() {
184
10.2k
    if (Obj)
185
7.15k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
10.2k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::retain()
Line
Count
Source
183
42.1k
  void retain() {
184
42.1k
    if (Obj)
185
42.1k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
42.1k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::retain()
Line
Count
Source
183
47.9k
  void retain() {
184
47.9k
    if (Obj)
185
45.9k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
47.9k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::retain()
Line
Count
Source
183
44.7k
  void retain() {
184
44.7k
    if (Obj)
185
42.7k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
44.7k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::retain()
Line
Count
Source
183
44.7k
  void retain() {
184
44.7k
    if (Obj)
185
44.7k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
44.7k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::retain()
Line
Count
Source
183
33.2k
  void retain() {
184
33.2k
    if (Obj)
185
3.52k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
33.2k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::retain()
Line
Count
Source
183
50.3k
  void retain() {
184
50.3k
    if (Obj)
185
49.4k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
50.3k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::retain()
Line
Count
Source
183
52.7k
  void retain() {
184
52.7k
    if (Obj)
185
31.7k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
52.7k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::retain()
Line
Count
Source
183
153k
  void retain() {
184
153k
    if (Obj)
185
153k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
153k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::retain()
Line
Count
Source
183
358k
  void retain() {
184
358k
    if (Obj)
185
289k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
358k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::retain()
Line
Count
Source
183
306k
  void retain() {
184
306k
    if (Obj)
185
306k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
306k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::retain()
Line
Count
Source
183
356k
  void retain() {
184
356k
    if (Obj)
185
356k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
356k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::retain()
Line
Count
Source
183
47
  void retain() {
184
47
    if (Obj)
185
47
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
47
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::retain()
Line
Count
Source
183
5.19M
  void retain() {
184
5.19M
    if (Obj)
185
2.89M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
5.19M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::retain()
Line
Count
Source
183
1.21M
  void retain() {
184
1.21M
    if (Obj)
185
1.21M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
1.21M
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::retain()
Line
Count
Source
183
352k
  void retain() {
184
352k
    if (Obj)
185
352k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
352k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::retain()
Line
Count
Source
183
18.5k
  void retain() {
184
18.5k
    if (Obj)
185
18.5k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
18.5k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::retain()
Line
Count
Source
183
23.7k
  void retain() {
184
23.7k
    if (Obj)
185
23.7k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
23.7k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::retain()
Line
Count
Source
183
475
  void retain() {
184
475
    if (Obj)
185
475
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
475
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::retain()
Line
Count
Source
183
299
  void retain() {
184
299
    if (Obj)
185
299
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
299
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::retain()
Line
Count
Source
183
21.6M
  void retain() {
184
21.6M
    if (Obj)
185
20.8M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
21.6M
  }
187
188
34.0M
  void release() {
189
34.0M
    if (Obj)
190
24.5M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
34.0M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::release()
Line
Count
Source
188
1.41M
  void release() {
189
1.41M
    if (Obj)
190
1.21M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
1.41M
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::release()
Line
Count
Source
188
34.2k
  void release() {
189
34.2k
    if (Obj)
190
7.10k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
34.2k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::release()
Line
Count
Source
188
352k
  void release() {
189
352k
    if (Obj)
190
352k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
352k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::release()
Line
Count
Source
188
299k
  void release() {
189
299k
    if (Obj)
190
299k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
299k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::release()
Line
Count
Source
188
419k
  void release() {
189
419k
    if (Obj)
190
287k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
419k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::release()
Line
Count
Source
188
573k
  void release() {
189
573k
    if (Obj)
190
251k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
573k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::release()
Line
Count
Source
188
135k
  void release() {
189
135k
    if (Obj)
190
134k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
135k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::release()
Line
Count
Source
188
76.9k
  void release() {
189
76.9k
    if (Obj)
190
22.4k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
76.9k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::release()
Line
Count
Source
188
72.6k
  void release() {
189
72.6k
    if (Obj)
190
30.3k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
72.6k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::release()
Line
Count
Source
188
2.73k
  void release() {
189
2.73k
    if (Obj)
190
2.69k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
2.73k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::release()
Line
Count
Source
188
28.1k
  void release() {
189
28.1k
    if (Obj)
190
28.1k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
28.1k
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::release()
Line
Count
Source
188
23
  void release() {
189
23
    if (Obj)
190
0
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
23
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::release()
Line
Count
Source
188
21.2k
  void release() {
189
21.2k
    if (Obj)
190
70
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
21.2k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::release()
Line
Count
Source
188
23.7k
  void release() {
189
23.7k
    if (Obj)
190
23.7k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
23.7k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::release()
Line
Count
Source
188
71.7k
  void release() {
189
71.7k
    if (Obj)
190
26.9k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
71.7k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::release()
Line
Count
Source
188
68.9k
  void release() {
189
68.9k
    if (Obj)
190
23.7k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
68.9k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::release()
Line
Count
Source
188
18.5k
  void release() {
189
18.5k
    if (Obj)
190
18.5k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
18.5k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::release()
Line
Count
Source
188
475
  void release() {
189
475
    if (Obj)
190
475
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
475
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::release()
Line
Count
Source
188
299
  void release() {
189
299
    if (Obj)
190
299
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
299
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::release()
Line
Count
Source
188
23.9M
  void release() {
189
23.9M
    if (Obj)
190
18.8M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
23.9M
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::release()
Line
Count
Source
188
26.9k
  void release() {
189
26.9k
    if (Obj)
190
25.6k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
26.9k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::release()
Line
Count
Source
188
85.6k
  void release() {
189
85.6k
    if (Obj)
190
23.1k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
85.6k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::release()
Line
Count
Source
188
6.33M
  void release() {
189
6.33M
    if (Obj)
190
2.89M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
6.33M
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::release()
Line
Count
Source
188
27.4k
  void release() {
189
27.4k
    if (Obj)
190
3.47k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
27.4k
  }
192
193
  template <typename X> friend class IntrusiveRefCntPtr;
194
};
195
196
template <class T, class U>
197
inline bool operator==(const IntrusiveRefCntPtr<T> &A,
198
757k
                       const IntrusiveRefCntPtr<U> &B) {
199
757k
  return A.get() == B.get();
200
757k
}
201
202
template <class T, class U>
203
inline bool operator!=(const IntrusiveRefCntPtr<T> &A,
204
128k
                       const IntrusiveRefCntPtr<U> &B) {
205
128k
  return A.get() != B.get();
206
128k
}
bool llvm::operator!=<clang::vfs::FileSystem, clang::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&, llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&)
Line
Count
Source
204
226
                       const IntrusiveRefCntPtr<U> &B) {
205
226
  return A.get() != B.get();
206
226
}
bool llvm::operator!=<clang::ento::ProgramState const, clang::ento::ProgramState const>(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> const&, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> const&)
Line
Count
Source
204
127k
                       const IntrusiveRefCntPtr<U> &B) {
205
127k
  return A.get() != B.get();
206
127k
}
207
208
template <class T, class U>
209
inline bool operator==(const IntrusiveRefCntPtr<T> &A, U *B) {
210
  return A.get() == B;
211
}
212
213
template <class T, class U>
214
inline bool operator!=(const IntrusiveRefCntPtr<T> &A, U *B) {
215
  return A.get() != B;
216
}
217
218
template <class T, class U>
219
inline bool operator==(T *A, const IntrusiveRefCntPtr<U> &B) {
220
  return A == B.get();
221
}
222
223
template <class T, class U>
224
inline bool operator!=(T *A, const IntrusiveRefCntPtr<U> &B) {
225
  return A != B.get();
226
}
227
228
template <class T>
229
264k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
264k
  return !B;
231
264k
}
bool llvm::operator==<clang::SourceManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::SourceManager> const&)
Line
Count
Source
229
76.9k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
76.9k
  return !B;
231
76.9k
}
bool llvm::operator==<clang::vfs::FileSystem>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&)
Line
Count
Source
229
34.5k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
34.5k
  return !B;
231
34.5k
}
bool llvm::operator==<clang::DiagnosticsEngine>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
229
36.1k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
36.1k
  return !B;
231
36.1k
}
bool llvm::operator==<clang::FileManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::FileManager> const&)
Line
Count
Source
229
40.4k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
40.4k
  return !B;
231
40.4k
}
bool llvm::operator==<clang::TargetInfo>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&)
Line
Count
Source
229
41.8k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
41.8k
  return !B;
231
41.8k
}
bool llvm::operator==<clang::ASTContext>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::ASTContext> const&)
Line
Count
Source
229
34.3k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
34.3k
  return !B;
231
34.3k
}
232
233
template <class T>
234
264k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
264k
  return B == A;
236
264k
}
bool llvm::operator==<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
234
36.1k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
36.1k
  return B == A;
236
36.1k
}
bool llvm::operator==<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
234
40.4k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
40.4k
  return B == A;
236
40.4k
}
bool llvm::operator==<clang::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&, std::nullptr_t)
Line
Count
Source
234
34.5k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
34.5k
  return B == A;
236
34.5k
}
bool llvm::operator==<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
234
41.8k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
41.8k
  return B == A;
236
41.8k
}
bool llvm::operator==<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
234
76.9k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
76.9k
  return B == A;
236
76.9k
}
bool llvm::operator==<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
234
34.3k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
34.3k
  return B == A;
236
34.3k
}
237
238
template <class T>
239
bool operator!=(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
240
  return !(A == B);
241
}
242
243
template <class T>
244
264k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
264k
  return !(A == B);
246
264k
}
bool llvm::operator!=<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
244
41.8k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
41.8k
  return !(A == B);
246
41.8k
}
bool llvm::operator!=<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
244
34.3k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
34.3k
  return !(A == B);
246
34.3k
}
bool llvm::operator!=<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
244
76.9k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
76.9k
  return !(A == B);
246
76.9k
}
bool llvm::operator!=<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
244
36.1k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
36.1k
  return !(A == B);
246
36.1k
}
bool llvm::operator!=<clang::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&, std::nullptr_t)
Line
Count
Source
244
34.5k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
34.5k
  return !(A == B);
246
34.5k
}
bool llvm::operator!=<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
244
40.4k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
40.4k
  return !(A == B);
246
40.4k
}
247
248
// Make IntrusiveRefCntPtr work with dyn_cast, isa, and the other idioms from
249
// Casting.h.
250
template <typename From> struct simplify_type;
251
252
template <class T> struct simplify_type<IntrusiveRefCntPtr<T>> {
253
  using SimpleType = T *;
254
255
  static SimpleType getSimplifiedValue(IntrusiveRefCntPtr<T> &Val) {
256
    return Val.get();
257
  }
258
};
259
260
template <class T> struct simplify_type<const IntrusiveRefCntPtr<T>> {
261
  using SimpleType = /*const*/ T *;
262
263
  static SimpleType getSimplifiedValue(const IntrusiveRefCntPtr<T> &Val) {
264
    return Val.get();
265
  }
266
};
267
268
} // end namespace llvm
269
270
#endif // LLVM_ADT_INTRUSIVEREFCNTPTR_H