Coverage Report

Created: 2019-03-22 08:08

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h
Line
Count
Source
1
//==- llvm/ADT/IntrusiveRefCntPtr.h - Smart Refcounting Pointer --*- C++ -*-==//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file defines the RefCountedBase, ThreadSafeRefCountedBase, and
10
// IntrusiveRefCntPtr classes.
11
//
12
// IntrusiveRefCntPtr is a smart pointer to an object which maintains a
13
// reference count.  (ThreadSafe)RefCountedBase is a mixin class that adds a
14
// refcount member variable and methods for updating the refcount.  An object
15
// that inherits from (ThreadSafe)RefCountedBase deletes itself when its
16
// refcount hits zero.
17
//
18
// For example:
19
//
20
//   class MyClass : public RefCountedBase<MyClass> {};
21
//
22
//   void foo() {
23
//     // Constructing an IntrusiveRefCntPtr increases the pointee's refcount by
24
//     // 1 (from 0 in this case).
25
//     IntrusiveRefCntPtr<MyClass> Ptr1(new MyClass());
26
//
27
//     // Copying an IntrusiveRefCntPtr increases the pointee's refcount by 1.
28
//     IntrusiveRefCntPtr<MyClass> Ptr2(Ptr1);
29
//
30
//     // Constructing an IntrusiveRefCntPtr has no effect on the object's
31
//     // refcount.  After a move, the moved-from pointer is null.
32
//     IntrusiveRefCntPtr<MyClass> Ptr3(std::move(Ptr1));
33
//     assert(Ptr1 == nullptr);
34
//
35
//     // Clearing an IntrusiveRefCntPtr decreases the pointee's refcount by 1.
36
//     Ptr2.reset();
37
//
38
//     // The object deletes itself when we return from the function, because
39
//     // Ptr3's destructor decrements its refcount to 0.
40
//   }
41
//
42
// You can use IntrusiveRefCntPtr with isa<T>(), dyn_cast<T>(), etc.:
43
//
44
//   IntrusiveRefCntPtr<MyClass> Ptr(new MyClass());
45
//   OtherClass *Other = dyn_cast<OtherClass>(Ptr);  // Ptr.get() not required
46
//
47
// IntrusiveRefCntPtr works with any class that
48
//
49
//  - inherits from (ThreadSafe)RefCountedBase,
50
//  - has Retain() and Release() methods, or
51
//  - specializes IntrusiveRefCntPtrInfo.
52
//
53
//===----------------------------------------------------------------------===//
54
55
#ifndef LLVM_ADT_INTRUSIVEREFCNTPTR_H
56
#define LLVM_ADT_INTRUSIVEREFCNTPTR_H
57
58
#include <atomic>
59
#include <cassert>
60
#include <cstddef>
61
62
namespace llvm {
63
64
/// A CRTP mixin class that adds reference counting to a type.
65
///
66
/// The lifetime of an object which inherits from RefCountedBase is managed by
67
/// calls to Release() and Retain(), which increment and decrement the object's
68
/// refcount, respectively.  When a Release() call decrements the refcount to 0,
69
/// the object deletes itself.
70
template <class Derived> class RefCountedBase {
71
  mutable unsigned RefCount = 0;
72
73
public:
74
849k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticOptions>::RefCountedBase()
Line
Count
Source
74
168k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticsEngine>::RefCountedBase()
Line
Count
Source
74
156k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::DiagnosticIDs>::RefCountedBase()
Line
Count
Source
74
153k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::FileManager>::RefCountedBase()
Line
Count
Source
74
86.7k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::SourceManager>::RefCountedBase()
Line
Count
Source
74
88.6k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::TargetInfo>::RefCountedBase()
Line
Count
Source
74
46.9k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::InMemoryModuleCache>::RefCountedBase()
Line
Count
Source
74
46.7k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ExternalASTSource>::RefCountedBase()
Line
Count
Source
74
7.18k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::AnalyzerOptions>::RefCountedBase()
Line
Count
Source
74
54.4k
  RefCountedBase() = default;
llvm::RefCountedBase<clang::ASTContext>::RefCountedBase()
Line
Count
Source
74
40.0k
  RefCountedBase() = default;
75
7.33k
  RefCountedBase(const RefCountedBase &) {}
76
77
1.32M
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticOptions>::Retain() const
Line
Count
Source
77
412k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticIDs>::Retain() const
Line
Count
Source
77
341k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Retain() const
Line
Count
Source
77
66.5k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ASTContext>::Retain() const
Line
Count
Source
77
45.1k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::TargetInfo>::Retain() const
Line
Count
Source
77
51.8k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::ExternalASTSource>::Retain() const
Line
Count
Source
77
16.2k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::FileManager>::Retain() const
Line
Count
Source
77
59.5k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::SourceManager>::Retain() const
Line
Count
Source
77
52.4k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::InMemoryModuleCache>::Retain() const
Line
Count
Source
77
53.0k
  void Retain() const { ++RefCount; }
llvm::RefCountedBase<clang::AnalyzerOptions>::Retain() const
Line
Count
Source
77
228k
  void Retain() const { ++RefCount; }
78
79
1.17M
  void Release() const {
80
1.17M
    assert(RefCount > 0 && "Reference count is already zero.");
81
1.17M
    if (--RefCount == 0)
82
543k
      delete static_cast<const Derived *>(this);
83
1.17M
  }
llvm::RefCountedBase<clang::DiagnosticOptions>::Release() const
Line
Count
Source
79
369k
  void Release() const {
80
369k
    assert(RefCount > 0 && "Reference count is already zero.");
81
369k
    if (--RefCount == 0)
82
161k
      delete static_cast<const Derived *>(this);
83
369k
  }
llvm::RefCountedBase<clang::DiagnosticIDs>::Release() const
Line
Count
Source
79
326k
  void Release() const {
80
326k
    assert(RefCount > 0 && "Reference count is already zero.");
81
326k
    if (--RefCount == 0)
82
138k
      delete static_cast<const Derived *>(this);
83
326k
  }
llvm::RefCountedBase<clang::DiagnosticsEngine>::Release() const
Line
Count
Source
79
52.3k
  void Release() const {
80
52.3k
    assert(RefCount > 0 && "Reference count is already zero.");
81
52.3k
    if (--RefCount == 0)
82
35.5k
      delete static_cast<const Derived *>(this);
83
52.3k
  }
llvm::RefCountedBase<clang::ASTContext>::Release() const
Line
Count
Source
79
36.7k
  void Release() const {
80
36.7k
    assert(RefCount > 0 && "Reference count is already zero.");
81
36.7k
    if (--RefCount == 0)
82
31.7k
      delete static_cast<const Derived *>(this);
83
36.7k
  }
llvm::RefCountedBase<clang::FileManager>::Release() const
Line
Count
Source
79
45.4k
  void Release() const {
80
45.4k
    assert(RefCount > 0 && "Reference count is already zero.");
81
45.4k
    if (--RefCount == 0)
82
30.5k
      delete static_cast<const Derived *>(this);
83
45.4k
  }
llvm::RefCountedBase<clang::SourceManager>::Release() const
Line
Count
Source
79
38.3k
  void Release() const {
80
38.3k
    assert(RefCount > 0 && "Reference count is already zero.");
81
38.3k
    if (--RefCount == 0)
82
32.6k
      delete static_cast<const Derived *>(this);
83
38.3k
  }
llvm::RefCountedBase<clang::InMemoryModuleCache>::Release() const
Line
Count
Source
79
38.8k
  void Release() const {
80
38.8k
    assert(RefCount > 0 && "Reference count is already zero.");
81
38.8k
    if (--RefCount == 0)
82
32.5k
      delete static_cast<const Derived *>(this);
83
38.8k
  }
llvm::RefCountedBase<clang::TargetInfo>::Release() const
Line
Count
Source
79
37.6k
  void Release() const {
80
37.6k
    assert(RefCount > 0 && "Reference count is already zero.");
81
37.6k
    if (--RefCount == 0)
82
32.7k
      delete static_cast<const Derived *>(this);
83
37.6k
  }
llvm::RefCountedBase<clang::ExternalASTSource>::Release() const
Line
Count
Source
79
16.1k
  void Release() const {
80
16.1k
    assert(RefCount > 0 && "Reference count is already zero.");
81
16.1k
    if (--RefCount == 0)
82
7.01k
      delete static_cast<const Derived *>(this);
83
16.1k
  }
llvm::RefCountedBase<clang::AnalyzerOptions>::Release() const
Line
Count
Source
79
214k
  void Release() const {
80
214k
    assert(RefCount > 0 && "Reference count is already zero.");
81
214k
    if (--RefCount == 0)
82
40.3k
      delete static_cast<const Derived *>(this);
83
214k
  }
84
};
85
86
/// A thread-safe version of \c RefCountedBase.
87
template <class Derived> class ThreadSafeRefCountedBase {
88
  mutable std::atomic<int> RefCount;
89
90
protected:
91
655k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<llvm::vfs::FileSystem>::ThreadSafeRefCountedBase()
Line
Count
Source
91
117k
  ThreadSafeRefCountedBase() : RefCount(0) {}
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::ThreadSafeRefCountedBase()
Line
Count
Source
91
538k
  ThreadSafeRefCountedBase() : RefCount(0) {}
92
93
public:
94
3.23M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
llvm::ThreadSafeRefCountedBase<llvm::vfs::FileSystem>::Retain() const
Line
Count
Source
94
357k
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Retain() const
Line
Count
Source
94
2.88M
  void Retain() const { RefCount.fetch_add(1, std::memory_order_relaxed); }
95
96
3.20M
  void Release() const {
97
3.20M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
98
3.20M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
99
3.20M
    if (NewRefCount == 0)
100
638k
      delete static_cast<const Derived *>(this);
101
3.20M
  }
llvm::ThreadSafeRefCountedBase<llvm::vfs::FileSystem>::Release() const
Line
Count
Source
96
329k
  void Release() const {
97
329k
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
98
329k
    assert(NewRefCount >= 0 && "Reference count was already zero.");
99
329k
    if (NewRefCount == 0)
100
102k
      delete static_cast<const Derived *>(this);
101
329k
  }
llvm::ThreadSafeRefCountedBase<clang::ast_matchers::internal::DynMatcherInterface>::Release() const
Line
Count
Source
96
2.87M
  void Release() const {
97
2.87M
    int NewRefCount = RefCount.fetch_sub(1, std::memory_order_acq_rel) - 1;
98
2.87M
    assert(NewRefCount >= 0 && "Reference count was already zero.");
99
2.87M
    if (NewRefCount == 0)
100
535k
      delete static_cast<const Derived *>(this);
101
2.87M
  }
102
};
103
104
/// Class you can specialize to provide custom retain/release functionality for
105
/// a type.
106
///
107
/// Usually specializing this class is not necessary, as IntrusiveRefCntPtr
108
/// works with any type which defines Retain() and Release() functions -- you
109
/// can define those functions yourself if RefCountedBase doesn't work for you.
110
///
111
/// One case when you might want to specialize this type is if you have
112
///  - Foo.h defines type Foo and includes Bar.h, and
113
///  - Bar.h uses IntrusiveRefCntPtr<Foo> in inline functions.
114
///
115
/// Because Foo.h includes Bar.h, Bar.h can't include Foo.h in order to pull in
116
/// the declaration of Foo.  Without the declaration of Foo, normally Bar.h
117
/// wouldn't be able to use IntrusiveRefCntPtr<Foo>, which wants to call
118
/// T::Retain and T::Release.
119
///
120
/// To resolve this, Bar.h could include a third header, FooFwd.h, which
121
/// forward-declares Foo and specializes IntrusiveRefCntPtrInfo<Foo>.  Then
122
/// Bar.h could use IntrusiveRefCntPtr<Foo>, although it still couldn't call any
123
/// functions on Foo itself, because Foo would be an incomplete type.
124
template <typename T> struct IntrusiveRefCntPtrInfo {
125
6.87M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::retain(clang::DiagnosticOptions*)
Line
Count
Source
125
412k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::retain(clang::DiagnosticIDs*)
Line
Count
Source
125
341k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::FileSystem>::retain(llvm::vfs::FileSystem*)
Line
Count
Source
125
302k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::InMemoryFileSystem>::retain(llvm::vfs::InMemoryFileSystem*)
Line
Count
Source
125
48.1k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::retain(clang::DiagnosticsEngine*)
Line
Count
Source
125
66.5k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::retain(clang::ASTContext*)
Line
Count
Source
125
45.1k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::retain(clang::TargetInfo*)
Line
Count
Source
125
51.8k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::retain(clang::ASTReader*)
Line
Count
Source
125
9.17k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::retain(clang::FileManager*)
Line
Count
Source
125
59.5k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::retain(clang::SourceManager*)
Line
Count
Source
125
52.4k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::InMemoryModuleCache>::retain(clang::InMemoryModuleCache*)
Line
Count
Source
125
53.0k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::retain(clang::ExternalASTSource*)
Line
Count
Source
125
5.13k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::retain(clang::AnalyzerOptions*)
Line
Count
Source
125
228k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalSemaSource>::retain(clang::ExternalSemaSource*)
Line
Count
Source
125
55
  static void retain(T *obj) { obj->Retain(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtrInfo<(anonymous namespace)::ChainedIncludesSource>::retain((anonymous namespace)::ChainedIncludesSource*)
Line
Count
Source
125
27
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::OverlayFileSystem>::retain(llvm::vfs::OverlayFileSystem*)
Line
Count
Source
125
6.74k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ast_matchers::internal::DynMatcherInterface>::retain(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
125
2.87M
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::retain(clang::ento::ObjCMethodCall const*)
Line
Count
Source
125
27.2k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::retain(clang::ento::CallEvent const*)
Line
Count
Source
125
761k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::retain(clang::ento::CXXConstructorCall const*)
Line
Count
Source
125
31.3k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::retain(clang::ento::CXXDestructorCall const*)
Line
Count
Source
125
2.68k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::retain(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
125
2.70k
  static void retain(T *obj) { obj->Retain(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::retain(clang::RopeRefCountString*)
Line
Count
Source
125
1.48M
  static void retain(T *obj) { obj->Retain(); }
126
6.69M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::FileSystem>::release(llvm::vfs::FileSystem*)
Line
Count
Source
126
274k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticOptions>::release(clang::DiagnosticOptions*)
Line
Count
Source
126
369k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticIDs>::release(clang::DiagnosticIDs*)
Line
Count
Source
126
326k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::InMemoryFileSystem>::release(llvm::vfs::InMemoryFileSystem*)
Line
Count
Source
126
48.1k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::DiagnosticsEngine>::release(clang::DiagnosticsEngine*)
Line
Count
Source
126
52.3k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTContext>::release(clang::ASTContext*)
Line
Count
Source
126
36.7k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::FileManager>::release(clang::FileManager*)
Line
Count
Source
126
45.4k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::SourceManager>::release(clang::SourceManager*)
Line
Count
Source
126
38.3k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::InMemoryModuleCache>::release(clang::InMemoryModuleCache*)
Line
Count
Source
126
38.8k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::TargetInfo>::release(clang::TargetInfo*)
Line
Count
Source
126
37.6k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ASTReader>::release(clang::ASTReader*)
Line
Count
Source
126
9.12k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalASTSource>::release(clang::ExternalASTSource*)
Line
Count
Source
126
5.07k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::AnalyzerOptions>::release(clang::AnalyzerOptions*)
Line
Count
Source
126
214k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ExternalSemaSource>::release(clang::ExternalSemaSource*)
Line
Count
Source
126
82
  static void release(T *obj) { obj->Release(); }
Unexecuted instantiation: ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtrInfo<(anonymous namespace)::ChainedIncludesSource>::release((anonymous namespace)::ChainedIncludesSource*)
llvm::IntrusiveRefCntPtrInfo<llvm::vfs::OverlayFileSystem>::release(llvm::vfs::OverlayFileSystem*)
Line
Count
Source
126
6.73k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::RopeRefCountString>::release(clang::RopeRefCountString*)
Line
Count
Source
126
1.48M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ast_matchers::internal::DynMatcherInterface>::release(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
126
2.87M
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CallEvent const>::release(clang::ento::CallEvent const*)
Line
Count
Source
126
761k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::ObjCMethodCall const>::release(clang::ento::ObjCMethodCall const*)
Line
Count
Source
126
27.2k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXConstructorCall const>::release(clang::ento::CXXConstructorCall const*)
Line
Count
Source
126
31.3k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXDestructorCall const>::release(clang::ento::CXXDestructorCall const*)
Line
Count
Source
126
2.68k
  static void release(T *obj) { obj->Release(); }
llvm::IntrusiveRefCntPtrInfo<clang::ento::CXXAllocatorCall const>::release(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
126
2.70k
  static void release(T *obj) { obj->Release(); }
127
};
128
129
/// A smart pointer to a reference-counted object that inherits from
130
/// RefCountedBase or ThreadSafeRefCountedBase.
131
///
132
/// This class increments its pointee's reference count when it is created, and
133
/// decrements its refcount when it's destroyed (or is changed to point to a
134
/// different object).
135
template <typename T> class IntrusiveRefCntPtr {
136
  T *Obj = nullptr;
137
138
public:
139
  using element_type = T;
140
141
2.21M
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr()
Line
Count
Source
141
51.0k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr()
Line
Count
Source
141
51.0k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr()
Line
Count
Source
141
51.0k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::IntrusiveRefCntPtr()
Line
Count
Source
141
4.26k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr()
Line
Count
Source
141
97.9k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr()
Line
Count
Source
141
51.0k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr()
Line
Count
Source
141
51.0k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr()
Line
Count
Source
141
46.8k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr()
Line
Count
Source
141
46.8k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr()
Line
Count
Source
141
575k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr()
Line
Count
Source
141
40.0k
  explicit IntrusiveRefCntPtr() = default;
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr()
Line
Count
Source
141
1.14M
  explicit IntrusiveRefCntPtr() = default;
142
5.56M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(clang::DiagnosticOptions*)
Line
Count
Source
142
408k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(clang::DiagnosticIDs*)
Line
Count
Source
142
153k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::vfs::FileSystem*)
Line
Count
Source
142
87.1k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::IntrusiveRefCntPtr(llvm::vfs::InMemoryFileSystem*)
Line
Count
Source
142
48.1k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(clang::DiagnosticsEngine*)
Line
Count
Source
142
56.5k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::IntrusiveRefCntPtr(clang::ASTContext*)
Line
Count
Source
142
77.6k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::IntrusiveRefCntPtr(clang::TargetInfo*)
Line
Count
Source
142
51.8k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::IntrusiveRefCntPtr(clang::FileManager*)
Line
Count
Source
142
64.5k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::IntrusiveRefCntPtr(clang::SourceManager*)
Line
Count
Source
142
57.4k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::IntrusiveRefCntPtr(clang::InMemoryModuleCache*)
Line
Count
Source
142
53.0k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(clang::ASTReader*)
Line
Count
Source
142
5.22k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(clang::ExternalSemaSource*)
Line
Count
Source
142
28
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::IntrusiveRefCntPtr((anonymous namespace)::ChainedIncludesSource*)
Line
Count
Source
142
27
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(clang::AnalyzerOptions*)
Line
Count
Source
142
54.4k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(clang::ExternalASTSource*)
Line
Count
Source
142
2.48k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::IntrusiveRefCntPtr(llvm::vfs::OverlayFileSystem*)
Line
Count
Source
142
6.74k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr(clang::ento::ProgramState const*)
Line
Count
Source
142
3.08M
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::IntrusiveRefCntPtr(clang::ast_matchers::internal::DynMatcherInterface*)
Line
Count
Source
142
561k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::IntrusiveRefCntPtr(clang::ento::ObjCMethodCall const*)
Line
Count
Source
142
27.2k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::IntrusiveRefCntPtr(clang::ento::CallEvent const*)
Line
Count
Source
142
714k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXConstructorCall const*)
Line
Count
Source
142
31.3k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::IntrusiveRefCntPtr(clang::ento::CXXDestructorCall const*)
Line
Count
Source
142
2.68k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::IntrusiveRefCntPtr(clang::ento::CXXAllocatorCall const*)
Line
Count
Source
142
2.70k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(clang::RopeRefCountString*)
Line
Count
Source
142
14.1k
  IntrusiveRefCntPtr(T *obj) : Obj(obj) { retain(); }
143
37.4M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> const&)
Line
Count
Source
143
187k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
143
186k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
143
10.9k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
143
8.74k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions> const&)
Line
Count
Source
143
173k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource> const&)
Line
Count
Source
143
27
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource> const&)
Line
Count
Source
143
7
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> const&)
Line
Count
Source
143
4.19k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> const&)
Line
Count
Source
143
32.9M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface> const&)
Line
Count
Source
143
2.31M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const> const&)
Line
Count
Source
143
59.9k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString> const&)
Line
Count
Source
143
1.59M
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr &S) : Obj(S.Obj) { retain(); }
144
8.21M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>&&)
Line
Count
Source
144
212k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>&&)
Line
Count
Source
144
186k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>&&)
Line
Count
Source
144
156k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>&&)
Line
Count
Source
144
55
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ASTReader>&&)
Line
Count
Source
144
2.37k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>&&)
Line
Count
Source
144
848
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>&&)
Line
Count
Source
144
6.70M
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>&&)
Line
Count
Source
144
472k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&&)
Line
Count
Source
144
5.14k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::IntrusiveRefCntPtr(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&&)
Line
Count
Source
144
470k
  IntrusiveRefCntPtr(IntrusiveRefCntPtr &&S) : Obj(S.Obj) { S.Obj = nullptr; }
