Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h
Line
Count
Source
1
//==- llvm/ADT/IntrusiveRefCntPtr.h - Smart Refcounting Pointer --*- C++ -*-==//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file defines the RefCountedBase, ThreadSafeRefCountedBase, and
10
// IntrusiveRefCntPtr classes.
11
//
12
// IntrusiveRefCntPtr is a smart pointer to an object which maintains a
13
// reference count.  (ThreadSafe)RefCountedBase is a mixin class that adds a
14
// refcount member variable and methods for updating the refcount.  An object
15
// that inherits from (ThreadSafe)RefCountedBase deletes itself when its
16
// refcount hits zero.
17
//
18
// For example:
19
//
20
//   class MyClass : public RefCountedBase<MyClass> {};
21
//
22
//   void foo() {
23
//     // Constructing an IntrusiveRefCntPtr increases the pointee's refcount by
24
//     // 1 (from 0 in this case).
25
//     IntrusiveRefCntPtr<MyClass> Ptr1(new MyClass());
26
//
27
//     // Copying an IntrusiveRefCntPtr increases the pointee's refcount by 1.
28
//     IntrusiveRefCntPtr<MyClass> Ptr2(Ptr1);
29
//
30
//     // Constructing an IntrusiveRefCntPtr has no effect on the object's
31
//     // refcount.  After a move, the moved-from pointer is null.
32
//     IntrusiveRefCntPtr<MyClass> Ptr3(std::move(Ptr1));
33
//     assert(Ptr1 == nullptr);
34
//
35
//     // Clearing an IntrusiveRefCntPtr decreases the pointee's refcount by 1.
36
//     Ptr2.reset();
37
//
38
//     // The object deletes itself when we return from the function, because
39
//     // Ptr3's destructor decrements its refcount to 0.
40
//   }
41
//
42
// You can use IntrusiveRefCntPtr with isa<T>(), dyn_cast<T>(), etc.:
43
//
44
//   IntrusiveRefCntPtr<MyClass> Ptr(new MyClass());
45
//   OtherClass *Other = dyn_cast<OtherClass>(Ptr);  // Ptr.get() not required
46
//
47
// IntrusiveRefCntPtr works with any class that
48
//
49
//  - inherits from (ThreadSafe)RefCountedBase,
50
//  - has Retain() and Release() methods, or
51
//  - specializes IntrusiveRefCntPtrInfo.
52
//
53
//===----------------------------------------------------------------------===//
54
55
#ifndef LLVM_ADT_INTRUSIVEREFCNTPTR_H
56
#define LLVM_ADT_INTRUSIVEREFCNTPTR_H
57
58
#include <atomic>
59
#include <cassert>
60
#include <cstddef>
61
62
namespace llvm {
63
64
/// A CRTP mixin class that adds reference counting to a type.
65
///
66
/// The lifetime of an object which inherits from RefCountedBase is managed by
67
/// calls to Release() and Retain(), which increment and decrement the object's
68
/// refcount, respectively.  When a Release() call decrements the refcount to 0,
69
/// the object deletes itself.
70
template <class Derived> class RefCountedBase {
71
  mutable unsigned RefCount = 0;
72
73
public:
74
882k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticOptions>::RefCountedBase()
Line
Count
Source
74
174k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticsEngine>::RefCountedBase()
Line
Count
Source
74
162k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticIDs>::RefCountedBase()
Line
Count
Source
74
158k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::FileManager>::RefCountedBase()
Line
Count
Source
74
90.3k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::SourceManager>::RefCountedBase()
Line
Count
Source
74
92.3k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::TargetInfo>::RefCountedBase()
Line
Count
Source
74
48.7k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::InMemoryModuleCache>::RefCountedBase()
Line
Count
Source
74
48.5k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ExternalASTSource>::RefCountedBase()
Line
Count
Source
74
7.56k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::AnalyzerOptions>::RefCountedBase()
Line
Count
Source
74
56.7k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ASTContext>::RefCountedBase()
Line
Count
Source
74
41.7k
  RefCountedBase() = default;
75
7.81k
  RefCountedBase(const RefCountedBase &) {}
76
77
1.30M
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticOptions>::Retain() const
Line
Count
Source
77
427k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticIDs>::Retain() const
Line
Count
Source
77
352k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::AnalyzerOptions>::Retain() const
Line
Count
Source
77
163k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ASTContext>::Retain() const
Line
Count
Source
77
47.2k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Retain() const
Line
Count
Source
77
69.8k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::TargetInfo>::Retain() const
Line
Count
Source
77
53.9k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ExternalASTSource>::Retain() const
Line
Count
Source
77
17.2k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::FileManager>::Retain() const
Line
Count
Source
77
66.7k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::SourceManager>::Retain() const
Line
Count
Source
77
54.6k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::InMemoryModuleCache>::Retain() const
Line
Count
Source
77
55.1k
  void Retain() const { ++RefCount; }
78
79
1.15M
  void Release() const {
80
1.15M
    assert(RefCount > 0 && "Reference count is already zero.");
81
1.15M
    if (--RefCount == 0)
82
566k
      delete static_cast<const Derived *>(this);
83
1.15M
  }
llvm::RefCountedBase<clang::DiagnosticOptions>::Release() const
Line
Count
Source
79
384k
  void Release() const {
80
384k
    assert(RefCount > 0 && "Reference count is already zero.");
81
384k
    if (--RefCount == 0)
82
167k
      delete static_cast<const Derived *>(this);
83
384k
  }
llvm::RefCountedBase<clang::DiagnosticIDs>::Release() const
Line
Count
Source
79
338k
  void Release() const {
80
338k
    assert(RefCount > 0 && "Reference count is already zero.");
81
338k
    if (--RefCount == 0)
82
144k
      delete static_cast<const Derived *>(this);
83
338k
  }
llvm::RefCountedBase<clang::AnalyzerOptions>::Release() const
Line
Count
Source
79
148k
  void Release() const {
80
148k
    assert(RefCount > 0 && "Reference count is already zero.");
81
148k
    if (--RefCount == 0)
82
42.3k
      delete static_cast<const Derived *>(this);
83
148k
  }
llvm::RefCountedBase<clang::ASTContext>::Release() const
Line
Count
Source
79
38.6k
  void Release() const {
80
38.6k
    assert(RefCount > 0 && "Reference count is already zero.");
81
38.6k
    if (--RefCount == 0)
82
33.1k
      delete static_cast<const Derived *>(this);
83
38.6k
  }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Release() const
Line
Count
Source
79
55.3k
  void Release() const {
80
55.3k
    assert(RefCount > 0 && "Reference count is already zero.");
81
55.3k
    if (--RefCount == 0)
82
37.0k
      delete static_cast<const Derived *>(this);
83
55.3k
  }
llvm::RefCountedBase<clang::FileManager>::Release() const
Line
Count
Source
79
52.3k
  void Release() const {
80
52.3k
    assert(RefCount > 0 && "Reference count is already zero.");
81
52.3k
    if (--RefCount == 0)
82
31.9k
      delete static_cast<const Derived *>(this);
83
52.3k
  }
llvm::RefCountedBase<clang::SourceManager>::Release() const
Line
Count
Source
79
40.2k
  void Release() const {
80
40.2k
    assert(RefCount > 0 && "Reference count is already zero.");
81
40.2k
    if (--RefCount == 0)
82
34.0k
      delete static_cast<const Derived *>(this);
83
40.2k
  }
llvm::RefCountedBase<clang::InMemoryModuleCache>::Release() const
Line
Count
Source
79
40.5k
  void Release() const {
80
40.5k
    assert(RefCount > 0 && "Reference count is already zero.");
81
40.5k
    if (--RefCount == 0)
82
34.0k
      delete static_cast<const Derived *>(this);
83
40.5k
  }
llvm::RefCountedBase<clang::TargetInfo>::Release() const
Line
Count
Source
79
39.5k
  void Release() const {
80
39.5k
    assert(RefCount > 0 && "Reference count is already zero.");
81
39.5k
    if (--RefCount == 0)
82
34.1k
      delete static_cast<const Derived *>(this);
83
39.5k
  }
llvm::RefCountedBase<clang::ExternalASTSource>::Release() const
Line
Count
Source
79
17.0k
  void Release() const {
80
17.0k
    assert(RefCount > 0 && "Reference count is already zero.");
81
17.0k
    if (--RefCount == 0)
82
7.33k
      delete static_cast<const Derived *>(this);
83
17.0k
  }
84
};
85
86
/// A thread-safe version of \c RefCountedBase.
87
template <class Derived> class ThreadSafeRefCountedBase {
88
  mutable std::atomic<int> RefCount;
89
90
protected:
91
650k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<llvm::vfs::FileSystem>::ThreadSafeRefCountedBase()
Line
Count
Source
91
123k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::ThreadSafeRefCountedBase()
Line
Count
Source
91
527k
  ThreadSafeRefCountedBase() : RefCount(0) {}
92
93
public:
94
3.10M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
llvm::ThreadSafeRefCountedBase<llvm::vfs::FileSystem>::Retain() const
Line
Count
Source
94
259k
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Retain() const
Line
Count
Source
94
2.84M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
95
96
3.08M
  void Release() const {
97
3.08M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
98
3.08M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
99
3.08M
    if (NewRefCount == 0)
100
634k
      delete static_cast<const Derived *>(this);
101
3.08M
  }
llvm::ThreadSafeRefCountedBase<llvm::vfs::FileSystem>::Release() const
Line
Count
Source
96
245k
  void Release() const {
97
245k
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
98
245k
    assert(NewRefCount >= 0 && "Reference count was already zero.");
99
245k
    if (NewRefCount == 0)
100
108k
      delete static_cast<const Derived *>(this);
101
245k
  }
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Release() const
Line
Count
Source
96
2.83M
  void Release() const {
97
2.83M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
98
2.83M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
99
2.83M
    if (NewRefCount == 0)
100
525k
      delete static_cast<const Derived *>(this);
101
2.83M
  }
102
};
103
104
/// Class you can specialize to provide custom retain/release functionality for
105
/// a type.
106
///
107
/// Usually specializing this class is not necessary, as IntrusiveRefCntPtr
108
/// works with any type which defines Retain() and Release() functions -- you
109
/// can define those functions yourself if RefCountedBase doesn't work for you.
110
///
111
/// One case when you might want to specialize this type is if you have
112
///  - Foo.h defines type Foo and includes Bar.h, and
113
///  - Bar.h uses IntrusiveRefCntPtr<Foo> in inline functions.
114
///
115
/// Because Foo.h includes Bar.h, Bar.h can't include Foo.h in order to pull in
116
/// the declaration of Foo.  Without the declaration of Foo, normally Bar.h
117
/// wouldn't be able to use IntrusiveRefCntPtr<Foo>, which wants to call
118
/// T::Retain and T::Release.
119
///
120
/// To resolve this, Bar.h could include a third header, FooFwd.h, which
121
/// forward-declares Foo and specializes IntrusiveRefCntPtrInfo<Foo>.  Then
122
/// Bar.h could use IntrusiveRefCntPtr<Foo>, although it still couldn't call any
123
/// functions on Foo itself, because Foo would be an incomplete type.
124
template <typename T> struct IntrusiveRefCntPtrInfo {
125
6.86M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::retain(clang::DiagnosticOptions*)
Line
Count
Source
125
427k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::retain(clang::DiagnosticIDs*)
Line
Count
Source
125
352k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::FileSystem>::retain(llvm::vfs::FileSystem*)
Line
Count
Source
125
201k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::retain(clang::AnalyzerOptions*)
Line
Count
Source
125
163k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::InMemoryFileSystem>::retain(llvm::vfs::InMemoryFileSystem*)
Line
Count
Source
125
50.6k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ast_matchers::internal::DynMatcherInterface>::retain(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
125
2.84M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::retain(clang::ASTContext*)
Line
Count
Source
125
47.2k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::retain(clang::DiagnosticsEngine*)
Line
Count
Source
125
69.8k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::retain(clang::TargetInfo*)
Line
Count
Source
125
53.9k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::retain(clang::ASTReader*)
Line
Count
Source
125
9.75k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::retain(clang::FileManager*)
Line
Count
Source
125
66.7k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::retain(clang::SourceManager*)
Line
Count
Source
125
54.6k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::InMemoryModuleCache>::retain(clang::InMemoryModuleCache*)
Line
Count
Source
125
55.1k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::retain(clang::ExternalASTSource*)
Line
Count
Source
125
5.44k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalSemaSource>::retain(clang::ExternalSemaSource*)
Line
Count
Source
125
55
  static void retain(T *obj) { obj->Retain(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtrInfo<(anonymous namespace)::ChainedIncludesSource>::retain((anonymous namespace)::ChainedIncludesSource*)
Line
Count
Source
125
27
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::OverlayFileSystem>::retain(llvm::vfs::OverlayFileSystem*)
Line
Count
Source
125
7.30k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::retain(clang::ento::CallEvent const*)
Line
Count
Source
125
900k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::retain(clang::ento::ObjCMethodCall const*)
Line
Count
Source
125
27.2k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::retain(clang::ento::CXXConstructorCall const*)
Line
Count
Source
125
35.0k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::retain(clang::ento::CXXDestructorCall const*)
Line
Count
Source
125
2.69k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::retain(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
125
2.81k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::retain(clang::RopeRefCountString*)
Line
Count
Source
125
1.48M
  static void retain(T *obj) { obj->Retain(); }
126
6.69M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::FileSystem>::release(llvm::vfs::FileSystem*)
Line
Count
Source
126
187k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::release(clang::DiagnosticOptions*)
Line
Count
Source
126
384k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::release(clang::DiagnosticIDs*)
Line
Count
Source
126
338k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::release(clang::AnalyzerOptions*)
Line
Count
Source
126
148k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::InMemoryFileSystem>::release(llvm::vfs::InMemoryFileSystem*)
Line
Count
Source
126
50.6k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ast_matchers::internal::DynMatcherInterface>::release(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
126
2.83M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::release(clang::ASTContext*)
Line
Count
Source
126
38.6k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::release(clang::DiagnosticsEngine*)
Line
Count
Source
126
55.3k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::release(clang::FileManager*)
Line
Count
Source
126
52.3k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::release(clang::SourceManager*)
Line
Count
Source
126
40.2k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::InMemoryModuleCache>::release(clang::InMemoryModuleCache*)
Line
Count
Source
126
40.5k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::release(clang::TargetInfo*)
Line
Count
Source
126
39.5k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::release(clang::ASTReader*)
Line
Count
Source
126
9.68k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::release(clang::ExternalASTSource*)
Line
Count
Source
126
5.37k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalSemaSource>::release(clang::ExternalSemaSource*)
Line
Count
Source
126
82
  static void release(T *obj) { obj->Release(); }
Unexecuted instantiation: ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtrInfo<(anonymous namespace)::ChainedIncludesSource>::release((anonymous namespace)::ChainedIncludesSource*)
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::OverlayFileSystem>::release(llvm::vfs::OverlayFileSystem*)
Line
Count
Source
126
7.29k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::release(clang::RopeRefCountString*)
Line
Count
Source
126
1.48M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::release(clang::ento::CallEvent const*)
Line
Count
Source
126
900k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::release(clang::ento::ObjCMethodCall const*)
Line
Count
Source
126
27.2k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::release(clang::ento::CXXConstructorCall const*)
Line
Count
Source
126
35.0k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::release(clang::ento::CXXDestructorCall const*)
Line
Count
Source
126
2.69k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::release(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
126
2.81k
  static void release(T *obj) { obj->Release(); }
127
};
128
129
/// A smart pointer to a reference-counted object that inherits from
130
/// RefCountedBase or ThreadSafeRefCountedBase.
131
///
132
/// This class increments its pointee's reference count when it is created, and
133
/// decrements its refcount when it's destroyed (or is changed to point to a
134
/// different object).
135
template <typename T> class IntrusiveRefCntPtr {
136
  T *Obj = nullptr;
137
138
public:
139
  using element_type = T;
140
141
2.31M
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr()
Line
Count
Source
141
53.2k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr()
Line
Count
Source
141
53.2k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr()
Line
Count
Source
141
53.2k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::IntrusiveRefCntPtr()
Line
Count
Source
141
4.73k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr()
Line
Count
Source
141
101k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr()
Line
Count
Source
141
53.2k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr()
Line
Count
Source
141
53.2k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr()
Line
Count
Source
141
48.5k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr()
Line
Count
Source
141
670k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr()
Line
Count
Source
141
41.7k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr()
Line
Count
Source
141
1.18M
  explicit IntrusiveRefCntPtr() = default;
142
6.02M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(clang::DiagnosticOptions*)
Line
Count
Source
142
423k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(clang::DiagnosticIDs*)
Line
Count
Source
142
158k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::vfs::FileSystem*)
Line
Count
Source
142
138k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::IntrusiveRefCntPtr(llvm::vfs::InMemoryFileSystem*)
Line
Count
Source
142
50.6k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::IntrusiveRefCntPtr(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
142
550k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(clang::DiagnosticsEngine*)
Line
Count
Source
142
58.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr(clang::ASTContext*)
Line
Count
Source
142
81.0k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr(clang::TargetInfo*)
Line
Count
Source
142
54.0k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr(clang::FileManager*)
Line
Count
Source
142
72.2k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr(clang::SourceManager*)
Line
Count
Source
142
60.0k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::IntrusiveRefCntPtr(clang::InMemoryModuleCache*)
Line
Count
Source
142
55.1k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(clang::ASTReader*)
Line
Count
Source
142
5.53k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(clang::ExternalSemaSource*)
Line
Count
Source
142
28
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::IntrusiveRefCntPtr((anonymous namespace)::ChainedIncludesSource*)
Line
Count
Source
142
27
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(clang::AnalyzerOptions*)
Line
Count
Source
142
56.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(clang::ExternalASTSource*)
Line
Count
Source
142
2.50k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::IntrusiveRefCntPtr(llvm::vfs::OverlayFileSystem*)
Line
Count
Source
142
7.30k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr(clang::ento::ProgramState const*)
Line
Count
Source
142
3.32M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::IntrusiveRefCntPtr(clang::ento::ObjCMethodCall const*)
Line
Count
Source
142
27.2k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXConstructorCall const*)
Line
Count
Source
142
35.0k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXDestructorCall const*)
Line
Count
Source
142
2.69k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::IntrusiveRefCntPtr(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
142
2.81k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::IntrusiveRefCntPtr(clang::ento::CallEvent const*)
Line
Count
Source
142
849k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(clang::RopeRefCountString*)
Line
Count
Source
142
14.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
143
39.9M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> const&)
Line
Count
Source
143
193k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
143
69.0k
  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
143
2.28M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
143
11.9k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
143
9.42k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions> const&)
Line
Count
Source
143
106k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource> const&)
Line
Count
Source
143
27
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource> const&)
Line
Count
Source
143
7
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> const&)
Line
Count
Source
143
4.27k
  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
143
35.6M
  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
143
66.3k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString> const&)
Line
Count
Source
143
1.59M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
144
8.78M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>&&)
Line
Count
Source
144
220k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>&&)
Line
Count
Source
144
193k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>&&)
Line
Count
Source
144
162k
  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
