Coverage Report

Created: 2018-07-12 09:57

/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
790k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticOptions>::RefCountedBase()
Line
Count
Source
75
156k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticsEngine>::RefCountedBase()
Line
Count
Source
75
147k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticIDs>::RefCountedBase()
Line
Count
Source
75
143k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::FileManager>::RefCountedBase()
Line
Count
Source
75
81.6k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::SourceManager>::RefCountedBase()
Line
Count
Source
75
83.5k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::TargetInfo>::RefCountedBase()
Line
Count
Source
75
43.2k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::MemoryBufferCache>::RefCountedBase()
Line
Count
Source
75
43.1k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ExternalASTSource>::RefCountedBase()
Line
Count
Source
75
6.99k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::AnalyzerOptions>::RefCountedBase()
Line
Count
Source
75
48.3k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ASTContext>::RefCountedBase()
Line
Count
Source
75
36.4k
  RefCountedBase() = default;
76
5.41k
  RefCountedBase(const RefCountedBase &) {}
llvm::RefCountedBase<clang::DiagnosticOptions>::RefCountedBase(llvm::RefCountedBase<clang::DiagnosticOptions> const&)
Line
Count
Source
76
5.35k
  RefCountedBase(const RefCountedBase &) {}
llvm::RefCountedBase<clang::AnalyzerOptions>::RefCountedBase(llvm::RefCountedBase<clang::AnalyzerOptions> const&)
Line
Count
Source
76
64
  RefCountedBase(const RefCountedBase &) {}
77
78
1.16M
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticOptions>::Retain() const
Line
Count
Source
78
378k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticIDs>::Retain() const
Line
Count
Source
78
319k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Retain() const
Line
Count
Source
78
57.0k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ASTContext>::Retain() const
Line
Count
Source
78
39.6k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::TargetInfo>::Retain() const
Line
Count
Source
78
46.2k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ExternalASTSource>::Retain() const
Line
Count
Source
78
15.7k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::FileManager>::Retain() const
Line
Count
Source
78
51.6k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::SourceManager>::Retain() const
Line
Count
Source
78
46.8k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::MemoryBufferCache>::Retain() const
Line
Count
Source
78
49.1k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::AnalyzerOptions>::Retain() const
Line
Count
Source
78
165k
  void Retain() const { ++RefCount; }
79
80
1.01M
  void Release() const {
81
1.01M
    assert(RefCount > 0 && "Reference count is already zero.");
82
1.01M
    if (--RefCount == 0)
83
490k
      delete static_cast<const Derived *>(this);
84
1.01M
  }
llvm::RefCountedBase<clang::DiagnosticOptions>::Release() const
Line
Count
Source
80
335k
  void Release() const {
81
335k
    assert(RefCount > 0 && "Reference count is already zero.");
82
335k
    if (--RefCount == 0)
83
147k
      delete static_cast<const Derived *>(this);
84
335k
  }
llvm::RefCountedBase<clang::DiagnosticIDs>::Release() const
Line
Count
Source
80
304k
  void Release() const {
81
304k
    assert(RefCount > 0 && "Reference count is already zero.");
82
304k
    if (--RefCount == 0)
83
129k
      delete static_cast<const Derived *>(this);
84
304k
  }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Release() const
Line
Count
Source
80
42.8k
  void Release() const {
81
42.8k
    assert(RefCount > 0 && "Reference count is already zero.");
82
42.8k
    if (--RefCount == 0)
83
31.6k
      delete static_cast<const Derived *>(this);
84
42.8k
  }
llvm::RefCountedBase<clang::ASTContext>::Release() const
Line
Count
Source
80
31.1k
  void Release() const {
81
31.1k
    assert(RefCount > 0 && "Reference count is already zero.");
82
31.1k
    if (--RefCount == 0)
83
27.9k
      delete static_cast<const Derived *>(this);
84
31.1k
  }
llvm::RefCountedBase<clang::FileManager>::Release() const
Line
Count
Source
80
37.4k
  void Release() const {
81
37.4k
    assert(RefCount > 0 && "Reference count is already zero.");
82
37.4k
    if (--RefCount == 0)
83
26.8k
      delete static_cast<const Derived *>(this);
84
37.4k
  }
llvm::RefCountedBase<clang::SourceManager>::Release() const
Line
Count
Source
80
32.6k
  void Release() const {
81
32.6k
    assert(RefCount > 0 && "Reference count is already zero.");
82
32.6k
    if (--RefCount == 0)
83
28.8k
      delete static_cast<const Derived *>(this);
84
32.6k
  }
