Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h
Line
Count
Source (jump to first uncovered line)
1
//===- CheckerManager.h - Static Analyzer Checker Manager -------*- 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
// Defines the Static Analyzer Checker Manager.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_CLANG_STATICANALYZER_CORE_CHECKERMANAGER_H
14
#define LLVM_CLANG_STATICANALYZER_CORE_CHECKERMANAGER_H
15
16
#include "clang/Analysis/ProgramPoint.h"
17
#include "clang/Basic/LangOptions.h"
18
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h"
19
#include "clang/StaticAnalyzer/Core/PathSensitive/Store.h"
20
#include "llvm/ADT/ArrayRef.h"
21
#include "llvm/ADT/DenseMap.h"
22
#include "llvm/ADT/SmallVector.h"
23
#include "llvm/ADT/StringRef.h"
24
#include <vector>
25
26
namespace clang {
27
28
class AnalyzerOptions;
29
class CallExpr;
30
class CXXNewExpr;
31
class Decl;
32
class LocationContext;
33
class Stmt;
34
class TranslationUnitDecl;
35
36
namespace ento {
37
38
class AnalysisManager;
39
class BugReporter;
40
class CallEvent;
41
class CheckerBase;
42
class CheckerContext;
43
class CheckerRegistry;
44
class ExplodedGraph;
45
class ExplodedNode;
46
class ExplodedNodeSet;
47
class ExprEngine;
48
class MemRegion;
49
struct NodeBuilderContext;
50
class ObjCMethodCall;
51
class RegionAndSymbolInvalidationTraits;
52
class SVal;
53
class SymbolReaper;
54
55
template <typename T> class CheckerFn;
56
57
template <typename RET, typename... Ps>
58
class CheckerFn<RET(Ps...)> {
59
  using Func = RET (*)(void *, Ps...);
60
61
  Func Fn;
62
63
public:
64
  CheckerBase *Checker;
65
66
43.6k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void ()>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*))
Line
Count
Source
66
13.6k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::Stmt const*, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::Stmt const*, clang::ento::CheckerContext&))
Line
Count
Source
66
11.2k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::CallEvent const&, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::CallEvent const&, clang::ento::CheckerContext&))
Line
Count
Source
66
4.83k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ReturnStmt const*, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ReturnStmt const*, clang::ento::CheckerContext&))
Line
Count
Source
66
1.08k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::CXXNewExpr const*, clang::ento::SVal, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::CXXNewExpr const*, clang::ento::SVal, clang::ento::CheckerContext&))
Line
Count
Source
66
187
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::SVal const&, clang::ento::SVal const&, clang::Stmt const*, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::SVal const&, clang::ento::SVal const&, clang::Stmt const*, clang::ento::CheckerContext&))
Line
Count
Source
66
1.59k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*> > const*, llvm::ArrayRef<clang::ento::MemRegion const*>, llvm::ArrayRef<clang::ento::MemRegion const*>, clang::LocationContext const*, clang::ento::CallEvent const*)>::CheckerFn(clang::ento::CheckerBase*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (*)(void*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*> > const*, llvm::ArrayRef<clang::ento::MemRegion const*>, llvm::ArrayRef<clang::ento::MemRegion const*>, clang::LocationContext const*, clang::ento::CallEvent const*))
Line
Count
Source
66
326
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymbolReaper&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymbolReaper&))
Line
Count
Source
66
214
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&))
Line
Count
Source
66
252
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::SVal const&, bool, clang::Stmt const*, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::SVal const&, bool, clang::Stmt const*, clang::ento::CheckerContext&))
Line
Count
Source
66
1.62k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::ObjCMethodCall const&, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::ObjCMethodCall const&, clang::ento::CheckerContext&))
Line
Count
Source
66
3.87k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::SymbolReaper&, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::SymbolReaper&, clang::ento::CheckerContext&))
Line
Count
Source
66
1.65k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*> > const&, clang::ento::CallEvent const*, clang::ento::PointerEscapeKind, clang::ento::RegionAndSymbolInvalidationTraits*)>::CheckerFn(clang::ento::CheckerBase*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (*)(void*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*> > const&, clang::ento::CallEvent const*, clang::ento::PointerEscapeKind, clang::ento::RegionAndSymbolInvalidationTraits*))
Line
Count
Source
66
465
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<bool (clang::ento::CallEvent const&, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, bool (*)(void*, clang::ento::CallEvent const&, clang::ento::CheckerContext&))
Line
Count
Source
66
1.28k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&))
Line
Count
Source
66
735
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::CheckerContext&))
Line
Count
Source
66
155
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal const&, bool)>::CheckerFn(clang::ento::CheckerBase*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (*)(void*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal const&, bool))
Line
Count
Source
66
313
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::TranslationUnitDecl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::TranslationUnitDecl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&))
Line
Count
Source
66
34
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (void const*)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, void const*))
Line
Count
Source
66
47
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
67
68
3.86M
  RET operator()(Ps... ps) const {
69
3.86M
    return Fn(Checker, ps...);
70
3.86M
  }
clang::ento::CheckerFn<void (void const*)>::operator()(void const*) const
Line
Count
Source
68
25
  RET operator()(Ps... ps) const {
69
25
    return Fn(Checker, ps...);
70
25
  }
clang::ento::CheckerFn<void (clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&)>::operator()(clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&) const
Line
Count
Source
68
8.10k
  RET operator()(Ps... ps) const {
69
8.10k
    return Fn(Checker, ps...);
70
8.10k
  }
clang::ento::CheckerFn<void (clang::Stmt const*, clang::ento::CheckerContext&)>::operator()(clang::Stmt const*, clang::ento::CheckerContext&) const
Line
Count
Source
68
1.03M
  RET operator()(Ps... ps) const {
69
1.03M
    return Fn(Checker, ps...);
70
1.03M
  }
clang::ento::CheckerFn<void (clang::ento::ObjCMethodCall const&, clang::ento::CheckerContext&)>::operator()(clang::ento::ObjCMethodCall const&, clang::ento::CheckerContext&) const
Line
Count
Source
68
17.6k
  RET operator()(Ps... ps) const {
69
17.6k
    return Fn(Checker, ps...);
70
17.6k
  }
clang::ento::CheckerFn<void (clang::ento::CallEvent const&, clang::ento::CheckerContext&)>::operator()(clang::ento::CallEvent const&, clang::ento::CheckerContext&) const
Line
Count
Source
68
594k
  RET operator()(Ps... ps) const {
69
594k
    return Fn(Checker, ps...);
70
594k
  }
clang::ento::CheckerFn<void (clang::ento::SVal const&, bool, clang::Stmt const*, clang::ento::CheckerContext&)>::operator()(clang::ento::SVal const&, bool, clang::Stmt const*, clang::ento::CheckerContext&) const
Line
Count
Source
68
442k
  RET operator()(Ps... ps) const {
69
442k
    return Fn(Checker, ps...);
70
442k
  }
clang::ento::CheckerFn<void (clang::ento::SVal const&, clang::ento::SVal const&, clang::Stmt const*, clang::ento::CheckerContext&)>::operator()(clang::ento::SVal const&, clang::ento::SVal const&, clang::Stmt const*, clang::ento::CheckerContext&) const
Line
Count
Source
68
136k
  RET operator()(Ps... ps) const {
69
136k
    return Fn(Checker, ps...);
70
136k
  }
clang::ento::CheckerFn<void (clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&)>::operator()(clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&) const
Line
Count
Source
68
5.71k
  RET operator()(Ps... ps) const {
69
5.71k
    return Fn(Checker, ps...);
70
5.71k
  }
clang::ento::CheckerFn<void (clang::ento::CheckerContext&)>::operator()(clang::ento::CheckerContext&) const
Line
Count
Source
68
7.33k
  RET operator()(Ps... ps) const {
69
7.33k
    return Fn(Checker, ps...);
70
7.33k
  }
clang::ento::CheckerFn<void (clang::ReturnStmt const*, clang::ento::CheckerContext&)>::operator()(clang::ReturnStmt const*, clang::ento::CheckerContext&) const
Line
Count
Source
68
79.5k
  RET operator()(Ps... ps) const {
69
79.5k
    return Fn(Checker, ps...);
70
79.5k
  }
clang::ento::CheckerFn<void (clang::CXXNewExpr const*, clang::ento::SVal, clang::ento::CheckerContext&)>::operator()(clang::CXXNewExpr const*, clang::ento::SVal, clang::ento::CheckerContext&) const
Line
Count
Source
68
624
  RET operator()(Ps... ps) const {
69
624
    return Fn(Checker, ps...);
70
624
  }
clang::ento::CheckerFn<void (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymbolReaper&)>::operator()(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymbolReaper&) const
Line
Count
Source
68
114k
  RET operator()(Ps... ps) const {
69
114k
    return Fn(Checker, ps...);
70
114k
  }
clang::ento::CheckerFn<void (clang::ento::SymbolReaper&, clang::ento::CheckerContext&)>::operator()(clang::ento::SymbolReaper&, clang::ento::CheckerContext&) const
Line
Count
Source
68
991k
  RET operator()(Ps... ps) const {
69
991k
    return Fn(Checker, ps...);
70
991k
  }
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*> > const*, llvm::ArrayRef<clang::ento::MemRegion const*>, llvm::ArrayRef<clang::ento::MemRegion const*>, clang::LocationContext const*, clang::ento::CallEvent const*)>::operator()(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*> > const*, llvm::ArrayRef<clang::ento::MemRegion const*>, llvm::ArrayRef<clang::ento::MemRegion const*>, clang::LocationContext const*, clang::ento::CallEvent const*) const
Line
Count
Source
68
95.9k
  RET operator()(Ps... ps) const {
69
95.9k
    return Fn(Checker, ps...);
70
95.9k
  }
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*> > const&, clang::ento::CallEvent const*, clang::ento::PointerEscapeKind, clang::ento::RegionAndSymbolInvalidationTraits*)>::operator()(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*> > const&, clang::ento::CallEvent const*, clang::ento::PointerEscapeKind, clang::ento::RegionAndSymbolInvalidationTraits*) const
Line
Count
Source
68
24.5k
  RET operator()(Ps... ps) const {
69
24.5k
    return Fn(Checker, ps...);
70
24.5k
  }
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal const&, bool)>::operator()(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal const&, bool) const
Line
Count
Source
68
179k
  RET operator()(Ps... ps) const {
69
179k
    return Fn(Checker, ps...);
70
179k
  }
clang::ento::CheckerFn<bool (clang::ento::CallEvent const&, clang::ento::CheckerContext&)>::operator()(clang::ento::CallEvent const&, clang::ento::CheckerContext&) const
Line
Count
Source
68
116k
  RET operator()(Ps... ps) const {
69
116k
    return Fn(Checker, ps...);
70
116k
  }
clang::ento::CheckerFn<void (clang::TranslationUnitDecl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&)>::operator()(clang::TranslationUnitDecl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&) const
Line
Count
Source
68
34
  RET operator()(Ps... ps) const {
69
34
    return Fn(Checker, ps...);
70
34
  }
clang::ento::CheckerFn<void ()>::operator()() const
Line
Count
Source
68
13.6k
  RET operator()(Ps... ps) const {
69
13.6k
    return Fn(Checker, ps...);
70
13.6k
  }