144
464k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>&&)
Line
Count
Source
144
55
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ASTReader>&&)
Line
Count
Source
144
2.39k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>&&)
Line
Count
Source
144
910
  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
144
7.25M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&&)
Line
Count
Source
144
5.46k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&&)
Line
Count
Source
144
477k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
145
146
  template <class X>
147
39
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
148
39
    S.Obj = nullptr;
149
39
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>(llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>&&)
Line
Count
Source
147
27
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
148
27
    S.Obj = nullptr;
149
27
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>&&)
Line
Count
Source
147
12
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
148
12
    S.Obj = nullptr;
149
12
  }
150
151
  template <class X>
152
53.6k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
153
53.6k
    retain();
154
53.6k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> const&)
Line
Count
Source
152
50.7k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
153
50.7k
    retain();
154
50.7k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr<clang::ASTReader>(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
152
2.93k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
153
2.93k
    retain();
154
2.93k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr<clang::ExternalSemaSource>(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource> const&)
Line
Count
Source
152
27
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
153
27
    retain();
154
27
  }
155
156
52.9M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
156
471k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
156
547k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::~IntrusiveRefCntPtr()
Line
Count
Source
156
531k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
156
50.6k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::~IntrusiveRefCntPtr()
Line
Count
Source
156
3.30M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::~IntrusiveRefCntPtr()
Line
Count
Source
156
109k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::~IntrusiveRefCntPtr()
Line
Count
Source
156
119k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::~IntrusiveRefCntPtr()
Line
Count
Source
156
111k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::~IntrusiveRefCntPtr()
Line
Count
Source
156
98.8k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::~IntrusiveRefCntPtr()
Line
Count
Source
156
45.3k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::~IntrusiveRefCntPtr()
Line
Count
Source
156
126k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::~IntrusiveRefCntPtr()
Line
Count
Source
156
56.1k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::~IntrusiveRefCntPtr()
Line
Count
Source
156
44.0k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
156
149k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::~IntrusiveRefCntPtr()
Line
Count
Source
156
34.2k
  ~IntrusiveRefCntPtr() { release(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::~IntrusiveRefCntPtr()
Line
Count
Source
156
27
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
156
7.30k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::~IntrusiveRefCntPtr()
Line
Count
Source
156
3.26M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
42.8M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
915k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
27.2k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
35.0k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
2.69k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
2.81k
  ~IntrusiveRefCntPtr() { release(); }
157
158
5.54M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
5.54M
    swap(S);
160
5.54M
    return *this;
161
5.54M
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator=(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>)
Line
Count
Source
158
63.7k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
63.7k
    swap(S);
160
63.7k
    return *this;
161
63.7k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTContext>)
Line
Count
Source
158
81.0k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
81.0k
    swap(S);
160
81.0k
    return *this;
161
81.0k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator=(llvm::IntrusiveRefCntPtr<clang::TargetInfo>)
Line
Count
Source
158
54.0k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
54.0k
    swap(S);
160
54.0k
    return *this;
161
54.0k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator=(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>)
Line
Count
Source
158
54.2k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
54.2k
    swap(S);
160
54.2k
    return *this;
161
54.2k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator=(llvm::IntrusiveRefCntPtr<clang::FileManager>)
Line
Count
Source
158
64.5k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
64.5k
    swap(S);
160
64.5k
    return *this;
161
64.5k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator=(llvm::IntrusiveRefCntPtr<clang::SourceManager>)
Line
Count
Source
158
59.3k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
59.3k
    swap(S);
160
59.3k
    return *this;
161
59.3k
  }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::operator=(llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>)