llvm::RefCountedBase<clang::MemoryBufferCache>::Release() const
Line
Count
Source
80
34.8k
  void Release() const {
81
34.8k
    assert(RefCount > 0 && "Reference count is already zero.");
82
34.8k
    if (--RefCount == 0)
83
28.8k
      delete static_cast<const Derived *>(this);
84
34.8k
  }
llvm::RefCountedBase<clang::TargetInfo>::Release() const
Line
Count
Source
80
31.9k
  void Release() const {
81
31.9k
    assert(RefCount > 0 && "Reference count is already zero.");
82
31.9k
    if (--RefCount == 0)
83
28.8k
      delete static_cast<const Derived *>(this);
84
31.9k
  }
llvm::RefCountedBase<clang::ExternalASTSource>::Release() const
Line
Count
Source
80
15.6k
  void Release() const {
81
15.6k
    assert(RefCount > 0 && "Reference count is already zero.");
82
15.6k
    if (--RefCount == 0)
83
6.78k
      delete static_cast<const Derived *>(this);
84
15.6k
  }
llvm::RefCountedBase<clang::AnalyzerOptions>::Release() const
Line
Count
Source
80
150k
  void Release() const {
81
150k
    assert(RefCount > 0 && "Reference count is already zero.");
82
150k
    if (--RefCount == 0)
83
34.0k
      delete static_cast<const Derived *>(this);
84
150k
  }
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
539k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<clang::vfs::FileSystem>::ThreadSafeRefCountedBase()
Line
Count
Source
92
107k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::ThreadSafeRefCountedBase()
Line
Count
Source
92
431k
  ThreadSafeRefCountedBase() : RefCount(0) {}
93
94
public:
95
2.70M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
llvm::ThreadSafeRefCountedBase<clang::vfs::FileSystem>::Retain() const
Line
Count
Source
95
322k
  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.38M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
96
97
2.67M
  void Release() const {
98
2.67M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
99
2.67M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
100
2.67M
    if (NewRefCount == 0)
101
522k
      delete static_cast<const Derived *>(this);
102
2.67M
  }
llvm::ThreadSafeRefCountedBase<clang::vfs::FileSystem>::Release() const
Line
Count
Source
97
294k
  void Release() const {
98
294k
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
99
294k
    assert(NewRefCount >= 0 && "Reference count was already zero.");
100
294k
    if (NewRefCount == 0)
101
93.5k
      delete static_cast<const Derived *>(this);
102
294k
  }
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Release() const
Line
Count
Source
97
2.37M
  void Release() const {
98
2.37M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
99
2.37M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
100
2.37M
    if (NewRefCount == 0)
101
429k
      delete static_cast<const Derived *>(this);
102
2.37M
  }
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
8.94M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::retain(clang::DiagnosticOptions*)
Line
Count
Source
126
378k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::retain(clang::DiagnosticIDs*)
Line
Count
Source
126
319k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::FileSystem>::retain(clang::vfs::FileSystem*)
Line
Count
Source
126
273k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::InMemoryFileSystem>::retain(clang::vfs::InMemoryFileSystem*)
Line
Count
Source
126
44.3k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::retain(clang::DiagnosticsEngine*)
Line
Count
Source
126
57.0k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::retain(clang::ASTContext*)
Line
Count
Source
126
39.6k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::retain(clang::TargetInfo*)
Line
Count
Source
126
46.2k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::retain(clang::ASTReader*)
Line
Count
Source
126
8.87k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::retain(clang::FileManager*)
Line
Count
Source
126
51.6k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::retain(clang::SourceManager*)
Line
Count
Source
126
46.8k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::MemoryBufferCache>::retain(clang::MemoryBufferCache*)
Line
Count
Source
126
49.1k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::retain(clang::ExternalASTSource*)
Line
Count
Source
126
4.94k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::retain(clang::AnalyzerOptions*)
Line
Count
Source
126
165k
  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<clang::vfs::OverlayFileSystem>::retain(clang::vfs::OverlayFileSystem*)
Line
Count
Source
126
4.46k
  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.37M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::retain(clang::ento::ObjCMethodCall const*)