145
146
  template <class X>
147
33
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
148
33
    S.Obj = nullptr;
149
33
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>(llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>&&)
Line
Count
Source
147
27
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
148
27
    S.Obj = nullptr;
149
27
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>&&)
Line
Count
Source
147
6
  IntrusiveRefCntPtr(IntrusiveRefCntPtr<X> &&S) : Obj(S.get()) {
148
6
    S.Obj = nullptr;
149
6
  }
150
151
  template <class X>
152
50.8k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
153
50.8k
    retain();
154
50.8k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> const&)
Line
Count
Source
152
48.1k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
153
48.1k
    retain();
154
48.1k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr<clang::ASTReader>(llvm::IntrusiveRefCntPtr<clang::ASTReader> const&)
Line
Count
Source
152
2.64k
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
153
2.64k
    retain();
154
2.64k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::IntrusiveRefCntPtr<clang::ExternalSemaSource>(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource> const&)
Line
Count
Source
152
27
  IntrusiveRefCntPtr(const IntrusiveRefCntPtr<X> &S) : Obj(S.get()) {
153
27
    retain();
154
27
  }
155
156
49.5M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
156
559k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
156
526k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::~IntrusiveRefCntPtr()
Line
Count
Source
156
513k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
156
48.1k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::~IntrusiveRefCntPtr()
Line
Count
Source
156
104k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::~IntrusiveRefCntPtr()
Line
Count
Source
156
114k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::FileManager>::~IntrusiveRefCntPtr()
Line
Count
Source
156
102k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::~IntrusiveRefCntPtr()
Line
Count
Source
156
94.3k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::~IntrusiveRefCntPtr()
Line
Count
Source
156
43.0k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::~IntrusiveRefCntPtr()
Line
Count
Source
156
121k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::~IntrusiveRefCntPtr()
Line
Count
Source
156
53.2k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::~IntrusiveRefCntPtr()
Line
Count
Source
156
42.0k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::~IntrusiveRefCntPtr()
Line
Count
Source
156
215k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::~IntrusiveRefCntPtr()
Line
Count
Source
156
32.8k
  ~IntrusiveRefCntPtr() { release(); }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::~IntrusiveRefCntPtr()
