Coverage Report

Created: 2018-12-11 00:00

/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
//                     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
813k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticOptions>::RefCountedBase()
Line
Count
Source
75
160k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticsEngine>::RefCountedBase()
Line
Count
Source
75
151k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticIDs>::RefCountedBase()
Line
Count
Source
75
147k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::FileManager>::RefCountedBase()
Line
Count
Source
75
83.6k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::SourceManager>::RefCountedBase()
Line
Count
Source
75
85.5k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::TargetInfo>::RefCountedBase()
Line
Count
Source
75
44.6k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::MemoryBufferCache>::RefCountedBase()
Line
Count
Source
75
44.5k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ExternalASTSource>::RefCountedBase()
Line
Count
Source
75
7.19k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::AnalyzerOptions>::RefCountedBase()
Line
Count
Source
75
50.3k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ASTContext>::RefCountedBase()
Line
Count
Source
75
37.8k
  RefCountedBase() = default;
76
5.96k
  RefCountedBase(const RefCountedBase &) {}
77
78
1.25M
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticOptions>::Retain() const
Line
Count
Source
78
390k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticIDs>::Retain() const
Line
Count
Source
78
328k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Retain() const
Line
Count
Source
78
60.2k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ASTContext>::Retain() const
Line
Count
Source
78
41.5k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::TargetInfo>::Retain() const
Line
Count
Source
78
48.1k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ExternalASTSource>::Retain() const
Line
Count
Source
78
16.1k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::FileManager>::Retain() const
Line
Count
Source
78
54.1k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::SourceManager>::Retain() const
Line
Count
Source
78
48.7k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::MemoryBufferCache>::Retain() const
Line
Count
Source
78
50.7k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::AnalyzerOptions>::Retain() const
Line
Count
Source
78
217k
  void Retain() const { ++RefCount; }
79
80
1.10M
  void Release() const {
81
1.10M
    assert(RefCount > 0 && "Reference count is already zero.");
82
1.10M
    if (--RefCount == 0)
83
511k
      delete static_cast<const Derived *>(this);
84
1.10M
  }
llvm::RefCountedBase<clang::DiagnosticOptions>::Release() const
Line
Count
Source
80
348k
  void Release() const {
81
348k
    assert(RefCount > 0 && "Reference count is already zero.");
82
348k
    if (--RefCount == 0)
83
152k
      delete static_cast<const Derived *>(this);
84
348k
  }
llvm::RefCountedBase<clang::DiagnosticIDs>::Release() const
Line
Count
Source
80
314k
  void Release() const {
81
314k
    assert(RefCount > 0 && "Reference count is already zero.");
82
314k
    if (--RefCount == 0)
83
133k
      delete static_cast<const Derived *>(this);
84
314k
  }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Release() const
Line
Count
Source
80
46.1k
  void Release() const {
81
46.1k
    assert(RefCount > 0 && "Reference count is already zero.");
82
46.1k
    if (--RefCount == 0)
83
33.2k
      delete static_cast<const Derived *>(this);
84
46.1k
  }
llvm::RefCountedBase<clang::ASTContext>::Release() const
Line
Count
Source
80
33.2k
  void Release() const {
81
33.2k
    assert(RefCount > 0 && "Reference count is already zero.");
82
33.2k
    if (--RefCount == 0)
83
29.5k
      delete static_cast<const Derived *>(this);
84
33.2k
  }
llvm::RefCountedBase<clang::FileManager>::Release() const
Line
Count
Source
80
40.1k
  void Release() const {
81
40.1k
    assert(RefCount > 0 && "Reference count is already zero.");
82
40.1k
    if (--RefCount == 0)
83
28.3k
      delete static_cast<const Derived *>(this);
84
40.1k
  }
llvm::RefCountedBase<clang::SourceManager>::Release() const
Line
Count
Source
80
34.7k
  void Release() const {
81
34.7k
    assert(RefCount > 0 && "Reference count is already zero.");
82
34.7k
    if (--RefCount == 0)
83
30.3k
      delete static_cast<const Derived *>(this);
84
34.7k
  }
llvm::RefCountedBase<clang::MemoryBufferCache>::Release() const
Line
Count
Source
80
36.5k
  void Release() const {
81
36.5k
    assert(RefCount > 0 && "Reference count is already zero.");
82
36.5k
    if (--RefCount == 0)
83
30.3k
      delete static_cast<const Derived *>(this);
84
36.5k
  }
llvm::RefCountedBase<clang::TargetInfo>::Release() const
Line
Count
Source
80
34.0k
  void Release() const {
81
34.0k
    assert(RefCount > 0 && "Reference count is already zero.");
82
34.0k
    if (--RefCount == 0)
83
30.4k
      delete static_cast<const Derived *>(this);
84
34.0k
  }