Line
Count
Source
126
23.8k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::retain(clang::ento::CallEvent const*)
Line
Count
Source
126
498k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::retain(clang::ento::CXXConstructorCall const*)
Line
Count
Source
126
22.6k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::retain(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
126
1.50k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::retain(clang::ento::CXXDestructorCall const*)
Line
Count
Source
126
1.78k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::retain(clang::RopeRefCountString*)
Line
Count
Source
126
4.53M
  static void retain(T *obj) { obj->Retain(); }
127
8.76M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::FileSystem>::release(clang::vfs::FileSystem*)
Line
Count
Source
127
245k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::release(clang::DiagnosticOptions*)
Line
Count
Source
127
335k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::release(clang::DiagnosticIDs*)
Line
Count
Source
127
304k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::vfs::InMemoryFileSystem>::release(clang::vfs::InMemoryFileSystem*)
Line
Count
Source
127
44.3k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::release(clang::DiagnosticsEngine*)
Line
Count
Source
127
42.7k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::release(clang::ASTContext*)
Line
Count
Source
127
31.1k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::release(clang::FileManager*)
Line
Count
Source
127
37.4k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::release(clang::SourceManager*)
Line
Count
Source
127
32.6k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::MemoryBufferCache>::release(clang::MemoryBufferCache*)
Line
Count
Source
127
34.8k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::release(clang::TargetInfo*)
Line
Count
Source
127
31.9k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::release(clang::ASTReader*)
Line
Count
Source
127
8.81k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::release(clang::ExternalASTSource*)
Line
Count
Source
127
4.88k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::release(clang::AnalyzerOptions*)
Line
Count
Source
127
150k
  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<clang::vfs::OverlayFileSystem>::release(clang::vfs::OverlayFileSystem*)
Line
Count
Source
127
4.41k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::release(clang::RopeRefCountString*)
Line
Count
Source
127
4.53M
  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.37M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::release(clang::ento::ObjCMethodCall const*)
Line
Count
Source
127
23.8k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::release(clang::ento::CallEvent const*)
Line
Count
Source
127
498k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::release(clang::ento::CXXConstructorCall const*)
Line
Count
Source
127
22.6k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::release(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
127
1.50k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::release(clang::ento::CXXDestructorCall const*)
Line
Count
Source
127
1.78k
  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
3.70M
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr()
Line
Count
Source
142
45.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr()
Line
Count
Source
142
45.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr()
Line
Count
Source
142
45.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::IntrusiveRefCntPtr()
Line
Count
Source
142
2.40k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr()
Line
Count
Source
142
88.5k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr()
Line
Count
Source
142
45.4k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr()
Line
Count
Source
142
45.5k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr()
Line
Count
Source
142
43.0k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr()
Line
Count
Source
142
43.1k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr()
Line
Count
Source
142
463k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr()
Line
Count
Source
142
2.80M
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr()
Line
Count
Source
142
36.4k
  explicit IntrusiveRefCntPtr() = default;
143
4.31M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(clang::DiagnosticOptions*)
Line
Count
Source
143
374k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(clang::DiagnosticIDs*)
Line
Count
Source
143
143k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr(clang::vfs::FileSystem*)
Line
Count
Source
143
83.0k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::IntrusiveRefCntPtr(clang::vfs::InMemoryFileSystem*)
Line
Count
Source
143
44.3k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(clang::DiagnosticsEngine*)
Line
Count
Source
143
50.8k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr(clang::ASTContext*)
Line
Count
Source
143
68.3k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr(clang::TargetInfo*)
Line
Count
Source
143
46.2k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr(clang::FileManager*)
Line
Count
Source
143
54.7k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr(clang::SourceManager*)
Line
Count
Source
143
49.9k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::IntrusiveRefCntPtr(clang::MemoryBufferCache*)
Line
Count
Source
143
49.1k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(clang::ASTReader*)
Line
Count
Source
143
5.08k
  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
48.3k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(clang::ExternalASTSource*)
Line
Count
Source
143
2.37k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::IntrusiveRefCntPtr(clang::vfs::OverlayFileSystem*)
Line
Count
Source
143
4.46k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr(clang::ento::ProgramState const*)
Line
Count
Source
143
2.29M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::IntrusiveRefCntPtr(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
143
450k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::IntrusiveRefCntPtr(clang::ento::ObjCMethodCall const*)
Line
Count
Source
143
23.8k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::IntrusiveRefCntPtr(clang::ento::CallEvent const*)
Line
Count
Source
143
479k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXConstructorCall const*)
Line
Count
Source
143
22.6k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::IntrusiveRefCntPtr(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
143
1.50k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXDestructorCall const*)
Line
Count
Source
143
1.78k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(clang::RopeRefCountString*)
Line
Count
Source
143
15.4k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
144
31.9M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> const&)
Line
Count
Source
144
175k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&)
Line
Count
Source
144
166k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
144
7.20k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
144
6.66k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions> const&)
Line
Count
Source
144
116k
  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
3
  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
24.3M
  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
1.92M
  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
19.5k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> const&)
Line
Count
Source
144
4.14k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString> const&)
Line
Count
Source
144
5.12M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
145
7.89M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>&&)
Line
Count
Source
145
175k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>&&)
Line
Count
Source
145
147k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>&&)
Line
Count
Source
145
194k
  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.31k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>&&)