Line
Count
Source
158
1.27k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
1.27k
    swap(S);
160
1.27k
    return *this;
161
1.27k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTReader>)
Line
Count
Source
158
10.9k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
10.9k
    swap(S);
160
10.9k
    return *this;
161
10.9k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator=(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>)
Line
Count
Source
158
55
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
55
    swap(S);
160
55
    return *this;
161
55
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator=(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>)
Line
Count
Source
158
3.53M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
3.53M
    swap(S);
160
3.53M
    return *this;
161
3.53M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::operator=(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>)
Line
Count
Source
158
15.1k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
15.1k
    swap(S);
160
15.1k
    return *this;
161
15.1k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator=(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>)
Line
Count
Source
158
5.46k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
5.46k
    swap(S);
160
5.46k
    return *this;
161
5.46k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::operator=(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>)
Line
Count
Source
158
1.60M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
1.60M
    swap(S);
160
1.60M
    return *this;
161
1.60M
  }
162
163
7.88M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator*() const
Line
Count
Source
163
1.52M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator*() const
Line
Count
Source
163
2.18M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator*() const
Line
Count
Source
163
730k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator*() const
Line
Count
Source
163
278k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator*() const
Line
Count
Source
163
117k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator*() const
Line
Count
Source
163
336k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator*() const
Line
Count
Source
163
720k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::operator*() const
Line
Count
Source
163
31.2k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator*() const
Line
Count
Source
163
27
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator*() const
Line
Count
Source
163
481
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator*() const
Line
Count
Source
163
84.4k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator*() const
Line
Count
Source
163
897k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::operator*() const
Line
Count
Source
163
40.9k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::operator*() const
Line
Count
Source
163
72.2k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator*() const
Line
Count
Source
163
3.91k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator*() const
Line
Count
Source
163
3.09k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator*() const
Line
Count
Source
163
854k
  T &operator*() const { return *Obj; }