llvm::RefCountedBase<clang::ExternalASTSource>::Release() const
Line
Count
Source
80
16.0k
  void Release() const {
81
16.0k
    assert(RefCount > 0 && "Reference count is already zero.");
82
16.0k
    if (--RefCount == 0)
83
6.97k
      delete static_cast<const Derived *>(this);
84
16.0k
  }
llvm::RefCountedBase<clang::AnalyzerOptions>::Release() const
Line
Count
Source
80
203k
  void Release() const {
81
203k
    assert(RefCount > 0 && "Reference count is already zero.");
82
203k
    if (--RefCount == 0)
83
36.2k
      delete static_cast<const Derived *>(this);
84
203k
  }
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
618k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<llvm::vfs::FileSystem>::ThreadSafeRefCountedBase()
Line
Count
Source
92
111k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::ThreadSafeRefCountedBase()
Line
Count
Source
92
507k
  ThreadSafeRefCountedBase() : RefCount(0) {}
93
94
public:
95
3.07M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
llvm::ThreadSafeRefCountedBase<llvm::vfs::FileSystem>::Retain() const
Line
Count
Source
95
334k
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Retain() const
Line
Count
Source
95
2.74M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
96
97
3.04M
  void Release() const {
98
3.04M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
99
3.04M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
100
3.04M
    if (NewRefCount == 0)
101
602k
      delete static_cast<const Derived *>(this);
102
3.04M
  }