Line
Count
Source
156
27
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::~IntrusiveRefCntPtr()
Line
Count
Source
156
6.74k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::~IntrusiveRefCntPtr()
Line
Count
Source
156
3.22M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
39.5M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::~IntrusiveRefCntPtr()
Line
Count
Source
156
3.35M
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
774k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
27.2k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
31.3k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
2.68k
  ~IntrusiveRefCntPtr() { release(); }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::~IntrusiveRefCntPtr()
Line
Count
Source
156
2.70k
  ~IntrusiveRefCntPtr() { release(); }
157
158
5.24M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
5.24M
    swap(S);
160
5.24M
    return *this;
161
5.24M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator=(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>)
Line
Count
Source
158
3.23M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
3.23M
    swap(S);
160
3.23M
    return *this;
161
3.23M
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator=(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>)
Line
Count
Source
158
74.6k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
74.6k
    swap(S);
160
74.6k
    return *this;
161
74.6k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTContext>)
Line
Count
Source
158
77.6k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
77.6k
    swap(S);
160
77.6k
    return *this;
161
77.6k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator=(llvm::IntrusiveRefCntPtr<clang::TargetInfo>)
Line
Count
Source
158
51.8k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
51.8k
    swap(S);
160
51.8k
    return *this;
161
51.8k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator=(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>)
Line
Count
Source
158
52.0k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
52.0k
    swap(S);