164
126M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator->() const
Line
Count
Source
164
2.55M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::operator->() const
Line
Count
Source
164
100M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator->() const
Line
Count
Source
164
676k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator->() const
Line
Count
Source
164
178k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::operator->() const
Line
Count
Source
164
61.5k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator->() const
Line
Count
Source
164
12.7k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator->() const
Line
Count
Source
164
26.1k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator->() const
Line
Count
Source
164
25.8k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator->() const
Line
Count
Source
164
134
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator->() const
Line
Count
Source
164
528k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator->() const
Line
Count
Source
164
1
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::operator->() const
Line
Count
Source
164
8.28k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::operator->() const
Line
Count
Source
164
75
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::operator->() const
Line
Count
Source
164
5.94M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator->() const
Line
Count
Source
164
517k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator->() const
Line
Count
Source
164
15.0M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator->() const
Line
Count
Source
164
148k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::operator->() const
Line
Count
Source
164
14.1k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::operator->() const
Line
Count
Source
164
407
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator->() const
Line
Count
Source
164
1.31k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator->() const
Line
Count
Source
164
7
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::operator->() const
Line
Count
Source
164
184k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator->() const
Line
Count
Source
164
148
  T *operator->() const { return Obj; }
165
223M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::get() const
Line
Count
Source
165
127k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::get() const
Line
Count
Source
165
45.0k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::get() const
Line
Count
Source
165
40
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::get() const
Line
Count
Source
165
14.6k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::get() const
Line
Count
Source
165
50.9k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::get() const
Line
Count
Source
165
215M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::get() const
Line
Count
Source
165
12.3k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::get() const
Line
Count
Source
165
5.91k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::get() const
Line
Count
Source
165
5.29k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::get() const
Line
Count
Source
165
8.30k
  T *get() const { return Obj; }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::get() const