llvm::ThreadSafeRefCountedBase<llvm::vfs::FileSystem>::Release() const
Line
Count
Source
97
306k
  void Release() const {
98
306k
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
99
306k
    assert(NewRefCount >= 0 && "Reference count was already zero.");
100
306k
    if (NewRefCount == 0)
101
97.1k
      delete static_cast<const Derived *>(this);
102
306k
  }
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Release() const
Line
Count
Source
97
2.74M
  void Release() const {
98
2.74M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
99
2.74M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
100
2.74M
    if (NewRefCount == 0)
101
504k
      delete static_cast<const Derived *>(this);
102
2.74M
  }
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
6.54M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::retain(clang::DiagnosticOptions*)
Line
Count
Source
126
390k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::retain(clang::DiagnosticIDs*)
Line
Count
Source
126
328k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::FileSystem>::retain(llvm::vfs::FileSystem*)
Line
Count
Source
126
283k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::InMemoryFileSystem>::retain(llvm::vfs::InMemoryFileSystem*)
Line
Count
Source
126
45.6k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::retain(clang::DiagnosticsEngine*)
Line
Count
Source
126
60.2k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::retain(clang::ASTContext*)
Line
Count
Source
126
41.5k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::retain(clang::TargetInfo*)
Line
Count
Source
126
48.1k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::retain(clang::ASTReader*)
Line
Count
Source
126
9.09k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::retain(clang::FileManager*)
Line
Count
Source
126
54.1k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::retain(clang::SourceManager*)
Line
Count
Source
126
48.7k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::MemoryBufferCache>::retain(clang::MemoryBufferCache*)
Line
Count
Source
126
50.7k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::retain(clang::ExternalASTSource*)
Line
Count
Source
126
5.10k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::retain(clang::AnalyzerOptions*)
Line
Count
Source
126
217k
  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(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::OverlayFileSystem>::retain(llvm::vfs::OverlayFileSystem*)
Line
Count
Source
126
5.01k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ast_matchers::internal::DynMatcherInterface>::retain(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
126
2.74M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::retain(clang::ento::ObjCMethodCall const*)
Line
Count
Source
126
24.7k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::retain(clang::ento::CallEvent const*)
Line
Count
Source
126
676k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::retain(clang::ento::CXXConstructorCall const*)
Line
Count
Source
126
27.3k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::retain(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
126
2.65k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::retain(clang::ento::CXXDestructorCall const*)
Line
Count
Source
126
2.64k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::retain(clang::RopeRefCountString*)
Line
Count
Source
126
1.48M
  static void retain(T *obj) { obj->Retain(); }
127
6.37M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::FileSystem>::release(llvm::vfs::FileSystem*)
Line
Count
Source
127
255k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::release(clang::DiagnosticOptions*)
Line
Count
Source
127
348k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::release(clang::DiagnosticIDs*)
Line
Count
Source
127
314k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::InMemoryFileSystem>::release(llvm::vfs::InMemoryFileSystem*)
Line
Count
Source
127
45.6k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::release(clang::DiagnosticsEngine*)
Line
Count
Source
127
46.1k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::release(clang::ASTContext*)
Line
Count
Source
127
33.2k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::release(clang::FileManager*)
Line
Count
Source
127
40.1k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::release(clang::SourceManager*)
Line
Count
Source
127
34.7k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::MemoryBufferCache>::release(clang::MemoryBufferCache*)
Line
Count
Source
127
36.5k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::release(clang::TargetInfo*)
Line
Count
Source
127
34.0k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::release(clang::ASTReader*)
Line
Count
Source
127
9.03k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::release(clang::ExternalASTSource*)
Line
Count
Source
127
5.04k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::release(clang::AnalyzerOptions*)
Line
Count
Source
127
203k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalSemaSource>::release(clang::ExternalSemaSource*)
Line
Count
Source
127
70
  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
127
5.00k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::release(clang::RopeRefCountString*)
Line
Count
Source
127
1.48M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ast_matchers::internal::DynMatcherInterface>::release(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
127
2.74M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::release(clang::ento::CallEvent const*)
Line
Count
Source
127
676k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::release(clang::ento::ObjCMethodCall const*)
Line
Count
Source
127
24.7k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::release(clang::ento::CXXConstructorCall const*)
Line
Count
Source
127
27.3k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::release(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
127
2.65k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::release(clang::ento::CXXDestructorCall const*)
Line
Count
Source
127
2.64k
  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
2.16M
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr()
Line
Count
Source
142
47.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr()
Line
Count
Source
142
47.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr()
Line
Count
Source
142
47.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::IntrusiveRefCntPtr()
Line
Count
Source
142
2.96k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr()
Line
Count
Source
142
91.8k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr()
Line
Count
Source
142
47.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr()
Line
Count
Source
142
47.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr()
Line
Count
Source
142
44.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr()
Line
Count
Source
142
44.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr()
Line
Count
Source
142
567k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr()
Line
Count
Source
142
37.8k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr()
Line
Count
Source
142
1.13M
  explicit IntrusiveRefCntPtr() = default;
143
5.24M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(clang::DiagnosticOptions*)
Line
Count
Source
143
386k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(clang::DiagnosticIDs*)
Line
Count
Source
143
147k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::vfs::FileSystem*)
Line
Count
Source
143
85.3k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::IntrusiveRefCntPtr(llvm::vfs::InMemoryFileSystem*)
Line
Count
Source
143
45.6k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(clang::DiagnosticsEngine*)
Line
Count
Source
143
52.8k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr(clang::ASTContext*)
Line
Count
Source
143
71.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr(clang::TargetInfo*)
Line
Count
Source
143
48.2k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr(clang::FileManager*)
Line
Count
Source
143
57.8k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr(clang::SourceManager*)
Line
Count
Source
143
52.4k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::IntrusiveRefCntPtr(clang::MemoryBufferCache*)
Line
Count
Source
143
50.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(clang::ASTReader*)
Line
Count
Source
143
5.20k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(clang::ExternalSemaSource*)
Line
Count
Source
143
24
  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::AnalyzerOptions>::IntrusiveRefCntPtr(clang::AnalyzerOptions*)
Line
Count
Source
143
50.3k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(clang::ExternalASTSource*)
Line
Count
Source
143
2.45k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::IntrusiveRefCntPtr(llvm::vfs::OverlayFileSystem*)
Line
Count
Source
143
5.01k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr(clang::ento::ProgramState const*)
Line
Count
Source
143
2.95M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::IntrusiveRefCntPtr(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
143
529k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::IntrusiveRefCntPtr(clang::ento::ObjCMethodCall const*)
Line
Count
Source
143
24.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::IntrusiveRefCntPtr(clang::ento::CallEvent const*)
Line
Count
Source
143
624k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXConstructorCall const*)
Line
Count
Source
143
27.3k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::IntrusiveRefCntPtr(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
143
2.65k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXDestructorCall const*)
Line
Count
Source
143
2.64k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(clang::RopeRefCountString*)
Line
Count
Source
143
14.0k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
144
36.8M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> const&)
Line
Count
Source
144
180k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
144
173k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
144
8.39k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
144
7.33k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions> const&)
Line
Count
Source
144
167k
  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::ExternalASTSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource> const&)
Line
Count
Source
144
6
  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
32.4M
  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
2.21M
  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
52.1k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> const&)
Line
Count
Source
144
4.20k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString> const&)
Line
Count
Source
144
1.58M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
145
7.81M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>&&)
Line
Count
Source
145
200k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>&&)
Line
Count
Source
145
179k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>&&)
Line
Count
Source
145
151k
  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
2.34k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>&&)
Line
Count
Source
145
817
  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
6.35M
  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