160
52.0k
    return *this;
161
52.0k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator=(llvm::IntrusiveRefCntPtr<clang::FileManager>)
Line
Count
Source
158
57.5k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
57.5k
    swap(S);
160
57.5k
    return *this;
161
57.5k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator=(llvm::IntrusiveRefCntPtr<clang::SourceManager>)
Line
Count
Source
158
56.7k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
56.7k
    swap(S);
160
56.7k
    return *this;
161
56.7k
  }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::operator=(llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>)
Line
Count
Source
158
1.21k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
1.21k
    swap(S);
160
1.21k
    return *this;
161
1.21k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator=(llvm::IntrusiveRefCntPtr<clang::ASTReader>)
Line
Count
Source
158
10.2k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
10.2k
    swap(S);
160
10.2k
    return *this;
161
10.2k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator=(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>)
Line
Count
Source
158
55
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
55
    swap(S);
160
55
    return *this;
161
55
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::operator=(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>)
Line
Count
Source
158
17.6k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
17.6k
    swap(S);
160
17.6k
    return *this;
161
17.6k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator=(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>)
Line
Count
Source
158
5.14k
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
5.14k
    swap(S);
160
5.14k
    return *this;
161
5.14k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::operator=(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>)
Line
Count
Source
158
1.60M
  IntrusiveRefCntPtr &operator=(IntrusiveRefCntPtr S) {
159
1.60M
    swap(S);
160
1.60M
    return *this;
161
1.60M
  }