Line
Count
Source
165
27
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::get() const
Line
Count
Source
165
55
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::get() const
Line
Count
Source
165
7.29k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::get() const
Line
Count
Source
165
22.8k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::get() const
Line
Count
Source
165
84
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::get() const
Line
Count
Source
165
8.11M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::get() const
Line
Count
Source
165
76.3k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::get() const
Line
Count
Source
165
15.1k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::get() const
Line
Count
Source
165
1.38k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::get() const
Line
Count
Source
165
741
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::get() const
Line
Count
Source
165
5.35k
  T *get() const { return Obj; }
166
5.11M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator bool() const
Line
Count
Source
166
40.7k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator bool() const
Line
Count
Source
166
53.9k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator bool() const
Line
Count
Source
166
96.4k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator bool() const
Line
Count
Source
166
591k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator bool() const
Line
Count
Source
166
201k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator bool() const
Line
Count
Source
166
171k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator bool() const
Line
Count
Source
166
61.1k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator bool() const
Line
Count
Source
166
41.4k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator bool() const
Line
Count
Source
166
3.76M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator bool() const
Line
Count
Source
166
78.3k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator bool() const
Line
Count
Source
166
9.17k
  explicit operator bool() const { return Obj; }
167
168
5.54M
  void swap(IntrusiveRefCntPtr &other) {
169
5.54M
    T *tmp = other.Obj;
170
5.54M
    other.Obj = Obj;
171
5.54M
    Obj = tmp;
172
5.54M
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::swap(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>&)
Line
Count
Source
168
63.7k
  void swap(IntrusiveRefCntPtr &other) {
169
63.7k
    T *tmp = other.Obj;
170
63.7k
    other.Obj = Obj;
171
63.7k
    Obj = tmp;
172
63.7k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::swap(llvm::IntrusiveRefCntPtr<clang::ASTContext>&)
Line
Count
Source
168
81.0k
  void swap(IntrusiveRefCntPtr &other) {
169
81.0k
    T *tmp = other.Obj;
170
81.0k
    other.Obj = Obj;
171
81.0k
    Obj = tmp;
172
81.0k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::swap(llvm::IntrusiveRefCntPtr<clang::TargetInfo>&)
Line
Count
Source
168
54.0k
  void swap(IntrusiveRefCntPtr &other) {
169
54.0k
    T *tmp = other.Obj;
170
54.0k
    other.Obj = Obj;
171
54.0k
    Obj = tmp;
172
54.0k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::swap(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>&)
Line
Count
Source
168
54.2k
  void swap(IntrusiveRefCntPtr &other) {
169
54.2k
    T *tmp = other.Obj;
170
54.2k
    other.Obj = Obj;
171
54.2k
    Obj = tmp;
172
54.2k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::swap(llvm::IntrusiveRefCntPtr<clang::FileManager>&)
Line
Count
Source
168
64.5k
  void swap(IntrusiveRefCntPtr &other) {
169
64.5k
    T *tmp = other.Obj;
170
64.5k
    other.Obj = Obj;
171
64.5k
    Obj = tmp;
172
64.5k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::swap(llvm::IntrusiveRefCntPtr<clang::SourceManager>&)
Line
Count
Source
168
59.3k
  void swap(IntrusiveRefCntPtr &other) {
169
59.3k
    T *tmp = other.Obj;
170
59.3k
    other.Obj = Obj;
171
59.3k
    Obj = tmp;
172
59.3k
  }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::swap(llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>&)
Line
Count
Source
168
1.27k
  void swap(IntrusiveRefCntPtr &other) {
169
1.27k
    T *tmp = other.Obj;
170
1.27k
    other.Obj = Obj;
171
1.27k
    Obj = tmp;
172
1.27k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::swap(llvm::IntrusiveRefCntPtr<clang::ASTReader>&)
Line
Count
Source
168
10.9k
  void swap(IntrusiveRefCntPtr &other) {
169
10.9k
    T *tmp = other.Obj;
170
10.9k
    other.Obj = Obj;
171
10.9k
    Obj = tmp;
172
10.9k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::swap(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>&)
Line
Count
Source
168
55
  void swap(IntrusiveRefCntPtr &other) {
169
55
    T *tmp = other.Obj;
170
55
    other.Obj = Obj;
171
55
    Obj = tmp;
172
55
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::swap(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>&)
Line
Count
Source
168
3.53M
  void swap(IntrusiveRefCntPtr &other) {
169
3.53M
    T *tmp = other.Obj;
170
3.53M
    other.Obj = Obj;
171
3.53M
    Obj = tmp;
172
3.53M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::swap(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>&)
Line
Count
Source
168
15.1k
  void swap(IntrusiveRefCntPtr &other) {
169
15.1k
    T *tmp = other.Obj;
170
15.1k
    other.Obj = Obj;
171
15.1k
    Obj = tmp;
172
15.1k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::swap(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&)
Line
Count
Source
168
5.46k
  void swap(IntrusiveRefCntPtr &other) {
169
5.46k
    T *tmp = other.Obj;
170
5.46k
    other.Obj = Obj;
171
5.46k
    Obj = tmp;
172
5.46k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::swap(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&)
Line
Count
Source
168
1.60M
  void swap(IntrusiveRefCntPtr &other) {
169
1.60M
    T *tmp = other.Obj;
170
1.60M
    other.Obj = Obj;
171
1.60M
    Obj = tmp;
172
1.60M
  }
173
174
60.6k
  void reset() {
175
60.6k
    release();
176
60.6k
    Obj = nullptr;
177
60.6k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::reset()
Line
Count
Source
174
816
  void reset() {
175
816
    release();
176
816
    Obj = nullptr;
177
816
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::reset()
Line
Count
Source
174
5.26k
  void reset() {
175
5.26k
    release();
176
5.26k
    Obj = nullptr;
177
5.26k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::reset()
Line
Count
Source
174
5.26k
  void reset() {
175
5.26k
    release();
176
5.26k
    Obj = nullptr;
177
5.26k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::reset()
Line
Count
Source
174
49.3k
  void reset() {
175
49.3k
    release();
176
49.3k
    Obj = nullptr;
177
49.3k
  }
178
179
14.3k
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::resetWithoutRelease()
Line
Count
Source
179
9
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::resetWithoutRelease()
Line
Count
Source
179
9
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::resetWithoutRelease()
Line
Count
Source
179
14.3k
  void resetWithoutRelease() { Obj = nullptr; }
180
181
private:
182
46.0M
  void retain() {
183
46.0M
    if (Obj)
184
44.3M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
46.0M
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::retain()
Line
Count
Source
182
427k
  void retain() {
183
427k
    if (Obj)
184
427k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
427k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::retain()
Line
Count
Source
182
352k
  void retain() {
183
352k
    if (Obj)
184
352k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
352k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::retain()
Line
Count
Source
182
265k
  void retain() {
183
265k
    if (Obj)
184
201k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
265k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::retain()
Line
Count
Source
182
163k
  void retain() {
183
163k
    if (Obj)
184
163k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
163k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::retain()
Line
Count
Source
182
50.6k
  void retain() {
183
50.6k
    if (Obj)
184
50.6k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
50.6k
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::retain()
Line
Count
Source
182
2.84M
  void retain() {
183
2.84M
    if (Obj)
184
2.84M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
2.84M
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::retain()
Line
Count
Source
182
81.0k
  void retain() {
183
81.0k
    if (Obj)
184
47.2k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
81.0k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::retain()
Line
Count
Source
182
70.7k
  void retain() {
183
70.7k
    if (Obj)
184
69.8k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
70.7k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::retain()
Line
Count
Source
182
54.0k
  void retain() {
183
54.0k
    if (Obj)
184
53.9k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
54.0k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::retain()
Line
Count
Source
182
14.9k
  void retain() {
183
14.9k
    if (Obj)
184
9.75k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
14.9k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::retain()
Line
Count
Source
182
72.2k
  void retain() {
183
72.2k
    if (Obj)
184
66.7k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
72.2k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::retain()
Line
Count
Source
182
60.0k
  void retain() {
183
60.0k
    if (Obj)
184
54.6k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
60.0k
  }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::retain()
Line
Count
Source
182
55.1k
  void retain() {
183
55.1k
    if (Obj)
184
55.1k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
55.1k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::retain()
Line
Count
Source
182
5.47k
  void retain() {
183
5.47k
    if (Obj)
184
5.44k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
5.47k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::retain()
Line
Count
Source
182
55
  void retain() {
183
55
    if (Obj)
184
55
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
55
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::retain()
Line
Count
Source
182
27
  void retain() {
183
27
    if (Obj)
184
27
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
27
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::retain()
Line
Count
Source
182
7.30k
  void retain() {
183
7.30k
    if (Obj)
184
7.30k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
7.30k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::retain()
Line
Count
Source
182
38.9M
  void retain() {
183
38.9M
    if (Obj)
184
37.5M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
38.9M
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::retain()
Line
Count
Source
182
915k
  void retain() {
183
915k
    if (Obj)
184
900k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
915k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::retain()
Line
Count
Source
182
27.2k
  void retain() {
183
27.2k
    if (Obj)
184
27.2k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
27.2k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::retain()
Line
Count
Source
182
35.0k
  void retain() {
183
35.0k
    if (Obj)
184
35.0k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
35.0k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::retain()
Line
Count
Source
182
2.69k
  void retain() {
183
2.69k
    if (Obj)
184
2.69k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
2.69k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::retain()
Line
Count
Source
182
2.81k
  void retain() {
183
2.81k
    if (Obj)
184
2.81k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
2.81k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::retain()
Line
Count
Source
182
1.60M
  void retain() {
183
1.60M
    if (Obj)
184
1.48M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
1.60M
  }
186
187
52.9M
  void release() {
188
52.9M
    if (Obj)
189
40.2M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
52.9M
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::release()
Line
Count
Source
187
471k
  void release() {
188
471k
    if (Obj)
189
187k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
471k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::release()
Line
Count
Source
187
547k
  void release() {
188
547k
    if (Obj)
189
384k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
547k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::release()
Line
Count
Source
187
531k
  void release() {
188
531k
    if (Obj)
189
338k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
531k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::release()
Line
Count
Source
187
149k
  void release() {
188
149k
    if (Obj)
189
148k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
149k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::release()
Line
Count
Source
187
50.6k
  void release() {
188
50.6k
    if (Obj)
189
50.6k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
50.6k
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::release()
Line
Count
Source
187
3.30M
  void release() {
188
3.30M
    if (Obj)
189
2.83M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
3.30M
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::release()
Line
Count
Source
187
125k
  void release() {
188
125k
    if (Obj)
189
38.6k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
125k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::release()
Line
Count
Source
187
109k
  void release() {
188
109k
    if (Obj)
189
55.3k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
109k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::release()
Line
Count
Source
187
112k
  void release() {
188
112k
    if (Obj)
189
52.3k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
112k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::release()
Line
Count
Source
187
104k
  void release() {
188
104k
    if (Obj)
189
40.2k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
104k
  }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::release()
Line
Count
Source
187
45.3k
  void release() {
188
45.3k
    if (Obj)
189
40.5k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
45.3k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::release()
Line
Count
Source
187
126k
  void release() {
188
126k
    if (Obj)
189
39.5k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
126k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::release()
Line
Count
Source
187
105k
  void release() {
188
105k
    if (Obj)
189
9.68k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
105k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::release()
Line
Count
Source
187
44.0k
  void release() {
188
44.0k
    if (Obj)
189
5.37k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
44.0k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::release()
Line
Count
Source
187
34.2k
  void release() {
188
34.2k
    if (Obj)
189
82
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
34.2k
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::release()
Line
Count
Source
187
27
  void release() {
188
27
    if (Obj)
189
0
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
27
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::release()
Line
Count
Source
187
7.30k
  void release() {
188
7.30k
    if (Obj)
189
7.29k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
7.30k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::release()
Line
Count
Source
187
3.26M
  void release() {
188
3.26M
    if (Obj)
189
1.48M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
3.26M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::release()
Line
Count
Source
187
42.8M
  void release() {
188
42.8M
    if (Obj)
189
33.5M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
42.8M
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::release()
Line
Count
Source
187
915k
  void release() {
188
915k
    if (Obj)
189
900k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
915k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::release()
Line
Count
Source
187
27.2k
  void release() {
188
27.2k
    if (Obj)
189
27.2k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
27.2k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::release()
Line
Count
Source
187
35.0k
  void release() {
188
35.0k
    if (Obj)
189
35.0k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
35.0k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::release()
Line
Count
Source
187
2.69k
  void release() {
188
2.69k
    if (Obj)
189
2.69k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
2.69k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::release()
Line
Count
Source
187
2.81k
  void release() {
188
2.81k
    if (Obj)
189
2.81k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
2.81k
  }
191
192
  template <typename X> friend class IntrusiveRefCntPtr;
193
};
194
195
template <class T, class U>
196
inline bool operator==(const IntrusiveRefCntPtr<T> &A,
197
1.94M
                       const IntrusiveRefCntPtr<U> &B) {
198
1.94M
  return A.get() == B.get();
199
1.94M
}
bool llvm::operator==<llvm::vfs::FileSystem, llvm::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
197
329
                       const IntrusiveRefCntPtr<U> &B) {
198
329
  return A.get() == B.get();
199
329
}
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
197
1.94M
                       const IntrusiveRefCntPtr<U> &B) {
198
1.94M
  return A.get() == B.get();
199
1.94M
}
200
201
template <class T, class U>
202
inline bool operator!=(const IntrusiveRefCntPtr<T> &A,
203
266k
                       const IntrusiveRefCntPtr<U> &B) {
204
266k
  return A.get() != B.get();
205
266k
}
206
207
template <class T, class U>
208
inline bool operator==(const IntrusiveRefCntPtr<T> &A, U *B) {
209
  return A.get() == B;
210
}
211
212
template <class T, class U>
213
inline bool operator!=(const IntrusiveRefCntPtr<T> &A, U *B) {
214
  return A.get() != B;
215
}
216
217
template <class T, class U>
218
4.42k
inline bool operator==(T *A, const IntrusiveRefCntPtr<U> &B) {
219
4.42k
  return A == B.get();
220
4.42k
}
221
222
template <class T, class U>
223
inline bool operator!=(T *A, const IntrusiveRefCntPtr<U> &B) {
224
  return A != B.get();
225
}
226
227
template <class T>
228
284k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
284k
  return !B;
230
284k
}
bool llvm::operator==<clang::DiagnosticsEngine>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
228
40.7k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
40.7k
  return !B;
230
40.7k
}
bool llvm::operator==<clang::TargetInfo>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&)
Line
Count
Source
228
53.5k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
53.5k
  return !B;
230
53.5k
}
bool llvm::operator==<clang::FileManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::FileManager> const&)
Line
Count
Source
228
48.7k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
48.7k
  return !B;
230
48.7k
}
bool llvm::operator==<clang::SourceManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::SourceManager> const&)
Line
Count
Source
228
89.9k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
89.9k
  return !B;
230
89.9k
}
bool llvm::operator==<clang::ASTContext>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::ASTContext> const&)
Line
Count
Source
228
51.4k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
51.4k
  return !B;
230
51.4k
}
231
232
template <class T>
233
284k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
284k
  return B == A;
235
284k
}
bool llvm::operator==<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
233
40.7k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
40.7k
  return B == A;
235
40.7k
}
bool llvm::operator==<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
233
53.5k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
53.5k
  return B == A;
235
53.5k
}
bool llvm::operator==<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
233
48.7k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
48.7k
  return B == A;
235
48.7k
}
bool llvm::operator==<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
233
89.9k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
89.9k
  return B == A;
235
89.9k
}
bool llvm::operator==<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
233
51.4k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
51.4k
  return B == A;
235
51.4k
}
236
237
template <class T>
238
bool operator!=(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
239
  return !(A == B);
240
}
241
242
template <class T>
243
284k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
284k
  return !(A == B);
245
284k
}
bool llvm::operator!=<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
243
40.7k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
40.7k
  return !(A == B);
245
40.7k
}
bool llvm::operator!=<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
243
53.5k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
53.5k
  return !(A == B);
245
53.5k
}
bool llvm::operator!=<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
243
48.7k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
48.7k
  return !(A == B);
245
48.7k
}
bool llvm::operator!=<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
243
89.9k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
89.9k
  return !(A == B);
245
89.9k
}
bool llvm::operator!=<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
243
51.4k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
51.4k
  return !(A == B);
245
51.4k
}
246
247
// Make IntrusiveRefCntPtr work with dyn_cast, isa, and the other idioms from
248
// Casting.h.
249
template <typename From> struct simplify_type;
250
251
template <class T> struct simplify_type<IntrusiveRefCntPtr<T>> {
252
  using SimpleType = T *;
253
254
  static SimpleType getSimplifiedValue(IntrusiveRefCntPtr<T> &Val) {
255
    return Val.get();
256
  }
257
};
258
259
template <class T> struct simplify_type<const IntrusiveRefCntPtr<T>> {
260
  using SimpleType = /*const*/ T *;
261
262
  static SimpleType getSimplifiedValue(const IntrusiveRefCntPtr<T> &Val) {
263
    return Val.get();
264
  }
265
};
266
267
} // end namespace llvm
268
269
#endif // LLVM_ADT_INTRUSIVEREFCNTPTR_H