445k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&&)
Line
Count
Source
145
5.12k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&&)
Line
Count
Source
145
468k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
146
147
  template <class X>
148
29
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
149
29
    S.Obj = nullptr;
150
29
  }
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
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>&&)
Line
Count
Source
148
6
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
149
6
    S.Obj = nullptr;
150
6
  }
151
152
  template <class X>
153
48.3k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
48.3k
    retain();
155
48.3k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> const&)
Line
Count
Source
153
45.6k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
45.6k
    retain();
155
45.6k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr<clang::ASTReader>(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
153
2.64k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
2.64k
    retain();
155
2.64k
  }
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
  }
156
157
48.3M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
157
526k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
157
499k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::~IntrusiveRefCntPtr()
Line
Count
Source
157
493k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
157
45.6k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::~IntrusiveRefCntPtr()
Line
Count
Source
157
94.5k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::~IntrusiveRefCntPtr()
Line
Count
Source
157
105k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::~IntrusiveRefCntPtr()
Line
Count
Source
157
91.8k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::~IntrusiveRefCntPtr()
Line
Count
Source
157
85.7k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::~IntrusiveRefCntPtr()
Line
Count
Source
157
39.5k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::~IntrusiveRefCntPtr()
Line
Count
Source
157
111k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::~IntrusiveRefCntPtr()
Line
Count
Source
157
48.2k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::~IntrusiveRefCntPtr()
Line
Count
Source
157
39.7k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
157
204k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::~IntrusiveRefCntPtr()
Line
Count
Source
157
30.5k
  ~IntrusiveRefCntPtr() { release(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::~IntrusiveRefCntPtr()
Line
Count
Source
157
23
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
157
5.01k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::~IntrusiveRefCntPtr()
Line
Count
Source
157
3.20M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
38.7M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::~IntrusiveRefCntPtr()
Line
Count
Source
157
3.18M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
676k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
24.7k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
27.3k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
2.65k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
2.64k
  ~IntrusiveRefCntPtr() { release(); }
158
159
5.00M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
5.00M
    swap(S);
161
5.00M
    return *this;
162
5.00M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator=(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>)
Line
Count
Source
159
3.03M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
3.03M
    swap(S);
161
3.03M
    return *this;
162
3.03M
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator=(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>)
Line
Count
Source
159
72.0k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
72.0k
    swap(S);
161
72.0k
    return *this;
162
72.0k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTContext>)
Line
Count
Source
159
71.7k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
71.7k
    swap(S);
161
71.7k
    return *this;
162
71.7k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator=(llvm::IntrusiveRefCntPtr<clang::TargetInfo>)
Line
Count
Source
159
48.2k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
48.2k
    swap(S);
161
48.2k
    return *this;
162
48.2k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator=(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>)
Line
Count
Source
159
48.3k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
48.3k
    swap(S);
161
48.3k
    return *this;
162
48.3k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator=(llvm::IntrusiveRefCntPtr<clang::FileManager>)
Line
Count
Source
159
52.5k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
52.5k
    swap(S);
161
52.5k
    return *this;
162
52.5k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator=(llvm::IntrusiveRefCntPtr<clang::SourceManager>)
Line
Count
Source
159
51.7k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
51.7k
    swap(S);
161
51.7k
    return *this;
162
51.7k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::operator=(llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>)
Line
Count
Source
159
1.25k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
1.25k
    swap(S);
161
1.25k
    return *this;
162
1.25k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTReader>)
Line
Count
Source
159
8.83k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
8.83k
    swap(S);
161
8.83k
    return *this;
162
8.83k
  }
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::ast_matchers::internal::DynMatcherInterface>::operator=(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>)
Line
Count
Source
159
13.9k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
13.9k
    swap(S);
161
13.9k
    return *this;
162
13.9k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator=(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>)
Line
Count
Source
159
5.12k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
5.12k
    swap(S);
161
5.12k
    return *this;
162
5.12k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::operator=(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>)
Line
Count
Source
159
1.60M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
1.60M
    swap(S);
161
1.60M
    return *this;
162
1.60M
  }
163
164
7.11M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator*() const
Line
Count
Source
164
1.50M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator*() const
Line
Count
Source
164
1.95M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator*() const
Line
Count
Source
164
677k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator*() const
Line
Count
Source
164
102k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator*() const
Line
Count
Source
164
317k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator*() const
Line
Count
Source
164
253k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator*() const
Line
Count
Source
164
694k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::operator*() const
Line
Count
Source
164
41.4k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator*() const
Line
Count
Source
164
23
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator*() const
Line
Count
Source
164
462
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator*() const
Line
Count
Source
164
43.1k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::operator*() const
Line
Count
Source
164
37.4k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator*() const
Line
Count
Source
164
676k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::operator*() const
Line
Count
Source
164
61.7k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator*() const
Line
Count
Source
164
3.80k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator*() const
Line
Count
Source
164
2.97k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator*() const
Line
Count
Source
164
749k
  T &operator*() const { return *Obj; }