Line
Count
Source
145
735
  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
5.24M
  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
375k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&&)
Line
Count
Source
145
1.74M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&&)
Line
Count
Source
145
4.96k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
146
147
  template <class X>
148
82
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
149
82
    S.Obj = nullptr;
150
82
  }
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<clang::vfs::FileSystem>::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>&&)
Line
Count
Source
148
59
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
149
59
    S.Obj = nullptr;
150
59
  }
151
152
  template <class X>
153
46.9k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
46.9k
    retain();
155
46.9k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem> const&)
Line
Count
Source
153
44.3k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
44.3k
    retain();
155
44.3k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr<clang::ASTReader>(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
153
2.56k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
154
2.56k
    retain();
155
2.56k
  }
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
44.5M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
157
507k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
157
482k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::~IntrusiveRefCntPtr()
Line
Count
Source
157
480k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
157
44.3k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::~IntrusiveRefCntPtr()
Line
Count
Source
157
89.2k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::~IntrusiveRefCntPtr()
Line
Count
Source
157
99.5k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::~IntrusiveRefCntPtr()
Line
Count
Source
157
86.6k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::~IntrusiveRefCntPtr()
Line
Count
Source
157
81.1k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::~IntrusiveRefCntPtr()
Line
Count
Source
157
37.2k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::~IntrusiveRefCntPtr()
Line
Count
Source
157
106k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::~IntrusiveRefCntPtr()
Line
Count
Source
157
45.2k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::~IntrusiveRefCntPtr()
Line
Count
Source
157
37.8k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
157
151k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::~IntrusiveRefCntPtr()
Line
Count
Source
157
28.9k
  ~IntrusiveRefCntPtr() { release(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::~IntrusiveRefCntPtr()
Line
Count
Source
157
23
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
157
4.46k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::~IntrusiveRefCntPtr()
Line
Count
Source
157
9.68M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
29.3M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::~IntrusiveRefCntPtr()
Line
Count
Source
157
2.75M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
23.8k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
498k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
22.6k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
1.50k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
157
1.78k
  ~IntrusiveRefCntPtr() { release(); }
158
159
7.74M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
7.74M
    swap(S);
161
7.74M
    return *this;
162
7.74M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator=(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>)
Line
Count
Source
159
2.25M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
2.25M
    swap(S);
161
2.25M
    return *this;
162
2.25M
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::operator=(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>)
Line
Count
Source
159
69.8k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
69.8k
    swap(S);
161
69.8k
    return *this;
162
69.8k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTContext>)
Line
Count
Source
159
68.3k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
68.3k
    swap(S);
161
68.3k
    return *this;
162
68.3k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator=(llvm::IntrusiveRefCntPtr<clang::TargetInfo>)
Line
Count
Source
159
46.2k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
46.2k
    swap(S);
161
46.2k
    return *this;
162
46.2k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator=(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>)
Line
Count
Source
159
46.4k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
46.4k
    swap(S);
161
46.4k
    return *this;
162
46.4k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator=(llvm::IntrusiveRefCntPtr<clang::FileManager>)
Line
Count
Source
159
50.0k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
50.0k
    swap(S);
161
50.0k
    return *this;
162
50.0k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator=(llvm::IntrusiveRefCntPtr<clang::SourceManager>)
Line
Count
Source
159
49.2k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
49.2k
    swap(S);
161
49.2k
    return *this;
162
49.2k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::operator=(llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>)
Line
Count
Source
159
1.22k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
1.22k
    swap(S);
161
1.22k
    return *this;
162
1.22k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTReader>)
Line
Count
Source
159
8.15k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
8.15k
    swap(S);
161
8.15k
    return *this;
162
8.15k
  }
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::RopeRefCountString>::operator=(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>)
Line
Count
Source
159
5.13M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
5.13M
    swap(S);
161
5.13M
    return *this;
162
5.13M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::operator=(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>)
Line
Count
Source
159
8.31k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
8.31k
    swap(S);
161
8.31k
    return *this;
162
8.31k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator=(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>)
Line
Count
Source
159
4.96k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
160
4.96k
    swap(S);
161
4.96k
    return *this;
162
4.96k
  }
163
164
6.43M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator*() const
Line
Count
Source
164
1.52M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::operator*() const
Line
Count
Source
164
1.75M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator*() const
Line
Count
Source
164
659k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator*() const
Line
Count
Source
164
98.7k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator*() const
Line
Count
Source
164
303k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator*() const
Line
Count
Source
164
245k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator*() const
Line
Count
Source
164
664k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::operator*() const
Line
Count
Source
164
40.0k
  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