71
};
72
73
/// Describes the different reasons a pointer escapes
74
/// during analysis.
75
enum PointerEscapeKind {
76
  /// A pointer escapes due to binding its value to a location
77
  /// that the analyzer cannot track.
78
  PSK_EscapeOnBind,
79
80
  /// The pointer has been passed to a function call directly.
81
  PSK_DirectEscapeOnCall,
82
83
  /// The pointer has been passed to a function indirectly.
84
  /// For example, the pointer is accessible through an
85
  /// argument to a function.
86
  PSK_IndirectEscapeOnCall,
87
88
  /// The reason for pointer escape is unknown. For example,
89
  /// a region containing this pointer is invalidated.
90
  PSK_EscapeOther
91
};
92
93
// This wrapper is used to ensure that only StringRefs originating from the
94
// CheckerRegistry are used as check names. We want to make sure all check
95
// name strings have a lifetime that keeps them alive at least until the path
96
// diagnostics have been processed.
97
class CheckName {
98
  friend class ::clang::ento::CheckerRegistry;
99
100
  StringRef Name;
101
102
15.3k
  explicit CheckName(StringRef Name) : Name(Name) {}
103
104
public:
105
17.4k
  CheckName() = default;
106
107
13.9k
  StringRef getName() const { return Name; }
108
};
109
110
enum class ObjCMessageVisitKind {
111
  Pre,
112
  Post,
113
  MessageNil
114
};
115
116
class CheckerManager {
117
  ASTContext &Context;
118
  const LangOptions LangOpts;
119
  AnalyzerOptions &AOptions;
120
  CheckName CurrentCheckName;
121
122
public:
123
  CheckerManager(ASTContext &Context, AnalyzerOptions &AOptions)
124
918
      : Context(Context), LangOpts(Context.getLangOpts()), AOptions(AOptions) {}
125
126
  ~CheckerManager();
127
128
15.3k
  void setCurrentCheckName(CheckName name) { CurrentCheckName = name; }
129
838
  CheckName getCurrentCheckName() const { return CurrentCheckName; }
130
131
  bool hasPathSensitiveCheckers() const;
132
133
  void finishedCheckerRegistration();
134
135
0
  const LangOptions &getLangOpts() const { return LangOpts; }
136
544
  AnalyzerOptions &getAnalyzerOptions() { return AOptions; }
137
10
  ASTContext &getASTContext() { return Context; }
138
139
  /// Emits an error through a DiagnosticsEngine about an invalid user supplied
140
  /// checker option value.
141
  void reportInvalidCheckerOptionValue(const CheckerBase *C,
142
                                       StringRef OptionName,
143
                                       StringRef ExpectedValueDesc);
144
145
  using CheckerRef = CheckerBase *;
146
  using CheckerTag = const void *;
147
  using CheckerDtor = CheckerFn<void ()>;
148
149
//===----------------------------------------------------------------------===//
150
// Checker registration.
151
//===----------------------------------------------------------------------===//
152
153
  /// Used to register checkers.
154
  /// All arguments are automatically passed through to the checker
155
  /// constructor.
156
  ///
157
  /// \returns a pointer to the checker object.
158
  template <typename CHECKER, typename... AT>
159
13.6k
  CHECKER *registerChecker(AT &&... Args) {
160
13.6k
    CheckerTag tag = getTag<CHECKER>();
161
13.6k
    CheckerRef &ref = CheckerTags[tag];
162
13.6k
    assert(!ref && "Checker already registered, use getChecker!");
163
13.6k
164
13.6k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
13.6k
    checker->Name = CurrentCheckName;
166
13.6k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
13.6k
    CHECKER::_register(checker, *this);
168
13.6k
    ref = checker;
169
13.6k
    return checker;
170
13.6k
  }
AnalysisOrderChecker.cpp:(anonymous namespace)::AnalysisOrderChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::AnalysisOrderChecker>()
Line
Count
Source
159
8
  CHECKER *registerChecker(AT &&... Args) {
160
8
    CheckerTag tag = getTag<CHECKER>();
161
8
    CheckerRef &ref = CheckerTags[tag];
162
8
    assert(!ref && "Checker already registered, use getChecker!");
163
8
164
8
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
8
    checker->Name = CurrentCheckName;
166
8
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
8
    CHECKER::_register(checker, *this);
168
8
    ref = checker;
169
8
    return checker;
170
8
  }
AnalyzerStatsChecker.cpp:(anonymous namespace)::AnalyzerStatsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::AnalyzerStatsChecker>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
ArrayBoundChecker.cpp:(anonymous namespace)::ArrayBoundChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ArrayBoundChecker>()
Line
Count
Source
159
7
  CHECKER *registerChecker(AT &&... Args) {
160
7
    CheckerTag tag = getTag<CHECKER>();
161
7
    CheckerRef &ref = CheckerTags[tag];
162
7
    assert(!ref && "Checker already registered, use getChecker!");
163
7
164
7
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
7
    checker->Name = CurrentCheckName;
166
7
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
7
    CHECKER::_register(checker, *this);
168
7
    ref = checker;
169
7
    return checker;
170
7
  }
ArrayBoundCheckerV2.cpp:(anonymous namespace)::ArrayBoundCheckerV2* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ArrayBoundCheckerV2>()
Line
Count
Source
159
8
  CHECKER *registerChecker(AT &&... Args) {
160
8
    CheckerTag tag = getTag<CHECKER>();
161
8
    CheckerRef &ref = CheckerTags[tag];
162
8
    assert(!ref && "Checker already registered, use getChecker!");
163
8
164
8
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
8
    checker->Name = CurrentCheckName;
166
8
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
8
    CHECKER::_register(checker, *this);
168
8
    ref = checker;
169
8
    return checker;
170
8
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::NilArgChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NilArgChecker>()
Line
Count
Source
159
30
  CHECKER *registerChecker(AT &&... Args) {
160
30
    CheckerTag tag = getTag<CHECKER>();
161
30
    CheckerRef &ref = CheckerTags[tag];
162
30
    assert(!ref && "Checker already registered, use getChecker!");
163
30
164
30
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
30
    checker->Name = CurrentCheckName;
166
30
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
30
    CHECKER::_register(checker, *this);
168
30
    ref = checker;
169
30
    return checker;
170
30
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::CFNumberChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFNumberChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::CFRetainReleaseChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFRetainReleaseChecker>()
Line
Count
Source
159
34
  CHECKER *registerChecker(AT &&... Args) {
160
34
    CheckerTag tag = getTag<CHECKER>();
161
34
    CheckerRef &ref = CheckerTags[tag];
162
34
    assert(!ref && "Checker already registered, use getChecker!");
163
34
164
34
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
34
    checker->Name = CurrentCheckName;
166
34
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
34
    CHECKER::_register(checker, *this);
168
34
    ref = checker;
169
34
    return checker;
170
34
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::ClassReleaseChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ClassReleaseChecker>()
Line
Count
Source
159
32
  CHECKER *registerChecker(AT &&... Args) {
160
32
    CheckerTag tag = getTag<CHECKER>();
161
32
    CheckerRef &ref = CheckerTags[tag];
162
32
    assert(!ref && "Checker already registered, use getChecker!");
163
32
164
32
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
32
    checker->Name = CurrentCheckName;
166
32
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
32
    CHECKER::_register(checker, *this);
168
32
    ref = checker;
169
32
    return checker;
170
32
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::VariadicMethodTypeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::VariadicMethodTypeChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::ObjCLoopChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCLoopChecker>()
Line
Count
Source
159
25
  CHECKER *registerChecker(AT &&... Args) {
160
25
    CheckerTag tag = getTag<CHECKER>();
161
25
    CheckerRef &ref = CheckerTags[tag];
162
25
    assert(!ref && "Checker already registered, use getChecker!");
163
25
164
25
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
25
    checker->Name = CurrentCheckName;
166
25
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
25
    CHECKER::_register(checker, *this);
168
25
    ref = checker;
169
25
    return checker;
170
25
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::ObjCNonNilReturnValueChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCNonNilReturnValueChecker>()
Line
Count
Source
159
26
  CHECKER *registerChecker(AT &&... Args) {
160
26
    CheckerTag tag = getTag<CHECKER>();
161
26
    CheckerRef &ref = CheckerTags[tag];
162
26
    assert(!ref && "Checker already registered, use getChecker!");
163
26
164
26
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
26
    checker->Name = CurrentCheckName;
166
26
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
26
    CHECKER::_register(checker, *this);
168
26
    ref = checker;
169
26
    return checker;
170
26
  }
BlockInCriticalSectionChecker.cpp:(anonymous namespace)::BlockInCriticalSectionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::BlockInCriticalSectionChecker>()
Line
Count
Source
159
6
  CHECKER *registerChecker(AT &&... Args) {
160
6
    CheckerTag tag = getTag<CHECKER>();
161
6
    CheckerRef &ref = CheckerTags[tag];
162
6
    assert(!ref && "Checker already registered, use getChecker!");
163
6
164
6
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
6
    checker->Name = CurrentCheckName;
166
6
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
6
    CHECKER::_register(checker, *this);
168
6
    ref = checker;
169
6
    return checker;
170
6
  }
BoolAssignmentChecker.cpp:(anonymous namespace)::BoolAssignmentChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::BoolAssignmentChecker>()
Line
Count
Source
159
71
  CHECKER *registerChecker(AT &&... Args) {
160
71
    CheckerTag tag = getTag<CHECKER>();
161
71
    CheckerRef &ref = CheckerTags[tag];
162
71
    assert(!ref && "Checker already registered, use getChecker!");
163
71
164
71
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
71
    checker->Name = CurrentCheckName;
166
71
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
71
    CHECKER::_register(checker, *this);
168
71
    ref = checker;
169
71
    return checker;
170
71
  }
BuiltinFunctionChecker.cpp:(anonymous namespace)::BuiltinFunctionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::BuiltinFunctionChecker>()
Line
Count
Source
159
685
  CHECKER *registerChecker(AT &&... Args) {
160
685
    CheckerTag tag = getTag<CHECKER>();
161
685
    CheckerRef &ref = CheckerTags[tag];
162
685
    assert(!ref && "Checker already registered, use getChecker!");
163
685
164
685
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
685
    checker->Name = CurrentCheckName;
166
685
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
685
    CHECKER::_register(checker, *this);
168
685
    ref = checker;
169
685
    return checker;
170
685
  }
CStringChecker.cpp:(anonymous namespace)::CStringChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CStringChecker>()
Line
Count
Source
159
198
  CHECKER *registerChecker(AT &&... Args) {
160
198
    CheckerTag tag = getTag<CHECKER>();
161
198
    CheckerRef &ref = CheckerTags[tag];
162
198
    assert(!ref && "Checker already registered, use getChecker!");
163
198
164
198
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
198
    checker->Name = CurrentCheckName;
166
198
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
198
    CHECKER::_register(checker, *this);
168
198
    ref = checker;
169
198
    return checker;
170
198
  }
CStringSyntaxChecker.cpp:(anonymous namespace)::CStringSyntaxChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CStringSyntaxChecker>()
Line
Count
Source
159
52
  CHECKER *registerChecker(AT &&... Args) {
160
52
    CheckerTag tag = getTag<CHECKER>();
161
52
    CheckerRef &ref = CheckerTags[tag];
162
52
    assert(!ref && "Checker already registered, use getChecker!");
163
52
164
52
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
52
    checker->Name = CurrentCheckName;
166
52
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
52
    CHECKER::_register(checker, *this);
168
52
    ref = checker;
169
52
    return checker;
170
52
  }
CallAndMessageChecker.cpp:(anonymous namespace)::CallAndMessageChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CallAndMessageChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
CastSizeChecker.cpp:(anonymous namespace)::CastSizeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CastSizeChecker>()
Line
Count
Source
159
60
  CHECKER *registerChecker(AT &&... Args) {
160
60
    CheckerTag tag = getTag<CHECKER>();
161
60
    CheckerRef &ref = CheckerTags[tag];
162
60
    assert(!ref && "Checker already registered, use getChecker!");
163
60
164
60
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
60
    checker->Name = CurrentCheckName;
166
60
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
60
    CHECKER::_register(checker, *this);
168
60
    ref = checker;
169
60
    return checker;
170
60
  }
CastToStructChecker.cpp:(anonymous namespace)::CastToStructChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CastToStructChecker>()
Line
Count
Source
159
75
  CHECKER *registerChecker(AT &&... Args) {
160
75
    CheckerTag tag = getTag<CHECKER>();
161
75
    CheckerRef &ref = CheckerTags[tag];
162
75
    assert(!ref && "Checker already registered, use getChecker!");
163
75
164
75
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
75
    checker->Name = CurrentCheckName;
166
75
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
75
    CHECKER::_register(checker, *this);
168
75
    ref = checker;
169
75
    return checker;
170
75
  }
CastValueChecker.cpp:(anonymous namespace)::CastValueChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CastValueChecker>()
Line
Count
Source
159
12
  CHECKER *registerChecker(AT &&... Args) {
160
12
    CheckerTag tag = getTag<CHECKER>();
161
12
    CheckerRef &ref = CheckerTags[tag];
162
12
    assert(!ref && "Checker already registered, use getChecker!");
163
12
164
12
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
12
    checker->Name = CurrentCheckName;
166
12
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
12
    CHECKER::_register(checker, *this);
168
12
    ref = checker;
169
12
    return checker;
170
12
  }
CheckObjCDealloc.cpp:(anonymous namespace)::ObjCDeallocChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCDeallocChecker>()
Line
Count
Source
159
28
  CHECKER *registerChecker(AT &&... Args) {
160
28
    CheckerTag tag = getTag<CHECKER>();
161
28
    CheckerRef &ref = CheckerTags[tag];
162
28
    assert(!ref && "Checker already registered, use getChecker!");
163
28
164
28
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
28
    checker->Name = CurrentCheckName;
166
28
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
28
    CHECKER::_register(checker, *this);
168
28
    ref = checker;
169
28
    return checker;
170
28
  }
CheckObjCInstMethSignature.cpp:(anonymous namespace)::ObjCMethSigsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCMethSigsChecker>()
Line
Count
Source
159
25
  CHECKER *registerChecker(AT &&... Args) {
160
25
    CheckerTag tag = getTag<CHECKER>();
161
25
    CheckerRef &ref = CheckerTags[tag];
162
25
    assert(!ref && "Checker already registered, use getChecker!");
163
25
164
25
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
25
    checker->Name = CurrentCheckName;
166
25
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
25
    CHECKER::_register(checker, *this);
168
25
    ref = checker;
169
25
    return checker;
170
25
  }
CheckSecuritySyntaxOnly.cpp:(anonymous namespace)::SecuritySyntaxChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::SecuritySyntaxChecker>()
Line
Count
Source
159
22
  CHECKER *registerChecker(AT &&... Args) {
160
22
    CheckerTag tag = getTag<CHECKER>();
161
22
    CheckerRef &ref = CheckerTags[tag];
162
22
    assert(!ref && "Checker already registered, use getChecker!");
163
22
164
22
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
22
    checker->Name = CurrentCheckName;
166
22
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
22
    CHECKER::_register(checker, *this);
168
22
    ref = checker;
169
22
    return checker;
170
22
  }
CheckSizeofPointer.cpp:(anonymous namespace)::SizeofPointerChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::SizeofPointerChecker>()
Line
Count
Source
159
70
  CHECKER *registerChecker(AT &&... Args) {
160
70
    CheckerTag tag = getTag<CHECKER>();
161
70
    CheckerRef &ref = CheckerTags[tag];
162
70
    assert(!ref && "Checker already registered, use getChecker!");
163
70
164
70
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
70
    checker->Name = CurrentCheckName;
166
70
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
70
    CHECKER::_register(checker, *this);
168
70
    ref = checker;
169
70
    return checker;
170
70
  }
ChrootChecker.cpp:(anonymous namespace)::ChrootChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ChrootChecker>()
Line
Count
Source
159
5
  CHECKER *registerChecker(AT &&... Args) {
160
5
    CheckerTag tag = getTag<CHECKER>();
161
5
    CheckerRef &ref = CheckerTags[tag];
162
5
    assert(!ref && "Checker already registered, use getChecker!");
163
5
164
5
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
5
    checker->Name = CurrentCheckName;
166
5
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
5
    CHECKER::_register(checker, *this);
168
5
    ref = checker;
169
5
    return checker;
170
5
  }
CloneChecker.cpp:(anonymous namespace)::CloneChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CloneChecker>()
Line
Count
Source
159
28
  CHECKER *registerChecker(AT &&... Args) {
160
28
    CheckerTag tag = getTag<CHECKER>();
161
28
    CheckerRef &ref = CheckerTags[tag];
162
28
    assert(!ref && "Checker already registered, use getChecker!");
163
28
164
28
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
28
    checker->Name = CurrentCheckName;
166
28
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
28
    CHECKER::_register(checker, *this);
168
28
    ref = checker;
169
28
    return checker;
170
28
  }
ConversionChecker.cpp:(anonymous namespace)::ConversionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ConversionChecker>()
Line
Count
Source
159
70
  CHECKER *registerChecker(AT &&... Args) {
160
70
    CheckerTag tag = getTag<CHECKER>();
161
70
    CheckerRef &ref = CheckerTags[tag];
162
70
    assert(!ref && "Checker already registered, use getChecker!");
163
70
164
70
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
70
    checker->Name = CurrentCheckName;
166
70
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
70
    CHECKER::_register(checker, *this);
168
70
    ref = checker;
169
70
    return checker;
170
70
  }
CXXSelfAssignmentChecker.cpp:(anonymous namespace)::CXXSelfAssignmentChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CXXSelfAssignmentChecker>()
Line
Count
Source
159
39
  CHECKER *registerChecker(AT &&... Args) {
160
39
    CheckerTag tag = getTag<CHECKER>();
161
39
    CheckerRef &ref = CheckerTags[tag];
162
39
    assert(!ref && "Checker already registered, use getChecker!");
163
39
164
39
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
39
    checker->Name = CurrentCheckName;
166
39
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
39
    CHECKER::_register(checker, *this);
168
39
    ref = checker;
169
39
    return checker;
170
39
  }
DeadStoresChecker.cpp:(anonymous namespace)::DeadStoresChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DeadStoresChecker>()
Line
Count
Source
159
31
  CHECKER *registerChecker(AT &&... Args) {
160
31
    CheckerTag tag = getTag<CHECKER>();
161
31
    CheckerRef &ref = CheckerTags[tag];
162
31
    assert(!ref && "Checker already registered, use getChecker!");
163
31
164
31
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
31
    checker->Name = CurrentCheckName;
166
31
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
31
    CHECKER::_register(checker, *this);
168
31
    ref = checker;
169
31
    return checker;
170
31
  }
DebugCheckers.cpp:(anonymous namespace)::DominatorsTreeDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DominatorsTreeDumper>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
DebugCheckers.cpp:(anonymous namespace)::PostDominatorsTreeDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PostDominatorsTreeDumper>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
DebugCheckers.cpp:(anonymous namespace)::ControlDependencyTreeDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ControlDependencyTreeDumper>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
Unexecuted instantiation: DebugCheckers.cpp:(anonymous namespace)::LiveVariablesDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::LiveVariablesDumper>()
DebugCheckers.cpp:(anonymous namespace)::LiveStatementsDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::LiveStatementsDumper>()
Line
Count
Source
159
1
  CHECKER *registerChecker(AT &&... Args) {
160
1
    CheckerTag tag = getTag<CHECKER>();
161
1
    CheckerRef &ref = CheckerTags[tag];
162
1
    assert(!ref && "Checker already registered, use getChecker!");
163
1
164
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
1
    checker->Name = CurrentCheckName;
166
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
1
    CHECKER::_register(checker, *this);
168
1
    ref = checker;
169
1
    return checker;
170
1
  }
Unexecuted instantiation: DebugCheckers.cpp:(anonymous namespace)::CFGViewer* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFGViewer>()
DebugCheckers.cpp:(anonymous namespace)::CFGDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFGDumper>()
Line
Count
Source
159
33
  CHECKER *registerChecker(AT &&... Args) {
160
33
    CheckerTag tag = getTag<CHECKER>();
161
33
    CheckerRef &ref = CheckerTags[tag];
162
33
    assert(!ref && "Checker already registered, use getChecker!");
163
33
164
33
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
33
    checker->Name = CurrentCheckName;
166
33
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
33
    CHECKER::_register(checker, *this);
168
33
    ref = checker;
169
33
    return checker;
170
33
  }
Unexecuted instantiation: DebugCheckers.cpp:(anonymous namespace)::CallGraphViewer* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CallGraphViewer>()
DebugCheckers.cpp:(anonymous namespace)::CallGraphDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CallGraphDumper>()
Line
Count
Source
159
1
  CHECKER *registerChecker(AT &&... Args) {
160
1
    CheckerTag tag = getTag<CHECKER>();
161
1
    CheckerRef &ref = CheckerTags[tag];
162
1
    assert(!ref && "Checker already registered, use getChecker!");
163
1
164
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
1
    checker->Name = CurrentCheckName;
166
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
1
    CHECKER::_register(checker, *this);
168
1
    ref = checker;
169
1
    return checker;
170
1
  }
DebugCheckers.cpp:(anonymous namespace)::ConfigDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ConfigDumper>()
Line
Count
Source
159
6
  CHECKER *registerChecker(AT &&... Args) {
160
6
    CheckerTag tag = getTag<CHECKER>();
161
6
    CheckerRef &ref = CheckerTags[tag];
162
6
    assert(!ref && "Checker already registered, use getChecker!");
163
6
164
6
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
6
    checker->Name = CurrentCheckName;
166
6
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
6
    CHECKER::_register(checker, *this);
168
6
    ref = checker;
169
6
    return checker;
170
6
  }
Unexecuted instantiation: DebugCheckers.cpp:(anonymous namespace)::ExplodedGraphViewer* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ExplodedGraphViewer>()
DebugCheckers.cpp:(anonymous namespace)::ReportStmts* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ReportStmts>()
Line
Count
Source
159
1
  CHECKER *registerChecker(AT &&... Args) {
160
1
    CheckerTag tag = getTag<CHECKER>();
161
1
    CheckerRef &ref = CheckerTags[tag];
162
1
    assert(!ref && "Checker already registered, use getChecker!");
163
1
164
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
1
    checker->Name = CurrentCheckName;
166
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
1
    CHECKER::_register(checker, *this);
168
1
    ref = checker;
169
1
    return checker;
170
1
  }
DeleteWithNonVirtualDtorChecker.cpp:(anonymous namespace)::DeleteWithNonVirtualDtorChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DeleteWithNonVirtualDtorChecker>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
DereferenceChecker.cpp:(anonymous namespace)::DereferenceChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DereferenceChecker>()
Line
Count
Source
159
683
  CHECKER *registerChecker(AT &&... Args) {
160
683
    CheckerTag tag = getTag<CHECKER>();
161
683
    CheckerRef &ref = CheckerTags[tag];
162
683
    assert(!ref && "Checker already registered, use getChecker!");
163
683
164
683
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
683
    checker->Name = CurrentCheckName;
166
683
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
683
    CHECKER::_register(checker, *this);
168
683
    ref = checker;
169
683
    return checker;
170
683
  }
DirectIvarAssignment.cpp:(anonymous namespace)::DirectIvarAssignment* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DirectIvarAssignment>()
Line
Count
Source
159
3
  CHECKER *registerChecker(AT &&... Args) {
160
3
    CheckerTag tag = getTag<CHECKER>();
161
3
    CheckerRef &ref = CheckerTags[tag];
162
3
    assert(!ref && "Checker already registered, use getChecker!");
163
3
164
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
3
    checker->Name = CurrentCheckName;
166
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
3
    CHECKER::_register(checker, *this);
168
3
    ref = checker;
169
3
    return checker;
170
3
  }
DivZeroChecker.cpp:(anonymous namespace)::DivZeroChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DivZeroChecker>()
Line
Count
Source
159
682
  CHECKER *registerChecker(AT &&... Args) {
160
682
    CheckerTag tag = getTag<CHECKER>();
161
682
    CheckerRef &ref = CheckerTags[tag];
162
682
    assert(!ref && "Checker already registered, use getChecker!");
163
682
164
682
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
682
    checker->Name = CurrentCheckName;
166
682
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
682
    CHECKER::_register(checker, *this);
168
682
    ref = checker;
169
682
    return checker;
170
682
  }
DynamicTypePropagation.cpp:(anonymous namespace)::DynamicTypePropagation* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DynamicTypePropagation>()
Line
Count
Source
159
676
  CHECKER *registerChecker(AT &&... Args) {
160
676
    CheckerTag tag = getTag<CHECKER>();
161
676
    CheckerRef &ref = CheckerTags[tag];
162
676
    assert(!ref && "Checker already registered, use getChecker!");
163
676
164
676
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
676
    checker->Name = CurrentCheckName;
166
676
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
676
    CHECKER::_register(checker, *this);
168
676
    ref = checker;
169
676
    return checker;
170
676
  }
DynamicTypeChecker.cpp:(anonymous namespace)::DynamicTypeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DynamicTypeChecker>()
Line
Count
Source
159
72
  CHECKER *registerChecker(AT &&... Args) {
160
72
    CheckerTag tag = getTag<CHECKER>();
161
72
    CheckerRef &ref = CheckerTags[tag];
162
72
    assert(!ref && "Checker already registered, use getChecker!");
163
72
164
72
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
72
    checker->Name = CurrentCheckName;
166
72
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
72
    CHECKER::_register(checker, *this);
168
72
    ref = checker;
169
72
    return checker;
170
72
  }
EnumCastOutOfRangeChecker.cpp:(anonymous namespace)::EnumCastOutOfRangeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::EnumCastOutOfRangeChecker>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
ExprInspectionChecker.cpp:(anonymous namespace)::ExprInspectionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ExprInspectionChecker>()
Line
Count
Source
159
241
  CHECKER *registerChecker(AT &&... Args) {
160
241
    CheckerTag tag = getTag<CHECKER>();
161
241
    CheckerRef &ref = CheckerTags[tag];
162
241
    assert(!ref && "Checker already registered, use getChecker!");
163
241
164
241
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
241
    checker->Name = CurrentCheckName;
166
241
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
241
    CHECKER::_register(checker, *this);
168
241
    ref = checker;
169
241
    return checker;
170
241
  }
FixedAddressChecker.cpp:(anonymous namespace)::FixedAddressChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::FixedAddressChecker>()
Line
Count
Source
159
71
  CHECKER *registerChecker(AT &&... Args) {
160
71
    CheckerTag tag = getTag<CHECKER>();
161
71
    CheckerRef &ref = CheckerTags[tag];
162
71
    assert(!ref && "Checker already registered, use getChecker!");
163
71
164
71
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
71
    checker->Name = CurrentCheckName;
166
71
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
71
    CHECKER::_register(checker, *this);
168
71
    ref = checker;
169
71
    return checker;
170
71
  }
GCDAntipatternChecker.cpp:(anonymous namespace)::GCDAntipatternChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::GCDAntipatternChecker>()
Line
Count
Source
159
5
  CHECKER *registerChecker(AT &&... Args) {
160
5
    CheckerTag tag = getTag<CHECKER>();
161
5
    CheckerRef &ref = CheckerTags[tag];
162
5
    assert(!ref && "Checker already registered, use getChecker!");
163
5
164
5
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
5
    checker->Name = CurrentCheckName;
166
5
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
5
    CHECKER::_register(checker, *this);
168
5
    ref = checker;
169
5
    return checker;
170
5
  }
GenericTaintChecker.cpp:(anonymous namespace)::GenericTaintChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::GenericTaintChecker>()
Line
Count
Source
159
14
  CHECKER *registerChecker(AT &&... Args) {
160
14
    CheckerTag tag = getTag<CHECKER>();
161
14
    CheckerRef &ref = CheckerTags[tag];
162
14
    assert(!ref && "Checker already registered, use getChecker!");
163
14
164
14
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
14
    checker->Name = CurrentCheckName;
166
14
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
14
    CHECKER::_register(checker, *this);
168
14
    ref = checker;
169
14
    return checker;
170
14
  }
GTestChecker.cpp:(anonymous namespace)::GTestChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::GTestChecker>()
Line
Count
Source
159
7
  CHECKER *registerChecker(AT &&... Args) {
160
7
    CheckerTag tag = getTag<CHECKER>();
161
7
    CheckerRef &ref = CheckerTags[tag];
162
7
    assert(!ref && "Checker already registered, use getChecker!");
163
7
164
7
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
7
    checker->Name = CurrentCheckName;
166
7
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
7
    CHECKER::_register(checker, *this);
168
7
    ref = checker;
169
7
    return checker;
170
7
  }
IdenticalExprChecker.cpp:(anonymous namespace)::FindIdenticalExprChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::FindIdenticalExprChecker>()
Line
Count
Source
159
70
  CHECKER *registerChecker(AT &&... Args) {
160
70
    CheckerTag tag = getTag<CHECKER>();
161
70
    CheckerRef &ref = CheckerTags[tag];
162
70
    assert(!ref && "Checker already registered, use getChecker!");
163
70
164
70
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
70
    checker->Name = CurrentCheckName;
166
70
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
70
    CHECKER::_register(checker, *this);
168
70
    ref = checker;
169
70
    return checker;
170
70
  }
InnerPointerChecker.cpp:(anonymous namespace)::InnerPointerChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::InnerPointerChecker>()
Line
Count
Source
159
40
  CHECKER *registerChecker(AT &&... Args) {
160
40
    CheckerTag tag = getTag<CHECKER>();
161
40
    CheckerRef &ref = CheckerTags[tag];
162
40
    assert(!ref && "Checker already registered, use getChecker!");
163
40
164
40
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
40
    checker->Name = CurrentCheckName;
166
40
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
40
    CHECKER::_register(checker, *this);
168
40
    ref = checker;
169
40
    return checker;
170
40
  }
IteratorChecker.cpp:(anonymous namespace)::IteratorChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::IteratorChecker>()
Line
Count
Source
159
8
  CHECKER *registerChecker(AT &&... Args) {
160
8
    CheckerTag tag = getTag<CHECKER>();
161
8
    CheckerRef &ref = CheckerTags[tag];
162
8
    assert(!ref && "Checker already registered, use getChecker!");
163
8
164
8
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
8
    checker->Name = CurrentCheckName;
166
8
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
8
    CHECKER::_register(checker, *this);
168
8
    ref = checker;
169
8
    return checker;
170
8
  }
IvarInvalidationChecker.cpp:(anonymous namespace)::IvarInvalidationChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::IvarInvalidationChecker>()
Line
Count
Source
159
3
  CHECKER *registerChecker(AT &&... Args) {
160
3
    CheckerTag tag = getTag<CHECKER>();
161
3
    CheckerRef &ref = CheckerTags[tag];
162
3
    assert(!ref && "Checker already registered, use getChecker!");
163
3
164
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
3
    checker->Name = CurrentCheckName;
166
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
3
    CHECKER::_register(checker, *this);
168
3
    ref = checker;
169
3
    return checker;
170
3
  }
LLVMConventionsChecker.cpp:(anonymous namespace)::LLVMConventionsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::LLVMConventionsChecker>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
LocalizationChecker.cpp:(anonymous namespace)::NonLocalizedStringChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NonLocalizedStringChecker>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
LocalizationChecker.cpp:(anonymous namespace)::EmptyLocalizationContextChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::EmptyLocalizationContextChecker>()
Line
Count
Source
159
1
  CHECKER *registerChecker(AT &&... Args) {
160
1
    CheckerTag tag = getTag<CHECKER>();
161
1
    CheckerRef &ref = CheckerTags[tag];
162
1
    assert(!ref && "Checker already registered, use getChecker!");
163
1
164
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
1
    checker->Name = CurrentCheckName;
166
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
1
    CHECKER::_register(checker, *this);
168
1
    ref = checker;
169
1
    return checker;
170
1
  }
LocalizationChecker.cpp:(anonymous namespace)::PluralMisuseChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PluralMisuseChecker>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
MacOSKeychainAPIChecker.cpp:(anonymous namespace)::MacOSKeychainAPIChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MacOSKeychainAPIChecker>()
Line
Count
Source
159
25
  CHECKER *registerChecker(AT &&... Args) {
160
25
    CheckerTag tag = getTag<CHECKER>();
161
25
    CheckerRef &ref = CheckerTags[tag];
162
25
    assert(!ref && "Checker already registered, use getChecker!");
163
25
164
25
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
25
    checker->Name = CurrentCheckName;
166
25
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
25
    CHECKER::_register(checker, *this);
168
25
    ref = checker;
169
25
    return checker;
170
25
  }
MacOSXAPIChecker.cpp:(anonymous namespace)::MacOSXAPIChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MacOSXAPIChecker>()
Line
Count
Source
159
28
  CHECKER *registerChecker(AT &&... Args) {
160
28
    CheckerTag tag = getTag<CHECKER>();
161
28
    CheckerRef &ref = CheckerTags[tag];
162
28
    assert(!ref && "Checker already registered, use getChecker!");
163
28
164
28
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
28
    checker->Name = CurrentCheckName;
166
28
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
28
    CHECKER::_register(checker, *this);
168
28
    ref = checker;
169
28
    return checker;
170
28
  }
MallocChecker.cpp:(anonymous namespace)::MallocChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MallocChecker>()
Line
Count
Source
159
179
  CHECKER *registerChecker(AT &&... Args) {
160
179
    CheckerTag tag = getTag<CHECKER>();
161
179
    CheckerRef &ref = CheckerTags[tag];
162
179
    assert(!ref && "Checker already registered, use getChecker!");
163
179
164
179
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
179
    checker->Name = CurrentCheckName;
166
179
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
179
    CHECKER::_register(checker, *this);
168
179
    ref = checker;
169
179
    return checker;
170
179
  }
MallocOverflowSecurityChecker.cpp:(anonymous namespace)::MallocOverflowSecurityChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MallocOverflowSecurityChecker>()
Line
Count
Source
159
5
  CHECKER *registerChecker(AT &&... Args) {
160
5
    CheckerTag tag = getTag<CHECKER>();
161
5
    CheckerRef &ref = CheckerTags[tag];
162
5
    assert(!ref && "Checker already registered, use getChecker!");
163
5
164
5
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
5
    checker->Name = CurrentCheckName;
166
5
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
5
    CHECKER::_register(checker, *this);
168
5
    ref = checker;
169
5
    return checker;
170
5
  }
MallocSizeofChecker.cpp:(anonymous namespace)::MallocSizeofChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MallocSizeofChecker>()
Line
Count
Source
159
27
  CHECKER *registerChecker(AT &&... Args) {
160
27
    CheckerTag tag = getTag<CHECKER>();
161
27
    CheckerRef &ref = CheckerTags[tag];
162
27
    assert(!ref && "Checker already registered, use getChecker!");
163
27
164
27
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
27
    checker->Name = CurrentCheckName;
166
27
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
27
    CHECKER::_register(checker, *this);
168
27
    ref = checker;
169
27
    return checker;
170
27
  }
MmapWriteExecChecker.cpp:(anonymous namespace)::MmapWriteExecChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MmapWriteExecChecker>()
Line
Count
Source
159
3
  CHECKER *registerChecker(AT &&... Args) {
160
3
    CheckerTag tag = getTag<CHECKER>();
161
3
    CheckerRef &ref = CheckerTags[tag];
162
3
    assert(!ref && "Checker already registered, use getChecker!");
163
3
164
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
3
    checker->Name = CurrentCheckName;
166
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
3
    CHECKER::_register(checker, *this);
168
3
    ref = checker;
169
3
    return checker;
170
3
  }
MIGChecker.cpp:(anonymous namespace)::MIGChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MIGChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
MoveChecker.cpp:(anonymous namespace)::MoveChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MoveChecker>()
Line
Count
Source
159
49
  CHECKER *registerChecker(AT &&... Args) {
160
49
    CheckerTag tag = getTag<CHECKER>();
161
49
    CheckerRef &ref = CheckerTags[tag];
162
49
    assert(!ref && "Checker already registered, use getChecker!");
163
49
164
49
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
49
    checker->Name = CurrentCheckName;
166
49
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
49
    CHECKER::_register(checker, *this);
168
49
    ref = checker;
169
49
    return checker;
170
49
  }
clang::ento::mpi::MPIChecker* clang::ento::CheckerManager::registerChecker<clang::ento::mpi::MPIChecker>()
Line
Count
Source
159
3
  CHECKER *registerChecker(AT &&... Args) {
160
3
    CheckerTag tag = getTag<CHECKER>();
161
3
    CheckerRef &ref = CheckerTags[tag];
162
3
    assert(!ref && "Checker already registered, use getChecker!");
163
3
164
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
3
    checker->Name = CurrentCheckName;
166
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
3
    CHECKER::_register(checker, *this);
168
3
    ref = checker;
169
3
    return checker;
170
3
  }
Unexecuted instantiation: NSAutoreleasePoolChecker.cpp:(anonymous namespace)::NSAutoreleasePoolChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NSAutoreleasePoolChecker>()
NSErrorChecker.cpp:(anonymous namespace)::NSOrCFErrorDerefChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NSOrCFErrorDerefChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
NSErrorChecker.cpp:(anonymous namespace)::NSErrorMethodChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NSErrorMethodChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
NSErrorChecker.cpp:(anonymous namespace)::CFErrorFunctionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFErrorFunctionChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
NoReturnFunctionChecker.cpp:(anonymous namespace)::NoReturnFunctionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NoReturnFunctionChecker>()
Line
Count
Source
159
686
  CHECKER *registerChecker(AT &&... Args) {
160
686
    CheckerTag tag = getTag<CHECKER>();
161
686
    CheckerRef &ref = CheckerTags[tag];
162
686
    assert(!ref && "Checker already registered, use getChecker!");
163
686
164
686
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
686
    checker->Name = CurrentCheckName;
166
686
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
686
    CHECKER::_register(checker, *this);
168
686
    ref = checker;
169
686
    return checker;
170
686
  }
NonNullParamChecker.cpp:(anonymous namespace)::NonNullParamChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NonNullParamChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
NonnullGlobalConstantsChecker.cpp:(anonymous namespace)::NonnullGlobalConstantsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NonnullGlobalConstantsChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
NullabilityChecker.cpp:(anonymous namespace)::NullabilityChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NullabilityChecker>()
Line
Count
Source
159
23
  CHECKER *registerChecker(AT &&... Args) {
160
23
    CheckerTag tag = getTag<CHECKER>();
161
23
    CheckerRef &ref = CheckerTags[tag];
162
23
    assert(!ref && "Checker already registered, use getChecker!");
163
23
164
23
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
23
    checker->Name = CurrentCheckName;
166
23
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
23
    CHECKER::_register(checker, *this);
168
23
    ref = checker;
169
23
    return checker;
170
23
  }
NumberObjectConversionChecker.cpp:(anonymous namespace)::NumberObjectConversionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NumberObjectConversionChecker>()
Line
Count
Source
159
32
  CHECKER *registerChecker(AT &&... Args) {
160
32
    CheckerTag tag = getTag<CHECKER>();
161
32
    CheckerRef &ref = CheckerTags[tag];
162
32
    assert(!ref && "Checker already registered, use getChecker!");
163
32
164
32
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
32
    checker->Name = CurrentCheckName;
166
32
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
32
    CHECKER::_register(checker, *this);
168
32
    ref = checker;
169
32
    return checker;
170
32
  }
ObjCAtSyncChecker.cpp:(anonymous namespace)::ObjCAtSyncChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCAtSyncChecker>()
Line
Count
Source
159
8
  CHECKER *registerChecker(AT &&... Args) {
160
8
    CheckerTag tag = getTag<CHECKER>();
161
8
    CheckerRef &ref = CheckerTags[tag];
162
8
    assert(!ref && "Checker already registered, use getChecker!");
163
8
164
8
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
8
    checker->Name = CurrentCheckName;
166
8
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
8
    CHECKER::_register(checker, *this);
168
8
    ref = checker;
169
8
    return checker;
170
8
  }
ObjCAutoreleaseWriteChecker.cpp:(anonymous namespace)::ObjCAutoreleaseWriteChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCAutoreleaseWriteChecker>()
Line
Count
Source
159
25
  CHECKER *registerChecker(AT &&... Args) {
160
25
    CheckerTag tag = getTag<CHECKER>();
161
25
    CheckerRef &ref = CheckerTags[tag];
162
25
    assert(!ref && "Checker already registered, use getChecker!");
163
25
164
25
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
25
    checker->Name = CurrentCheckName;
166
25
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
25
    CHECKER::_register(checker, *this);
168
25
    ref = checker;
169
25
    return checker;
170
25
  }
ObjCContainersASTChecker.cpp:(anonymous namespace)::ObjCContainersASTChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCContainersASTChecker>()
Line
Count
Source
159
25
  CHECKER *registerChecker(AT &&... Args) {
160
25
    CheckerTag tag = getTag<CHECKER>();
161
25
    CheckerRef &ref = CheckerTags[tag];
162
25
    assert(!ref && "Checker already registered, use getChecker!");
163
25
164
25
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
25
    checker->Name = CurrentCheckName;
166
25
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
25
    CHECKER::_register(checker, *this);
168
25
    ref = checker;
169
25
    return checker;
170
25
  }
ObjCContainersChecker.cpp:(anonymous namespace)::ObjCContainersChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCContainersChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
ObjCMissingSuperCallChecker.cpp:(anonymous namespace)::ObjCSuperCallChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCSuperCallChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
ObjCPropertyChecker.cpp:(anonymous namespace)::ObjCPropertyChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCPropertyChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
ObjCSelfInitChecker.cpp:(anonymous namespace)::ObjCSelfInitChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCSelfInitChecker>()
Line
Count
Source
159
26
  CHECKER *registerChecker(AT &&... Args) {
160
26
    CheckerTag tag = getTag<CHECKER>();
161
26
    CheckerRef &ref = CheckerTags[tag];
162
26
    assert(!ref && "Checker already registered, use getChecker!");
163
26
164
26
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
26
    checker->Name = CurrentCheckName;
166
26
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
26
    CHECKER::_register(checker, *this);
168
26
    ref = checker;
169
26
    return checker;
170
26
  }
ObjCSuperDeallocChecker.cpp:(anonymous namespace)::ObjCSuperDeallocChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCSuperDeallocChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
ObjCUnusedIVarsChecker.cpp:(anonymous namespace)::ObjCUnusedIvarsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCUnusedIvarsChecker>()
Line
Count
Source
159
24
  CHECKER *registerChecker(AT &&... Args) {
160
24
    CheckerTag tag = getTag<CHECKER>();
161
24
    CheckerRef &ref = CheckerTags[tag];
162
24
    assert(!ref && "Checker already registered, use getChecker!");
163
24
164
24
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
24
    checker->Name = CurrentCheckName;
166
24
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
24
    CHECKER::_register(checker, *this);
168
24
    ref = checker;
169
24
    return checker;
170
24
  }
OSObjectCStyleCast.cpp:(anonymous namespace)::OSObjectCStyleCastChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::OSObjectCStyleCastChecker>()
Line
Count
Source
159
1
  CHECKER *registerChecker(AT &&... Args) {
160
1
    CheckerTag tag = getTag<CHECKER>();
161
1
    CheckerRef &ref = CheckerTags[tag];
162
1
    assert(!ref && "Checker already registered, use getChecker!");
163
1
164
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
1
    checker->Name = CurrentCheckName;
166
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
1
    CHECKER::_register(checker, *this);
168
1
    ref = checker;
169
1
    return checker;
170
1
  }
PaddingChecker.cpp:(anonymous namespace)::PaddingChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PaddingChecker>()
Line
Count
Source
159
6
  CHECKER *registerChecker(AT &&... Args) {
160
6
    CheckerTag tag = getTag<CHECKER>();
161
6
    CheckerRef &ref = CheckerTags[tag];
162
6
    assert(!ref && "Checker already registered, use getChecker!");
163
6
164
6
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
6
    checker->Name = CurrentCheckName;
166
6
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
6
    CHECKER::_register(checker, *this);
168
6
    ref = checker;
169
6
    return checker;
170
6
  }
PointerArithChecker.cpp:(anonymous namespace)::PointerArithChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PointerArithChecker>()
Line
Count
Source
159
73
  CHECKER *registerChecker(AT &&... Args) {
160
73
    CheckerTag tag = getTag<CHECKER>();
161
73
    CheckerRef &ref = CheckerTags[tag];
162
73
    assert(!ref && "Checker already registered, use getChecker!");
163
73
164
73
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
73
    checker->Name = CurrentCheckName;
166
73
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
73
    CHECKER::_register(checker, *this);
168
73
    ref = checker;
169
73
    return checker;
170
73
  }
PointerIterationChecker.cpp:(anonymous namespace)::PointerIterationChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PointerIterationChecker>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
PointerSortingChecker.cpp:(anonymous namespace)::PointerSortingChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PointerSortingChecker>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
PointerSubChecker.cpp:(anonymous namespace)::PointerSubChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PointerSubChecker>()
Line
Count
Source
159
71
  CHECKER *registerChecker(AT &&... Args) {
160
71
    CheckerTag tag = getTag<CHECKER>();
161
71
    CheckerRef &ref = CheckerTags[tag];
162
71
    assert(!ref && "Checker already registered, use getChecker!");
163
71
164
71
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
71
    checker->Name = CurrentCheckName;
166
71
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
71
    CHECKER::_register(checker, *this);
168
71
    ref = checker;
169
71
    return checker;
170
71
  }
PthreadLockChecker.cpp:(anonymous namespace)::PthreadLockChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PthreadLockChecker>()
Line
Count
Source
159
5
  CHECKER *registerChecker(AT &&... Args) {
160
5
    CheckerTag tag = getTag<CHECKER>();
161
5
    CheckerRef &ref = CheckerTags[tag];
162
5
    assert(!ref && "Checker already registered, use getChecker!");
163
5
164
5
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
5
    checker->Name = CurrentCheckName;
166
5
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
5
    CHECKER::_register(checker, *this);
168
5
    ref = checker;
169
5
    return checker;
170
5
  }
clang::ento::retaincountchecker::RetainCountChecker* clang::ento::CheckerManager::registerChecker<clang::ento::retaincountchecker::RetainCountChecker>()
Line
Count
Source
159
71
  CHECKER *registerChecker(AT &&... Args) {
160
71
    CheckerTag tag = getTag<CHECKER>();
161
71
    CheckerRef &ref = CheckerTags[tag];
162
71
    assert(!ref && "Checker already registered, use getChecker!");
163
71
164
71
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
71
    checker->Name = CurrentCheckName;
166
71
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
71
    CHECKER::_register(checker, *this);
168
71
    ref = checker;
169
71
    return checker;
170
71
  }
ReturnPointerRangeChecker.cpp:(anonymous namespace)::ReturnPointerRangeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ReturnPointerRangeChecker>()
Line
Count
Source
159
4
  CHECKER *registerChecker(AT &&... Args) {
160
4
    CheckerTag tag = getTag<CHECKER>();
161
4
    CheckerRef &ref = CheckerTags[tag];
162
4
    assert(!ref && "Checker already registered, use getChecker!");
163
4
164
4
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
4
    checker->Name = CurrentCheckName;
166
4
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
4
    CHECKER::_register(checker, *this);
168
4
    ref = checker;
169
4
    return checker;
170
4
  }
ReturnUndefChecker.cpp:(anonymous namespace)::ReturnUndefChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ReturnUndefChecker>()
Line
Count
Source
159
676
  CHECKER *registerChecker(AT &&... Args) {
160
676
    CheckerTag tag = getTag<CHECKER>();
161
676
    CheckerRef &ref = CheckerTags[tag];
162
676
    assert(!ref && "Checker already registered, use getChecker!");
163
676
164
676
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
676
    checker->Name = CurrentCheckName;
166
676
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
676
    CHECKER::_register(checker, *this);
168
676
    ref = checker;
169
676
    return checker;
170
676
  }
ReturnValueChecker.cpp:(anonymous namespace)::ReturnValueChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ReturnValueChecker>()
Line
Count
Source
159
11
  CHECKER *registerChecker(AT &&... Args) {
160
11
    CheckerTag tag = getTag<CHECKER>();
161
11
    CheckerRef &ref = CheckerTags[tag];
162
11
    assert(!ref && "Checker already registered, use getChecker!");
163
11
164
11
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
11
    checker->Name = CurrentCheckName;
166
11
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
11
    CHECKER::_register(checker, *this);
168
11
    ref = checker;
169
11
    return checker;
170
11
  }
RunLoopAutoreleaseLeakChecker.cpp:(anonymous namespace)::RunLoopAutoreleaseLeakChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::RunLoopAutoreleaseLeakChecker>()
Line
Count
Source
159
29
  CHECKER *registerChecker(AT &&... Args) {
160
29
    CheckerTag tag = getTag<CHECKER>();
161
29
    CheckerRef &ref = CheckerTags[tag];
162
29
    assert(!ref && "Checker already registered, use getChecker!");
163
29
164
29
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
29
    checker->Name = CurrentCheckName;
166
29
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
29
    CHECKER::_register(checker, *this);
168
29
    ref = checker;
169
29
    return checker;
170
29
  }
SimpleStreamChecker.cpp:(anonymous namespace)::SimpleStreamChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::SimpleStreamChecker>()
Line
Count
Source
159
5
  CHECKER *registerChecker(AT &&... Args) {
160
5
    CheckerTag tag = getTag<CHECKER>();
161
5
    CheckerRef &ref = CheckerTags[tag];
162
5
    assert(!ref && "Checker already registered, use getChecker!");
163
5
164
5
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
5
    checker->Name = CurrentCheckName;
166
5
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
5
    CHECKER::_register(checker, *this);
168
5
    ref = checker;
169
5
    return checker;
170
5
  }
SmartPtrModeling.cpp:(anonymous namespace)::SmartPtrModeling* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::SmartPtrModeling>()
Line
Count
Source
159
48
  CHECKER *registerChecker(AT &&... Args) {
160
48
    CheckerTag tag = getTag<CHECKER>();
161
48
    CheckerRef &ref = CheckerTags[tag];
162
48
    assert(!ref && "Checker already registered, use getChecker!");
163
48
164
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
48
    checker->Name = CurrentCheckName;
166
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
48
    CHECKER::_register(checker, *this);
168
48
    ref = checker;
169
48
    return checker;
170
48
  }
StackAddrEscapeChecker.cpp:(anonymous namespace)::StackAddrEscapeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::StackAddrEscapeChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
StdLibraryFunctionsChecker.cpp:(anonymous namespace)::StdLibraryFunctionsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::StdLibraryFunctionsChecker>()
Line
Count
Source
159
21
  CHECKER *registerChecker(AT &&... Args) {
160
21
    CheckerTag tag = getTag<CHECKER>();
161
21
    CheckerRef &ref = CheckerTags[tag];
162
21
    assert(!ref && "Checker already registered, use getChecker!");
163
21
164
21
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
21
    checker->Name = CurrentCheckName;
166
21
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
21
    CHECKER::_register(checker, *this);
168
21
    ref = checker;
169
21
    return checker;
170
21
  }
StreamChecker.cpp:(anonymous namespace)::StreamChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::StreamChecker>()
Line
Count
Source
159
5
  CHECKER *registerChecker(AT &&... Args) {
160
5
    CheckerTag tag = getTag<CHECKER>();
161
5
    CheckerRef &ref = CheckerTags[tag];
162
5
    assert(!ref && "Checker already registered, use getChecker!");
163
5
164
5
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
5
    checker->Name = CurrentCheckName;
166
5
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
5
    CHECKER::_register(checker, *this);
168
5
    ref = checker;
169
5
    return checker;
170
5
  }
TaintTesterChecker.cpp:(anonymous namespace)::TaintTesterChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::TaintTesterChecker>()
Line
Count
Source
159
6
  CHECKER *registerChecker(AT &&... Args) {
160
6
    CheckerTag tag = getTag<CHECKER>();
161
6
    CheckerRef &ref = CheckerTags[tag];
162
6
    assert(!ref && "Checker already registered, use getChecker!");
163
6
164
6
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
6
    checker->Name = CurrentCheckName;
166
6
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
6
    CHECKER::_register(checker, *this);
168
6
    ref = checker;
169
6
    return checker;
170
6
  }
TestAfterDivZeroChecker.cpp:(anonymous namespace)::TestAfterDivZeroChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::TestAfterDivZeroChecker>()
Line
Count
Source
159
71
  CHECKER *registerChecker(AT &&... Args) {
160
71
    CheckerTag tag = getTag<CHECKER>();
161
71
    CheckerRef &ref = CheckerTags[tag];
162
71
    assert(!ref && "Checker already registered, use getChecker!");
163
71
164
71
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
71
    checker->Name = CurrentCheckName;
166
71
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
71
    CHECKER::_register(checker, *this);
168
71
    ref = checker;
169
71
    return checker;
170
71
  }
TraversalChecker.cpp:(anonymous namespace)::TraversalDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::TraversalDumper>()
Line
Count
Source
159
4
  CHECKER *registerChecker(AT &&... Args) {
160
4
    CheckerTag tag = getTag<CHECKER>();
161
4
    CheckerRef &ref = CheckerTags[tag];
162
4
    assert(!ref && "Checker already registered, use getChecker!");
163
4
164
4
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
4
    checker->Name = CurrentCheckName;
166
4
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
4
    CHECKER::_register(checker, *this);
168
4
    ref = checker;
169
4
    return checker;
170
4
  }
Unexecuted instantiation: TraversalChecker.cpp:(anonymous namespace)::CallDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CallDumper>()
TrustNonnullChecker.cpp:(anonymous namespace)::TrustNonnullChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::TrustNonnullChecker, clang::ASTContext&>(clang::ASTContext&&&)
Line
Count
Source
159
10
  CHECKER *registerChecker(AT &&... Args) {
160
10
    CheckerTag tag = getTag<CHECKER>();
161
10
    CheckerRef &ref = CheckerTags[tag];
162
10
    assert(!ref && "Checker already registered, use getChecker!");
163
10
164
10
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
10
    checker->Name = CurrentCheckName;
166
10
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
10
    CHECKER::_register(checker, *this);
168
10
    ref = checker;
169
10
    return checker;
170
10
  }
UndefBranchChecker.cpp:(anonymous namespace)::UndefBranchChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefBranchChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
UndefCapturedBlockVarChecker.cpp:(anonymous namespace)::UndefCapturedBlockVarChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefCapturedBlockVarChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
UndefResultChecker.cpp:(anonymous namespace)::UndefResultChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefResultChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
UndefinedArraySubscriptChecker.cpp:(anonymous namespace)::UndefinedArraySubscriptChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefinedArraySubscriptChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
UndefinedAssignmentChecker.cpp:(anonymous namespace)::UndefinedAssignmentChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefinedAssignmentChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
UninitializedObjectChecker.cpp:(anonymous namespace)::UninitializedObjectChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UninitializedObjectChecker>()
Line
Count
Source
159
11
  CHECKER *registerChecker(AT &&... Args) {
160
11
    CheckerTag tag = getTag<CHECKER>();
161
11
    CheckerRef &ref = CheckerTags[tag];
162
11
    assert(!ref && "Checker already registered, use getChecker!");
163
11
164
11
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
11
    checker->Name = CurrentCheckName;
166
11
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
11
    CHECKER::_register(checker, *this);
168
11
    ref = checker;
169
11
    return checker;
170
11
  }
UnixAPIChecker.cpp:(anonymous namespace)::UnixAPIMisuseChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UnixAPIMisuseChecker>()
Line
Count
Source
159
30
  CHECKER *registerChecker(AT &&... Args) {
160
30
    CheckerTag tag = getTag<CHECKER>();
161
30
    CheckerRef &ref = CheckerTags[tag];
162
30
    assert(!ref && "Checker already registered, use getChecker!");
163
30
164
30
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
30
    checker->Name = CurrentCheckName;
166
30
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
30
    CHECKER::_register(checker, *this);
168
30
    ref = checker;
169
30
    return checker;
170
30
  }
UnixAPIChecker.cpp:(anonymous namespace)::UnixAPIPortabilityChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UnixAPIPortabilityChecker>()
Line
Count
Source
159
3
  CHECKER *registerChecker(AT &&... Args) {
160
3
    CheckerTag tag = getTag<CHECKER>();
161
3
    CheckerRef &ref = CheckerTags[tag];
162
3
    assert(!ref && "Checker already registered, use getChecker!");
163
3
164
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
3
    checker->Name = CurrentCheckName;
166
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
3
    CHECKER::_register(checker, *this);
168
3
    ref = checker;
169
3
    return checker;
170
3
  }
UnreachableCodeChecker.cpp:(anonymous namespace)::UnreachableCodeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UnreachableCodeChecker>()
Line
Count
Source
159
9
  CHECKER *registerChecker(AT &&... Args) {
160
9
    CheckerTag tag = getTag<CHECKER>();
161
9
    CheckerRef &ref = CheckerTags[tag];
162
9
    assert(!ref && "Checker already registered, use getChecker!");
163
9
164
9
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
9
    checker->Name = CurrentCheckName;
166
9
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
9
    CHECKER::_register(checker, *this);
168
9
    ref = checker;
169
9
    return checker;
170
9
  }
VforkChecker.cpp:(anonymous namespace)::VforkChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::VforkChecker>()
Line
Count
Source
159
27
  CHECKER *registerChecker(AT &&... Args) {
160
27
    CheckerTag tag = getTag<CHECKER>();
161
27
    CheckerRef &ref = CheckerTags[tag];
162
27
    assert(!ref && "Checker already registered, use getChecker!");
163
27
164
27
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
27
    checker->Name = CurrentCheckName;
166
27
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
27
    CHECKER::_register(checker, *this);
168
27
    ref = checker;
169
27
    return checker;
170
27
  }
VLASizeChecker.cpp:(anonymous namespace)::VLASizeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::VLASizeChecker>()
Line
Count
Source
159
675
  CHECKER *registerChecker(AT &&... Args) {
160
675
    CheckerTag tag = getTag<CHECKER>();
161
675
    CheckerRef &ref = CheckerTags[tag];
162
675
    assert(!ref && "Checker already registered, use getChecker!");
163
675
164
675
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
675
    checker->Name = CurrentCheckName;
166
675
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
675
    CHECKER::_register(checker, *this);
168
675
    ref = checker;
169
675
    return checker;
170
675
  }
ValistChecker.cpp:(anonymous namespace)::ValistChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ValistChecker>()
Line
Count
Source
159
7
  CHECKER *registerChecker(AT &&... Args) {
160
7
    CheckerTag tag = getTag<CHECKER>();
161
7
    CheckerRef &ref = CheckerTags[tag];
162
7
    assert(!ref && "Checker already registered, use getChecker!");
163
7
164
7
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
7
    checker->Name = CurrentCheckName;
166
7
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
7
    CHECKER::_register(checker, *this);
168
7
    ref = checker;
169
7
    return checker;
170
7
  }
VirtualCallChecker.cpp:(anonymous namespace)::VirtualCallChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::VirtualCallChecker>()
Line
Count
Source
159
2
  CHECKER *registerChecker(AT &&... Args) {
160
2
    CheckerTag tag = getTag<CHECKER>();
161
2
    CheckerRef &ref = CheckerTags[tag];
162
2
    assert(!ref && "Checker already registered, use getChecker!");
163
2
164
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
165
2
    checker->Name = CurrentCheckName;
166
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
167
2
    CHECKER::_register(checker, *this);
168
2
    ref = checker;
169
2
    return checker;
170
2
  }
171
172
  template <typename CHECKER>
173
1.75k
  CHECKER *getChecker() {
174
1.75k
    CheckerTag tag = getTag<CHECKER>();
175
1.75k
    assert(CheckerTags.count(tag) != 0 &&
176
1.75k
           "Requested checker is not registered! Maybe you should add it as a "
177
1.75k
           "dependency in Checkers.td?");
178
1.75k
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
1.75k
  }
CStringChecker.cpp:(anonymous namespace)::CStringChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::CStringChecker>()
Line
Count
Source
173
110
  CHECKER *getChecker() {
174
110
    CheckerTag tag = getTag<CHECKER>();
175
110
    assert(CheckerTags.count(tag) != 0 &&
176
110
           "Requested checker is not registered! Maybe you should add it as a "
177
110
           "dependency in Checkers.td?");
178
110
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
110
  }
CallAndMessageChecker.cpp:(anonymous namespace)::CallAndMessageChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::CallAndMessageChecker>()
Line
Count
Source
173
73
  CHECKER *getChecker() {
174
73
    CheckerTag tag = getTag<CHECKER>();
175
73
    assert(CheckerTags.count(tag) != 0 &&
176
73
           "Requested checker is not registered! Maybe you should add it as a "
177
73
           "dependency in Checkers.td?");
178
73
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
73
  }
CheckSecuritySyntaxOnly.cpp:(anonymous namespace)::SecuritySyntaxChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::SecuritySyntaxChecker>()
Line
Count
Source
173
203
  CHECKER *getChecker() {
174
203
    CheckerTag tag = getTag<CHECKER>();
175
203
    assert(CheckerTags.count(tag) != 0 &&
176
203
           "Requested checker is not registered! Maybe you should add it as a "
177
203
           "dependency in Checkers.td?");
178
203
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
203
  }
DirectIvarAssignment.cpp:(anonymous namespace)::DirectIvarAssignment* clang::ento::CheckerManager::getChecker<(anonymous namespace)::DirectIvarAssignment>()
Line
Count
Source
173
2
  CHECKER *getChecker() {
174
2
    CheckerTag tag = getTag<CHECKER>();
175
2
    assert(CheckerTags.count(tag) != 0 &&
176
2
           "Requested checker is not registered! Maybe you should add it as a "
177
2
           "dependency in Checkers.td?");
178
2
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
2
  }
DynamicTypePropagation.cpp:(anonymous namespace)::DynamicTypePropagation* clang::ento::CheckerManager::getChecker<(anonymous namespace)::DynamicTypePropagation>()
Line
Count
Source
173
26
  CHECKER *getChecker() {
174
26
    CheckerTag tag = getTag<CHECKER>();
175
26
    assert(CheckerTags.count(tag) != 0 &&
176
26
           "Requested checker is not registered! Maybe you should add it as a "
177
26
           "dependency in Checkers.td?");
178
26
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
26
  }
IteratorChecker.cpp:(anonymous namespace)::IteratorChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::IteratorChecker>()
Line
Count
Source
173
10
  CHECKER *getChecker() {
174
10
    CheckerTag tag = getTag<CHECKER>();
175
10
    assert(CheckerTags.count(tag) != 0 &&
176
10
           "Requested checker is not registered! Maybe you should add it as a "
177
10
           "dependency in Checkers.td?");
178
10
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
10
  }
IvarInvalidationChecker.cpp:(anonymous namespace)::IvarInvalidationChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::IvarInvalidationChecker>()
Line
Count
Source
173
4
  CHECKER *getChecker() {
174
4
    CheckerTag tag = getTag<CHECKER>();
175
4
    assert(CheckerTags.count(tag) != 0 &&
176
4
           "Requested checker is not registered! Maybe you should add it as a "
177
4
           "dependency in Checkers.td?");
178
4
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
4
  }
MallocChecker.cpp:(anonymous namespace)::MallocChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::MallocChecker>()
Line
Count
Source
173
344
  CHECKER *getChecker() {
174
344
    CheckerTag tag = getTag<CHECKER>();
175
344
    assert(CheckerTags.count(tag) != 0 &&
176
344
           "Requested checker is not registered! Maybe you should add it as a "
177
344
           "dependency in Checkers.td?");
178
344
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
344
  }
NSErrorChecker.cpp:(anonymous namespace)::NSOrCFErrorDerefChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::NSOrCFErrorDerefChecker>()
Line
Count
Source
173
48
  CHECKER *getChecker() {
174
48
    CheckerTag tag = getTag<CHECKER>();
175
48
    assert(CheckerTags.count(tag) != 0 &&
176
48
           "Requested checker is not registered! Maybe you should add it as a "
177
48
           "dependency in Checkers.td?");
178
48
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
48
  }
NullabilityChecker.cpp:(anonymous namespace)::NullabilityChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::NullabilityChecker>()
Line
Count
Source
173
81
  CHECKER *getChecker() {
174
81
    CheckerTag tag = getTag<CHECKER>();
175
81
    assert(CheckerTags.count(tag) != 0 &&
176
81
           "Requested checker is not registered! Maybe you should add it as a "
177
81
           "dependency in Checkers.td?");
178
81
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
81
  }
clang::ento::retaincountchecker::RetainCountChecker* clang::ento::CheckerManager::getChecker<clang::ento::retaincountchecker::RetainCountChecker>()
Line
Count
Source
173
92
  CHECKER *getChecker() {
174
92
    CheckerTag tag = getTag<CHECKER>();
175
92
    assert(CheckerTags.count(tag) != 0 &&
176
92
           "Requested checker is not registered! Maybe you should add it as a "
177
92
           "dependency in Checkers.td?");
178
92
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
92
  }
StackAddrEscapeChecker.cpp:(anonymous namespace)::StackAddrEscapeChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::StackAddrEscapeChecker>()
Line
Count
Source
173
746
  CHECKER *getChecker() {
174
746
    CheckerTag tag = getTag<CHECKER>();
175
746
    assert(CheckerTags.count(tag) != 0 &&
176
746
           "Requested checker is not registered! Maybe you should add it as a "
177
746
           "dependency in Checkers.td?");
178
746
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
746
  }
ValistChecker.cpp:(anonymous namespace)::ValistChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::ValistChecker>()
Line
Count
Source
173
13
  CHECKER *getChecker() {
174
13
    CheckerTag tag = getTag<CHECKER>();
175
13
    assert(CheckerTags.count(tag) != 0 &&
176
13
           "Requested checker is not registered! Maybe you should add it as a "
177
13
           "dependency in Checkers.td?");
178
13
    return static_cast<CHECKER *>(CheckerTags[tag]);
179
13
  }
180
181
//===----------------------------------------------------------------------===//
182
// Functions for running checkers for AST traversing.
183
//===----------------------------------------------------------------------===//
184
185
  /// Run checkers handling Decls.
186
  void runCheckersOnASTDecl(const Decl *D, AnalysisManager& mgr,
187
                            BugReporter &BR);
188
189
  /// Run checkers handling Decls containing a Stmt body.
190
  void runCheckersOnASTBody(const Decl *D, AnalysisManager& mgr,
191
                            BugReporter &BR);
192
193
//===----------------------------------------------------------------------===//
194
// Functions for running checkers for path-sensitive checking.
195
//===----------------------------------------------------------------------===//
196
197
  /// Run checkers for pre-visiting Stmts.
198
  ///
199
  /// The notification is performed for every explored CFGElement, which does
200
  /// not include the control flow statements such as IfStmt.
201
  ///
202
  /// \sa runCheckersForBranchCondition, runCheckersForPostStmt
203
  void runCheckersForPreStmt(ExplodedNodeSet &Dst,
204
                             const ExplodedNodeSet &Src,
205
                             const Stmt *S,
206
650k
                             ExprEngine &Eng) {
207
650k
    runCheckersForStmt(/*isPreVisit=*/true, Dst, Src, S, Eng);
208
650k
  }
209
210
  /// Run checkers for post-visiting Stmts.
211
  ///
212
  /// The notification is performed for every explored CFGElement, which does
213
  /// not include the control flow statements such as IfStmt.
214
  ///
215
  /// \sa runCheckersForBranchCondition, runCheckersForPreStmt
216
  void runCheckersForPostStmt(ExplodedNodeSet &Dst,
217
                              const ExplodedNodeSet &Src,
218
                              const Stmt *S,
219
                              ExprEngine &Eng,
220
666k
                              bool wasInlined = false) {
221
666k
    runCheckersForStmt(/*isPreVisit=*/false, Dst, Src, S, Eng, wasInlined);
222
666k
  }
223
224
  /// Run checkers for visiting Stmts.
225
  void runCheckersForStmt(bool isPreVisit,
226
                          ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
227
                          const Stmt *S, ExprEngine &Eng,
228
                          bool wasInlined = false);
229
230
  /// Run checkers for pre-visiting obj-c messages.
231
  void runCheckersForPreObjCMessage(ExplodedNodeSet &Dst,
232
                                    const ExplodedNodeSet &Src,
233
                                    const ObjCMethodCall &msg,
234
3.97k
                                    ExprEngine &Eng) {
235
3.97k
    runCheckersForObjCMessage(ObjCMessageVisitKind::Pre, Dst, Src, msg, Eng);
236
3.97k
  }
237
238
  /// Run checkers for post-visiting obj-c messages.
239
  void runCheckersForPostObjCMessage(ExplodedNodeSet &Dst,
240
                                     const ExplodedNodeSet &Src,
241
                                     const ObjCMethodCall &msg,
242
                                     ExprEngine &Eng,
243
4.50k
                                     bool wasInlined = false) {
244
4.50k
    runCheckersForObjCMessage(ObjCMessageVisitKind::Post, Dst, Src, msg, Eng,
245
4.50k
                              wasInlined);
246
4.50k
  }
247
248
  /// Run checkers for visiting an obj-c message to nil.
249
  void runCheckersForObjCMessageNil(ExplodedNodeSet &Dst,
250
                                    const ExplodedNodeSet &Src,
251
                                    const ObjCMethodCall &msg,
252
95
                                    ExprEngine &Eng) {
253
95
    runCheckersForObjCMessage(ObjCMessageVisitKind::MessageNil, Dst, Src, msg,
254
95
                              Eng);
255
95
  }
256
257
  /// Run checkers for visiting obj-c messages.
258
  void runCheckersForObjCMessage(ObjCMessageVisitKind visitKind,
259
                                 ExplodedNodeSet &Dst,
260
                                 const ExplodedNodeSet &Src,
261
                                 const ObjCMethodCall &msg, ExprEngine &Eng,
262
                                 bool wasInlined = false);
263
264
  /// Run checkers for pre-visiting obj-c messages.
265
  void runCheckersForPreCall(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
266
80.1k
                             const CallEvent &Call, ExprEngine &Eng) {
267
80.1k
    runCheckersForCallEvent(/*isPreVisit=*/true, Dst, Src, Call, Eng);
268
80.1k
  }
269
270
  /// Run checkers for post-visiting obj-c messages.
271
  void runCheckersForPostCall(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
272
                              const CallEvent &Call, ExprEngine &Eng,
273
117k
                              bool wasInlined = false) {
274
117k
    runCheckersForCallEvent(/*isPreVisit=*/false, Dst, Src, Call, Eng,
275
117k
                            wasInlined);
276
117k
  }
277
278
  /// Run checkers for visiting obj-c messages.
279
  void runCheckersForCallEvent(bool isPreVisit, ExplodedNodeSet &Dst,
280
                               const ExplodedNodeSet &Src,
281
                               const CallEvent &Call, ExprEngine &Eng,
282
                               bool wasInlined = false);
283
284
  /// Run checkers for load/store of a location.
285
  void runCheckersForLocation(ExplodedNodeSet &Dst,
286
                              const ExplodedNodeSet &Src,
287
                              SVal location,
288
                              bool isLoad,
289
                              const Stmt *NodeEx,
290
                              const Stmt *BoundEx,
291
                              ExprEngine &Eng);
292
293
  /// Run checkers for binding of a value to a location.
294
  void runCheckersForBind(ExplodedNodeSet &Dst,
295
                          const ExplodedNodeSet &Src,
296
                          SVal location, SVal val,
297
                          const Stmt *S, ExprEngine &Eng,
298
                          const ProgramPoint &PP);
299
300
  /// Run checkers for end of analysis.
301
  void runCheckersForEndAnalysis(ExplodedGraph &G, BugReporter &BR,
302
                                 ExprEngine &Eng);
303
304
  /// Run checkers on beginning of function.
305
  void runCheckersForBeginFunction(ExplodedNodeSet &Dst,
306
                                   const BlockEdge &L,
307
                                   ExplodedNode *Pred,
308
                                   ExprEngine &Eng);
309
310
  /// Run checkers on end of function.
311
  void runCheckersForEndFunction(NodeBuilderContext &BC,
312
                                 ExplodedNodeSet &Dst,
313
                                 ExplodedNode *Pred,
314
                                 ExprEngine &Eng,
315
                                 const ReturnStmt *RS);
316
317
  /// Run checkers for branch condition.
318
  void runCheckersForBranchCondition(const Stmt *condition,
319
                                     ExplodedNodeSet &Dst, ExplodedNode *Pred,
320
                                     ExprEngine &Eng);
321
322
  /// Run checkers between C++ operator new and constructor calls.
323
  void runCheckersForNewAllocator(const CXXNewExpr *NE, SVal Target,
324
                                  ExplodedNodeSet &Dst,
325
                                  ExplodedNode *Pred,
326
                                  ExprEngine &Eng,
327
                                  bool wasInlined = false);
328
329
  /// Run checkers for live symbols.
330
  ///
331
  /// Allows modifying SymbolReaper object. For example, checkers can explicitly
332
  /// register symbols of interest as live. These symbols will not be marked
333
  /// dead and removed.
334
  void runCheckersForLiveSymbols(ProgramStateRef state,
335
                                 SymbolReaper &SymReaper);
336
337
  /// Run checkers for dead symbols.
338
  ///
339
  /// Notifies checkers when symbols become dead. For example, this allows
340
  /// checkers to aggressively clean up/reduce the checker state and produce
341
  /// precise diagnostics.
342
  void runCheckersForDeadSymbols(ExplodedNodeSet &Dst,
343
                                 const ExplodedNodeSet &Src,
344
                                 SymbolReaper &SymReaper, const Stmt *S,
345
                                 ExprEngine &Eng,
346
                                 ProgramPoint::Kind K);
347
348
  /// Run checkers for region changes.
349
  ///
350
  /// This corresponds to the check::RegionChanges callback.
351
  /// \param state The current program state.
352
  /// \param invalidated A set of all symbols potentially touched by the change.
353
  /// \param ExplicitRegions The regions explicitly requested for invalidation.
354
  ///   For example, in the case of a function call, these would be arguments.
355
  /// \param Regions The transitive closure of accessible regions,
356
  ///   i.e. all regions that may have been touched by this change.
357
  /// \param Call The call expression wrapper if the regions are invalidated
358
  ///   by a call.
359
  ProgramStateRef
360
  runCheckersForRegionChanges(ProgramStateRef state,
361
                              const InvalidatedSymbols *invalidated,
362
                              ArrayRef<const MemRegion *> ExplicitRegions,
363
                              ArrayRef<const MemRegion *> Regions,
364
                              const LocationContext *LCtx,
365
                              const CallEvent *Call);
366
367
  /// Run checkers when pointers escape.
368
  ///
369
  /// This notifies the checkers about pointer escape, which occurs whenever
370
  /// the analyzer cannot track the symbol any more. For example, as a
371
  /// result of assigning a pointer into a global or when it's passed to a
372
  /// function call the analyzer cannot model.
373
  ///
374
  /// \param State The state at the point of escape.
375
  /// \param Escaped The list of escaped symbols.
376
  /// \param Call The corresponding CallEvent, if the symbols escape as
377
  ///        parameters to the given call.
378
  /// \param Kind The reason of pointer escape.
379
  /// \param ITraits Information about invalidation for a particular
380
  ///        region/symbol.
381
  /// \returns Checkers can modify the state by returning a new one.
382
  ProgramStateRef
383
  runCheckersForPointerEscape(ProgramStateRef State,
384
                              const InvalidatedSymbols &Escaped,
385
                              const CallEvent *Call,
386
                              PointerEscapeKind Kind,
387
                              RegionAndSymbolInvalidationTraits *ITraits);
388
389
  /// Run checkers for handling assumptions on symbolic values.
390
  ProgramStateRef runCheckersForEvalAssume(ProgramStateRef state,
391
                                           SVal Cond, bool Assumption);
392
393
  /// Run checkers for evaluating a call.
394
  ///
395
  /// Warning: Currently, the CallEvent MUST come from a CallExpr!
396
  void runCheckersForEvalCall(ExplodedNodeSet &Dst,
397
                              const ExplodedNodeSet &Src,
398
                              const CallEvent &CE, ExprEngine &Eng);
399
400
  /// Run checkers for the entire Translation Unit.
401
  void runCheckersOnEndOfTranslationUnit(const TranslationUnitDecl *TU,
402
                                         AnalysisManager &mgr,
403
                                         BugReporter &BR);
404
405
  /// Run checkers for debug-printing a ProgramState.
406
  ///
407
  /// Unlike most other callbacks, any checker can simply implement the virtual
408
  /// method CheckerBase::printState if it has custom data to print.
409
  ///
410
  /// \param Out   The output stream
411
  /// \param State The state being printed
412
  /// \param NL    The preferred representation of a newline.
413
  /// \param Space The preferred space between the left side and the message.
414
  /// \param IsDot Whether the message will be printed in 'dot' format.
415
  void runCheckersForPrintStateJson(raw_ostream &Out, ProgramStateRef State,
416
                                    const char *NL = "\n",
417
                                    unsigned int Space = 0,
418
                                    bool IsDot = false) const;
419
420
  //===----------------------------------------------------------------------===//
421
  // Internal registration functions for AST traversing.
422
  //===----------------------------------------------------------------------===//
423
424
  // Functions used by the registration mechanism, checkers should not touch
425
  // these directly.
426
427
  using CheckDeclFunc =
428
      CheckerFn<void (const Decl *, AnalysisManager&, BugReporter &)>;
429
430
  using HandlesDeclFunc = bool (*)(const Decl *D);
431
432
  void _registerForDecl(CheckDeclFunc checkfn, HandlesDeclFunc isForDeclFn);
433
434
  void _registerForBody(CheckDeclFunc checkfn);
435
436
//===----------------------------------------------------------------------===//
437
// Internal registration functions for path-sensitive checking.
438
//===----------------------------------------------------------------------===//
439
440
  using CheckStmtFunc = CheckerFn<void (const Stmt *, CheckerContext &)>;
441
442
  using CheckObjCMessageFunc =
443
      CheckerFn<void (const ObjCMethodCall &, CheckerContext &)>;
444
445
  using CheckCallFunc =
446
      CheckerFn<void (const CallEvent &, CheckerContext &)>;
447
448
  using CheckLocationFunc =
449
      CheckerFn<void (const SVal &location, bool isLoad, const Stmt *S,
450
                      CheckerContext &)>;
451
452
  using CheckBindFunc =
453
      CheckerFn<void (const SVal &location, const SVal &val, const Stmt *S,
454
                      CheckerContext &)>;
455
456
  using CheckEndAnalysisFunc =
457
      CheckerFn<void (ExplodedGraph &, BugReporter &, ExprEngine &)>;
458
459
  using CheckBeginFunctionFunc = CheckerFn<void (CheckerContext &)>;
460
461
  using CheckEndFunctionFunc =
462
      CheckerFn<void (const ReturnStmt *, CheckerContext &)>;
463
464
  using CheckBranchConditionFunc =
465
      CheckerFn<void (const Stmt *, CheckerContext &)>;
466
467
  using CheckNewAllocatorFunc =
468
      CheckerFn<void (const CXXNewExpr *, SVal, CheckerContext &)>;
469
470
  using CheckDeadSymbolsFunc =
471
      CheckerFn<void (SymbolReaper &, CheckerContext &)>;
472
473
  using CheckLiveSymbolsFunc = CheckerFn<void (ProgramStateRef,SymbolReaper &)>;
474
475
  using CheckRegionChangesFunc =
476
      CheckerFn<ProgramStateRef (ProgramStateRef,
477
                                 const InvalidatedSymbols *symbols,
478
                                 ArrayRef<const MemRegion *> ExplicitRegions,
479
                                 ArrayRef<const MemRegion *> Regions,
480
                                 const LocationContext *LCtx,
481
                                 const CallEvent *Call)>;
482
483
  using CheckPointerEscapeFunc =
484
      CheckerFn<ProgramStateRef (ProgramStateRef,
485
                                 const InvalidatedSymbols &Escaped,
486
                                 const CallEvent *Call, PointerEscapeKind Kind,
487
                                 RegionAndSymbolInvalidationTraits *ITraits)>;
488
489
  using EvalAssumeFunc =
490
      CheckerFn<ProgramStateRef (ProgramStateRef, const SVal &cond,
491
                                 bool assumption)>;
492
493
  using EvalCallFunc = CheckerFn<bool (const CallEvent &, CheckerContext &)>;
494
495
  using CheckEndOfTranslationUnit =
496
      CheckerFn<void (const TranslationUnitDecl *, AnalysisManager &,
497
                      BugReporter &)>;
498
499
  using HandlesStmtFunc = bool (*)(const Stmt *D);
500
501
  void _registerForPreStmt(CheckStmtFunc checkfn,
502
                           HandlesStmtFunc isForStmtFn);
503
  void _registerForPostStmt(CheckStmtFunc checkfn,
504
                            HandlesStmtFunc isForStmtFn);
505
506
  void _registerForPreObjCMessage(CheckObjCMessageFunc checkfn);
507
  void _registerForPostObjCMessage(CheckObjCMessageFunc checkfn);
508
509
  void _registerForObjCMessageNil(CheckObjCMessageFunc checkfn);
510
511
  void _registerForPreCall(CheckCallFunc checkfn);
512
  void _registerForPostCall(CheckCallFunc checkfn);
513
514
  void _registerForLocation(CheckLocationFunc checkfn);
515
516
  void _registerForBind(CheckBindFunc checkfn);
517
518
  void _registerForEndAnalysis(CheckEndAnalysisFunc checkfn);
519
520
  void _registerForBeginFunction(CheckBeginFunctionFunc checkfn);
521
  void _registerForEndFunction(CheckEndFunctionFunc checkfn);
522
523
  void _registerForBranchCondition(CheckBranchConditionFunc checkfn);
524
525
  void _registerForNewAllocator(CheckNewAllocatorFunc checkfn);
526
527
  void _registerForLiveSymbols(CheckLiveSymbolsFunc checkfn);
528
529
  void _registerForDeadSymbols(CheckDeadSymbolsFunc checkfn);
530
531
  void _registerForRegionChanges(CheckRegionChangesFunc checkfn);
532
533
  void _registerForPointerEscape(CheckPointerEscapeFunc checkfn);
534
535
  void _registerForConstPointerEscape(CheckPointerEscapeFunc checkfn);
536
537
  void _registerForEvalAssume(EvalAssumeFunc checkfn);
538
539
  void _registerForEvalCall(EvalCallFunc checkfn);
540
541
  void _registerForEndOfTranslationUnit(CheckEndOfTranslationUnit checkfn);
542
543
//===----------------------------------------------------------------------===//
544
// Internal registration functions for events.
545
//===----------------------------------------------------------------------===//
546
547
  using EventTag = void *;
548
  using CheckEventFunc = CheckerFn<void (const void *event)>;
549
550
  template <typename EVENT>
551
47
  void _registerListenerForEvent(CheckEventFunc checkfn) {
552
47
    EventInfo &info = Events[&EVENT::Tag];
553
47
    info.Checkers.push_back(checkfn);
554
47
  }
555
556
  template <typename EVENT>
557
1.35k
  void _registerDispatcherForEvent() {
558
1.35k
    EventInfo &info = Events[&EVENT::Tag];
559
1.35k
    info.HasDispatcher = true;
560
1.35k
  }
561
562
  template <typename EVENT>
563
3.07k
  void _dispatchEvent(const EVENT &event) const {
564
3.07k
    EventsTy::const_iterator I = Events.find(&EVENT::Tag);
565
3.07k
    if (I == Events.end())
566
0
      return;
567
3.07k
    const EventInfo &info = I->second;
568
3.07k
    for (const auto Checker : info.Checkers)
569
25
      Checker(&event);
570
3.07k
  }
571
572
//===----------------------------------------------------------------------===//
573
// Implementation details.
574
//===----------------------------------------------------------------------===//
575
576
private:
577
  template <typename CHECKER>
578
13.6k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
AnalysisOrderChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::AnalysisOrderChecker>(void*)
Line
Count
Source
578
8
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
AnalyzerStatsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::AnalyzerStatsChecker>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ArrayBoundChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ArrayBoundChecker>(void*)
Line
Count
Source
578
7
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ArrayBoundCheckerV2.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ArrayBoundCheckerV2>(void*)
Line
Count
Source
578
8
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NilArgChecker>(void*)
Line
Count
Source
578
30
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFNumberChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFRetainReleaseChecker>(void*)
Line
Count
Source
578
34
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ClassReleaseChecker>(void*)
Line
Count
Source
578
32
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::VariadicMethodTypeChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCLoopChecker>(void*)
Line
Count
Source
578
25
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCNonNilReturnValueChecker>(void*)
Line
Count
Source
578
26
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BlockInCriticalSectionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::BlockInCriticalSectionChecker>(void*)
Line
Count
Source
578
6
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BoolAssignmentChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::BoolAssignmentChecker>(void*)
Line
Count
Source
578
71
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BuiltinFunctionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::BuiltinFunctionChecker>(void*)
Line
Count
Source
578
685
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CStringChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CStringChecker>(void*)
Line
Count
Source
578
198
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CStringSyntaxChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CStringSyntaxChecker>(void*)
Line
Count
Source
578
52
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CallAndMessageChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CallAndMessageChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CastSizeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CastSizeChecker>(void*)
Line
Count
Source
578
60
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CastToStructChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CastToStructChecker>(void*)
Line
Count
Source
578
75
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CastValueChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CastValueChecker>(void*)
Line
Count
Source
578
12
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CheckObjCDealloc.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCDeallocChecker>(void*)
Line
Count
Source
578
28
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CheckObjCInstMethSignature.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCMethSigsChecker>(void*)
Line
Count
Source
578
25
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CheckSecuritySyntaxOnly.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::SecuritySyntaxChecker>(void*)
Line
Count
Source
578
22
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CheckSizeofPointer.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::SizeofPointerChecker>(void*)
Line
Count
Source
578
70
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ChrootChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ChrootChecker>(void*)
Line
Count
Source
578
5
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CloneChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CloneChecker>(void*)
Line
Count
Source
578
28
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ConversionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ConversionChecker>(void*)
Line
Count
Source
578
70
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CXXSelfAssignmentChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CXXSelfAssignmentChecker>(void*)
Line
Count
Source
578
39
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DeadStoresChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DeadStoresChecker>(void*)
Line
Count
Source
578
31
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DominatorsTreeDumper>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PostDominatorsTreeDumper>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ControlDependencyTreeDumper>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::LiveVariablesDumper>(void*)
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::LiveStatementsDumper>(void*)
Line
Count
Source
578
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFGViewer>(void*)
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFGDumper>(void*)
Line
Count
Source
578
33
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CallGraphViewer>(void*)
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CallGraphDumper>(void*)
Line
Count
Source
578
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ConfigDumper>(void*)
Line
Count
Source
578
6
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ExplodedGraphViewer>(void*)
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ReportStmts>(void*)
Line
Count
Source
578
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DeleteWithNonVirtualDtorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DeleteWithNonVirtualDtorChecker>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DereferenceChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DereferenceChecker>(void*)
Line
Count
Source
578
683
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DirectIvarAssignment.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DirectIvarAssignment>(void*)
Line
Count
Source
578
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DivZeroChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DivZeroChecker>(void*)
Line
Count
Source
578
682
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DynamicTypePropagation.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DynamicTypePropagation>(void*)
Line
Count
Source
578
676
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DynamicTypeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DynamicTypeChecker>(void*)
Line
Count
Source
578
72
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
EnumCastOutOfRangeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::EnumCastOutOfRangeChecker>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ExprInspectionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ExprInspectionChecker>(void*)
Line
Count
Source
578
241
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
FixedAddressChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::FixedAddressChecker>(void*)
Line
Count
Source
578
71
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
GCDAntipatternChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::GCDAntipatternChecker>(void*)
Line
Count
Source
578
5
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
GenericTaintChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::GenericTaintChecker>(void*)
Line
Count
Source
578
14
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
GTestChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::GTestChecker>(void*)
Line
Count
Source
578
7
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
IdenticalExprChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::FindIdenticalExprChecker>(void*)
Line
Count
Source
578
70
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
InnerPointerChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::InnerPointerChecker>(void*)
Line
Count
Source
578
40
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
IteratorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::IteratorChecker>(void*)
Line
Count
Source
578
8
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
IvarInvalidationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::IvarInvalidationChecker>(void*)
Line
Count
Source
578
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
LLVMConventionsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::LLVMConventionsChecker>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
LocalizationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NonLocalizedStringChecker>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
LocalizationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::EmptyLocalizationContextChecker>(void*)
Line
Count
Source
578
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
LocalizationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PluralMisuseChecker>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MacOSKeychainAPIChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MacOSKeychainAPIChecker>(void*)
Line
Count
Source
578
25
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MacOSXAPIChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MacOSXAPIChecker>(void*)
Line
Count
Source
578
28
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MallocChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MallocChecker>(void*)
Line
Count
Source
578
179
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MallocOverflowSecurityChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MallocOverflowSecurityChecker>(void*)
Line
Count
Source
578
5
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MallocSizeofChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MallocSizeofChecker>(void*)
Line
Count
Source
578
27
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MmapWriteExecChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MmapWriteExecChecker>(void*)
Line
Count
Source
578
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MIGChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MIGChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MoveChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MoveChecker>(void*)
Line
Count
Source
578
49
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
void clang::ento::CheckerManager::destruct<clang::ento::mpi::MPIChecker>(void*)
Line
Count
Source
578
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: NSAutoreleasePoolChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NSAutoreleasePoolChecker>(void*)
NSErrorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NSOrCFErrorDerefChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NSErrorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NSErrorMethodChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NSErrorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFErrorFunctionChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NoReturnFunctionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NoReturnFunctionChecker>(void*)
Line
Count
Source
578
686
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NonNullParamChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NonNullParamChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NonnullGlobalConstantsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NonnullGlobalConstantsChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NullabilityChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NullabilityChecker>(void*)
Line
Count
Source
578
23
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NumberObjectConversionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NumberObjectConversionChecker>(void*)
Line
Count
Source
578
32
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCAtSyncChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCAtSyncChecker>(void*)
Line
Count
Source
578
8
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCAutoreleaseWriteChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCAutoreleaseWriteChecker>(void*)
Line
Count
Source
578
25
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCContainersASTChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCContainersASTChecker>(void*)
Line
Count
Source
578
25
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCContainersChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCContainersChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCMissingSuperCallChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCSuperCallChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCPropertyChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCPropertyChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCSelfInitChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCSelfInitChecker>(void*)
Line
Count
Source
578
26
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCSuperDeallocChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCSuperDeallocChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCUnusedIVarsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCUnusedIvarsChecker>(void*)
Line
Count
Source
578
24
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
OSObjectCStyleCast.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::OSObjectCStyleCastChecker>(void*)
Line
Count
Source
578
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PaddingChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PaddingChecker>(void*)
Line
Count
Source
578
6
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PointerArithChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PointerArithChecker>(void*)
Line
Count
Source
578
73
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PointerIterationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PointerIterationChecker>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PointerSortingChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PointerSortingChecker>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PointerSubChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PointerSubChecker>(void*)
Line
Count
Source
578
71
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PthreadLockChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PthreadLockChecker>(void*)
Line
Count
Source
578
5
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
void clang::ento::CheckerManager::destruct<clang::ento::retaincountchecker::RetainCountChecker>(void*)
Line
Count
Source
578
71
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ReturnPointerRangeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ReturnPointerRangeChecker>(void*)
Line
Count
Source
578
4
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ReturnUndefChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ReturnUndefChecker>(void*)
Line
Count
Source
578
676
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ReturnValueChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ReturnValueChecker>(void*)
Line
Count
Source
578
11
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
RunLoopAutoreleaseLeakChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::RunLoopAutoreleaseLeakChecker>(void*)
Line
Count
Source
578
29
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
SimpleStreamChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::SimpleStreamChecker>(void*)
Line
Count
Source
578
5
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
SmartPtrModeling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::SmartPtrModeling>(void*)
Line
Count
Source
578
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
StackAddrEscapeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::StackAddrEscapeChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
StdLibraryFunctionsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::StdLibraryFunctionsChecker>(void*)
Line
Count
Source
578
21
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
StreamChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::StreamChecker>(void*)
Line
Count
Source
578
5
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
TaintTesterChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::TaintTesterChecker>(void*)
Line
Count
Source
578
6
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
TestAfterDivZeroChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::TestAfterDivZeroChecker>(void*)
Line
Count
Source
578
71
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
TraversalChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::TraversalDumper>(void*)
Line
Count
Source
578
4
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: TraversalChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CallDumper>(void*)
TrustNonnullChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::TrustNonnullChecker>(void*)
Line
Count
Source
578
10
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefBranchChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefBranchChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefCapturedBlockVarChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefCapturedBlockVarChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefResultChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefResultChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefinedArraySubscriptChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefinedArraySubscriptChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefinedAssignmentChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefinedAssignmentChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UninitializedObjectChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UninitializedObjectChecker>(void*)
Line
Count
Source
578
11
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UnixAPIChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UnixAPIMisuseChecker>(void*)
Line
Count
Source
578
30
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UnixAPIChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UnixAPIPortabilityChecker>(void*)
Line
Count
Source
578
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UnreachableCodeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UnreachableCodeChecker>(void*)
Line
Count
Source
578
9
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
VforkChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::VforkChecker>(void*)
Line
Count
Source
578
27
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
VLASizeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::VLASizeChecker>(void*)
Line
Count
Source
578
675
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ValistChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ValistChecker>(void*)
Line
Count
Source
578
7
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
VirtualCallChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::VirtualCallChecker>(void*)
Line
Count
Source
578
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
579
580
  template <typename T>
581
15.4k
  static void *getTag() { static int tag; return &tag; }
AnalysisOrderChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::AnalysisOrderChecker>()
Line
Count
Source
581
8
  static void *getTag() { static int tag; return &tag; }
AnalyzerStatsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::AnalyzerStatsChecker>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
ArrayBoundChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ArrayBoundChecker>()
Line
Count
Source
581
7
  static void *getTag() { static int tag; return &tag; }
ArrayBoundCheckerV2.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ArrayBoundCheckerV2>()
Line
Count
Source
581
8
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NilArgChecker>()
Line
Count
Source
581
30
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFNumberChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFRetainReleaseChecker>()
Line
Count
Source
581
34
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ClassReleaseChecker>()
Line
Count
Source
581
32
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::VariadicMethodTypeChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCLoopChecker>()
Line
Count
Source
581
25
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCNonNilReturnValueChecker>()
Line
Count
Source
581
26
  static void *getTag() { static int tag; return &tag; }
BlockInCriticalSectionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::BlockInCriticalSectionChecker>()
Line
Count
Source
581
6
  static void *getTag() { static int tag; return &tag; }
BoolAssignmentChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::BoolAssignmentChecker>()
Line
Count
Source
581
71
  static void *getTag() { static int tag; return &tag; }
BuiltinFunctionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::BuiltinFunctionChecker>()
Line
Count
Source
581
685
  static void *getTag() { static int tag; return &tag; }
CStringChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CStringChecker>()
Line
Count
Source
581
308
  static void *getTag() { static int tag; return &tag; }
CStringSyntaxChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CStringSyntaxChecker>()
Line
Count
Source
581
52
  static void *getTag() { static int tag; return &tag; }
CallAndMessageChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CallAndMessageChecker>()
Line
Count
Source
581
748
  static void *getTag() { static int tag; return &tag; }
CastSizeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CastSizeChecker>()
Line
Count
Source
581
60
  static void *getTag() { static int tag; return &tag; }
CastToStructChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CastToStructChecker>()
Line
Count
Source
581
75
  static void *getTag() { static int tag; return &tag; }
CastValueChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CastValueChecker>()
Line
Count
Source
581
12
  static void *getTag() { static int tag; return &tag; }
CheckObjCDealloc.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCDeallocChecker>()
Line
Count
Source
581
28
  static void *getTag() { static int tag; return &tag; }
CheckObjCInstMethSignature.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCMethSigsChecker>()
Line
Count
Source
581
25
  static void *getTag() { static int tag; return &tag; }
CheckSecuritySyntaxOnly.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::SecuritySyntaxChecker>()
Line
Count
Source
581
225
  static void *getTag() { static int tag; return &tag; }
CheckSizeofPointer.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::SizeofPointerChecker>()
Line
Count
Source
581
70
  static void *getTag() { static int tag; return &tag; }
ChrootChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ChrootChecker>()
Line
Count
Source
581
5
  static void *getTag() { static int tag; return &tag; }
CloneChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CloneChecker>()
Line
Count
Source
581
28
  static void *getTag() { static int tag; return &tag; }
ConversionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ConversionChecker>()
Line
Count
Source
581
70
  static void *getTag() { static int tag; return &tag; }
CXXSelfAssignmentChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CXXSelfAssignmentChecker>()
Line
Count
Source
581
39
  static void *getTag() { static int tag; return &tag; }
DeadStoresChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DeadStoresChecker>()
Line
Count
Source
581
31
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DominatorsTreeDumper>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PostDominatorsTreeDumper>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ControlDependencyTreeDumper>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::LiveVariablesDumper>()
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::LiveStatementsDumper>()
Line
Count
Source
581
1
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFGViewer>()
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFGDumper>()
Line
Count
Source
581
33
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CallGraphViewer>()
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CallGraphDumper>()
Line
Count
Source
581
1
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ConfigDumper>()
Line
Count
Source
581
6
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ExplodedGraphViewer>()
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ReportStmts>()
Line
Count
Source
581
1
  static void *getTag() { static int tag; return &tag; }
DeleteWithNonVirtualDtorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DeleteWithNonVirtualDtorChecker>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
DereferenceChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DereferenceChecker>()
Line
Count
Source
581
683
  static void *getTag() { static int tag; return &tag; }
DirectIvarAssignment.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DirectIvarAssignment>()
Line
Count
Source
581
5
  static void *getTag() { static int tag; return &tag; }
DivZeroChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DivZeroChecker>()
Line
Count
Source
581
682
  static void *getTag() { static int tag; return &tag; }
DynamicTypePropagation.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DynamicTypePropagation>()
Line
Count
Source
581
702
  static void *getTag() { static int tag; return &tag; }
DynamicTypeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DynamicTypeChecker>()
Line
Count
Source
581
72
  static void *getTag() { static int tag; return &tag; }
EnumCastOutOfRangeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::EnumCastOutOfRangeChecker>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
ExprInspectionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ExprInspectionChecker>()
Line
Count
Source
581
241
  static void *getTag() { static int tag; return &tag; }
FixedAddressChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::FixedAddressChecker>()
Line
Count
Source
581
71
  static void *getTag() { static int tag; return &tag; }
GCDAntipatternChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::GCDAntipatternChecker>()
Line
Count
Source
581
5
  static void *getTag() { static int tag; return &tag; }
GenericTaintChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::GenericTaintChecker>()
Line
Count
Source
581
14
  static void *getTag() { static int tag; return &tag; }
GTestChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::GTestChecker>()
Line
Count
Source
581
7
  static void *getTag() { static int tag; return &tag; }
IdenticalExprChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::FindIdenticalExprChecker>()
Line
Count
Source
581
70
  static void *getTag() { static int tag; return &tag; }
InnerPointerChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::InnerPointerChecker>()
Line
Count
Source
581
40
  static void *getTag() { static int tag; return &tag; }
IteratorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::IteratorChecker>()
Line
Count
Source
581
18
  static void *getTag() { static int tag; return &tag; }
IvarInvalidationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::IvarInvalidationChecker>()
Line
Count
Source
581
7
  static void *getTag() { static int tag; return &tag; }
LLVMConventionsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::LLVMConventionsChecker>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
LocalizationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NonLocalizedStringChecker>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
LocalizationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::EmptyLocalizationContextChecker>()
Line
Count
Source
581
1
  static void *getTag() { static int tag; return &tag; }
LocalizationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PluralMisuseChecker>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
MacOSKeychainAPIChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MacOSKeychainAPIChecker>()
Line
Count
Source
581
25
  static void *getTag() { static int tag; return &tag; }
MacOSXAPIChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MacOSXAPIChecker>()
Line
Count
Source
581
28
  static void *getTag() { static int tag; return &tag; }
MallocChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MallocChecker>()
Line
Count
Source
581
523
  static void *getTag() { static int tag; return &tag; }
MallocOverflowSecurityChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MallocOverflowSecurityChecker>()
Line
Count
Source
581
5
  static void *getTag() { static int tag; return &tag; }
MallocSizeofChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MallocSizeofChecker>()
Line
Count
Source
581
27
  static void *getTag() { static int tag; return &tag; }
MmapWriteExecChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MmapWriteExecChecker>()
Line
Count
Source
581
3
  static void *getTag() { static int tag; return &tag; }
MIGChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MIGChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
MoveChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MoveChecker>()
Line
Count
Source
581
49
  static void *getTag() { static int tag; return &tag; }
void* clang::ento::CheckerManager::getTag<clang::ento::mpi::MPIChecker>()
Line
Count
Source
581
3
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: NSAutoreleasePoolChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NSAutoreleasePoolChecker>()
NSErrorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NSOrCFErrorDerefChecker>()
Line
Count
Source
581
72
  static void *getTag() { static int tag; return &tag; }
NSErrorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NSErrorMethodChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
NSErrorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFErrorFunctionChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
NoReturnFunctionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NoReturnFunctionChecker>()
Line
Count
Source
581
686
  static void *getTag() { static int tag; return &tag; }
NonNullParamChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NonNullParamChecker>()
Line
Count
Source
581
675
  static void *getTag() { static int tag; return &tag; }
NonnullGlobalConstantsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NonnullGlobalConstantsChecker>()
Line
Count
Source
581
675
  static void *getTag() { static int tag; return &tag; }
NullabilityChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NullabilityChecker>()
Line
Count
Source
581
104
  static void *getTag() { static int tag; return &tag; }
NumberObjectConversionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NumberObjectConversionChecker>()
Line
Count
Source
581
32
  static void *getTag() { static int tag; return &tag; }
ObjCAtSyncChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCAtSyncChecker>()
Line
Count
Source
581
8
  static void *getTag() { static int tag; return &tag; }
ObjCAutoreleaseWriteChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCAutoreleaseWriteChecker>()
Line
Count
Source
581
25
  static void *getTag() { static int tag; return &tag; }
ObjCContainersASTChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCContainersASTChecker>()
Line
Count
Source
581
25
  static void *getTag() { static int tag; return &tag; }
ObjCContainersChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCContainersChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
ObjCMissingSuperCallChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCSuperCallChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
ObjCPropertyChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCPropertyChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
ObjCSelfInitChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCSelfInitChecker>()
Line
Count
Source
581
26
  static void *getTag() { static int tag; return &tag; }
ObjCSuperDeallocChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCSuperDeallocChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
ObjCUnusedIVarsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCUnusedIvarsChecker>()
Line
Count
Source
581
24
  static void *getTag() { static int tag; return &tag; }
OSObjectCStyleCast.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::OSObjectCStyleCastChecker>()
Line
Count
Source
581
1
  static void *getTag() { static int tag; return &tag; }
PaddingChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PaddingChecker>()
Line
Count
Source
581
6
  static void *getTag() { static int tag; return &tag; }
PointerArithChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PointerArithChecker>()
Line
Count
Source
581
73
  static void *getTag() { static int tag; return &tag; }
PointerIterationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PointerIterationChecker>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
PointerSortingChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PointerSortingChecker>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
PointerSubChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PointerSubChecker>()
Line
Count
Source
581
71
  static void *getTag() { static int tag; return &tag; }
PthreadLockChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PthreadLockChecker>()
Line
Count
Source
581
5
  static void *getTag() { static int tag; return &tag; }
void* clang::ento::CheckerManager::getTag<clang::ento::retaincountchecker::RetainCountChecker>()
Line
Count
Source
581
163
  static void *getTag() { static int tag; return &tag; }
ReturnPointerRangeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ReturnPointerRangeChecker>()
Line
Count
Source
581
4
  static void *getTag() { static int tag; return &tag; }
ReturnUndefChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ReturnUndefChecker>()
Line
Count
Source
581
676
  static void *getTag() { static int tag; return &tag; }
ReturnValueChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ReturnValueChecker>()
Line
Count
Source
581
11
  static void *getTag() { static int tag; return &tag; }
RunLoopAutoreleaseLeakChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::RunLoopAutoreleaseLeakChecker>()
Line
Count
Source
581
29
  static void *getTag() { static int tag; return &tag; }
SimpleStreamChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::SimpleStreamChecker>()
Line
Count
Source
581
5
  static void *getTag() { static int tag; return &tag; }
SmartPtrModeling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::SmartPtrModeling>()
Line
Count
Source
581
48
  static void *getTag() { static int tag; return &tag; }
StackAddrEscapeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::StackAddrEscapeChecker>()
Line
Count
Source
581
1.42k
  static void *getTag() { static int tag; return &tag; }
StdLibraryFunctionsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::StdLibraryFunctionsChecker>()
Line
Count
Source
581
21
  static void *getTag() { static int tag; return &tag; }
StreamChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::StreamChecker>()
Line
Count
Source
581
5
  static void *getTag() { static int tag; return &tag; }
TaintTesterChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::TaintTesterChecker>()
Line
Count
Source
581
6
  static void *getTag() { static int tag; return &tag; }
TestAfterDivZeroChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::TestAfterDivZeroChecker>()
Line
Count
Source
581
71
  static void *getTag() { static int tag; return &tag; }
TraversalChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::TraversalDumper>()
Line
Count
Source
581
4
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: TraversalChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CallDumper>()
TrustNonnullChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::TrustNonnullChecker>()
Line
Count
Source
581
10
  static void *getTag() { static int tag; return &tag; }
UndefBranchChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefBranchChecker>()
Line
Count
Source
581
675
  static void *getTag() { static int tag; return &tag; }
UndefCapturedBlockVarChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefCapturedBlockVarChecker>()
Line
Count
Source
581
675
  static void *getTag() { static int tag; return &tag; }
UndefResultChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefResultChecker>()
Line
Count
Source
581
675
  static void *getTag() { static int tag; return &tag; }
UndefinedArraySubscriptChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefinedArraySubscriptChecker>()
Line
Count
Source
581
675
  static void *getTag() { static int tag; return &tag; }
UndefinedAssignmentChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefinedAssignmentChecker>()
Line
Count
Source
581
675
  static void *getTag() { static int tag; return &tag; }
UninitializedObjectChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UninitializedObjectChecker>()
Line
Count
Source
581
11
  static void *getTag() { static int tag; return &tag; }
UnixAPIChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UnixAPIMisuseChecker>()
Line
Count
Source
581
30
  static void *getTag() { static int tag; return &tag; }
UnixAPIChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UnixAPIPortabilityChecker>()
Line
Count
Source
581
3
  static void *getTag() { static int tag; return &tag; }
UnreachableCodeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UnreachableCodeChecker>()
Line
Count
Source
581
9
  static void *getTag() { static int tag; return &tag; }
VforkChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::VforkChecker>()
Line
Count
Source
581
27
  static void *getTag() { static int tag; return &tag; }
VLASizeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::VLASizeChecker>()
Line
Count
Source
581
675
  static void *getTag() { static int tag; return &tag; }
ValistChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ValistChecker>()
Line
Count
Source
581
20
  static void *getTag() { static int tag; return &tag; }
VirtualCallChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::VirtualCallChecker>()
Line
Count
Source
581
2
  static void *getTag() { static int tag; return &tag; }
582
583
  llvm::DenseMap<CheckerTag, CheckerRef> CheckerTags;
584
585
  std::vector<CheckerDtor> CheckerDtors;
586
587
  struct DeclCheckerInfo {
588
    CheckDeclFunc CheckFn;
589
    HandlesDeclFunc IsForDeclFn;
590
  };
591
  std::vector<DeclCheckerInfo> DeclCheckers;
592
593
  std::vector<CheckDeclFunc> BodyCheckers;
594
595
  using CachedDeclCheckers = SmallVector<CheckDeclFunc, 4>;
596
  using CachedDeclCheckersMapTy = llvm::DenseMap<unsigned, CachedDeclCheckers>;
597
  CachedDeclCheckersMapTy CachedDeclCheckersMap;
598
599
  struct StmtCheckerInfo {
600
    CheckStmtFunc CheckFn;
601
    HandlesStmtFunc IsForStmtFn;
602
    bool IsPreVisit;
603
  };
604
  std::vector<StmtCheckerInfo> StmtCheckers;
605
606
  using CachedStmtCheckers = SmallVector<CheckStmtFunc, 4>;
607
  using CachedStmtCheckersMapTy = llvm::DenseMap<unsigned, CachedStmtCheckers>;
608
  CachedStmtCheckersMapTy CachedStmtCheckersMap;
609
610
  const CachedStmtCheckers &getCachedStmtCheckersFor(const Stmt *S,
611
                                                     bool isPreVisit);
612
613
  /// Returns the checkers that have registered for callbacks of the
614
  /// given \p Kind.
615
  const std::vector<CheckObjCMessageFunc> &
616
  getObjCMessageCheckers(ObjCMessageVisitKind Kind);
617
618
  std::vector<CheckObjCMessageFunc> PreObjCMessageCheckers;
619
  std::vector<CheckObjCMessageFunc> PostObjCMessageCheckers;
620
  std::vector<CheckObjCMessageFunc> ObjCMessageNilCheckers;
621
622
  std::vector<CheckCallFunc> PreCallCheckers;
623
  std::vector<CheckCallFunc> PostCallCheckers;
624
625
  std::vector<CheckLocationFunc> LocationCheckers;
626
627
  std::vector<CheckBindFunc> BindCheckers;
628
629
  std::vector<CheckEndAnalysisFunc> EndAnalysisCheckers;
630
631
  std::vector<CheckBeginFunctionFunc> BeginFunctionCheckers;
632
  std::vector<CheckEndFunctionFunc> EndFunctionCheckers;
633
634
  std::vector<CheckBranchConditionFunc> BranchConditionCheckers;
635
636
  std::vector<CheckNewAllocatorFunc> NewAllocatorCheckers;
637
638
  std::vector<CheckLiveSymbolsFunc> LiveSymbolsCheckers;
639
640
  std::vector<CheckDeadSymbolsFunc> DeadSymbolsCheckers;
641
642
  std::vector<CheckRegionChangesFunc> RegionChangesCheckers;
643
644
  std::vector<CheckPointerEscapeFunc> PointerEscapeCheckers;
645
646
  std::vector<EvalAssumeFunc> EvalAssumeCheckers;
647
648
  std::vector<EvalCallFunc> EvalCallCheckers;
649
650
  std::vector<CheckEndOfTranslationUnit> EndOfTranslationUnitCheckers;
651
652
  struct EventInfo {
653
    SmallVector<CheckEventFunc, 4> Checkers;
654
    bool HasDispatcher = false;
655
656
683
    EventInfo() = default;
657
  };
658
659
  using EventsTy = llvm::DenseMap<EventTag, EventInfo>;
660
  EventsTy Events;
661
};
662
663
} // namespace ento
664
665
} // namespace clang
666
667
#endif // LLVM_CLANG_STATICANALYZER_CORE_CHECKERMANAGER_H