165
115M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator->() const
Line
Count
Source
165
2.71M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::operator->() const
Line
Count
Source
165
90.2M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator->() const
Line
Count
Source
165
380k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::operator->() const
Line
Count
Source
165
56.4k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator->() const
Line
Count
Source
165
164k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator->() const
Line
Count
Source
165
11.0k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator->() const
Line
Count
Source
165
19.7k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator->() const
Line
Count
Source
165
24.7k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator->() const
Line
Count
Source
165
131
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator->() const
Line
Count
Source
165
529k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator->() const
Line
Count
Source
165
1
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::operator->() const
Line
Count
Source
165
5.75k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator->() const
Line
Count
Source
165
489k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::operator->() const
Line
Count
Source
165
5.91M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator->() const
Line
Count
Source
165
15.0M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator->() const
Line
Count
Source
165
120k
  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::CXXConstructorCall const>::operator->() const
Line
Count
Source
165
400
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator->() const
Line
Count
Source
165
1.27k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator->() const
Line
Count
Source
165
7
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::operator->() const
Line
Count
Source
165
10.4k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::operator->() const
Line
Count
Source
165
139k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator->() const
Line
Count
Source
165
146
  T *operator->() const { return Obj; }
166
205M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::get() const
Line
Count
Source
166
45.9k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::get() const
Line
Count
Source
166
198M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::get() const
Line
Count
Source
166
14.2k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::get() const
Line
Count
Source
166
4.06k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::get() const
Line
Count
Source
166
4.96k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::get() const
Line
Count
Source
166
4.11k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::get() const
Line
Count
Source
166
41.1k
  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
77.6k
  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<llvm::vfs::OverlayFileSystem>::get() const
Line
Count
Source
166
4.99k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::get() const
Line
Count
Source
166
24.8k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::get() const
Line
Count
Source
166
81
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::get() const
Line
Count
Source
166
6.79M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::get() const
Line
Count
Source
166
60.3k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::get() const
Line
Count
Source
166
10.6k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::get() const
Line
Count
Source
166
672
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::get() const
Line
Count
Source
166
4.76k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::get() const
Line
Count
Source
166
1.37k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::get() const
Line
Count
Source
166
11.0k
  T *get() const { return Obj; }
167
4.12M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator bool() const
Line
Count
Source
167
152k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator bool() const
Line
Count
Source
167
38.5k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator bool() const
Line
Count
Source
167
181k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator bool() const
Line
Count
Source
167
51.6k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator bool() const
Line
Count
Source
167
48.1k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator bool() const
Line
Count
Source
167
586k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator bool() const
Line
Count
Source
167
56.4k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator bool() const
Line
Count
Source
167
37.5k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator bool() const
Line
Count
Source
167
2.95M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator bool() const
Line
Count
Source
167
11.8k
  explicit operator bool() const { return Obj; }