457
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator*() const
Line
Count
Source
164
41.6k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::operator*() const
Line
Count
Source
164
33.8k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator*() const
Line
Count
Source
164
539k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::operator*() const
Line
Count
Source
164
57.1k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator*() const
Line
Count
Source
164
3.42k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator*() const
Line
Count
Source
164
2.08k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator*() const
Line
Count
Source
164
462k
  T &operator*() const { return *Obj; }
165
116M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator->() const
Line
Count
Source
165
2.73M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::operator->() const
Line
Count
Source
165
85.7M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::operator->() const
Line
Count
Source
165
261k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::operator->() const
Line
Count
Source
165
55.2k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator->() const
Line
Count
Source
165
159k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator->() const
Line
Count
Source
165
10.7k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator->() const
Line
Count
Source
165
19.4k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator->() const
Line
Count
Source
165
24.2k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator->() const
Line
Count
Source
165
122
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator->() const
Line
Count
Source
165
512k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator->() const
Line
Count
Source
165
1
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::operator->() const
Line
Count
Source
165
5.10k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator->() const
Line
Count
Source
165
357k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::operator->() const
Line
Count
Source
165
15.2M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator->() const
Line
Count
Source
165
10.7M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::operator->() const
Line
Count
Source
165
12.8k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator->() const
Line
Count
Source
165
83.5k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::operator->() const
Line
Count
Source
165
319
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator->() const
Line
Count
Source
165
1.14k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator->() const
Line
Count
Source
165
13
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::operator->() const
Line
Count
Source
165
10.3k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::operator->() const
Line
Count
Source
165
93.4k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator->() const
Line
Count
Source
165
123
  T *operator->() const { return Obj; }
166
191M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::get() const
Line
Count
Source
166
44.6k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::get() const
Line
Count
Source
166
186M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::get() const
Line
Count
Source
166
14.4k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::get() const
Line
Count
Source
166
3.47k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::get() const
Line
Count
Source
166
4.85k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::get() const
Line
Count
Source
166
3.61k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::get() const
Line
Count
Source
166
39.8k
  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
74.9k
  T *get() const { return Obj; }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::get() const
Line
Count
Source
166
23
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::get() const
Line
Count
Source
166
47
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::get() const
Line
Count
Source
166
4.45k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::get() const
Line
Count
Source
166
24.7k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::get() const
Line
Count
Source
166
74
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::get() const
Line
Count
Source
166
5.17M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::get() const
Line
Count
Source
166
26.9k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::get() const
Line
Count
Source
166
3.58k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::get() const
Line
Count
Source
166
106
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::get() const
Line
Count
Source
166
4.15k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::get() const
Line
Count
Source
166
640
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::get() const
Line
Count
Source
166
5.19k
  T *get() const { return Obj; }
167
3.06M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::operator bool() const
Line
Count
Source
167
148k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator bool() const
Line
Count
Source
167
37.8k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator bool() const
Line
Count
Source
167
173k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator bool() const
Line
Count
Source
167
49.2k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator bool() const
Line
Count
Source
167
46.2k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator bool() const
Line
Count
Source
167
567k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator bool() const
Line
Count
Source
167
54.9k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator bool() const
Line
Count
Source
167
36.2k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator bool() const
Line
Count
Source
167
1.93M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator bool() const
Line
Count
Source
167
10.4k
  explicit operator bool() const { return Obj; }