162
163
7.36M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator*() const
Line
Count
Source
163
1.47M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator*() const
Line
Count
Source
163
2.01M
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator*() const
Line
Count
Source
163
706k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator*() const
Line
Count
Source
163
109k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator*() const
Line
Count
Source
163
328k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator*() const
Line
Count
Source
163
267k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator*() const
Line
Count
Source
163
704k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::operator*() const
Line
Count
Source
163
30.4k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator*() const
Line
Count
Source
163
27
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator*() const
Line
Count
Source
163
462
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator*() const
Line
Count
Source
163
45.5k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::operator*() const
Line
Count
Source
163
40.9k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator*() const
Line
Count
Source
163
760k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::operator*() const
Line
Count
Source
163
67.3k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator*() const
Line
Count
Source
163
3.89k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator*() const
Line
Count
Source
163
3.03k
  T &operator*() const { return *Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator*() const
Line
Count
Source
163
807k
  T &operator*() const { return *Obj; }
164
118M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::operator->() const
Line
Count
Source
164
2.76M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::operator->() const
Line
Count
Source
164
93.6M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator->() const
Line
Count
Source
164
603k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::operator->() const
Line
Count
Source
164
58.9k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator->() const
Line
Count
Source
164
172k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator->() const
Line
Count
Source
164
12.3k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator->() const
Line
Count
Source
164
21.1k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator->() const
Line
Count
Source
164
24.8k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator->() const
Line
Count
Source
164
84
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator->() const
Line
Count
Source
164
517k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator->() const
Line
Count
Source
164
1
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::operator->() const
Line
Count
Source
164
7.48k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::operator->() const
Line
Count
Source
164
529k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::operator->() const
Line
Count
Source
164
75
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::operator->() const
Line
Count
Source
164
5.91M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator->() const
Line
Count
Source
164
14.1M
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator->() const
Line
Count
Source
164
136k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::operator->() const
Line
Count
Source
164
14.1k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::operator->() const
Line
Count
Source
164
407
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::operator->() const
Line
Count
Source
164
1.30k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::operator->() const
Line
Count
Source
164
7
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::operator->() const
Line
Count
Source
164
178k
  T *operator->() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator->() const
Line
Count
Source
164
151
  T *operator->() const { return Obj; }
165
209M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::get() const
Line
Count
Source
165
48.4k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::get() const
Line
Count
Source
165
201M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::get() const
Line
Count
Source
165
14.2k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::get() const
Line
Count
Source
165
5.37k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::get() const
Line
Count
Source
165
4.98k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::get() const
Line
Count
Source
165
5.69k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::get() const
Line
Count
Source
165
43.4k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::get() const
Line
Count
Source
165
7
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::get() const
Line
Count
Source
165
122k
  T *get() const { return Obj; }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::get() const
Line
Count
Source
165
27
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::get() const
Line
Count
Source
165
55
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::get() const
Line
Count
Source
165
6.72k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::get() const
Line
Count
Source
165
25.3k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::get() const
Line
Count
Source
165
85
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::get() const
Line
Count
Source
165
7.40M
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::get() const
Line
Count
Source
165
68.6k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::get() const
Line
Count
Source
165
12.9k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::get() const
Line
Count
Source
165
1.38k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::get() const
Line
Count
Source
165
681
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::get() const
Line
Count
Source
165
5.35k
  T *get() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::get() const
Line
Count
Source
165
12.1k
  T *get() const { return Obj; }
166
4.55M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::operator bool() const
Line
Count
Source
166
159k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator bool() const
Line
Count
Source
166
39.5k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::operator bool() const
Line
Count
Source
166
193k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::operator bool() const
Line
Count
Source
166
56.6k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::operator bool() const
Line
Count
Source
166
51.7k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::operator bool() const
Line
Count
Source
166
578k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::operator bool() const
Line
Count
Source
166
59.0k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::operator bool() const
Line
Count
Source
166
39.8k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::operator bool() const
Line
Count
Source
166
3.28M
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::operator bool() const
Line
Count
Source
166
70.5k
  explicit operator bool() const { return Obj; }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::operator bool() const
Line
Count
Source
166
17.8k
  explicit operator bool() const { return Obj; }
167
168
5.24M
  void swap(IntrusiveRefCntPtr &other) {
169
5.24M
    T *tmp = other.Obj;
170
5.24M
    other.Obj = Obj;
171
5.24M
    Obj = tmp;
172
5.24M
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::swap(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>&)
Line
Count
Source
168
74.6k
  void swap(IntrusiveRefCntPtr &other) {
169
74.6k
    T *tmp = other.Obj;
170
74.6k
    other.Obj = Obj;
171
74.6k
    Obj = tmp;
172
74.6k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::swap(llvm::IntrusiveRefCntPtr<clang::ASTContext>&)
Line
Count
Source
168
77.6k
  void swap(IntrusiveRefCntPtr &other) {
169
77.6k
    T *tmp = other.Obj;
170
77.6k
    other.Obj = Obj;
171
77.6k
    Obj = tmp;
172
77.6k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::swap(llvm::IntrusiveRefCntPtr<clang::TargetInfo>&)
Line
Count
Source
168
51.8k
  void swap(IntrusiveRefCntPtr &other) {
169
51.8k
    T *tmp = other.Obj;
170
51.8k
    other.Obj = Obj;
171
51.8k
    Obj = tmp;
172
51.8k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::swap(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>&)
Line
Count
Source
168
52.0k
  void swap(IntrusiveRefCntPtr &other) {
169
52.0k
    T *tmp = other.Obj;
170
52.0k
    other.Obj = Obj;
171
52.0k
    Obj = tmp;
172
52.0k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::swap(llvm::IntrusiveRefCntPtr<clang::FileManager>&)
Line
Count
Source
168
57.5k
  void swap(IntrusiveRefCntPtr &other) {
169
57.5k
    T *tmp = other.Obj;
170
57.5k
    other.Obj = Obj;
171
57.5k
    Obj = tmp;
172
57.5k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::swap(llvm::IntrusiveRefCntPtr<clang::SourceManager>&)
Line
Count
Source
168
56.7k
  void swap(IntrusiveRefCntPtr &other) {
169
56.7k
    T *tmp = other.Obj;
170
56.7k
    other.Obj = Obj;
171
56.7k
    Obj = tmp;
172
56.7k
  }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::swap(llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>&)
Line
Count
Source
168
1.21k
  void swap(IntrusiveRefCntPtr &other) {
169
1.21k
    T *tmp = other.Obj;
170
1.21k
    other.Obj = Obj;
171
1.21k
    Obj = tmp;
172
1.21k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::swap(llvm::IntrusiveRefCntPtr<clang::ASTReader>&)
Line
Count
Source
168
10.2k
  void swap(IntrusiveRefCntPtr &other) {
169
10.2k
    T *tmp = other.Obj;
170
10.2k
    other.Obj = Obj;
171
10.2k
    Obj = tmp;
172
10.2k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::swap(llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>&)
Line
Count
Source
168
55
  void swap(IntrusiveRefCntPtr &other) {
169
55
    T *tmp = other.Obj;
170
55
    other.Obj = Obj;
171
55
    Obj = tmp;
172
55
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::swap(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>&)
Line
Count
Source
168
3.23M
  void swap(IntrusiveRefCntPtr &other) {
169
3.23M
    T *tmp = other.Obj;
170
3.23M
    other.Obj = Obj;
171
3.23M
    Obj = tmp;
172
3.23M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::swap(llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>&)
Line
Count
Source
168
17.6k
  void swap(IntrusiveRefCntPtr &other) {
169
17.6k
    T *tmp = other.Obj;
170
17.6k
    other.Obj = Obj;
171
17.6k
    Obj = tmp;
172
17.6k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::swap(llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>&)
Line
Count
Source
168
5.14k
  void swap(IntrusiveRefCntPtr &other) {
169
5.14k
    T *tmp = other.Obj;
170
5.14k
    other.Obj = Obj;
171
5.14k
    Obj = tmp;
172
5.14k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::swap(llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>&)
Line
Count
Source
168
1.60M
  void swap(IntrusiveRefCntPtr &other) {
169
1.60M
    T *tmp = other.Obj;
170
1.60M
    other.Obj = Obj;
171
1.60M
    Obj = tmp;
172
1.60M
  }
173
174
62.7k
  void reset() {
175
62.7k
    release();
176
62.7k
    Obj = nullptr;
177
62.7k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::reset()
Line
Count
Source
174
807
  void reset() {
175
807
    release();
176
807
    Obj = nullptr;
177
807
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::reset()
Line
Count
Source
174
4.83k
  void reset() {
175
4.83k
    release();
176
4.83k
    Obj = nullptr;
177
4.83k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::reset()
Line
Count
Source
174
4.83k
  void reset() {
175
4.83k
    release();
176
4.83k
    Obj = nullptr;
177
4.83k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::reset()
Line
Count
Source
174
47.2k
  void reset() {
175
47.2k
    release();
176
47.2k
    Obj = nullptr;
177
47.2k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::reset()
Line
Count
Source
174
5.01k
  void reset() {
175
5.01k
    release();
176
5.01k
    Obj = nullptr;
177
5.01k
  }
178
179
14.0k
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::FileManager>::resetWithoutRelease()
Line
Count
Source
179
7
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::resetWithoutRelease()
Line
Count
Source
179
7
  void resetWithoutRelease() { Obj = nullptr; }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::resetWithoutRelease()
Line
Count
Source
179
14.0k
  void resetWithoutRelease() { Obj = nullptr; }
180
181
private:
182
43.1M
  void retain() {
183
43.1M
    if (Obj)
184
41.6M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
43.1M
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::retain()
Line
Count
Source
182
412k
  void retain() {
183
412k
    if (Obj)
184
412k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
412k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::retain()
Line
Count
Source
182
341k
  void retain() {
183
341k
    if (Obj)
184
341k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
341k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::retain()
Line
Count
Source
182
328k
  void retain() {
183
328k
    if (Obj)
184
302k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
328k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::retain()
Line
Count
Source
182
48.1k
  void retain() {
183
48.1k
    if (Obj)
184
48.1k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
48.1k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::retain()
Line
Count
Source
182
67.4k
  void retain() {
183
67.4k
    if (Obj)
184
66.5k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
67.4k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::retain()
Line
Count
Source
182
77.6k
  void retain() {
183
77.6k
    if (Obj)
184
45.1k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
77.6k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::retain()
Line
Count
Source
182
51.8k
  void retain() {
183
51.8k
    if (Obj)
184
51.8k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
51.8k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::retain()
Line
Count
Source
182
13.9k
  void retain() {
183
13.9k
    if (Obj)
184
9.17k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
13.9k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::retain()
Line
Count
Source
182
64.5k
  void retain() {
183
64.5k
    if (Obj)
184
59.5k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
64.5k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::retain()
Line
Count
Source
182
57.4k
  void retain() {
183
57.4k
    if (Obj)
184
52.4k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
57.4k
  }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::retain()
Line
Count
Source
182
53.0k
  void retain() {
183
53.0k
    if (Obj)
184
53.0k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
53.0k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::retain()
Line
Count
Source
182
5.15k
  void retain() {
183
5.15k
    if (Obj)
184
5.13k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
5.15k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::retain()
Line
Count
Source
182
228k
  void retain() {
183
228k
    if (Obj)
184
228k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
228k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::retain()
Line
Count
Source
182
55
  void retain() {
183
55
    if (Obj)
184
55
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
55
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::retain()
Line
Count
Source
182
27
  void retain() {
183
27
    if (Obj)
184
27
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
27
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::retain()
Line
Count
Source
182
6.74k
  void retain() {
183
6.74k
    if (Obj)
184
6.74k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
6.74k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::retain()
Line
Count
Source
182
36.0M
  void retain() {
183
36.0M
    if (Obj)
184
34.8M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
36.0M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::retain()
Line
Count
Source
182
2.87M
  void retain() {
183
2.87M
    if (Obj)
184
2.87M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
2.87M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::retain()
Line
Count
Source
182
27.2k
  void retain() {
183
27.2k
    if (Obj)
184
27.2k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
27.2k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::retain()
Line
Count
Source
182
774k
  void retain() {
183
774k
    if (Obj)
184
761k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
774k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::retain()
Line
Count
Source
182
31.3k
  void retain() {
183
31.3k
    if (Obj)
184
31.3k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
31.3k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::retain()
Line
Count
Source
182
2.68k
  void retain() {
183
2.68k
    if (Obj)
184
2.68k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
2.68k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::retain()
Line
Count
Source
182
2.70k
  void retain() {
183
2.70k
    if (Obj)
184
2.70k
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
2.70k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::retain()
Line
Count
Source
182
1.60M
  void retain() {
183
1.60M
    if (Obj)
184
1.48M
      IntrusiveRefCntPtrInfo<T>::retain(Obj);
185
1.60M
  }
186
187
49.6M
  void release() {
188
49.6M
    if (Obj)
189
37.7M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
49.6M
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::release()
Line
Count
Source
187
564k
  void release() {
188
564k
    if (Obj)
189
274k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
564k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions>::release()
Line
Count
Source
187
526k
  void release() {
188
526k
    if (Obj)
189
369k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
526k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>::release()
Line
Count
Source
187
513k
  void release() {
188
513k
    if (Obj)
189
326k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
513k
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>::release()
Line
Count
Source
187
48.1k
  void release() {
188
48.1k
    if (Obj)
189
48.1k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
48.1k
  }
llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::release()
Line
Count
Source
187
104k
  void release() {
188
104k
    if (Obj)
189
52.3k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
104k
  }
llvm::IntrusiveRefCntPtr<clang::ASTContext>::release()
Line
Count
Source
187
119k
  void release() {
188
119k
    if (Obj)
189
36.7k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
119k
  }
llvm::IntrusiveRefCntPtr<clang::FileManager>::release()
Line
Count
Source
187
103k
  void release() {
188
103k
    if (Obj)
189
45.4k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
103k
  }
llvm::IntrusiveRefCntPtr<clang::SourceManager>::release()
Line
Count
Source
187
99.1k
  void release() {
188
99.1k
    if (Obj)
189
38.3k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
99.1k
  }
llvm::IntrusiveRefCntPtr<clang::InMemoryModuleCache>::release()
Line
Count
Source
187
43.0k
  void release() {
188
43.0k
    if (Obj)
189
38.8k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
43.0k
  }
llvm::IntrusiveRefCntPtr<clang::TargetInfo>::release()
Line
Count
Source
187
121k
  void release() {
188
121k
    if (Obj)
189
37.6k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
121k
  }
llvm::IntrusiveRefCntPtr<clang::ASTReader>::release()
Line
Count
Source
187
100k
  void release() {
188
100k
    if (Obj)
189
9.12k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
100k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalASTSource>::release()
Line
Count
Source
187
42.0k
  void release() {
188
42.0k
    if (Obj)
189
5.07k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
42.0k
  }
llvm::IntrusiveRefCntPtr<clang::AnalyzerOptions>::release()
Line
Count
Source
187
215k
  void release() {
188
215k
    if (Obj)
189
214k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
215k
  }
llvm::IntrusiveRefCntPtr<clang::ExternalSemaSource>::release()
Line
Count
Source
187
32.8k
  void release() {
188
32.8k
    if (Obj)
189
82
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
32.8k
  }
ChainedIncludesSource.cpp:llvm::IntrusiveRefCntPtr<(anonymous namespace)::ChainedIncludesSource>::release()
Line
Count
Source
187
27
  void release() {
188
27
    if (Obj)
189
0
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
27
  }
llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>::release()
Line
Count
Source
187
6.74k
  void release() {
188
6.74k
    if (Obj)
189
6.73k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
6.74k
  }
llvm::IntrusiveRefCntPtr<clang::RopeRefCountString>::release()
Line
Count
Source
187
3.22M
  void release() {
188
3.22M
    if (Obj)
189
1.48M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
3.22M
  }
llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>::release()
Line
Count
Source
187
39.5M
  void release() {
188
39.5M
    if (Obj)
189
31.0M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
39.5M
  }
llvm::IntrusiveRefCntPtr<clang::ast_matchers::internal::DynMatcherInterface>::release()
Line
Count
Source
187
3.35M
  void release() {
188
3.35M
    if (Obj)
189
2.87M
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
3.35M
  }
llvm::IntrusiveRefCntPtr<clang::ento::CallEvent const>::release()
Line
Count
Source
187
774k
  void release() {
188
774k
    if (Obj)
189
761k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
774k
  }
llvm::IntrusiveRefCntPtr<clang::ento::ObjCMethodCall const>::release()
Line
Count
Source
187
27.2k
  void release() {
188
27.2k
    if (Obj)
189
27.2k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
27.2k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXConstructorCall const>::release()
Line
Count
Source
187
31.3k
  void release() {
188
31.3k
    if (Obj)
189
31.3k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
31.3k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXDestructorCall const>::release()
Line
Count
Source
187
2.68k
  void release() {
188
2.68k
    if (Obj)
189
2.68k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
2.68k
  }
llvm::IntrusiveRefCntPtr<clang::ento::CXXAllocatorCall const>::release()
Line
Count
Source
187
2.70k
  void release() {
188
2.70k
    if (Obj)
189
2.70k
      IntrusiveRefCntPtrInfo<T>::release(Obj);
190
2.70k
  }
191
192
  template <typename X> friend class IntrusiveRefCntPtr;
193
};
194
195
template <class T, class U>
196
inline bool operator==(const IntrusiveRefCntPtr<T> &A,
197
1.65M
                       const IntrusiveRefCntPtr<U> &B) {
198
1.65M
  return A.get() == B.get();
199
1.65M
}
bool llvm::operator==<llvm::vfs::FileSystem, llvm::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
197
317
                       const IntrusiveRefCntPtr<U> &B) {
198
317
  return A.get() == B.get();
199
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
197
1.65M
                       const IntrusiveRefCntPtr<U> &B) {
198
1.65M
  return A.get() == B.get();
199
1.65M
}
200
201
template <class T, class U>
202
inline bool operator!=(const IntrusiveRefCntPtr<T> &A,
203
257k
                       const IntrusiveRefCntPtr<U> &B) {
204
257k
  return A.get() != B.get();
205
257k
}
bool llvm::operator!=<llvm::vfs::FileSystem, llvm::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
203
247
                       const IntrusiveRefCntPtr<U> &B) {
204
247
  return A.get() != B.get();
205
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
203
257k
                       const IntrusiveRefCntPtr<U> &B) {
204
257k
  return A.get() != B.get();
205
257k
}
206
207
template <class T, class U>
208
inline bool operator==(const IntrusiveRefCntPtr<T> &A, U *B) {
209
  return A.get() == B;
210
}
211
212
template <class T, class U>
213
inline bool operator!=(const IntrusiveRefCntPtr<T> &A, U *B) {
214
  return A.get() != B;
215
}
216
217
template <class T, class U>
218
inline bool operator==(T *A, const IntrusiveRefCntPtr<U> &B) {
219
  return A == B.get();
220
}
221
222
template <class T, class U>
223
inline bool operator!=(T *A, const IntrusiveRefCntPtr<U> &B) {
224
  return A != B.get();
225
}
226
227
template <class T>
228
311k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
311k
  return !B;
230
311k
}
bool llvm::operator==<clang::DiagnosticsEngine>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&)
Line
Count
Source
228
39.5k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
39.5k
  return !B;
230
39.5k
}
bool llvm::operator==<clang::TargetInfo>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&)
Line
Count
Source
228
51.4k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
51.4k
  return !B;
230
51.4k
}
bool llvm::operator==<llvm::vfs::FileSystem>(std::nullptr_t, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&)
Line
Count
Source
228
37.0k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
37.0k
  return !B;
230
37.0k
}
bool llvm::operator==<clang::FileManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::FileManager> const&)
Line
Count
Source
228
47.0k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
47.0k
  return !B;
230
47.0k
}
bool llvm::operator==<clang::SourceManager>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::SourceManager> const&)
Line
Count
Source
228
87.0k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
87.0k
  return !B;
230
87.0k
}
bool llvm::operator==<clang::ASTContext>(std::nullptr_t, llvm::IntrusiveRefCntPtr<clang::ASTContext> const&)
Line
Count
Source
228
49.2k
bool operator==(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
229
49.2k
  return !B;
230
49.2k
}
231
232
template <class T>
233
311k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
311k
  return B == A;
235
311k
}
bool llvm::operator==<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
233
39.5k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
39.5k
  return B == A;
235
39.5k
}
bool llvm::operator==<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
233
51.4k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
51.4k
  return B == A;
235
51.4k
}
bool llvm::operator==<llvm::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&, std::nullptr_t)
Line
Count
Source
233
37.0k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
37.0k
  return B == A;
235
37.0k
}
bool llvm::operator==<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
233
47.0k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
47.0k
  return B == A;
235
47.0k
}
bool llvm::operator==<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
233
87.0k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
87.0k
  return B == A;
235
87.0k
}
bool llvm::operator==<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
233
49.2k
bool operator==(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
234
49.2k
  return B == A;
235
49.2k
}
236
237
template <class T>
238
bool operator!=(std::nullptr_t A, const IntrusiveRefCntPtr<T> &B) {
239
  return !(A == B);
240
}
241
242
template <class T>
243
311k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
311k
  return !(A == B);
245
311k
}
bool llvm::operator!=<clang::DiagnosticsEngine>(llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine> const&, std::nullptr_t)
Line
Count
Source
243
39.5k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
39.5k
  return !(A == B);
245
39.5k
}
bool llvm::operator!=<clang::TargetInfo>(llvm::IntrusiveRefCntPtr<clang::TargetInfo> const&, std::nullptr_t)
Line
Count
Source
243
51.4k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
51.4k
  return !(A == B);
245
51.4k
}
bool llvm::operator!=<llvm::vfs::FileSystem>(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> const&, std::nullptr_t)
Line
Count
Source
243
37.0k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
37.0k
  return !(A == B);
245
37.0k
}
bool llvm::operator!=<clang::FileManager>(llvm::IntrusiveRefCntPtr<clang::FileManager> const&, std::nullptr_t)
Line
Count
Source
243
47.0k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
47.0k
  return !(A == B);
245
47.0k
}
bool llvm::operator!=<clang::SourceManager>(llvm::IntrusiveRefCntPtr<clang::SourceManager> const&, std::nullptr_t)
Line
Count
Source
243
87.0k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
87.0k
  return !(A == B);
245
87.0k
}
bool llvm::operator!=<clang::ASTContext>(llvm::IntrusiveRefCntPtr<clang::ASTContext> const&, std::nullptr_t)
Line
Count
Source
243
49.2k
bool operator!=(const IntrusiveRefCntPtr<T> &A, std::nullptr_t B) {
244
49.2k
  return !(A == B);
245
49.2k
}
246
247
// Make IntrusiveRefCntPtr work with dyn_cast, isa, and the other idioms from
248
// Casting.h.
249
template <typename From> struct simplify_type;
250
251
template <class T> struct simplify_type<IntrusiveRefCntPtr<T>> {
252
  using SimpleType = T *;
253
254
  static SimpleType getSimplifiedValue(IntrusiveRefCntPtr<T> &Val) {
255
    return Val.get();
256
  }
257
};
258
259
template <class T> struct simplify_type<const IntrusiveRefCntPtr<T>> {
260
  using SimpleType = /*const*/ T *;
261
262
  static SimpleType getSimplifiedValue(const IntrusiveRefCntPtr<T> &Val) {
263
    return Val.get();
264
  }
265
};
266
267
} // end namespace llvm
268
269
#endif // LLVM_ADT_INTRUSIVEREFCNTPTR_H