168
169
5.00M
  void swap(IntrusiveRefCntPtr &other) {
170
5.00M
    T *tmp = other.Obj;
171
5.00M
    other.Obj = Obj;
172
5.00M
    Obj = tmp;
173
5.00M
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::swap(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>&)
Line
Count
Source
169
72.0k
  void swap(IntrusiveRefCntPtr &other) {
170
72.0k
    T *tmp = other.Obj;
171
72.0k
    other.Obj = Obj;
172
72.0k
    Obj = tmp;
173
72.0k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::swap(llvm::IntrusiveRefCntPtr<clang::ASTContext>&)
Line
Count
Source
169
71.7k
  void swap(IntrusiveRefCntPtr &other) {
170
71.7k
    T *tmp = other.Obj;
171
71.7k
    other.Obj = Obj;
172
71.7k
    Obj = tmp;
173
71.7k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::swap(llvm::IntrusiveRefCntPtr<clang::TargetInfo>&)
Line
Count
Source
169
48.2k
  void swap(IntrusiveRefCntPtr &other) {
170
48.2k
    T *tmp = other.Obj;
171
48.2k
    other.Obj = Obj;
172
48.2k
    Obj = tmp;
173
48.2k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::swap(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>&)
Line
Count
Source
169
48.3k
  void swap(IntrusiveRefCntPtr &other) {
170
48.3k
    T *tmp = other.Obj;
171
48.3k
    other.Obj = Obj;
172
48.3k
    Obj = tmp;
173
48.3k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::swap(llvm::IntrusiveRefCntPtr<clang::FileManager>&)
Line
Count
Source
169
52.5k
  void swap(IntrusiveRefCntPtr &other) {
170
52.5k
    T *tmp = other.Obj;
171
52.5k
    other.Obj = Obj;
172
52.5k
    Obj = tmp;
173
52.5k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::swap(llvm::IntrusiveRefCntPtr<clang::SourceManager>&)
Line
Count
Source
169
51.7k
  void swap(IntrusiveRefCntPtr &other) {
170
51.7k
    T *tmp = other.Obj;
171
51.7k
    other.Obj = Obj;
172
51.7k
    Obj = tmp;
173
51.7k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::swap(llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>&)
Line
Count
Source
169
1.25k
  void swap(IntrusiveRefCntPtr &other) {
170
1.25k
    T *tmp = other.Obj;
171
1.25k
    other.Obj = Obj;
172
1.25k
    Obj = tmp;
173
1.25k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::swap(llvm::IntrusiveRefCntPtr<clang::ASTReader>&)
Line
Count
Source
169
8.83k
  void swap(IntrusiveRefCntPtr &other) {
170
8.83k
    T *tmp = other.Obj;
171
8.83k
    other.Obj = Obj;
172
8.83k
    Obj = tmp;
173
8.83k
  }
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::ento::ProgramState const>::swap(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>&)
Line
Count
Source
169
3.03M
  void swap(IntrusiveRefCntPtr &other) {
170
3.03M
    T *tmp = other.Obj;
171
3.03M
    other.Obj = Obj;
172
3.03M
    Obj = tmp;
173
3.03M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::swap(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>&)
Line
Count
Source
169
13.9k
  void swap(IntrusiveRefCntPtr &other) {
170
13.9k
    T *tmp = other.Obj;
171
13.9k
    other.Obj = Obj;
172
13.9k
    Obj = tmp;
173
13.9k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::swap(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&)
Line
Count
Source
169
5.12k
  void swap(IntrusiveRefCntPtr &other) {
170
5.12k
    T *tmp = other.Obj;
171
5.12k
    other.Obj = Obj;
172
5.12k
    Obj = tmp;
173
5.12k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::swap(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&)
Line
Count
Source
169
1.60M
  void swap(IntrusiveRefCntPtr &other) {
170
1.60M
    T *tmp = other.Obj;
171
1.60M
    other.Obj = Obj;
172
1.60M
    Obj = tmp;
173
1.60M
  }
174
175
55.0k
  void reset() {
176
55.0k
    release();
177
55.0k
    Obj = nullptr;
178
55.0k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::reset()
Line
Count
Source
175
807
  void reset() {
176
807
    release();
177
807
    Obj = nullptr;
178
807
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::reset()
Line
Count
Source
175
3.49k
  void reset() {
176
3.49k
    release();
177
3.49k
    Obj = nullptr;
178
3.49k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::reset()
Line
Count
Source
175
3.49k
  void reset() {
176
3.49k
    release();
177
3.49k
    Obj = nullptr;
178
3.49k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::reset()
Line
Count
Source
175
43.5k
  void reset() {
176
43.5k
    release();
177
43.5k
    Obj = nullptr;
178
43.5k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::reset()
Line
Count
Source
175
3.67k
  void reset() {
176
3.67k
    release();
177
3.67k
    Obj = nullptr;
178
3.67k
  }
179
180
14.0k
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::resetWithoutRelease()
Line
Count
Source
180
7
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::resetWithoutRelease()
Line
Count
Source
180
7
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::resetWithoutRelease()
Line
Count
Source
180
13.9k
  void resetWithoutRelease() { Obj = nullptr; }
181
182
private:
183
42.1M
  void retain() {
184
42.1M
    if (Obj)
185
40.7M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
42.1M
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::retain()
Line
Count
Source
183
390k
  void retain() {
184
390k
    if (Obj)
185
390k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
390k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::retain()
Line
Count
Source
183
328k
  void retain() {
184
328k
    if (Obj)
185
328k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
328k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::retain()
Line
Count
Source
183
309k
  void retain() {
184
309k
    if (Obj)
185
283k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
309k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::retain()
Line
Count
Source
183
45.6k
  void retain() {
184
45.6k
    if (Obj)
185
45.6k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
45.6k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::retain()
Line
Count
Source
183
61.2k
  void retain() {
184
61.2k
    if (Obj)
185
60.2k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
61.2k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::retain()
Line
Count
Source
183
71.7k
  void retain() {
184
71.7k
    if (Obj)
185
41.5k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
71.7k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::retain()
Line
Count
Source
183
48.2k
  void retain() {
184
48.2k
    if (Obj)
185
48.1k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
48.2k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::retain()
Line
Count
Source
183
12.5k
  void retain() {
184
12.5k
    if (Obj)
185
9.09k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
12.5k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::retain()
Line
Count
Source
183
57.8k
  void retain() {
184
57.8k
    if (Obj)
185
54.1k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
57.8k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::retain()
Line
Count
Source
183
52.4k
  void retain() {
184
52.4k
    if (Obj)
185
48.7k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
52.4k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::retain()
Line
Count
Source
183
50.7k
  void retain() {
184
50.7k
    if (Obj)
185
50.7k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
50.7k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::retain()
Line
Count
Source
183
5.12k
  void retain() {
184
5.12k
    if (Obj)
185
5.10k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
5.12k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::retain()
Line
Count
Source
183
217k
  void retain() {
184
217k
    if (Obj)
185
217k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
217k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::retain()
Line
Count
Source
183
47
  void retain() {
184
47
    if (Obj)
185
47
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
47
  }
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<llvm::vfs::OverlayFileSystem>::retain()
Line
Count
Source
183
5.01k
  void retain() {
184
5.01k
    if (Obj)
185
5.01k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
5.01k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::retain()
Line
Count
Source
183
35.3M
  void retain() {
184
35.3M
    if (Obj)
185
34.1M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
35.3M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::retain()
Line
Count
Source
183
2.74M
  void retain() {
184
2.74M
    if (Obj)
185
2.74M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
2.74M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::retain()
Line
Count
Source
183
24.7k
  void retain() {
184
24.7k
    if (Obj)
185
24.7k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
24.7k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::retain()
Line
Count
Source
183
676k
  void retain() {
184
676k
    if (Obj)
185
676k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
676k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::retain()
Line
Count
Source
183
27.3k
  void retain() {
184
27.3k
    if (Obj)
185
27.3k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
27.3k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::retain()
Line
Count
Source
183
2.65k
  void retain() {
184
2.65k
    if (Obj)
185
2.65k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
2.65k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::retain()
Line
Count
Source
183
2.64k
  void retain() {
184
2.64k
    if (Obj)
185
2.64k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
2.64k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::retain()
Line
Count
Source
183
1.60M
  void retain() {
184
1.60M
    if (Obj)
185
1.48M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
1.60M
  }
187
188
48.3M
  void release() {
189
48.3M
    if (Obj)
190
37.0M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
48.3M
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::release()
Line
Count
Source
188
530k
  void release() {
189
530k
    if (Obj)
190
255k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
530k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::release()
Line
Count
Source
188
499k
  void release() {
189
499k
    if (Obj)
190
348k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
499k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::release()
Line
Count
Source
188
493k
  void release() {
189
493k
    if (Obj)
190
314k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
493k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::release()
Line
Count
Source
188
45.6k
  void release() {
189
45.6k
    if (Obj)
190
45.6k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
45.6k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::release()
Line
Count
Source
188
94.5k
  void release() {
189
94.5k
    if (Obj)
190
46.1k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
94.5k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::release()
Line
Count
Source
188
108k
  void release() {
189
108k
    if (Obj)
190
33.2k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
108k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::release()
Line
Count
Source
188
92.7k
  void release() {
189
92.7k
    if (Obj)
190
40.1k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
92.7k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::release()
Line
Count
Source
188
89.2k
  void release() {
189
89.2k
    if (Obj)
190
34.7k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
89.2k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::release()
Line
Count
Source
188
39.5k
  void release() {
189
39.5k
    if (Obj)
190
36.5k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
39.5k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::release()
Line
Count
Source
188
111k
  void release() {
189
111k
    if (Obj)
190
34.0k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
111k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::release()
Line
Count
Source
188
91.7k
  void release() {
189
91.7k
    if (Obj)
190
9.03k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
91.7k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::release()
Line
Count
Source
188
39.7k
  void release() {
189
39.7k
    if (Obj)
190
5.04k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
39.7k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::release()
Line
Count
Source
188
204k
  void release() {
189
204k
    if (Obj)
190
203k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
204k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::release()
Line
Count
Source
188
30.5k
  void release() {
189
30.5k
    if (Obj)
190
70
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
30.5k
  }
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<llvm::vfs::OverlayFileSystem>::release()
Line
Count
Source
188
5.01k
  void release() {
189
5.01k
    if (Obj)
190
5.00k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
5.01k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::release()
Line
Count
Source
188
3.20M
  void release() {
189
3.20M
    if (Obj)
190
1.48M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
3.20M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::release()
Line
Count
Source
188
38.7M
  void release() {
189
38.7M
    if (Obj)
190
30.6M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
38.7M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::release()
Line
Count
Source
188
3.18M
  void release() {
189
3.18M
    if (Obj)
190
2.74M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
3.18M
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::release()
Line
Count
Source
188
676k
  void release() {
189
676k
    if (Obj)
190
676k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
676k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::release()
Line
Count
Source
188
24.7k
  void release() {
189
24.7k
    if (Obj)
190
24.7k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
24.7k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::release()
Line
Count
Source
188
27.3k
  void release() {
189
27.3k
    if (Obj)
190
27.3k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
27.3k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::release()
Line
Count
Source
188
2.65k
  void release() {
189
2.65k
    if (Obj)
190
2.65k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
2.65k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::release()
Line
Count
Source
188
2.64k
  void release() {
189
2.64k
    if (Obj)
190
2.64k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
2.64k
  }
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
1.42M
                       const IntrusiveRefCntPtr<U> &B) {
199
1.42M
  return A.get() == B.get();
200
1.42M
}
bool llvm::operator==<llvm::vfs::FileSystem, llvm::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
198
317
                       const IntrusiveRefCntPtr<U> &B) {
199
317
  return A.get() == B.get();
200
317
}
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
198
1.42M
                       const IntrusiveRefCntPtr<U> &B) {
199
1.42M
  return A.get() == B.get();
200
1.42M
}
201
202
template <class T, class U>
203
inline bool operator!=(const IntrusiveRefCntPtr<T> &A,
204
246k
                       const IntrusiveRefCntPtr<U> &B) {
205
246k
  return A.get() != B.get();
206
246k
}
bool llvm::operator!=<llvm::vfs::FileSystem, llvm::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
204
247
                       const IntrusiveRefCntPtr<U> &B) {
205
247
  return A.get() != B.get();
206
247
}
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
246k
                       const IntrusiveRefCntPtr<U> &B) {
205
246k
  return A.get() != B.get();
206
246k
}
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
296k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
296k
  return !B;
231
296k
}
bool llvm::operator==<clang::DiagnosticsEngine>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
229
38.5k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
38.5k
  return !B;
231
38.5k
}
bool llvm::operator==<clang::TargetInfo>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&)
Line
Count
Source
229
47.7k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
47.7k
  return !B;
231
47.7k
}
bool llvm::operator==<llvm::vfs::FileSystem>(std::nullptr_t, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
229
36.4k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
36.4k
  return !B;
231
36.4k
}
bool llvm::operator==<clang::FileManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::FileManager> const&)
Line
Count
Source
229
44.7k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
44.7k
  return !B;
231
44.7k
}
bool llvm::operator==<clang::SourceManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::SourceManager> const&)
Line
Count
Source
229
83.7k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
83.7k
  return !B;
231
83.7k
}
bool llvm::operator==<clang::ASTContext>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::ASTContext> const&)
Line
Count
Source
229
45.6k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
45.6k
  return !B;
231
45.6k
}
232
233
template <class T>
234
296k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
296k
  return B == A;
236
296k
}
bool llvm::operator==<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
234
38.5k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
38.5k
  return B == A;
236
38.5k
}
bool llvm::operator==<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
234
47.7k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
47.7k
  return B == A;
236
47.7k
}
bool llvm::operator==<llvm::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&, std::nullptr_t)
Line
Count
Source
234
36.4k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
36.4k
  return B == A;
236
36.4k
}
bool llvm::operator==<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
234
44.7k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
44.7k
  return B == A;
236
44.7k
}
bool llvm::operator==<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
234
83.7k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
83.7k
  return B == A;
236
83.7k
}
bool llvm::operator==<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
234
45.6k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
45.6k
  return B == A;
236
45.6k
}
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
296k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
296k
  return !(A == B);
246
296k
}
bool llvm::operator!=<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
244
38.5k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
38.5k
  return !(A == B);
246
38.5k
}
bool llvm::operator!=<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
244
47.7k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
47.7k
  return !(A == B);
246
47.7k
}
bool llvm::operator!=<llvm::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&, std::nullptr_t)
Line
Count
Source
244
36.4k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
36.4k
  return !(A == B);
246
36.4k
}
bool llvm::operator!=<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
244
44.7k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
44.7k
  return !(A == B);
246
44.7k
}
bool llvm::operator!=<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
244
83.7k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
83.7k
  return !(A == B);
246
83.7k
}
bool llvm::operator!=<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
244
45.6k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
45.6k
  return !(A == B);
246
45.6k
}
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