168
169
7.74M
  void swap(IntrusiveRefCntPtr &other) {
170
7.74M
    T *tmp = other.Obj;
171
7.74M
    other.Obj = Obj;
172
7.74M
    Obj = tmp;
173
7.74M
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::swap(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>&)
Line
Count
Source
169
69.8k
  void swap(IntrusiveRefCntPtr &other) {
170
69.8k
    T *tmp = other.Obj;
171
69.8k
    other.Obj = Obj;
172
69.8k
    Obj = tmp;
173
69.8k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::swap(llvm::IntrusiveRefCntPtr<clang::ASTContext>&)
Line
Count
Source
169
68.3k
  void swap(IntrusiveRefCntPtr &other) {
170
68.3k
    T *tmp = other.Obj;
171
68.3k
    other.Obj = Obj;
172
68.3k
    Obj = tmp;
173
68.3k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::swap(llvm::IntrusiveRefCntPtr<clang::TargetInfo>&)
Line
Count
Source
169
46.2k
  void swap(IntrusiveRefCntPtr &other) {
170
46.2k
    T *tmp = other.Obj;
171
46.2k
    other.Obj = Obj;
172
46.2k
    Obj = tmp;
173
46.2k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::swap(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>&)
Line
Count
Source
169
46.4k
  void swap(IntrusiveRefCntPtr &other) {
170
46.4k
    T *tmp = other.Obj;
171
46.4k
    other.Obj = Obj;
172
46.4k
    Obj = tmp;
173
46.4k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::swap(llvm::IntrusiveRefCntPtr<clang::FileManager>&)
Line
Count
Source
169
50.0k
  void swap(IntrusiveRefCntPtr &other) {
170
50.0k
    T *tmp = other.Obj;
171
50.0k
    other.Obj = Obj;
172
50.0k
    Obj = tmp;
173
50.0k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::swap(llvm::IntrusiveRefCntPtr<clang::SourceManager>&)
Line
Count
Source
169
49.2k
  void swap(IntrusiveRefCntPtr &other) {
170
49.2k
    T *tmp = other.Obj;
171
49.2k
    other.Obj = Obj;
172
49.2k
    Obj = tmp;
173
49.2k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::swap(llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>&)
Line
Count
Source
169
1.22k
  void swap(IntrusiveRefCntPtr &other) {
170
1.22k
    T *tmp = other.Obj;
171
1.22k
    other.Obj = Obj;
172
1.22k
    Obj = tmp;
173
1.22k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::swap(llvm::IntrusiveRefCntPtr<clang::ASTReader>&)
Line
Count
Source
169
8.15k
  void swap(IntrusiveRefCntPtr &other) {
170
8.15k
    T *tmp = other.Obj;
171
8.15k
    other.Obj = Obj;
172
8.15k
    Obj = tmp;
173
8.15k
  }
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
2.25M
  void swap(IntrusiveRefCntPtr &other) {
170
2.25M
    T *tmp = other.Obj;
171
2.25M
    other.Obj = Obj;
172
2.25M
    Obj = tmp;
173
2.25M
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::swap(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&)
Line
Count
Source
169
5.13M
  void swap(IntrusiveRefCntPtr &other) {
170
5.13M
    T *tmp = other.Obj;
171
5.13M
    other.Obj = Obj;
172
5.13M
    Obj = tmp;
173
5.13M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::swap(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>&)
Line
Count
Source
169
8.31k
  void swap(IntrusiveRefCntPtr &other) {
170
8.31k
    T *tmp = other.Obj;
171
8.31k
    other.Obj = Obj;
172
8.31k
    Obj = tmp;
173
8.31k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::swap(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&)
Line
Count
Source
169
4.96k
  void swap(IntrusiveRefCntPtr &other) {
170
4.96k
    T *tmp = other.Obj;
171
4.96k
    other.Obj = Obj;
172
4.96k
    Obj = tmp;
173
4.96k
  }
174
175
12.7k
  void reset() {
176
12.7k
    release();
177
12.7k
    Obj = nullptr;
178
12.7k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::reset()
Line
Count
Source
175
798
  void reset() {
176
798
    release();
177
798
    Obj = nullptr;
178
798
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::reset()
Line
Count
Source
175
2.93k
  void reset() {
176
2.93k
    release();
177
2.93k
    Obj = nullptr;
178
2.93k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::reset()
Line
Count
Source
175
2.93k
  void reset() {
176
2.93k
    release();
177
2.93k
    Obj = nullptr;
178
2.93k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::reset()
Line
Count
Source
175
2.93k
  void reset() {
176
2.93k
    release();
177
2.93k
    Obj = nullptr;
178
2.93k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::reset()
Line
Count
Source
175
3.10k
  void reset() {
176
3.10k
    release();
177
3.10k
    Obj = nullptr;
178
3.10k
  }
179
180
14.2k
  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
14.1k
  void resetWithoutRelease() { Obj = nullptr; }
181
182
private:
183
36.2M
  void retain() {
184
36.2M
    if (Obj)
185
34.6M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
36.2M
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::retain()
Line
Count
Source
183
378k
  void retain() {
184
378k
    if (Obj)
185
378k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
378k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::retain()
Line
Count
Source
183
319k
  void retain() {
184
319k
    if (Obj)
185
319k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
319k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::retain()
Line
Count
Source
183
298k
  void retain() {
184
298k
    if (Obj)
185
273k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
298k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::retain()
Line
Count
Source
183
44.3k
  void retain() {
184
44.3k
    if (Obj)
185
44.3k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
44.3k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::retain()
Line
Count
Source
183
58.0k
  void retain() {
184
58.0k
    if (Obj)
185
57.0k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
58.0k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::retain()
Line
Count
Source
183
68.3k
  void retain() {
184
68.3k
    if (Obj)
185
39.6k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
68.3k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::retain()
Line
Count
Source
183
46.2k
  void retain() {
184
46.2k
    if (Obj)
185
46.2k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
46.2k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::retain()
Line
Count
Source
183
11.7k
  void retain() {
184
11.7k
    if (Obj)
185
8.87k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
11.7k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::retain()
Line
Count
Source
183
54.7k
  void retain() {
184
54.7k
    if (Obj)
185
51.6k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
54.7k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::retain()
Line
Count
Source
183
49.9k
  void retain() {
184
49.9k
    if (Obj)
185
46.8k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
49.9k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::retain()
Line
Count
Source
183
49.1k
  void retain() {
184
49.1k
    if (Obj)
185
49.1k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
49.1k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::retain()
Line
Count
Source
183
4.96k
  void retain() {
184
4.96k
    if (Obj)
185
4.94k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
4.96k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::retain()
Line
Count
Source
183
165k
  void retain() {
184
165k
    if (Obj)
185
165k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
165k
  }
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<clang::vfs::OverlayFileSystem>::retain()
Line
Count
Source
183
4.46k
  void retain() {
184
4.46k
    if (Obj)
185
4.46k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
4.46k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::retain()
Line
Count
Source
183
26.6M
  void retain() {
184
26.6M
    if (Obj)
185
25.7M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
26.6M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::retain()
Line
Count
Source
183
2.37M
  void retain() {
184
2.37M
    if (Obj)
185
2.37M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
2.37M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::retain()
Line
Count
Source
183
23.8k
  void retain() {
184
23.8k
    if (Obj)
185
23.8k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
23.8k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::retain()
Line
Count
Source
183
498k
  void retain() {
184
498k
    if (Obj)
185
498k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
498k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::retain()
Line
Count
Source
183
22.6k
  void retain() {
184
22.6k
    if (Obj)
185
22.6k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
22.6k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::retain()
Line
Count
Source
183
1.50k
  void retain() {
184
1.50k
    if (Obj)
185
1.50k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
1.50k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::retain()
Line
Count
Source
183
1.78k
  void retain() {
184
1.78k
    if (Obj)
185
1.78k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
1.78k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::retain()
Line
Count
Source
183
5.13M
  void retain() {
184
5.13M
    if (Obj)
185
4.53M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
186
5.13M
  }
187
188
44.6M
  void release() {
189
44.6M
    if (Obj)
190
31.4M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
44.6M
  }
llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>::release()
Line
Count
Source
188
510k
  void release() {
189
510k
    if (Obj)
190
245k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
510k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::release()
Line
Count
Source
188
482k
  void release() {
189
482k
    if (Obj)
190
335k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
482k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::release()
Line
Count
Source
188
480k
  void release() {
189
480k
    if (Obj)
190
304k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
480k
  }
llvm::IntrusiveRefCntPtr<clang::vfs::InMemoryFileSystem>::release()
Line
Count
Source
188
44.3k
  void release() {
189
44.3k
    if (Obj)
190
44.3k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
44.3k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::release()
Line
Count
Source
188
89.2k
  void release() {
189
89.2k
    if (Obj)
190
42.7k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
89.2k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::release()
Line
Count
Source
188
102k
  void release() {
189
102k
    if (Obj)
190
31.1k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
102k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::release()
Line
Count
Source
188
87.4k
  void release() {
189
87.4k
    if (Obj)
190
37.4k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
87.4k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::release()
Line
Count
Source
188
84.0k
  void release() {
189
84.0k
    if (Obj)
190
32.6k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
84.0k
  }
llvm::IntrusiveRefCntPtr<clang::MemoryBufferCache>::release()
Line
Count
Source
188
37.2k
  void release() {
189
37.2k
    if (Obj)
190
34.8k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
37.2k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::release()
Line
Count
Source
188
106k
  void release() {
189
106k
    if (Obj)
190
31.9k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
106k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::release()
Line
Count
Source
188
48.2k
  void release() {
189
48.2k
    if (Obj)
190
8.81k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
48.2k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::release()
Line
Count
Source
188
37.8k
  void release() {
189
37.8k
    if (Obj)
190
4.88k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
37.8k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::release()
Line
Count
Source
188
151k
  void release() {
189
151k
    if (Obj)
190
150k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
151k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::release()
Line
Count
Source
188
28.9k
  void release() {
189
28.9k
    if (Obj)
190
70
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
28.9k
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::release()
Line
Count
Source
188
23
  void release() {
189
23
    if (Obj)
190
0
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
23
  }
llvm::IntrusiveRefCntPtr<clang::vfs::OverlayFileSystem>::release()
Line
Count
Source
188
4.46k
  void release() {
189
4.46k
    if (Obj)
190
4.41k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
4.46k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::release()
Line
Count
Source
188
9.68M
  void release() {
189
9.68M
    if (Obj)
190
4.53M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
9.68M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::release()
Line
Count
Source
188
29.3M
  void release() {
189
29.3M
    if (Obj)
190
22.6M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
29.3M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::release()
Line
Count
Source
188
2.75M
  void release() {
189
2.75M
    if (Obj)
190
2.37M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
2.75M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::release()
Line
Count
Source
188
23.8k
  void release() {
189
23.8k
    if (Obj)
190
23.8k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
23.8k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::release()
Line
Count
Source
188
498k
  void release() {
189
498k
    if (Obj)
190
498k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
498k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::release()
Line
Count
Source
188
22.6k
  void release() {
189
22.6k
    if (Obj)
190
22.6k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
22.6k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::release()
Line
Count
Source
188
1.50k
  void release() {
189
1.50k
    if (Obj)
190
1.50k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
1.50k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::release()
Line
Count
Source
188
1.78k
  void release() {
189
1.78k
    if (Obj)
190
1.78k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
191
1.78k
  }
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
923k
                       const IntrusiveRefCntPtr<U> &B) {
199
923k
  return A.get() == B.get();
200
923k
}
bool llvm::operator==<clang::vfs::FileSystem, clang::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&, llvm::IntrusiveRefCntPtr<clang::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
922k
                       const IntrusiveRefCntPtr<U> &B) {
199
922k
  return A.get() == B.get();
200
922k
}
201
202
template <class T, class U>
203
inline bool operator!=(const IntrusiveRefCntPtr<T> &A,
204
188k
                       const IntrusiveRefCntPtr<U> &B) {
205
188k
  return A.get() != B.get();
206
188k
}
bool llvm::operator!=<clang::vfs::FileSystem, clang::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&, llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&)
Line
Count
Source
204
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
188k
                       const IntrusiveRefCntPtr<U> &B) {
205
188k
  return A.get() != B.get();
206
188k
}
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
288k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
288k
  return !B;
231
288k
}
bool llvm::operator==<clang::DiagnosticsEngine>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
229
37.8k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
37.8k
  return !B;
231
37.8k
}
bool llvm::operator==<clang::TargetInfo>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&)
Line
Count
Source
229
45.9k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
45.9k
  return !B;
231
45.9k
}
bool llvm::operator==<clang::vfs::FileSystem>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&)
Line
Count
Source
229
35.7k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
35.7k
  return !B;
231
35.7k
}
bool llvm::operator==<clang::FileManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::FileManager> const&)
Line
Count
Source
229
43.4k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
43.4k
  return !B;
231
43.4k
}
bool llvm::operator==<clang::SourceManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::SourceManager> const&)
Line
Count
Source
229
81.6k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
81.6k
  return !B;
231
81.6k
}
bool llvm::operator==<clang::ASTContext>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::ASTContext> const&)
Line
Count
Source
229
43.7k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
230
43.7k
  return !B;
231
43.7k
}
232
233
template <class T>
234
288k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
288k
  return B == A;
236
288k
}
bool llvm::operator==<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
234
37.8k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
37.8k
  return B == A;
236
37.8k
}
bool llvm::operator==<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
234
45.9k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
45.9k
  return B == A;
236
45.9k
}
bool llvm::operator==<clang::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&, std::nullptr_t)
Line
Count
Source
234
35.7k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
35.7k
  return B == A;
236
35.7k
}
bool llvm::operator==<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
234
43.4k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
43.4k
  return B == A;
236
43.4k
}
bool llvm::operator==<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
234
81.6k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
81.6k
  return B == A;
236
81.6k
}
bool llvm::operator==<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
234
43.7k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
235
43.7k
  return B == A;
236
43.7k
}
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
288k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
288k
  return !(A == B);
246
288k
}
bool llvm::operator!=<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
244
37.8k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
37.8k
  return !(A == B);
246
37.8k
}
bool llvm::operator!=<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
244
45.9k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
45.9k
  return !(A == B);
246
45.9k
}
bool llvm::operator!=<clang::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> const&, std::nullptr_t)
Line
Count
Source
244
35.7k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
35.7k
  return !(A == B);
246
35.7k
}
bool llvm::operator!=<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
244
43.4k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
43.4k
  return !(A == B);
246
43.4k
}
bool llvm::operator!=<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
244
81.6k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
81.6k
  return !(A == B);
246
81.6k
}
bool llvm::operator!=<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
244
43.7k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
245
43.7k
  return !(A == B);
246
43.7k
}
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