Coverage Report

Created: 2020-09-22 08:39

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/lib/AST/Stmt.cpp
Line
Count
Source (jump to first uncovered line)
1
//===- Stmt.cpp - Statement AST Node Implementation -----------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file implements the Stmt class and statement subclasses.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#include "clang/AST/Stmt.h"
14
#include "clang/AST/ASTContext.h"
15
#include "clang/AST/ASTDiagnostic.h"
16
#include "clang/AST/Attr.h"
17
#include "clang/AST/Decl.h"
18
#include "clang/AST/DeclGroup.h"
19
#include "clang/AST/Expr.h"
20
#include "clang/AST/ExprCXX.h"
21
#include "clang/AST/ExprConcepts.h"
22
#include "clang/AST/ExprObjC.h"
23
#include "clang/AST/ExprOpenMP.h"
24
#include "clang/AST/StmtCXX.h"
25
#include "clang/AST/StmtObjC.h"
26
#include "clang/AST/StmtOpenMP.h"
27
#include "clang/AST/Type.h"
28
#include "clang/Basic/CharInfo.h"
29
#include "clang/Basic/LLVM.h"
30
#include "clang/Basic/SourceLocation.h"
31
#include "clang/Basic/TargetInfo.h"
32
#include "clang/Lex/Token.h"
33
#include "llvm/ADT/SmallVector.h"
34
#include "llvm/ADT/StringExtras.h"
35
#include "llvm/ADT/StringRef.h"
36
#include "llvm/Support/Casting.h"
37
#include "llvm/Support/Compiler.h"
38
#include "llvm/Support/ErrorHandling.h"
39
#include "llvm/Support/MathExtras.h"
40
#include "llvm/Support/raw_ostream.h"
41
#include <algorithm>
42
#include <cassert>
43
#include <cstring>
44
#include <string>
45
#include <type_traits>
46
#include <utility>
47
48
using namespace clang;
49
50
static struct StmtClassNameTable {
51
  const char *Name;
52
  unsigned Counter;
53
  unsigned Size;
54
} StmtClassInfo[Stmt::lastStmtConstant+1];
55
56
28.5k
static StmtClassNameTable &getStmtInfoTableEntry(Stmt::StmtClass E) {
57
28.5k
  static bool Initialized = false;
58
28.5k
  if (Initialized)
59
27.9k
    return StmtClassInfo[E];
60
61
  // Initialize the table on the first use.
62
622
  Initialized = true;
63
622
#define ABSTRACT_STMT(STMT)
64
622
#define STMT(CLASS, PARENT) \
65
132k
  StmtClassInfo[(unsigned)Stmt::CLASS##Class].Name = #CLASS;    \
66
132k
  StmtClassInfo[(unsigned)Stmt::CLASS##Class].Size = sizeof(CLASS);
67
622
#include "clang/AST/StmtNodes.inc"
68
69
622
  return StmtClassInfo[E];
70
622
}
71
72
void *Stmt::operator new(size_t bytes, const ASTContext& C,
73
20.1M
                         unsigned alignment) {
74
20.1M
  return ::operator new(bytes, C, alignment);
75
20.1M
}
76
77
28.5k
const char *Stmt::getStmtClassName() const {
78
28.5k
  return getStmtInfoTableEntry((StmtClass) StmtBits.sClass).Name;
79
28.5k
}
80
81
// Check that no statement / expression class is polymorphic. LLVM style RTTI
82
// should be used instead. If absolutely needed an exception can still be added
83
// here by defining the appropriate macro (but please don't do this).
84
#define STMT(CLASS, PARENT) \
85
  static_assert(!std::is_polymorphic<CLASS>::value, \
86
                #CLASS " should not be polymorphic!");
87
#include "clang/AST/StmtNodes.inc"
88
89
// Check that no statement / expression class has a non-trival destructor.
90
// Statements and expressions are allocated with the BumpPtrAllocator from
91
// ASTContext and therefore their destructor is not executed.
92
#define STMT(CLASS, PARENT)                                                    \
93
  static_assert(std::is_trivially_destructible<CLASS>::value,                  \
94
                #CLASS " should be trivially destructible!");
95
// FIXME: InitListExpr is not trivially destructible due to its ASTVector.
96
#define INITLISTEXPR(CLASS, PARENT)
97
#include "clang/AST/StmtNodes.inc"
98
99
3
void Stmt::PrintStats() {
100
  // Ensure the table is primed.
101
3
  getStmtInfoTableEntry(Stmt::NullStmtClass);
102
103
3
  unsigned sum = 0;
104
3
  llvm::errs() << "\n*** Stmt/Expr Stats:\n";
105
645
  for (int i = 0; i != Stmt::lastStmtConstant+1; 
i++642
) {
106
642
    if (StmtClassInfo[i].Name == nullptr) 
continue3
;
107
639
    sum += StmtClassInfo[i].Counter;
108
639
  }
109
3
  llvm::errs() << "  " << sum << " stmts/exprs total.\n";
110
3
  sum = 0;
111
645
  for (int i = 0; i != Stmt::lastStmtConstant+1; 
i++642
) {
112
642
    if (StmtClassInfo[i].Name == nullptr) 
continue3
;
113
639
    if (StmtClassInfo[i].Counter == 0) 
continue626
;
114
13
    llvm::errs() << "    " << StmtClassInfo[i].Counter << " "
115
13
                 << StmtClassInfo[i].Name << ", " << StmtClassInfo[i].Size
116
13
                 << " each (" << StmtClassInfo[i].Counter*StmtClassInfo[i].Size
117
13
                 << " bytes)\n";
118
13
    sum += StmtClassInfo[i].Counter*StmtClassInfo[i].Size;
119
13
  }
120
121
3
  llvm::errs() << "Total bytes = " << sum << "\n";
122
3
}
123
124
13
void Stmt::addStmtClass(StmtClass s) {
125
13
  ++getStmtInfoTableEntry(s).Counter;
126
13
}
127
128
bool Stmt::StatisticsEnabled = false;
129
3
void Stmt::EnableStatistics() {
130
3
  StatisticsEnabled = true;
131
3
}
132
133
887k
static std::pair<Stmt::Likelihood, const Attr *> getLikelihood(const Stmt *S) {
134
887k
  if (const auto *AS = dyn_cast_or_null<AttributedStmt>(S))
135
68
    for (const auto *A : AS->getAttrs()) {
136
68
      if (isa<LikelyAttr>(A))
137
15
        return std::make_pair(Stmt::LH_Likely, A);
138
139
53
      if (isa<UnlikelyAttr>(A))
140
53
        return std::make_pair(Stmt::LH_Unlikely, A);
141
53
    }
142
143
887k
  return std::make_pair(Stmt::LH_None, nullptr);
144
887k
}
145
146
0
Stmt::Likelihood Stmt::getLikelihood(const Stmt *S) {
147
0
  return ::getLikelihood(S).first;
148
0
}
149
150
3.51k
Stmt::Likelihood Stmt::getLikelihood(const Stmt *Then, const Stmt *Else) {
151
3.51k
  Likelihood LHT = ::getLikelihood(Then).first;
152
3.51k
  Likelihood LHE = ::getLikelihood(Else).first;
153
3.51k
  if (LHE == LH_None)
154
3.51k
    return LHT;
155
156
  // If the same attribute is used on both branches there's a conflict.
157
0
  if (LHT == LHE)
158
0
    return LH_None;
159
160
0
  if (LHT != LH_None)
161
0
    return LHT;
162
163
  // Invert the value of Else to get the value for Then.
164
0
  return LHE == LH_Likely ? LH_Unlikely : LH_Likely;
165
0
}
166
167
std::tuple<bool, const Attr *, const Attr *>
168
440k
Stmt::determineLikelihoodConflict(const Stmt *Then, const Stmt *Else) {
169
440k
  std::pair<Likelihood, const Attr *> LHT = ::getLikelihood(Then);
170
440k
  std::pair<Likelihood, const Attr *> LHE = ::getLikelihood(Else);
171
  // If the same attribute is used on both branches there's a conflict.
172
440k
  if (LHT.first != LH_None && 
LHT.first == LHE.first37
)
173
2
    return std::make_tuple(true, LHT.second, LHE.second);
174
175
440k
  return std::make_tuple(false, nullptr, nullptr);
176
440k
}
177
178
/// Skip no-op (attributed, compound) container stmts and skip captured
179
/// stmt at the top, if \a IgnoreCaptured is true.
180
433k
Stmt *Stmt::IgnoreContainers(bool IgnoreCaptured) {
181
433k
  Stmt *S = this;
182
433k
  if (IgnoreCaptured)
183
192k
    if (auto CapS = dyn_cast_or_null<CapturedStmt>(S))
184
180k
      S = CapS->getCapturedStmt();
185
454k
  while (true) {
186
454k
    if (auto AS = dyn_cast_or_null<AttributedStmt>(S))
187
3
      S = AS->getSubStmt();
188
454k
    else if (auto CS = dyn_cast_or_null<CompoundStmt>(S)) {
189
45.5k
      if (CS->size() != 1)
190
24.6k
        break;
191
20.8k
      S = CS->body_back();
192
20.8k
    } else
193
409k
      break;
194
454k
  }
195
433k
  return S;
196
433k
}
197
198
/// Strip off all label-like statements.
199
///
200
/// This will strip off label statements, case statements, attributed
201
/// statements and default statements recursively.
202
536k
const Stmt *Stmt::stripLabelLikeStatements() const {
203
536k
  const Stmt *S = this;
204
539k
  while (true) {
205
539k
    if (const auto *LS = dyn_cast<LabelStmt>(S))
206
547
      S = LS->getSubStmt();
207
538k
    else if (const auto *SC = dyn_cast<SwitchCase>(S))
208
2.31k
      S = SC->getSubStmt();
209
536k
    else if (const auto *AS = dyn_cast<AttributedStmt>(S))
210
73
      S = AS->getSubStmt();
211
536k
    else
212
536k
      return S;
213
539k
  }
214
536k
}
215
216
namespace {
217
218
  struct good {};
219
  struct bad {};
220
221
  // These silly little functions have to be static inline to suppress
222
  // unused warnings, and they have to be defined to suppress other
223
  // warnings.
224
0
  static good is_good(good) { return good(); }
225
226
  typedef Stmt::child_range children_t();
227
0
  template <class T> good implements_children(children_t T::*) {
228
0
    return good();
229
0
  }
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AsmStmt>(llvm::iterator_range<clang::StmtIterator> (clang::AsmStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MSAsmStmt>(llvm::iterator_range<clang::StmtIterator> (clang::MSAsmStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::BreakStmt>(llvm::iterator_range<clang::StmtIterator> (clang::BreakStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXCatchStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CXXCatchStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXForRangeStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CXXForRangeStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXTryStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CXXTryStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CapturedStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CapturedStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CompoundStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CompoundStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ContinueStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ContinueStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CoreturnStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CoreturnStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CoroutineBodyStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CoroutineBodyStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DeclStmt>(llvm::iterator_range<clang::StmtIterator> (clang::DeclStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DoStmt>(llvm::iterator_range<clang::StmtIterator> (clang::DoStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ForStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ForStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::GotoStmt>(llvm::iterator_range<clang::StmtIterator> (clang::GotoStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::IfStmt>(llvm::iterator_range<clang::StmtIterator> (clang::IfStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::IndirectGotoStmt>(llvm::iterator_range<clang::StmtIterator> (clang::IndirectGotoStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MSDependentExistsStmt>(llvm::iterator_range<clang::StmtIterator> (clang::MSDependentExistsStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::NullStmt>(llvm::iterator_range<clang::StmtIterator> (clang::NullStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OMPExecutableDirective>(llvm::iterator_range<clang::StmtIterator> (clang::OMPExecutableDirective::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtCatchStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtCatchStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtFinallyStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtFinallyStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtSynchronizedStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtSynchronizedStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtThrowStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtThrowStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAtTryStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAtTryStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAutoreleasePoolStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAutoreleasePoolStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCForCollectionStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCForCollectionStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ReturnStmt>(llvm::iterator_range<clang::StmtIterator> (clang::ReturnStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SEHExceptStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SEHExceptStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SEHFinallyStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SEHFinallyStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SEHLeaveStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SEHLeaveStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SEHTryStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SEHTryStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CaseStmt>(llvm::iterator_range<clang::StmtIterator> (clang::CaseStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DefaultStmt>(llvm::iterator_range<clang::StmtIterator> (clang::DefaultStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SwitchStmt>(llvm::iterator_range<clang::StmtIterator> (clang::SwitchStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AttributedStmt>(llvm::iterator_range<clang::StmtIterator> (clang::AttributedStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::BinaryConditionalOperator>(llvm::iterator_range<clang::StmtIterator> (clang::BinaryConditionalOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ConditionalOperator>(llvm::iterator_range<clang::StmtIterator> (clang::ConditionalOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AddrLabelExpr>(llvm::iterator_range<clang::StmtIterator> (clang::AddrLabelExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ArrayInitIndexExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ArrayInitIndexExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ArrayInitLoopExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ArrayInitLoopExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ArraySubscriptExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ArraySubscriptExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ArrayTypeTraitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ArrayTypeTraitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AsTypeExpr>(llvm::iterator_range<clang::StmtIterator> (clang::AsTypeExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::AtomicExpr>(llvm::iterator_range<clang::StmtIterator> (clang::AtomicExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::BinaryOperator>(llvm::iterator_range<clang::StmtIterator> (clang::BinaryOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::BlockExpr>(llvm::iterator_range<clang::StmtIterator> (clang::BlockExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXBindTemporaryExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXBindTemporaryExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXBoolLiteralExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXBoolLiteralExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXConstructExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXConstructExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXDefaultArgExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXDefaultArgExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXDefaultInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXDefaultInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXDeleteExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXDeleteExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXDependentScopeMemberExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXDependentScopeMemberExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXFoldExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXFoldExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXInheritedCtorInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXInheritedCtorInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXNewExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXNewExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXNoexceptExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXNoexceptExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXNullPtrLiteralExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXNullPtrLiteralExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXPseudoDestructorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXPseudoDestructorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXRewrittenBinaryOperator>(llvm::iterator_range<clang::StmtIterator> (clang::CXXRewrittenBinaryOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXScalarValueInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXScalarValueInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXStdInitializerListExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXStdInitializerListExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXThisExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXThisExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXThrowExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXThrowExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXTypeidExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXTypeidExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXUnresolvedConstructExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXUnresolvedConstructExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CXXUuidofExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CXXUuidofExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CallExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CallExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CastExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CastExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CharacterLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::CharacterLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ChooseExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ChooseExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CompoundLiteralExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CompoundLiteralExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ConceptSpecializationExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ConceptSpecializationExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ConvertVectorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ConvertVectorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::CoroutineSuspendExpr>(llvm::iterator_range<clang::StmtIterator> (clang::CoroutineSuspendExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DeclRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DeclRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DependentCoawaitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DependentCoawaitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DependentScopeDeclRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DependentScopeDeclRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DesignatedInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DesignatedInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::DesignatedInitUpdateExpr>(llvm::iterator_range<clang::StmtIterator> (clang::DesignatedInitUpdateExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ExpressionTraitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ExpressionTraitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ExtVectorElementExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ExtVectorElementExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::FixedPointLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::FixedPointLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::FloatingLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::FloatingLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ConstantExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ConstantExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ExprWithCleanups>(llvm::iterator_range<clang::StmtIterator> (clang::ExprWithCleanups::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::FunctionParmPackExpr>(llvm::iterator_range<clang::StmtIterator> (clang::FunctionParmPackExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::GNUNullExpr>(llvm::iterator_range<clang::StmtIterator> (clang::GNUNullExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::GenericSelectionExpr>(llvm::iterator_range<clang::StmtIterator> (clang::GenericSelectionExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ImaginaryLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::ImaginaryLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ImplicitValueInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ImplicitValueInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::InitListExpr>(llvm::iterator_range<clang::StmtIterator> (clang::InitListExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::IntegerLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::IntegerLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::LambdaExpr>(llvm::iterator_range<clang::StmtIterator> (clang::LambdaExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MSPropertyRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MSPropertyRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MSPropertySubscriptExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MSPropertySubscriptExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MaterializeTemporaryExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MaterializeTemporaryExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MatrixSubscriptExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MatrixSubscriptExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::MemberExpr>(llvm::iterator_range<clang::StmtIterator> (clang::MemberExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::NoInitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::NoInitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OMPArraySectionExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OMPArraySectionExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OMPArrayShapingExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OMPArrayShapingExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OMPIteratorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OMPIteratorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCArrayLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCArrayLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCAvailabilityCheckExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCAvailabilityCheckExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCBoolLiteralExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCBoolLiteralExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCBoxedExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCBoxedExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCDictionaryLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCDictionaryLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCEncodeExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCEncodeExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCIndirectCopyRestoreExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCIndirectCopyRestoreExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCIsaExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCIsaExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCIvarRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCIvarRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCMessageExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCMessageExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCPropertyRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCPropertyRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCProtocolExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCProtocolExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCSelectorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCSelectorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCStringLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCStringLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ObjCSubscriptRefExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ObjCSubscriptRefExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OffsetOfExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OffsetOfExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::OpaqueValueExpr>(llvm::iterator_range<clang::StmtIterator> (clang::OpaqueValueExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::UnresolvedLookupExpr>(llvm::iterator_range<clang::StmtIterator> (clang::UnresolvedLookupExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::UnresolvedMemberExpr>(llvm::iterator_range<clang::StmtIterator> (clang::UnresolvedMemberExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::PackExpansionExpr>(llvm::iterator_range<clang::StmtIterator> (clang::PackExpansionExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ParenExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ParenExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ParenListExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ParenListExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::PredefinedExpr>(llvm::iterator_range<clang::StmtIterator> (clang::PredefinedExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::PseudoObjectExpr>(llvm::iterator_range<clang::StmtIterator> (clang::PseudoObjectExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::RecoveryExpr>(llvm::iterator_range<clang::StmtIterator> (clang::RecoveryExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::RequiresExpr>(llvm::iterator_range<clang::StmtIterator> (clang::RequiresExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::ShuffleVectorExpr>(llvm::iterator_range<clang::StmtIterator> (clang::ShuffleVectorExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SizeOfPackExpr>(llvm::iterator_range<clang::StmtIterator> (clang::SizeOfPackExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SourceLocExpr>(llvm::iterator_range<clang::StmtIterator> (clang::SourceLocExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::StmtExpr>(llvm::iterator_range<clang::StmtIterator> (clang::StmtExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::StringLiteral>(llvm::iterator_range<clang::StmtIterator> (clang::StringLiteral::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SubstNonTypeTemplateParmExpr>(llvm::iterator_range<clang::StmtIterator> (clang::SubstNonTypeTemplateParmExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::SubstNonTypeTemplateParmPackExpr>(llvm::iterator_range<clang::StmtIterator> (clang::SubstNonTypeTemplateParmPackExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::TypeTraitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::TypeTraitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::TypoExpr>(llvm::iterator_range<clang::StmtIterator> (clang::TypoExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::UnaryExprOrTypeTraitExpr>(llvm::iterator_range<clang::StmtIterator> (clang::UnaryExprOrTypeTraitExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::UnaryOperator>(llvm::iterator_range<clang::StmtIterator> (clang::UnaryOperator::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::VAArgExpr>(llvm::iterator_range<clang::StmtIterator> (clang::VAArgExpr::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::LabelStmt>(llvm::iterator_range<clang::StmtIterator> (clang::LabelStmt::*)())
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_children<clang::WhileStmt>(llvm::iterator_range<clang::StmtIterator> (clang::WhileStmt::*)())
230
  LLVM_ATTRIBUTE_UNUSED
231
0
  static bad implements_children(children_t Stmt::*) {
232
0
    return bad();
233
0
  }
234
235
  typedef SourceLocation getBeginLoc_t() const;
236
0
  template <class T> good implements_getBeginLoc(getBeginLoc_t T::*) {
237
0
    return good();
238
0
  }
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::GCCAsmStmt>(clang::SourceLocation (clang::GCCAsmStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MSAsmStmt>(clang::SourceLocation (clang::MSAsmStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BreakStmt>(clang::SourceLocation (clang::BreakStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXCatchStmt>(clang::SourceLocation (clang::CXXCatchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXForRangeStmt>(clang::SourceLocation (clang::CXXForRangeStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXTryStmt>(clang::SourceLocation (clang::CXXTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CapturedStmt>(clang::SourceLocation (clang::CapturedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CompoundStmt>(clang::SourceLocation (clang::CompoundStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ContinueStmt>(clang::SourceLocation (clang::ContinueStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CoreturnStmt>(clang::SourceLocation (clang::CoreturnStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CoroutineBodyStmt>(clang::SourceLocation (clang::CoroutineBodyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DeclStmt>(clang::SourceLocation (clang::DeclStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DoStmt>(clang::SourceLocation (clang::DoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ForStmt>(clang::SourceLocation (clang::ForStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::GotoStmt>(clang::SourceLocation (clang::GotoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::IfStmt>(clang::SourceLocation (clang::IfStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::IndirectGotoStmt>(clang::SourceLocation (clang::IndirectGotoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MSDependentExistsStmt>(clang::SourceLocation (clang::MSDependentExistsStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::NullStmt>(clang::SourceLocation (clang::NullStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OMPExecutableDirective>(clang::SourceLocation (clang::OMPExecutableDirective::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtCatchStmt>(clang::SourceLocation (clang::ObjCAtCatchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtFinallyStmt>(clang::SourceLocation (clang::ObjCAtFinallyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtSynchronizedStmt>(clang::SourceLocation (clang::ObjCAtSynchronizedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtThrowStmt>(clang::SourceLocation (clang::ObjCAtThrowStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAtTryStmt>(clang::SourceLocation (clang::ObjCAtTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAutoreleasePoolStmt>(clang::SourceLocation (clang::ObjCAutoreleasePoolStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCForCollectionStmt>(clang::SourceLocation (clang::ObjCForCollectionStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ReturnStmt>(clang::SourceLocation (clang::ReturnStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SEHExceptStmt>(clang::SourceLocation (clang::SEHExceptStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SEHFinallyStmt>(clang::SourceLocation (clang::SEHFinallyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SEHLeaveStmt>(clang::SourceLocation (clang::SEHLeaveStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SEHTryStmt>(clang::SourceLocation (clang::SEHTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CaseStmt>(clang::SourceLocation (clang::CaseStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DefaultStmt>(clang::SourceLocation (clang::DefaultStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SwitchStmt>(clang::SourceLocation (clang::SwitchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::AttributedStmt>(clang::SourceLocation (clang::AttributedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BinaryConditionalOperator>(clang::SourceLocation (clang::BinaryConditionalOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ConditionalOperator>(clang::SourceLocation (clang::ConditionalOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::AddrLabelExpr>(clang::SourceLocation (clang::AddrLabelExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ArrayInitIndexExpr>(clang::SourceLocation (clang::ArrayInitIndexExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ArrayInitLoopExpr>(clang::SourceLocation (clang::ArrayInitLoopExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ArraySubscriptExpr>(clang::SourceLocation (clang::ArraySubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ArrayTypeTraitExpr>(clang::SourceLocation (clang::ArrayTypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::AsTypeExpr>(clang::SourceLocation (clang::AsTypeExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::AtomicExpr>(clang::SourceLocation (clang::AtomicExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BinaryOperator>(clang::SourceLocation (clang::BinaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BlockExpr>(clang::SourceLocation (clang::BlockExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXBindTemporaryExpr>(clang::SourceLocation (clang::CXXBindTemporaryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXBoolLiteralExpr>(clang::SourceLocation (clang::CXXBoolLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXConstructExpr>(clang::SourceLocation (clang::CXXConstructExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXTemporaryObjectExpr>(clang::SourceLocation (clang::CXXTemporaryObjectExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXDefaultArgExpr>(clang::SourceLocation (clang::CXXDefaultArgExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXDefaultInitExpr>(clang::SourceLocation (clang::CXXDefaultInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXDeleteExpr>(clang::SourceLocation (clang::CXXDeleteExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXDependentScopeMemberExpr>(clang::SourceLocation (clang::CXXDependentScopeMemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXFoldExpr>(clang::SourceLocation (clang::CXXFoldExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXInheritedCtorInitExpr>(clang::SourceLocation (clang::CXXInheritedCtorInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXNewExpr>(clang::SourceLocation (clang::CXXNewExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXNoexceptExpr>(clang::SourceLocation (clang::CXXNoexceptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXNullPtrLiteralExpr>(clang::SourceLocation (clang::CXXNullPtrLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXPseudoDestructorExpr>(clang::SourceLocation (clang::CXXPseudoDestructorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXRewrittenBinaryOperator>(clang::SourceLocation (clang::CXXRewrittenBinaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXScalarValueInitExpr>(clang::SourceLocation (clang::CXXScalarValueInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXStdInitializerListExpr>(clang::SourceLocation (clang::CXXStdInitializerListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXThisExpr>(clang::SourceLocation (clang::CXXThisExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXThrowExpr>(clang::SourceLocation (clang::CXXThrowExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXTypeidExpr>(clang::SourceLocation (clang::CXXTypeidExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXUnresolvedConstructExpr>(clang::SourceLocation (clang::CXXUnresolvedConstructExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXUuidofExpr>(clang::SourceLocation (clang::CXXUuidofExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CallExpr>(clang::SourceLocation (clang::CallExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXOperatorCallExpr>(clang::SourceLocation (clang::CXXOperatorCallExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UserDefinedLiteral>(clang::SourceLocation (clang::UserDefinedLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::BuiltinBitCastExpr>(clang::SourceLocation (clang::BuiltinBitCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CStyleCastExpr>(clang::SourceLocation (clang::CStyleCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXFunctionalCastExpr>(clang::SourceLocation (clang::CXXFunctionalCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CXXNamedCastExpr>(clang::SourceLocation (clang::CXXNamedCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCBridgedCastExpr>(clang::SourceLocation (clang::ObjCBridgedCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ImplicitCastExpr>(clang::SourceLocation (clang::ImplicitCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CharacterLiteral>(clang::SourceLocation (clang::CharacterLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ChooseExpr>(clang::SourceLocation (clang::ChooseExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CompoundLiteralExpr>(clang::SourceLocation (clang::CompoundLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ConceptSpecializationExpr>(clang::SourceLocation (clang::ConceptSpecializationExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ConvertVectorExpr>(clang::SourceLocation (clang::ConvertVectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::CoroutineSuspendExpr>(clang::SourceLocation (clang::CoroutineSuspendExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DeclRefExpr>(clang::SourceLocation (clang::DeclRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DependentCoawaitExpr>(clang::SourceLocation (clang::DependentCoawaitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DependentScopeDeclRefExpr>(clang::SourceLocation (clang::DependentScopeDeclRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DesignatedInitExpr>(clang::SourceLocation (clang::DesignatedInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::DesignatedInitUpdateExpr>(clang::SourceLocation (clang::DesignatedInitUpdateExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ExpressionTraitExpr>(clang::SourceLocation (clang::ExpressionTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ExtVectorElementExpr>(clang::SourceLocation (clang::ExtVectorElementExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::FixedPointLiteral>(clang::SourceLocation (clang::FixedPointLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::FloatingLiteral>(clang::SourceLocation (clang::FloatingLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ConstantExpr>(clang::SourceLocation (clang::ConstantExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ExprWithCleanups>(clang::SourceLocation (clang::ExprWithCleanups::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::FunctionParmPackExpr>(clang::SourceLocation (clang::FunctionParmPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::GNUNullExpr>(clang::SourceLocation (clang::GNUNullExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::GenericSelectionExpr>(clang::SourceLocation (clang::GenericSelectionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ImaginaryLiteral>(clang::SourceLocation (clang::ImaginaryLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ImplicitValueInitExpr>(clang::SourceLocation (clang::ImplicitValueInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::InitListExpr>(clang::SourceLocation (clang::InitListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::IntegerLiteral>(clang::SourceLocation (clang::IntegerLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::LambdaExpr>(clang::SourceLocation (clang::LambdaExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MSPropertyRefExpr>(clang::SourceLocation (clang::MSPropertyRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MSPropertySubscriptExpr>(clang::SourceLocation (clang::MSPropertySubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MaterializeTemporaryExpr>(clang::SourceLocation (clang::MaterializeTemporaryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MatrixSubscriptExpr>(clang::SourceLocation (clang::MatrixSubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::MemberExpr>(clang::SourceLocation (clang::MemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::NoInitExpr>(clang::SourceLocation (clang::NoInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OMPArraySectionExpr>(clang::SourceLocation (clang::OMPArraySectionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OMPArrayShapingExpr>(clang::SourceLocation (clang::OMPArrayShapingExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OMPIteratorExpr>(clang::SourceLocation (clang::OMPIteratorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCArrayLiteral>(clang::SourceLocation (clang::ObjCArrayLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCAvailabilityCheckExpr>(clang::SourceLocation (clang::ObjCAvailabilityCheckExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCBoolLiteralExpr>(clang::SourceLocation (clang::ObjCBoolLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCBoxedExpr>(clang::SourceLocation (clang::ObjCBoxedExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCDictionaryLiteral>(clang::SourceLocation (clang::ObjCDictionaryLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCEncodeExpr>(clang::SourceLocation (clang::ObjCEncodeExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCIndirectCopyRestoreExpr>(clang::SourceLocation (clang::ObjCIndirectCopyRestoreExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCIsaExpr>(clang::SourceLocation (clang::ObjCIsaExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCIvarRefExpr>(clang::SourceLocation (clang::ObjCIvarRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCMessageExpr>(clang::SourceLocation (clang::ObjCMessageExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCPropertyRefExpr>(clang::SourceLocation (clang::ObjCPropertyRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCProtocolExpr>(clang::SourceLocation (clang::ObjCProtocolExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCSelectorExpr>(clang::SourceLocation (clang::ObjCSelectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCStringLiteral>(clang::SourceLocation (clang::ObjCStringLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ObjCSubscriptRefExpr>(clang::SourceLocation (clang::ObjCSubscriptRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OffsetOfExpr>(clang::SourceLocation (clang::OffsetOfExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::OpaqueValueExpr>(clang::SourceLocation (clang::OpaqueValueExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UnresolvedLookupExpr>(clang::SourceLocation (clang::UnresolvedLookupExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UnresolvedMemberExpr>(clang::SourceLocation (clang::UnresolvedMemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::PackExpansionExpr>(clang::SourceLocation (clang::PackExpansionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ParenExpr>(clang::SourceLocation (clang::ParenExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ParenListExpr>(clang::SourceLocation (clang::ParenListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::PredefinedExpr>(clang::SourceLocation (clang::PredefinedExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::PseudoObjectExpr>(clang::SourceLocation (clang::PseudoObjectExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::RecoveryExpr>(clang::SourceLocation (clang::RecoveryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::RequiresExpr>(clang::SourceLocation (clang::RequiresExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::ShuffleVectorExpr>(clang::SourceLocation (clang::ShuffleVectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SizeOfPackExpr>(clang::SourceLocation (clang::SizeOfPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SourceLocExpr>(clang::SourceLocation (clang::SourceLocExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::StmtExpr>(clang::SourceLocation (clang::StmtExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::StringLiteral>(clang::SourceLocation (clang::StringLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SubstNonTypeTemplateParmExpr>(clang::SourceLocation (clang::SubstNonTypeTemplateParmExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::SubstNonTypeTemplateParmPackExpr>(clang::SourceLocation (clang::SubstNonTypeTemplateParmPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::TypeTraitExpr>(clang::SourceLocation (clang::TypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::TypoExpr>(clang::SourceLocation (clang::TypoExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UnaryExprOrTypeTraitExpr>(clang::SourceLocation (clang::UnaryExprOrTypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::UnaryOperator>(clang::SourceLocation (clang::UnaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::VAArgExpr>(clang::SourceLocation (clang::VAArgExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::LabelStmt>(clang::SourceLocation (clang::LabelStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getBeginLoc<clang::WhileStmt>(clang::SourceLocation (clang::WhileStmt::*)() const)
239
  LLVM_ATTRIBUTE_UNUSED
240
0
  static bad implements_getBeginLoc(getBeginLoc_t Stmt::*) { return bad(); }
241
242
  typedef SourceLocation getLocEnd_t() const;
243
0
  template <class T> good implements_getEndLoc(getLocEnd_t T::*) {
244
0
    return good();
245
0
  }
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::GCCAsmStmt>(clang::SourceLocation (clang::GCCAsmStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MSAsmStmt>(clang::SourceLocation (clang::MSAsmStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BreakStmt>(clang::SourceLocation (clang::BreakStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXCatchStmt>(clang::SourceLocation (clang::CXXCatchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXForRangeStmt>(clang::SourceLocation (clang::CXXForRangeStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXTryStmt>(clang::SourceLocation (clang::CXXTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CapturedStmt>(clang::SourceLocation (clang::CapturedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CompoundStmt>(clang::SourceLocation (clang::CompoundStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ContinueStmt>(clang::SourceLocation (clang::ContinueStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CoreturnStmt>(clang::SourceLocation (clang::CoreturnStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CoroutineBodyStmt>(clang::SourceLocation (clang::CoroutineBodyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DeclStmt>(clang::SourceLocation (clang::DeclStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DoStmt>(clang::SourceLocation (clang::DoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ForStmt>(clang::SourceLocation (clang::ForStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::GotoStmt>(clang::SourceLocation (clang::GotoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::IfStmt>(clang::SourceLocation (clang::IfStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::IndirectGotoStmt>(clang::SourceLocation (clang::IndirectGotoStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MSDependentExistsStmt>(clang::SourceLocation (clang::MSDependentExistsStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::NullStmt>(clang::SourceLocation (clang::NullStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OMPExecutableDirective>(clang::SourceLocation (clang::OMPExecutableDirective::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtCatchStmt>(clang::SourceLocation (clang::ObjCAtCatchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtFinallyStmt>(clang::SourceLocation (clang::ObjCAtFinallyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtSynchronizedStmt>(clang::SourceLocation (clang::ObjCAtSynchronizedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtThrowStmt>(clang::SourceLocation (clang::ObjCAtThrowStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAtTryStmt>(clang::SourceLocation (clang::ObjCAtTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAutoreleasePoolStmt>(clang::SourceLocation (clang::ObjCAutoreleasePoolStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCForCollectionStmt>(clang::SourceLocation (clang::ObjCForCollectionStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ReturnStmt>(clang::SourceLocation (clang::ReturnStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SEHExceptStmt>(clang::SourceLocation (clang::SEHExceptStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SEHFinallyStmt>(clang::SourceLocation (clang::SEHFinallyStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SEHLeaveStmt>(clang::SourceLocation (clang::SEHLeaveStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SEHTryStmt>(clang::SourceLocation (clang::SEHTryStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CaseStmt>(clang::SourceLocation (clang::CaseStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DefaultStmt>(clang::SourceLocation (clang::DefaultStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SwitchStmt>(clang::SourceLocation (clang::SwitchStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::AttributedStmt>(clang::SourceLocation (clang::AttributedStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BinaryConditionalOperator>(clang::SourceLocation (clang::BinaryConditionalOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ConditionalOperator>(clang::SourceLocation (clang::ConditionalOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::AddrLabelExpr>(clang::SourceLocation (clang::AddrLabelExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ArrayInitIndexExpr>(clang::SourceLocation (clang::ArrayInitIndexExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ArrayInitLoopExpr>(clang::SourceLocation (clang::ArrayInitLoopExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ArraySubscriptExpr>(clang::SourceLocation (clang::ArraySubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ArrayTypeTraitExpr>(clang::SourceLocation (clang::ArrayTypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::AsTypeExpr>(clang::SourceLocation (clang::AsTypeExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::AtomicExpr>(clang::SourceLocation (clang::AtomicExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BinaryOperator>(clang::SourceLocation (clang::BinaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BlockExpr>(clang::SourceLocation (clang::BlockExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXBindTemporaryExpr>(clang::SourceLocation (clang::CXXBindTemporaryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXBoolLiteralExpr>(clang::SourceLocation (clang::CXXBoolLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXConstructExpr>(clang::SourceLocation (clang::CXXConstructExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXTemporaryObjectExpr>(clang::SourceLocation (clang::CXXTemporaryObjectExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXDefaultArgExpr>(clang::SourceLocation (clang::CXXDefaultArgExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXDefaultInitExpr>(clang::SourceLocation (clang::CXXDefaultInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXDeleteExpr>(clang::SourceLocation (clang::CXXDeleteExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXDependentScopeMemberExpr>(clang::SourceLocation (clang::CXXDependentScopeMemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXFoldExpr>(clang::SourceLocation (clang::CXXFoldExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXInheritedCtorInitExpr>(clang::SourceLocation (clang::CXXInheritedCtorInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXNewExpr>(clang::SourceLocation (clang::CXXNewExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXNoexceptExpr>(clang::SourceLocation (clang::CXXNoexceptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXNullPtrLiteralExpr>(clang::SourceLocation (clang::CXXNullPtrLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXPseudoDestructorExpr>(clang::SourceLocation (clang::CXXPseudoDestructorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXRewrittenBinaryOperator>(clang::SourceLocation (clang::CXXRewrittenBinaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXScalarValueInitExpr>(clang::SourceLocation (clang::CXXScalarValueInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXStdInitializerListExpr>(clang::SourceLocation (clang::CXXStdInitializerListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXThisExpr>(clang::SourceLocation (clang::CXXThisExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXThrowExpr>(clang::SourceLocation (clang::CXXThrowExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXTypeidExpr>(clang::SourceLocation (clang::CXXTypeidExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXUnresolvedConstructExpr>(clang::SourceLocation (clang::CXXUnresolvedConstructExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXUuidofExpr>(clang::SourceLocation (clang::CXXUuidofExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CallExpr>(clang::SourceLocation (clang::CallExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXOperatorCallExpr>(clang::SourceLocation (clang::CXXOperatorCallExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UserDefinedLiteral>(clang::SourceLocation (clang::UserDefinedLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::BuiltinBitCastExpr>(clang::SourceLocation (clang::BuiltinBitCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CStyleCastExpr>(clang::SourceLocation (clang::CStyleCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXFunctionalCastExpr>(clang::SourceLocation (clang::CXXFunctionalCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CXXNamedCastExpr>(clang::SourceLocation (clang::CXXNamedCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCBridgedCastExpr>(clang::SourceLocation (clang::ObjCBridgedCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ImplicitCastExpr>(clang::SourceLocation (clang::ImplicitCastExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CharacterLiteral>(clang::SourceLocation (clang::CharacterLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ChooseExpr>(clang::SourceLocation (clang::ChooseExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CompoundLiteralExpr>(clang::SourceLocation (clang::CompoundLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ConceptSpecializationExpr>(clang::SourceLocation (clang::ConceptSpecializationExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ConvertVectorExpr>(clang::SourceLocation (clang::ConvertVectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::CoroutineSuspendExpr>(clang::SourceLocation (clang::CoroutineSuspendExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DeclRefExpr>(clang::SourceLocation (clang::DeclRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DependentCoawaitExpr>(clang::SourceLocation (clang::DependentCoawaitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DependentScopeDeclRefExpr>(clang::SourceLocation (clang::DependentScopeDeclRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DesignatedInitExpr>(clang::SourceLocation (clang::DesignatedInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::DesignatedInitUpdateExpr>(clang::SourceLocation (clang::DesignatedInitUpdateExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ExpressionTraitExpr>(clang::SourceLocation (clang::ExpressionTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ExtVectorElementExpr>(clang::SourceLocation (clang::ExtVectorElementExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::FixedPointLiteral>(clang::SourceLocation (clang::FixedPointLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::FloatingLiteral>(clang::SourceLocation (clang::FloatingLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ConstantExpr>(clang::SourceLocation (clang::ConstantExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ExprWithCleanups>(clang::SourceLocation (clang::ExprWithCleanups::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::FunctionParmPackExpr>(clang::SourceLocation (clang::FunctionParmPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::GNUNullExpr>(clang::SourceLocation (clang::GNUNullExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::GenericSelectionExpr>(clang::SourceLocation (clang::GenericSelectionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ImaginaryLiteral>(clang::SourceLocation (clang::ImaginaryLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ImplicitValueInitExpr>(clang::SourceLocation (clang::ImplicitValueInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::InitListExpr>(clang::SourceLocation (clang::InitListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::IntegerLiteral>(clang::SourceLocation (clang::IntegerLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::LambdaExpr>(clang::SourceLocation (clang::LambdaExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MSPropertyRefExpr>(clang::SourceLocation (clang::MSPropertyRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MSPropertySubscriptExpr>(clang::SourceLocation (clang::MSPropertySubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MaterializeTemporaryExpr>(clang::SourceLocation (clang::MaterializeTemporaryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MatrixSubscriptExpr>(clang::SourceLocation (clang::MatrixSubscriptExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::MemberExpr>(clang::SourceLocation (clang::MemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::NoInitExpr>(clang::SourceLocation (clang::NoInitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OMPArraySectionExpr>(clang::SourceLocation (clang::OMPArraySectionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OMPArrayShapingExpr>(clang::SourceLocation (clang::OMPArrayShapingExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OMPIteratorExpr>(clang::SourceLocation (clang::OMPIteratorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCArrayLiteral>(clang::SourceLocation (clang::ObjCArrayLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCAvailabilityCheckExpr>(clang::SourceLocation (clang::ObjCAvailabilityCheckExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCBoolLiteralExpr>(clang::SourceLocation (clang::ObjCBoolLiteralExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCBoxedExpr>(clang::SourceLocation (clang::ObjCBoxedExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCDictionaryLiteral>(clang::SourceLocation (clang::ObjCDictionaryLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCEncodeExpr>(clang::SourceLocation (clang::ObjCEncodeExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCIndirectCopyRestoreExpr>(clang::SourceLocation (clang::ObjCIndirectCopyRestoreExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCIsaExpr>(clang::SourceLocation (clang::ObjCIsaExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCIvarRefExpr>(clang::SourceLocation (clang::ObjCIvarRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCMessageExpr>(clang::SourceLocation (clang::ObjCMessageExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCPropertyRefExpr>(clang::SourceLocation (clang::ObjCPropertyRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCProtocolExpr>(clang::SourceLocation (clang::ObjCProtocolExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCSelectorExpr>(clang::SourceLocation (clang::ObjCSelectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCStringLiteral>(clang::SourceLocation (clang::ObjCStringLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ObjCSubscriptRefExpr>(clang::SourceLocation (clang::ObjCSubscriptRefExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OffsetOfExpr>(clang::SourceLocation (clang::OffsetOfExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::OpaqueValueExpr>(clang::SourceLocation (clang::OpaqueValueExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UnresolvedLookupExpr>(clang::SourceLocation (clang::UnresolvedLookupExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UnresolvedMemberExpr>(clang::SourceLocation (clang::UnresolvedMemberExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::PackExpansionExpr>(clang::SourceLocation (clang::PackExpansionExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ParenExpr>(clang::SourceLocation (clang::ParenExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ParenListExpr>(clang::SourceLocation (clang::ParenListExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::PredefinedExpr>(clang::SourceLocation (clang::PredefinedExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::PseudoObjectExpr>(clang::SourceLocation (clang::PseudoObjectExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::RecoveryExpr>(clang::SourceLocation (clang::RecoveryExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::RequiresExpr>(clang::SourceLocation (clang::RequiresExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::ShuffleVectorExpr>(clang::SourceLocation (clang::ShuffleVectorExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SizeOfPackExpr>(clang::SourceLocation (clang::SizeOfPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SourceLocExpr>(clang::SourceLocation (clang::SourceLocExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::StmtExpr>(clang::SourceLocation (clang::StmtExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::StringLiteral>(clang::SourceLocation (clang::StringLiteral::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SubstNonTypeTemplateParmExpr>(clang::SourceLocation (clang::SubstNonTypeTemplateParmExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::SubstNonTypeTemplateParmPackExpr>(clang::SourceLocation (clang::SubstNonTypeTemplateParmPackExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::TypeTraitExpr>(clang::SourceLocation (clang::TypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::TypoExpr>(clang::SourceLocation (clang::TypoExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UnaryExprOrTypeTraitExpr>(clang::SourceLocation (clang::UnaryExprOrTypeTraitExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::UnaryOperator>(clang::SourceLocation (clang::UnaryOperator::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::VAArgExpr>(clang::SourceLocation (clang::VAArgExpr::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::LabelStmt>(clang::SourceLocation (clang::LabelStmt::*)() const)
Unexecuted instantiation: Stmt.cpp:(anonymous namespace)::good (anonymous namespace)::implements_getEndLoc<clang::WhileStmt>(clang::SourceLocation (clang::WhileStmt::*)() const)
246
  LLVM_ATTRIBUTE_UNUSED
247
0
  static bad implements_getEndLoc(getLocEnd_t Stmt::*) { return bad(); }
248
249
#define ASSERT_IMPLEMENTS_children(type) \
250
  (void) is_good(implements_children(&type::children))
251
#define ASSERT_IMPLEMENTS_getBeginLoc(type)                                    \
252
  (void)is_good(implements_getBeginLoc(&type::getBeginLoc))
253
#define ASSERT_IMPLEMENTS_getEndLoc(type)                                      \
254
  (void)is_good(implements_getEndLoc(&type::getEndLoc))
255
256
} // namespace
257
258
/// Check whether the various Stmt classes implement their member
259
/// functions.
260
LLVM_ATTRIBUTE_UNUSED
261
0
static inline void check_implementations() {
262
0
#define ABSTRACT_STMT(type)
263
0
#define STMT(type, base)                                                       \
264
0
  ASSERT_IMPLEMENTS_children(type);                                            \
265
0
  ASSERT_IMPLEMENTS_getBeginLoc(type);                                         \
266
0
  ASSERT_IMPLEMENTS_getEndLoc(type);
267
0
#include "clang/AST/StmtNodes.inc"
268
0
}
269
270
92.8M
Stmt::child_range Stmt::children() {
271
92.8M
  switch (getStmtClass()) {
272
0
  case Stmt::NoStmtClass: llvm_unreachable("statement without class");
273
0
#define ABSTRACT_STMT(type)
274
0
#define STMT(type, base) \
275
92.8M
  case Stmt::type##Class: \
276
92.8M
    return static_cast<type*>(this)->children();
277
0
#include "clang/AST/StmtNodes.inc"
278
92.8M
  }
279
92.8M
  
llvm_unreachable0
("unknown statement kind!");
280
92.8M
}
281
282
// Amusing macro metaprogramming hack: check whether a class provides
283
// a more specific implementation of getSourceRange.
284
//
285
// See also Expr.cpp:getExprLoc().
286
namespace {
287
288
  /// This implementation is used when a class provides a custom
289
  /// implementation of getSourceRange.
290
  template <class S, class T>
291
  SourceRange getSourceRangeImpl(const Stmt *stmt,
292
59.4k
                                 SourceRange (T::*v)() const) {
293
59.4k
    return static_cast<const S*>(stmt)->getSourceRange();
294
59.4k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CapturedStmt, clang::CapturedStmt>(clang::Stmt const*, clang::SourceRange (clang::CapturedStmt::*)() const)
Line
Count
Source
292
9.88k
                                 SourceRange (T::*v)() const) {
293
9.88k
    return static_cast<const S*>(stmt)->getSourceRange();
294
9.88k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXNewExpr, clang::CXXNewExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXNewExpr::*)() const)
Line
Count
Source
292
8.35k
                                 SourceRange (T::*v)() const) {
293
8.35k
    return static_cast<const S*>(stmt)->getSourceRange();
294
8.35k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXNoexceptExpr, clang::CXXNoexceptExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXNoexceptExpr::*)() const)
Line
Count
Source
292
11
                                 SourceRange (T::*v)() const) {
293
11
    return static_cast<const S*>(stmt)->getSourceRange();
294
11
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXRewrittenBinaryOperator, clang::CXXRewrittenBinaryOperator>(clang::Stmt const*, clang::SourceRange (clang::CXXRewrittenBinaryOperator::*)() const)
Line
Count
Source
292
21
                                 SourceRange (T::*v)() const) {
293
21
    return static_cast<const S*>(stmt)->getSourceRange();
294
21
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXStdInitializerListExpr, clang::CXXStdInitializerListExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXStdInitializerListExpr::*)() const)
Line
Count
Source
292
54
                                 SourceRange (T::*v)() const) {
293
54
    return static_cast<const S*>(stmt)->getSourceRange();
294
54
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXTypeidExpr, clang::CXXTypeidExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXTypeidExpr::*)() const)
Line
Count
Source
292
74
                                 SourceRange (T::*v)() const) {
293
74
    return static_cast<const S*>(stmt)->getSourceRange();
294
74
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXUuidofExpr, clang::CXXUuidofExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXUuidofExpr::*)() const)
Line
Count
Source
292
43
                                 SourceRange (T::*v)() const) {
293
43
    return static_cast<const S*>(stmt)->getSourceRange();
294
43
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXOperatorCallExpr, clang::CXXOperatorCallExpr>(clang::Stmt const*, clang::SourceRange (clang::CXXOperatorCallExpr::*)() const)
Line
Count
Source
292
39.6k
                                 SourceRange (T::*v)() const) {
293
39.6k
    return static_cast<const S*>(stmt)->getSourceRange();
294
39.6k
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MSPropertyRefExpr, clang::MSPropertyRefExpr>(clang::Stmt const*, clang::SourceRange (clang::MSPropertyRefExpr::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCArrayLiteral, clang::ObjCArrayLiteral>(clang::Stmt const*, clang::SourceRange (clang::ObjCArrayLiteral::*)() const)
Line
Count
Source
292
431
                                 SourceRange (T::*v)() const) {
293
431
    return static_cast<const S*>(stmt)->getSourceRange();
294
431
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAvailabilityCheckExpr, clang::ObjCAvailabilityCheckExpr>(clang::Stmt const*, clang::SourceRange (clang::ObjCAvailabilityCheckExpr::*)() const)
Line
Count
Source
292
10
                                 SourceRange (T::*v)() const) {
293
10
    return static_cast<const S*>(stmt)->getSourceRange();
294
10
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCBoxedExpr, clang::ObjCBoxedExpr>(clang::Stmt const*, clang::SourceRange (clang::ObjCBoxedExpr::*)() const)
Line
Count
Source
292
701
                                 SourceRange (T::*v)() const) {
293
701
    return static_cast<const S*>(stmt)->getSourceRange();
294
701
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCDictionaryLiteral, clang::ObjCDictionaryLiteral>(clang::Stmt const*, clang::SourceRange (clang::ObjCDictionaryLiteral::*)() const)
Line
Count
Source
292
162
                                 SourceRange (T::*v)() const) {
293
162
    return static_cast<const S*>(stmt)->getSourceRange();
294
162
  }
295
296
  /// This implementation is used when a class doesn't provide a custom
297
  /// implementation of getSourceRange.  Overload resolution should pick it over
298
  /// the implementation above because it's more specialized according to
299
  /// function template partial ordering.
300
  template <class S>
301
  SourceRange getSourceRangeImpl(const Stmt *stmt,
302
10.7M
                                 SourceRange (Stmt::*v)() const) {
303
10.7M
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
10.7M
                       static_cast<const S *>(stmt)->getEndLoc());
305
10.7M
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::GCCAsmStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
12
                                 SourceRange (Stmt::*v)() const) {
303
12
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
12
                       static_cast<const S *>(stmt)->getEndLoc());
305
12
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MSAsmStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BreakStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
196
                                 SourceRange (Stmt::*v)() const) {
303
196
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
196
                       static_cast<const S *>(stmt)->getEndLoc());
305
196
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXCatchStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
158
                                 SourceRange (Stmt::*v)() const) {
303
158
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
158
                       static_cast<const S *>(stmt)->getEndLoc());
305
158
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXForRangeStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
588
                                 SourceRange (Stmt::*v)() const) {
303
588
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
588
                       static_cast<const S *>(stmt)->getEndLoc());
305
588
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXTryStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
181
                                 SourceRange (Stmt::*v)() const) {
303
181
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
181
                       static_cast<const S *>(stmt)->getEndLoc());
305
181
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CompoundStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
475k
                                 SourceRange (Stmt::*v)() const) {
303
475k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
475k
                       static_cast<const S *>(stmt)->getEndLoc());
305
475k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ContinueStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
31
                                 SourceRange (Stmt::*v)() const) {
303
31
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
31
                       static_cast<const S *>(stmt)->getEndLoc());
305
31
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CoreturnStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
10
                                 SourceRange (Stmt::*v)() const) {
303
10
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
10
                       static_cast<const S *>(stmt)->getEndLoc());
305
10
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CoroutineBodyStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
57
                                 SourceRange (Stmt::*v)() const) {
303
57
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
57
                       static_cast<const S *>(stmt)->getEndLoc());
305
57
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DeclStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
391k
                                 SourceRange (Stmt::*v)() const) {
303
391k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
391k
                       static_cast<const S *>(stmt)->getEndLoc());
305
391k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DoStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
699
                                 SourceRange (Stmt::*v)() const) {
303
699
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
699
                       static_cast<const S *>(stmt)->getEndLoc());
305
699
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ForStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
43.2k
                                 SourceRange (Stmt::*v)() const) {
303
43.2k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
43.2k
                       static_cast<const S *>(stmt)->getEndLoc());
305
43.2k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::GotoStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
36
                                 SourceRange (Stmt::*v)() const) {
303
36
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
36
                       static_cast<const S *>(stmt)->getEndLoc());
305
36
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::IfStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
7.69k
                                 SourceRange (Stmt::*v)() const) {
303
7.69k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
7.69k
                       static_cast<const S *>(stmt)->getEndLoc());
305
7.69k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::IndirectGotoStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
10
                                 SourceRange (Stmt::*v)() const) {
303
10
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
10
                       static_cast<const S *>(stmt)->getEndLoc());
305
10
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MSDependentExistsStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
34
                                 SourceRange (Stmt::*v)() const) {
303
34
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
34
                       static_cast<const S *>(stmt)->getEndLoc());
305
34
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::NullStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.10k
                                 SourceRange (Stmt::*v)() const) {
303
1.10k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.10k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.10k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPAtomicDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
455
                                 SourceRange (Stmt::*v)() const) {
303
455
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
455
                       static_cast<const S *>(stmt)->getEndLoc());
305
455
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPBarrierDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1
                                 SourceRange (Stmt::*v)() const) {
303
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1
                       static_cast<const S *>(stmt)->getEndLoc());
305
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPCancelDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1
                                 SourceRange (Stmt::*v)() const) {
303
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1
                       static_cast<const S *>(stmt)->getEndLoc());
305
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPCancellationPointDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1
                                 SourceRange (Stmt::*v)() const) {
303
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1
                       static_cast<const S *>(stmt)->getEndLoc());
305
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPCriticalDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
60
                                 SourceRange (Stmt::*v)() const) {
303
60
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
60
                       static_cast<const S *>(stmt)->getEndLoc());
305
60
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDepobjDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPFlushDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1
                                 SourceRange (Stmt::*v)() const) {
303
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1
                       static_cast<const S *>(stmt)->getEndLoc());
305
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDistributeDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
473
                                 SourceRange (Stmt::*v)() const) {
303
473
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
473
                       static_cast<const S *>(stmt)->getEndLoc());
305
473
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDistributeParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.18k
                                 SourceRange (Stmt::*v)() const) {
303
2.18k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.18k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.18k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDistributeParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.75k
                                 SourceRange (Stmt::*v)() const) {
303
1.75k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.75k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.75k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPDistributeSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
815
                                 SourceRange (Stmt::*v)() const) {
303
815
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
815
                       static_cast<const S *>(stmt)->getEndLoc());
305
815
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.21k
                                 SourceRange (Stmt::*v)() const) {
303
1.21k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.21k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.21k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.09k
                                 SourceRange (Stmt::*v)() const) {
303
1.09k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.09k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.09k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMasterTaskLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
213
                                 SourceRange (Stmt::*v)() const) {
303
213
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
213
                       static_cast<const S *>(stmt)->getEndLoc());
305
213
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMasterTaskLoopSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
287
                                 SourceRange (Stmt::*v)() const) {
303
287
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
287
                       static_cast<const S *>(stmt)->getEndLoc());
305
287
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
693
                                 SourceRange (Stmt::*v)() const) {
303
693
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
693
                       static_cast<const S *>(stmt)->getEndLoc());
305
693
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
383
                                 SourceRange (Stmt::*v)() const) {
303
383
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
383
                       static_cast<const S *>(stmt)->getEndLoc());
305
383
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelMasterTaskLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
232
                                 SourceRange (Stmt::*v)() const) {
303
232
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
232
                       static_cast<const S *>(stmt)->getEndLoc());
305
232
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelMasterTaskLoopSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
317
                                 SourceRange (Stmt::*v)() const) {
303
317
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
317
                       static_cast<const S *>(stmt)->getEndLoc());
305
317
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
700
                                 SourceRange (Stmt::*v)() const) {
303
700
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
700
                       static_cast<const S *>(stmt)->getEndLoc());
305
700
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.29k
                                 SourceRange (Stmt::*v)() const) {
303
2.29k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.29k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.29k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.86k
                                 SourceRange (Stmt::*v)() const) {
303
1.86k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.86k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.86k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDistributeDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.22k
                                 SourceRange (Stmt::*v)() const) {
303
2.22k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.22k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.22k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDistributeParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.97k
                                 SourceRange (Stmt::*v)() const) {
303
2.97k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.97k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.97k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDistributeParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
4.88k
                                 SourceRange (Stmt::*v)() const) {
303
4.88k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
4.88k
                       static_cast<const S *>(stmt)->getEndLoc());
305
4.88k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDistributeSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.96k
                                 SourceRange (Stmt::*v)() const) {
303
2.96k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.96k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.96k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskLoopDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
193
                                 SourceRange (Stmt::*v)() const) {
303
193
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
193
                       static_cast<const S *>(stmt)->getEndLoc());
305
193
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskLoopSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
292
                                 SourceRange (Stmt::*v)() const) {
303
292
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
292
                       static_cast<const S *>(stmt)->getEndLoc());
305
292
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDistributeDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
484
                                 SourceRange (Stmt::*v)() const) {
303
484
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
484
                       static_cast<const S *>(stmt)->getEndLoc());
305
484
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDistributeParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.86k
                                 SourceRange (Stmt::*v)() const) {
303
1.86k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.86k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.86k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDistributeParallelForSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.04k
                                 SourceRange (Stmt::*v)() const) {
303
2.04k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.04k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.04k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDistributeSimdDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
674
                                 SourceRange (Stmt::*v)() const) {
303
674
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
674
                       static_cast<const S *>(stmt)->getEndLoc());
305
674
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPMasterDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
19
                                 SourceRange (Stmt::*v)() const) {
303
19
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
19
                       static_cast<const S *>(stmt)->getEndLoc());
305
19
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPOrderedDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
38
                                 SourceRange (Stmt::*v)() const) {
303
38
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
38
                       static_cast<const S *>(stmt)->getEndLoc());
305
38
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.83k
                                 SourceRange (Stmt::*v)() const) {
303
1.83k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.83k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.83k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelMasterDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
60
                                 SourceRange (Stmt::*v)() const) {
303
60
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
60
                       static_cast<const S *>(stmt)->getEndLoc());
305
60
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPParallelSectionsDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
71
                                 SourceRange (Stmt::*v)() const) {
303
71
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
71
                       static_cast<const S *>(stmt)->getEndLoc());
305
71
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPScanDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
16
                                 SourceRange (Stmt::*v)() const) {
303
16
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
16
                       static_cast<const S *>(stmt)->getEndLoc());
305
16
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPSectionDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
55
                                 SourceRange (Stmt::*v)() const) {
303
55
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
55
                       static_cast<const S *>(stmt)->getEndLoc());
305
55
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPSectionsDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
216
                                 SourceRange (Stmt::*v)() const) {
303
216
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
216
                       static_cast<const S *>(stmt)->getEndLoc());
305
216
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPSingleDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
130
                                 SourceRange (Stmt::*v)() const) {
303
130
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
130
                       static_cast<const S *>(stmt)->getEndLoc());
305
130
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetDataDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
348
                                 SourceRange (Stmt::*v)() const) {
303
348
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
348
                       static_cast<const S *>(stmt)->getEndLoc());
305
348
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
7.69k
                                 SourceRange (Stmt::*v)() const) {
303
7.69k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
7.69k
                       static_cast<const S *>(stmt)->getEndLoc());
305
7.69k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetEnterDataDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
182
                                 SourceRange (Stmt::*v)() const) {
303
182
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
182
                       static_cast<const S *>(stmt)->getEndLoc());
305
182
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetExitDataDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
150
                                 SourceRange (Stmt::*v)() const) {
303
150
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
150
                       static_cast<const S *>(stmt)->getEndLoc());
305
150
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetParallelDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.21k
                                 SourceRange (Stmt::*v)() const) {
303
2.21k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.21k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.21k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetParallelForDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.05k
                                 SourceRange (Stmt::*v)() const) {
303
2.05k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.05k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.05k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetTeamsDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.53k
                                 SourceRange (Stmt::*v)() const) {
303
2.53k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.53k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.53k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTargetUpdateDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
404
                                 SourceRange (Stmt::*v)() const) {
303
404
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
404
                       static_cast<const S *>(stmt)->getEndLoc());
305
404
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
327
                                 SourceRange (Stmt::*v)() const) {
303
327
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
327
                       static_cast<const S *>(stmt)->getEndLoc());
305
327
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskgroupDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
80
                                 SourceRange (Stmt::*v)() const) {
303
80
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
80
                       static_cast<const S *>(stmt)->getEndLoc());
305
80
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskwaitDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1
                                 SourceRange (Stmt::*v)() const) {
303
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1
                       static_cast<const S *>(stmt)->getEndLoc());
305
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTaskyieldDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1
                                 SourceRange (Stmt::*v)() const) {
303
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1
                       static_cast<const S *>(stmt)->getEndLoc());
305
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPTeamsDirective>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.57k
                                 SourceRange (Stmt::*v)() const) {
303
2.57k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.57k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.57k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtCatchStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
28
                                 SourceRange (Stmt::*v)() const) {
303
28
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
28
                       static_cast<const S *>(stmt)->getEndLoc());
305
28
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtFinallyStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
21
                                 SourceRange (Stmt::*v)() const) {
303
21
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
21
                       static_cast<const S *>(stmt)->getEndLoc());
305
21
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtSynchronizedStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
75
                                 SourceRange (Stmt::*v)() const) {
303
75
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
75
                       static_cast<const S *>(stmt)->getEndLoc());
305
75
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtThrowStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
11
                                 SourceRange (Stmt::*v)() const) {
303
11
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
11
                       static_cast<const S *>(stmt)->getEndLoc());
305
11
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAtTryStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
32
                                 SourceRange (Stmt::*v)() const) {
303
32
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
32
                       static_cast<const S *>(stmt)->getEndLoc());
305
32
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCAutoreleasePoolStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
10
                                 SourceRange (Stmt::*v)() const) {
303
10
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
10
                       static_cast<const S *>(stmt)->getEndLoc());
305
10
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCForCollectionStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
582
                                 SourceRange (Stmt::*v)() const) {
303
582
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
582
                       static_cast<const S *>(stmt)->getEndLoc());
305
582
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ReturnStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
152k
                                 SourceRange (Stmt::*v)() const) {
303
152k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
152k
                       static_cast<const S *>(stmt)->getEndLoc());
305
152k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SEHExceptStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
24
                                 SourceRange (Stmt::*v)() const) {
303
24
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
24
                       static_cast<const S *>(stmt)->getEndLoc());
305
24
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SEHFinallyStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
54
                                 SourceRange (Stmt::*v)() const) {
303
54
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
54
                       static_cast<const S *>(stmt)->getEndLoc());
305
54
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SEHLeaveStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SEHTryStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
78
                                 SourceRange (Stmt::*v)() const) {
303
78
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
78
                       static_cast<const S *>(stmt)->getEndLoc());
305
78
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CaseStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
757
                                 SourceRange (Stmt::*v)() const) {
303
757
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
757
                       static_cast<const S *>(stmt)->getEndLoc());
305
757
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DefaultStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
140
                                 SourceRange (Stmt::*v)() const) {
303
140
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
140
                       static_cast<const S *>(stmt)->getEndLoc());
305
140
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SwitchStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
517
                                 SourceRange (Stmt::*v)() const) {
303
517
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
517
                       static_cast<const S *>(stmt)->getEndLoc());
305
517
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::AttributedStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
15
                                 SourceRange (Stmt::*v)() const) {
303
15
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
15
                       static_cast<const S *>(stmt)->getEndLoc());
305
15
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BinaryConditionalOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
170
                                 SourceRange (Stmt::*v)() const) {
303
170
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
170
                       static_cast<const S *>(stmt)->getEndLoc());
305
170
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ConditionalOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
9.58k
                                 SourceRange (Stmt::*v)() const) {
303
9.58k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
9.58k
                       static_cast<const S *>(stmt)->getEndLoc());
305
9.58k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::AddrLabelExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
527
                                 SourceRange (Stmt::*v)() const) {
303
527
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
527
                       static_cast<const S *>(stmt)->getEndLoc());
305
527
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ArrayInitIndexExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
156
                                 SourceRange (Stmt::*v)() const) {
303
156
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
156
                       static_cast<const S *>(stmt)->getEndLoc());
305
156
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ArrayInitLoopExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
781
                                 SourceRange (Stmt::*v)() const) {
303
781
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
781
                       static_cast<const S *>(stmt)->getEndLoc());
305
781
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ArraySubscriptExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
65.7k
                                 SourceRange (Stmt::*v)() const) {
303
65.7k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
65.7k
                       static_cast<const S *>(stmt)->getEndLoc());
305
65.7k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ArrayTypeTraitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
40
                                 SourceRange (Stmt::*v)() const) {
303
40
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
40
                       static_cast<const S *>(stmt)->getEndLoc());
305
40
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::AsTypeExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::AtomicExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
47
                                 SourceRange (Stmt::*v)() const) {
303
47
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
47
                       static_cast<const S *>(stmt)->getEndLoc());
305
47
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BinaryOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
403k
                                 SourceRange (Stmt::*v)() const) {
303
403k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
403k
                       static_cast<const S *>(stmt)->getEndLoc());
305
403k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CompoundAssignOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
11.3k
                                 SourceRange (Stmt::*v)() const) {
303
11.3k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
11.3k
                       static_cast<const S *>(stmt)->getEndLoc());
305
11.3k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BlockExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.56k
                                 SourceRange (Stmt::*v)() const) {
303
2.56k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.56k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.56k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXBindTemporaryExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
9.09k
                                 SourceRange (Stmt::*v)() const) {
303
9.09k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
9.09k
                       static_cast<const S *>(stmt)->getEndLoc());
305
9.09k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXBoolLiteralExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
4.05k
                                 SourceRange (Stmt::*v)() const) {
303
4.05k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
4.05k
                       static_cast<const S *>(stmt)->getEndLoc());
305
4.05k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXConstructExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
217k
                                 SourceRange (Stmt::*v)() const) {
303
217k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
217k
                       static_cast<const S *>(stmt)->getEndLoc());
305
217k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXTemporaryObjectExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
24.8k
                                 SourceRange (Stmt::*v)() const) {
303
24.8k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
24.8k
                       static_cast<const S *>(stmt)->getEndLoc());
305
24.8k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDefaultArgExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
5.92k
                                 SourceRange (Stmt::*v)() const) {
303
5.92k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
5.92k
                       static_cast<const S *>(stmt)->getEndLoc());
305
5.92k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDefaultInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.67k
                                 SourceRange (Stmt::*v)() const) {
303
1.67k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.67k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.67k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDeleteExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.79k
                                 SourceRange (Stmt::*v)() const) {
303
1.79k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.79k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.79k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDependentScopeMemberExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
3.07k
                                 SourceRange (Stmt::*v)() const) {
303
3.07k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
3.07k
                       static_cast<const S *>(stmt)->getEndLoc());
305
3.07k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXFoldExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
100
                                 SourceRange (Stmt::*v)() const) {
303
100
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
100
                       static_cast<const S *>(stmt)->getEndLoc());
305
100
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXInheritedCtorInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
69
                                 SourceRange (Stmt::*v)() const) {
303
69
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
69
                       static_cast<const S *>(stmt)->getEndLoc());
305
69
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXNullPtrLiteralExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
3.29k
                                 SourceRange (Stmt::*v)() const) {
303
3.29k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
3.29k
                       static_cast<const S *>(stmt)->getEndLoc());
305
3.29k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXPseudoDestructorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
360
                                 SourceRange (Stmt::*v)() const) {
303
360
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
360
                       static_cast<const S *>(stmt)->getEndLoc());
305
360
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXScalarValueInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
224
                                 SourceRange (Stmt::*v)() const) {
303
224
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
224
                       static_cast<const S *>(stmt)->getEndLoc());
305
224
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXThisExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
128k
                                 SourceRange (Stmt::*v)() const) {
303
128k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
128k
                       static_cast<const S *>(stmt)->getEndLoc());
305
128k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXThrowExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
22
                                 SourceRange (Stmt::*v)() const) {
303
22
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
22
                       static_cast<const S *>(stmt)->getEndLoc());
305
22
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXUnresolvedConstructExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
146
                                 SourceRange (Stmt::*v)() const) {
303
146
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
146
                       static_cast<const S *>(stmt)->getEndLoc());
305
146
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CallExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
546k
                                 SourceRange (Stmt::*v)() const) {
303
546k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
546k
                       static_cast<const S *>(stmt)->getEndLoc());
305
546k
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CUDAKernelCallExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXMemberCallExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
95.0k
                                 SourceRange (Stmt::*v)() const) {
303
95.0k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
95.0k
                       static_cast<const S *>(stmt)->getEndLoc());
305
95.0k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UserDefinedLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
133
                                 SourceRange (Stmt::*v)() const) {
303
133
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
133
                       static_cast<const S *>(stmt)->getEndLoc());
305
133
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::BuiltinBitCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
24
                                 SourceRange (Stmt::*v)() const) {
303
24
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
24
                       static_cast<const S *>(stmt)->getEndLoc());
305
24
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CStyleCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
20.5k
                                 SourceRange (Stmt::*v)() const) {
303
20.5k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
20.5k
                       static_cast<const S *>(stmt)->getEndLoc());
305
20.5k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXFunctionalCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
22.9k
                                 SourceRange (Stmt::*v)() const) {
303
22.9k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
22.9k
                       static_cast<const S *>(stmt)->getEndLoc());
305
22.9k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXAddrspaceCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
6
                                 SourceRange (Stmt::*v)() const) {
303
6
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
6
                       static_cast<const S *>(stmt)->getEndLoc());
305
6
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXConstCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
632
                                 SourceRange (Stmt::*v)() const) {
303
632
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
632
                       static_cast<const S *>(stmt)->getEndLoc());
305
632
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXDynamicCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
108
                                 SourceRange (Stmt::*v)() const) {
303
108
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
108
                       static_cast<const S *>(stmt)->getEndLoc());
305
108
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXReinterpretCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
446
                                 SourceRange (Stmt::*v)() const) {
303
446
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
446
                       static_cast<const S *>(stmt)->getEndLoc());
305
446
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CXXStaticCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
15.3k
                                 SourceRange (Stmt::*v)() const) {
303
15.3k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
15.3k
                       static_cast<const S *>(stmt)->getEndLoc());
305
15.3k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCBridgedCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
76
                                 SourceRange (Stmt::*v)() const) {
303
76
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
76
                       static_cast<const S *>(stmt)->getEndLoc());
305
76
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ImplicitCastExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
3.88M
                                 SourceRange (Stmt::*v)() const) {
303
3.88M
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
3.88M
                       static_cast<const S *>(stmt)->getEndLoc());
305
3.88M
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CharacterLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
4.74k
                                 SourceRange (Stmt::*v)() const) {
303
4.74k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
4.74k
                       static_cast<const S *>(stmt)->getEndLoc());
305
4.74k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ChooseExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
6
                                 SourceRange (Stmt::*v)() const) {
303
6
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
6
                       static_cast<const S *>(stmt)->getEndLoc());
305
6
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CompoundLiteralExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.38k
                                 SourceRange (Stmt::*v)() const) {
303
1.38k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.38k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.38k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ConceptSpecializationExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
497
                                 SourceRange (Stmt::*v)() const) {
303
497
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
497
                       static_cast<const S *>(stmt)->getEndLoc());
305
497
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ConvertVectorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.58k
                                 SourceRange (Stmt::*v)() const) {
303
1.58k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.58k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.58k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CoawaitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
14
                                 SourceRange (Stmt::*v)() const) {
303
14
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
14
                       static_cast<const S *>(stmt)->getEndLoc());
305
14
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::CoyieldExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DeclRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.05M
                                 SourceRange (Stmt::*v)() const) {
303
2.05M
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.05M
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.05M
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DependentCoawaitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DependentScopeDeclRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
29.5k
                                 SourceRange (Stmt::*v)() const) {
303
29.5k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
29.5k
                       static_cast<const S *>(stmt)->getEndLoc());
305
29.5k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DesignatedInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
271
                                 SourceRange (Stmt::*v)() const) {
303
271
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
271
                       static_cast<const S *>(stmt)->getEndLoc());
305
271
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::DesignatedInitUpdateExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
24
                                 SourceRange (Stmt::*v)() const) {
303
24
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
24
                       static_cast<const S *>(stmt)->getEndLoc());
305
24
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ExpressionTraitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
8
                                 SourceRange (Stmt::*v)() const) {
303
8
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
8
                       static_cast<const S *>(stmt)->getEndLoc());
305
8
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ExtVectorElementExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
42
                                 SourceRange (Stmt::*v)() const) {
303
42
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
42
                       static_cast<const S *>(stmt)->getEndLoc());
305
42
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::FixedPointLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
122
                                 SourceRange (Stmt::*v)() const) {
303
122
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
122
                       static_cast<const S *>(stmt)->getEndLoc());
305
122
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::FloatingLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
6.01k
                                 SourceRange (Stmt::*v)() const) {
303
6.01k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
6.01k
                       static_cast<const S *>(stmt)->getEndLoc());
305
6.01k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ConstantExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
126k
                                 SourceRange (Stmt::*v)() const) {
303
126k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
126k
                       static_cast<const S *>(stmt)->getEndLoc());
305
126k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ExprWithCleanups>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
4.54k
                                 SourceRange (Stmt::*v)() const) {
303
4.54k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
4.54k
                       static_cast<const S *>(stmt)->getEndLoc());
305
4.54k
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::FunctionParmPackExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::GNUNullExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
498
                                 SourceRange (Stmt::*v)() const) {
303
498
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
498
                       static_cast<const S *>(stmt)->getEndLoc());
305
498
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::GenericSelectionExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
29
                                 SourceRange (Stmt::*v)() const) {
303
29
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
29
                       static_cast<const S *>(stmt)->getEndLoc());
305
29
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ImaginaryLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
96
                                 SourceRange (Stmt::*v)() const) {
303
96
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
96
                       static_cast<const S *>(stmt)->getEndLoc());
305
96
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ImplicitValueInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
90
                                 SourceRange (Stmt::*v)() const) {
303
90
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
90
                       static_cast<const S *>(stmt)->getEndLoc());
305
90
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::InitListExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
176k
                                 SourceRange (Stmt::*v)() const) {
303
176k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
176k
                       static_cast<const S *>(stmt)->getEndLoc());
305
176k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::IntegerLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
237k
                                 SourceRange (Stmt::*v)() const) {
303
237k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
237k
                       static_cast<const S *>(stmt)->getEndLoc());
305
237k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::LambdaExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.38k
                                 SourceRange (Stmt::*v)() const) {
303
1.38k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.38k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.38k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MSPropertySubscriptExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
72
                                 SourceRange (Stmt::*v)() const) {
303
72
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
72
                       static_cast<const S *>(stmt)->getEndLoc());
305
72
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MaterializeTemporaryExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
47.7k
                                 SourceRange (Stmt::*v)() const) {
303
47.7k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
47.7k
                       static_cast<const S *>(stmt)->getEndLoc());
305
47.7k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MatrixSubscriptExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
11
                                 SourceRange (Stmt::*v)() const) {
303
11
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
11
                       static_cast<const S *>(stmt)->getEndLoc());
305
11
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::MemberExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
431k
                                 SourceRange (Stmt::*v)() const) {
303
431k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
431k
                       static_cast<const S *>(stmt)->getEndLoc());
305
431k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::NoInitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
212
                                 SourceRange (Stmt::*v)() const) {
303
212
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
212
                       static_cast<const S *>(stmt)->getEndLoc());
305
212
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPArraySectionExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
18.3k
                                 SourceRange (Stmt::*v)() const) {
303
18.3k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
18.3k
                       static_cast<const S *>(stmt)->getEndLoc());
305
18.3k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPArrayShapingExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
265
                                 SourceRange (Stmt::*v)() const) {
303
265
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
265
                       static_cast<const S *>(stmt)->getEndLoc());
305
265
  }
Unexecuted instantiation: Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OMPIteratorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCBoolLiteralExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
245
                                 SourceRange (Stmt::*v)() const) {
303
245
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
245
                       static_cast<const S *>(stmt)->getEndLoc());
305
245
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCEncodeExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
50
                                 SourceRange (Stmt::*v)() const) {
303
50
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
50
                       static_cast<const S *>(stmt)->getEndLoc());
305
50
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCIndirectCopyRestoreExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
7
                                 SourceRange (Stmt::*v)() const) {
303
7
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
7
                       static_cast<const S *>(stmt)->getEndLoc());
305
7
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCIsaExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
22
                                 SourceRange (Stmt::*v)() const) {
303
22
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
22
                       static_cast<const S *>(stmt)->getEndLoc());
305
22
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCIvarRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.69k
                                 SourceRange (Stmt::*v)() const) {
303
2.69k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.69k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.69k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCMessageExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
40.9k
                                 SourceRange (Stmt::*v)() const) {
303
40.9k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
40.9k
                       static_cast<const S *>(stmt)->getEndLoc());
305
40.9k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCPropertyRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
348
                                 SourceRange (Stmt::*v)() const) {
303
348
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
348
                       static_cast<const S *>(stmt)->getEndLoc());
305
348
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCProtocolExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
29
                                 SourceRange (Stmt::*v)() const) {
303
29
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
29
                       static_cast<const S *>(stmt)->getEndLoc());
305
29
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCSelectorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
103
                                 SourceRange (Stmt::*v)() const) {
303
103
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
103
                       static_cast<const S *>(stmt)->getEndLoc());
305
103
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCStringLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
4.44k
                                 SourceRange (Stmt::*v)() const) {
303
4.44k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
4.44k
                       static_cast<const S *>(stmt)->getEndLoc());
305
4.44k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ObjCSubscriptRefExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
352
                                 SourceRange (Stmt::*v)() const) {
303
352
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
352
                       static_cast<const S *>(stmt)->getEndLoc());
305
352
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OffsetOfExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
65
                                 SourceRange (Stmt::*v)() const) {
303
65
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
65
                       static_cast<const S *>(stmt)->getEndLoc());
305
65
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::OpaqueValueExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
6.69k
                                 SourceRange (Stmt::*v)() const) {
303
6.69k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
6.69k
                       static_cast<const S *>(stmt)->getEndLoc());
305
6.69k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UnresolvedLookupExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
190k
                                 SourceRange (Stmt::*v)() const) {
303
190k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
190k
                       static_cast<const S *>(stmt)->getEndLoc());
305
190k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UnresolvedMemberExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
54.4k
                                 SourceRange (Stmt::*v)() const) {
303
54.4k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
54.4k
                       static_cast<const S *>(stmt)->getEndLoc());
305
54.4k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::PackExpansionExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
8
                                 SourceRange (Stmt::*v)() const) {
303
8
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
8
                       static_cast<const S *>(stmt)->getEndLoc());
305
8
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ParenExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
147k
                                 SourceRange (Stmt::*v)() const) {
303
147k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
147k
                       static_cast<const S *>(stmt)->getEndLoc());
305
147k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ParenListExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
245k
                                 SourceRange (Stmt::*v)() const) {
303
245k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
245k
                       static_cast<const S *>(stmt)->getEndLoc());
305
245k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::PredefinedExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
461
                                 SourceRange (Stmt::*v)() const) {
303
461
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
461
                       static_cast<const S *>(stmt)->getEndLoc());
305
461
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::PseudoObjectExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.96k
                                 SourceRange (Stmt::*v)() const) {
303
1.96k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.96k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.96k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::RecoveryExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
128
                                 SourceRange (Stmt::*v)() const) {
303
128
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
128
                       static_cast<const S *>(stmt)->getEndLoc());
305
128
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::RequiresExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
126
                                 SourceRange (Stmt::*v)() const) {
303
126
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
126
                       static_cast<const S *>(stmt)->getEndLoc());
305
126
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::ShuffleVectorExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
2.50k
                                 SourceRange (Stmt::*v)() const) {
303
2.50k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
2.50k
                       static_cast<const S *>(stmt)->getEndLoc());
305
2.50k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SizeOfPackExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
59
                                 SourceRange (Stmt::*v)() const) {
303
59
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
59
                       static_cast<const S *>(stmt)->getEndLoc());
305
59
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SourceLocExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
17
                                 SourceRange (Stmt::*v)() const) {
303
17
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
17
                       static_cast<const S *>(stmt)->getEndLoc());
305
17
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::StmtExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
123
                                 SourceRange (Stmt::*v)() const) {
303
123
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
123
                       static_cast<const S *>(stmt)->getEndLoc());
305
123
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::StringLiteral>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
19.3k
                                 SourceRange (Stmt::*v)() const) {
303
19.3k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
19.3k
                       static_cast<const S *>(stmt)->getEndLoc());
305
19.3k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SubstNonTypeTemplateParmExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
3.34k
                                 SourceRange (Stmt::*v)() const) {
303
3.34k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
3.34k
                       static_cast<const S *>(stmt)->getEndLoc());
305
3.34k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::SubstNonTypeTemplateParmPackExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1
                                 SourceRange (Stmt::*v)() const) {
303
1
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1
                       static_cast<const S *>(stmt)->getEndLoc());
305
1
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::TypeTraitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
20.9k
                                 SourceRange (Stmt::*v)() const) {
303
20.9k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
20.9k
                       static_cast<const S *>(stmt)->getEndLoc());
305
20.9k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::TypoExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
28
                                 SourceRange (Stmt::*v)() const) {
303
28
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
28
                       static_cast<const S *>(stmt)->getEndLoc());
305
28
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UnaryExprOrTypeTraitExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
28.1k
                                 SourceRange (Stmt::*v)() const) {
303
28.1k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
28.1k
                       static_cast<const S *>(stmt)->getEndLoc());
305
28.1k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::UnaryOperator>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
252k
                                 SourceRange (Stmt::*v)() const) {
303
252k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
252k
                       static_cast<const S *>(stmt)->getEndLoc());
305
252k
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::VAArgExpr>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
187
                                 SourceRange (Stmt::*v)() const) {
303
187
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
187
                       static_cast<const S *>(stmt)->getEndLoc());
305
187
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::LabelStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
304
                                 SourceRange (Stmt::*v)() const) {
303
304
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
304
                       static_cast<const S *>(stmt)->getEndLoc());
305
304
  }
Stmt.cpp:clang::SourceRange (anonymous namespace)::getSourceRangeImpl<clang::WhileStmt>(clang::Stmt const*, clang::SourceRange (clang::Stmt::*)() const)
Line
Count
Source
302
1.98k
                                 SourceRange (Stmt::*v)() const) {
303
1.98k
    return SourceRange(static_cast<const S *>(stmt)->getBeginLoc(),
304
1.98k
                       static_cast<const S *>(stmt)->getEndLoc());
305
1.98k
  }
306
307
} // namespace
308
309
10.8M
SourceRange Stmt::getSourceRange() const {
310
10.8M
  switch (getStmtClass()) {
311
0
  case Stmt::NoStmtClass: llvm_unreachable("statement without class");
312
0
#define ABSTRACT_STMT(type)
313
0
#define STMT(type, base) \
314
10.8M
  case Stmt::type##Class: \
315
10.8M
    return getSourceRangeImpl<type>(this, &type::getSourceRange);
316
0
#include "clang/AST/StmtNodes.inc"
317
10.8M
  }
318
10.8M
  
llvm_unreachable0
("unknown statement kind!");
319
10.8M
}
320
321
184M
SourceLocation Stmt::getBeginLoc() const {
322
184M
  switch (getStmtClass()) {
323
0
  case Stmt::NoStmtClass: llvm_unreachable("statement without class");
324
0
#define ABSTRACT_STMT(type)
325
0
#define STMT(type, base)                                                       \
326
184M
  case Stmt::type##Class:                                                      \
327
184M
    return static_cast<const type *>(this)->getBeginLoc();
328
0
#include "clang/AST/StmtNodes.inc"
329
184M
  }
330
184M
  
llvm_unreachable0
("unknown statement kind");
331
184M
}
332
333
15.9M
SourceLocation Stmt::getEndLoc() const {
334
15.9M
  switch (getStmtClass()) {
335
0
  case Stmt::NoStmtClass: llvm_unreachable("statement without class");
336
0
#define ABSTRACT_STMT(type)
337
0
#define STMT(type, base)                                                       \
338
15.9M
  case Stmt::type##Class:                                                      \
339
15.9M
    return static_cast<const type *>(this)->getEndLoc();
340
0
#include "clang/AST/StmtNodes.inc"
341
15.9M
  }
342
15.9M
  
llvm_unreachable0
("unknown statement kind");
343
15.9M
}
344
345
491
int64_t Stmt::getID(const ASTContext &Context) const {
346
491
  return Context.getAllocator().identifyKnownAlignedObject<Stmt>(this);
347
491
}
348
349
CompoundStmt::CompoundStmt(ArrayRef<Stmt *> Stmts, SourceLocation LB,
350
                           SourceLocation RB)
351
3.75M
    : Stmt(CompoundStmtClass), RBraceLoc(RB) {
352
3.75M
  CompoundStmtBits.NumStmts = Stmts.size();
353
3.75M
  setStmts(Stmts);
354
3.75M
  CompoundStmtBits.LBraceLoc = LB;
355
3.75M
}
356
357
3.79M
void CompoundStmt::setStmts(ArrayRef<Stmt *> Stmts) {
358
3.79M
  assert(CompoundStmtBits.NumStmts == Stmts.size() &&
359
3.79M
         "NumStmts doesn't fit in bits of CompoundStmtBits.NumStmts!");
360
361
3.79M
  std::copy(Stmts.begin(), Stmts.end(), body_begin());
362
3.79M
}
363
364
CompoundStmt *CompoundStmt::Create(const ASTContext &C, ArrayRef<Stmt *> Stmts,
365
3.75M
                                   SourceLocation LB, SourceLocation RB) {
366
3.75M
  void *Mem =
367
3.75M
      C.Allocate(totalSizeToAlloc<Stmt *>(Stmts.size()), alignof(CompoundStmt));
368
3.75M
  return new (Mem) CompoundStmt(Stmts, LB, RB);
369
3.75M
}
370
371
CompoundStmt *CompoundStmt::CreateEmpty(const ASTContext &C,
372
48.2k
                                        unsigned NumStmts) {
373
48.2k
  void *Mem =
374
48.2k
      C.Allocate(totalSizeToAlloc<Stmt *>(NumStmts), alignof(CompoundStmt));
375
48.2k
  CompoundStmt *New = new (Mem) CompoundStmt(EmptyShell());
376
48.2k
  New->CompoundStmtBits.NumStmts = NumStmts;
377
48.2k
  return New;
378
48.2k
}
379
380
14.9k
const Expr *ValueStmt::getExprStmt() const {
381
14.9k
  const Stmt *S = this;
382
14.9k
  do {
383
14.9k
    if (const auto *E = dyn_cast<Expr>(S))
384
14.9k
      return E;
385
386
42
    if (const auto *LS = dyn_cast<LabelStmt>(S))
387
36
      S = LS->getSubStmt();
388
6
    else if (const auto *AS = dyn_cast<AttributedStmt>(S))
389
6
      S = AS->getSubStmt();
390
6
    else
391
0
      llvm_unreachable("unknown kind of ValueStmt");
392
42
  } while (isa<ValueStmt>(S));
393
394
2
  return nullptr;
395
14.9k
}
396
397
104
const char *LabelStmt::getName() const {
398
104
  return getDecl()->getIdentifier()->getNameStart();
399
104
}
400
401
AttributedStmt *AttributedStmt::Create(const ASTContext &C, SourceLocation Loc,
402
                                       ArrayRef<const Attr*> Attrs,
403
1.24k
                                       Stmt *SubStmt) {
404
1.24k
  assert(!Attrs.empty() && "Attrs should not be empty");
405
1.24k
  void *Mem = C.Allocate(totalSizeToAlloc<const Attr *>(Attrs.size()),
406
1.24k
                         alignof(AttributedStmt));
407
1.24k
  return new (Mem) AttributedStmt(Loc, Attrs, SubStmt);
408
1.24k
}
409
410
AttributedStmt *AttributedStmt::CreateEmpty(const ASTContext &C,
411
15
                                            unsigned NumAttrs) {
412
15
  assert(NumAttrs > 0 && "NumAttrs should be greater than zero");
413
15
  void *Mem = C.Allocate(totalSizeToAlloc<const Attr *>(NumAttrs),
414
15
                         alignof(AttributedStmt));
415
15
  return new (Mem) AttributedStmt(EmptyShell(), NumAttrs);
416
15
}
417
418
1.59k
std::string AsmStmt::generateAsmString(const ASTContext &C) const {
419
1.59k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
420
1.43k
    return gccAsmStmt->generateAsmString(C);
421
154
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
422
154
    return msAsmStmt->generateAsmString(C);
423
0
  llvm_unreachable("unknown asm statement kind!");
424
0
}
425
426
13.6k
StringRef AsmStmt::getOutputConstraint(unsigned i) const {
427
13.6k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
428
13.6k
    return gccAsmStmt->getOutputConstraint(i);
429
42
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
430
42
    return msAsmStmt->getOutputConstraint(i);
431
0
  llvm_unreachable("unknown asm statement kind!");
432
0
}
433
434
1.32k
const Expr *AsmStmt::getOutputExpr(unsigned i) const {
435
1.32k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
436
1.30k
    return gccAsmStmt->getOutputExpr(i);
437
21
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
438
21
    return msAsmStmt->getOutputExpr(i);
439
0
  llvm_unreachable("unknown asm statement kind!");
440
0
}
441
442
3.32k
StringRef AsmStmt::getInputConstraint(unsigned i) const {
443
3.32k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
444
3.10k
    return gccAsmStmt->getInputConstraint(i);
445
216
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
446
216
    return msAsmStmt->getInputConstraint(i);
447
0
  llvm_unreachable("unknown asm statement kind!");
448
0
}
449
450
1.70k
const Expr *AsmStmt::getInputExpr(unsigned i) const {
451
1.70k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
452
1.59k
    return gccAsmStmt->getInputExpr(i);
453
108
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
454
108
    return msAsmStmt->getInputExpr(i);
455
0
  llvm_unreachable("unknown asm statement kind!");
456
0
}
457
458
1.14k
StringRef AsmStmt::getClobber(unsigned i) const {
459
1.14k
  if (const auto *gccAsmStmt = dyn_cast<GCCAsmStmt>(this))
460
954
    return gccAsmStmt->getClobber(i);
461
187
  if (const auto *msAsmStmt = dyn_cast<MSAsmStmt>(this))
462
187
    return msAsmStmt->getClobber(i);
463
0
  llvm_unreachable("unknown asm statement kind!");
464
0
}
465
466
/// getNumPlusOperands - Return the number of output operands that have a "+"
467
/// constraint.
468
11.9k
unsigned AsmStmt::getNumPlusOperands() const {
469
11.9k
  unsigned Res = 0;
470
23.3k
  for (unsigned i = 0, e = getNumOutputs(); i != e; 
++i11.3k
)
471
11.3k
    if (isOutputPlusConstraint(i))
472
851
      ++Res;
473
11.9k
  return Res;
474
11.9k
}
475
476
12.3k
char GCCAsmStmt::AsmStringPiece::getModifier() const {
477
12.3k
  assert(isOperand() && "Only Operands can have modifiers.");
478
11.8k
  return isLetter(Str[0]) ? 
Str[0]525
: '\0';
479
12.3k
}
480
481
954
StringRef GCCAsmStmt::getClobber(unsigned i) const {
482
954
  return getClobberStringLiteral(i)->getString();
483
954
}
484
485
1.63k
Expr *GCCAsmStmt::getOutputExpr(unsigned i) {
486
1.63k
  return cast<Expr>(Exprs[i]);
487
1.63k
}
488
489
/// getOutputConstraint - Return the constraint string for the specified
490
/// output operand.  All output constraints are known to be non-empty (either
491
/// '=' or '+').
492
13.6k
StringRef GCCAsmStmt::getOutputConstraint(unsigned i) const {
493
13.6k
  return getOutputConstraintLiteral(i)->getString();
494
13.6k
}
495
496
1.83k
Expr *GCCAsmStmt::getInputExpr(unsigned i) {
497
1.83k
  return cast<Expr>(Exprs[i + NumOutputs]);
498
1.83k
}
499
500
2
void GCCAsmStmt::setInputExpr(unsigned i, Expr *E) {
501
2
  Exprs[i + NumOutputs] = E;
502
2
}
503
504
55
AddrLabelExpr *GCCAsmStmt::getLabelExpr(unsigned i) const {
505
55
  return cast<AddrLabelExpr>(Exprs[i + NumOutputs + NumInputs]);
506
55
}
507
508
51
StringRef GCCAsmStmt::getLabelName(unsigned i) const {
509
51
  return getLabelExpr(i)->getLabel()->getName();
510
51
}
511
512
/// getInputConstraint - Return the specified input constraint.  Unlike output
513
/// constraints, these can be empty.
514
3.10k
StringRef GCCAsmStmt::getInputConstraint(unsigned i) const {
515
3.10k
  return getInputConstraintLiteral(i)->getString();
516
3.10k
}
517
518
void GCCAsmStmt::setOutputsAndInputsAndClobbers(const ASTContext &C,
519
                                                IdentifierInfo **Names,
520
                                                StringLiteral **Constraints,
521
                                                Stmt **Exprs,
522
                                                unsigned NumOutputs,
523
                                                unsigned NumInputs,
524
                                                unsigned NumLabels,
525
                                                StringLiteral **Clobbers,
526
9
                                                unsigned NumClobbers) {
527
9
  this->NumOutputs = NumOutputs;
528
9
  this->NumInputs = NumInputs;
529
9
  this->NumClobbers = NumClobbers;
530
9
  this->NumLabels = NumLabels;
531
9
  assert(!(NumOutputs && NumLabels) && "asm goto cannot have outputs");
532
533
9
  unsigned NumExprs = NumOutputs + NumInputs + NumLabels;
534
535
9
  C.Deallocate(this->Names);
536
9
  this->Names = new (C) IdentifierInfo*[NumExprs];
537
9
  std::copy(Names, Names + NumExprs, this->Names);
538
539
9
  C.Deallocate(this->Exprs);
540
9
  this->Exprs = new (C) Stmt*[NumExprs];
541
9
  std::copy(Exprs, Exprs + NumExprs, this->Exprs);
542
543
9
  unsigned NumConstraints = NumOutputs + NumInputs;
544
9
  C.Deallocate(this->Constraints);
545
9
  this->Constraints = new (C) StringLiteral*[NumConstraints];
546
9
  std::copy(Constraints, Constraints + NumConstraints, this->Constraints);
547
548
9
  C.Deallocate(this->Clobbers);
549
9
  this->Clobbers = new (C) StringLiteral*[NumClobbers];
550
9
  std::copy(Clobbers, Clobbers + NumClobbers, this->Clobbers);
551
9
}
552
553
/// getNamedOperand - Given a symbolic operand reference like %[foo],
554
/// translate this into a numeric value needed to reference the same operand.
555
/// This returns -1 if the operand name is invalid.
556
452
int GCCAsmStmt::getNamedOperand(StringRef SymbolicName) const {
557
452
  unsigned NumPlusOperands = 0;
558
559
  // Check if this is an output operand.
560
744
  for (unsigned i = 0, e = getNumOutputs(); i != e; 
++i292
) {
561
485
    if (getOutputName(i) == SymbolicName)
562
193
      return i;
563
485
  }
564
565
387
  
for (unsigned i = 0, e = getNumInputs(); 259
i != e;
++i128
)
566
356
    if (getInputName(i) == SymbolicName)
567
228
      return getNumOutputs() + NumPlusOperands + i;
568
569
40
  
for (unsigned i = 0, e = getNumLabels(); 31
i != e;
++i9
)
570
31
    if (getLabelName(i) == SymbolicName)
571
22
      return i + getNumOutputs() + getNumInputs();
572
573
  // Not found.
574
9
  return -1;
575
31
}
576
577
/// AnalyzeAsmString - Analyze the asm string of the current asm, decomposing
578
/// it into pieces.  If the asm string is erroneous, emit errors and return
579
/// true, otherwise return false.
580
unsigned GCCAsmStmt::AnalyzeAsmString(SmallVectorImpl<AsmStringPiece>&Pieces,
581
6.96k
                                const ASTContext &C, unsigned &DiagOffs) const {
582
6.96k
  StringRef Str = getAsmString()->getString();
583
6.96k
  const char *StrStart = Str.begin();
584
6.96k
  const char *StrEnd = Str.end();
585
6.96k
  const char *CurPtr = StrStart;
586
587
  // "Simple" inline asms have no constraints or operands, just convert the asm
588
  // string to escape $'s.
589
6.96k
  if (isSimple()) {
590
368
    std::string Result;
591
2.93k
    for (; CurPtr != StrEnd; 
++CurPtr2.56k
) {
592
2.56k
      switch (*CurPtr) {
593
2
      case '$':
594
2
        Result += "$$";
595
2
        break;
596
2.56k
      default:
597
2.56k
        Result += *CurPtr;
598
2.56k
        break;
599
2.56k
      }
600
2.56k
    }
601
368
    Pieces.push_back(AsmStringPiece(Result));
602
368
    return 0;
603
6.59k
  }
604
605
  // CurStringPiece - The current string that we are building up as we scan the
606
  // asm string.
607
6.59k
  std::string CurStringPiece;
608
609
6.59k
  bool HasVariants = !C.getTargetInfo().hasNoAsmVariants();
610
611
6.59k
  unsigned LastAsmStringToken = 0;
612
6.59k
  unsigned LastAsmStringOffset = 0;
613
614
106k
  while (true) {
615
    // Done with the string?
616
106k
    if (CurPtr == StrEnd) {
617
6.57k
      if (!CurStringPiece.empty())
618
3.79k
        Pieces.push_back(AsmStringPiece(CurStringPiece));
619
6.57k
      return 0;
620
6.57k
    }
621
622
100k
    char CurChar = *CurPtr++;
623
100k
    switch (CurChar) {
624
421
    case '$': CurStringPiece += "$$"; continue;
625
14
    case '{': CurStringPiece += (HasVariants ? 
"$("2
:
"{"12
); continue;
626
4
    case '|': CurStringPiece += (HasVariants ? "$|" : 
"|"0
); continue;
627
14
    case '}': CurStringPiece += (HasVariants ? 
"$)"2
:
"}"12
); continue;
628
12.9k
    case '%':
629
12.9k
      break;
630
86.6k
    default:
631
86.6k
      CurStringPiece += CurChar;
632
86.6k
      continue;
633
12.9k
    }
634
635
    // Escaped "%" character in asm string.
636
12.9k
    if (CurPtr == StrEnd) {
637
      // % at end of string is invalid (no escape).
638
1
      DiagOffs = CurPtr-StrStart-1;
639
1
      return diag::err_asm_invalid_escape;
640
1
    }
641
    // Handle escaped char and continue looping over the asm string.
642
12.9k
    char EscapedChar = *CurPtr++;
643
12.9k
    switch (EscapedChar) {
644
12.3k
    default:
645
12.3k
      break;
646
583
    case '%': // %% -> %
647
583
    case '{': // %{ -> {
648
583
    case '}': // %} -> }
649
583
      CurStringPiece += EscapedChar;
650
583
      continue;
651
2
    case '=': // %= -> Generate a unique ID.
652
2
      CurStringPiece += "${:uid}";
653
2
      continue;
654
12.3k
    }
655
656
    // Otherwise, we have an operand.  If we have accumulated a string so far,
657
    // add it to the Pieces list.
658
12.3k
    if (!CurStringPiece.empty()) {
659
12.3k
      Pieces.push_back(AsmStringPiece(CurStringPiece));
660
12.3k
      CurStringPiece.clear();
661
12.3k
    }
662
663
    // Handle operands that have asmSymbolicName (e.g., %x[foo]) and those that
664
    // don't (e.g., %x4). 'x' following the '%' is the constraint modifier.
665
666
12.3k
    const char *Begin = CurPtr - 1; // Points to the character following '%'.
667
12.3k
    const char *Percent = Begin - 1; // Points to '%'.
668
669
12.3k
    if (isLetter(EscapedChar)) {
670
500
      if (CurPtr == StrEnd) { // Premature end.
671
1
        DiagOffs = CurPtr-StrStart-1;
672
1
        return diag::err_asm_invalid_escape;
673
1
      }
674
499
      EscapedChar = *CurPtr++;
675
499
    }
676
677
12.3k
    const TargetInfo &TI = C.getTargetInfo();
678
12.3k
    const SourceManager &SM = C.getSourceManager();
679
12.3k
    const LangOptions &LO = C.getLangOpts();
680
681
    // Handle operands that don't have asmSymbolicName (e.g., %x4).
682
12.3k
    if (isDigit(EscapedChar)) {
683
      // %n - Assembler operand n
684
11.9k
      unsigned N = 0;
685
686
11.9k
      --CurPtr;
687
23.8k
      while (CurPtr != StrEnd && 
isDigit(*CurPtr)21.9k
)
688
11.9k
        N = N*10 + ((*CurPtr++)-'0');
689
690
11.9k
      unsigned NumOperands = getNumOutputs() + getNumPlusOperands() +
691
11.9k
                             getNumInputs() + getNumLabels();
692
11.9k
      if (N >= NumOperands) {
693
10
        DiagOffs = CurPtr-StrStart-1;
694
10
        return diag::err_asm_invalid_operand_number;
695
10
      }
696
697
      // Str contains "x4" (Operand without the leading %).
698
11.9k
      std::string Str(Begin, CurPtr - Begin);
699
700
      // (BeginLoc, EndLoc) represents the range of the operand we are currently
701
      // processing. Unlike Str, the range includes the leading '%'.
702
11.9k
      SourceLocation BeginLoc = getAsmString()->getLocationOfByte(
703
11.9k
          Percent - StrStart, SM, LO, TI, &LastAsmStringToken,
704
11.9k
          &LastAsmStringOffset);
705
11.9k
      SourceLocation EndLoc = getAsmString()->getLocationOfByte(
706
11.9k
          CurPtr - StrStart, SM, LO, TI, &LastAsmStringToken,
707
11.9k
          &LastAsmStringOffset);
708
709
11.9k
      Pieces.emplace_back(N, std::move(Str), BeginLoc, EndLoc);
710
11.9k
      continue;
711
11.9k
    }
712
713
    // Handle operands that have asmSymbolicName (e.g., %x[foo]).
714
455
    if (EscapedChar == '[') {
715
454
      DiagOffs = CurPtr-StrStart-1;
716
717
      // Find the ']'.
718
454
      const char *NameEnd = (const char*)memchr(CurPtr, ']', StrEnd-CurPtr);
719
454
      if (NameEnd == nullptr)
720
1
        return diag::err_asm_unterminated_symbolic_operand_name;
721
453
      if (NameEnd == CurPtr)
722
1
        return diag::err_asm_empty_symbolic_operand_name;
723
724
452
      StringRef SymbolicName(CurPtr, NameEnd - CurPtr);
725
726
452
      int N = getNamedOperand(SymbolicName);
727
452
      if (N == -1) {
728
        // Verify that an operand with that name exists.
729
9
        DiagOffs = CurPtr-StrStart;
730
9
        return diag::err_asm_unknown_symbolic_operand_name;
731
9
      }
732
733
      // Str contains "x[foo]" (Operand without the leading %).
734
443
      std::string Str(Begin, NameEnd + 1 - Begin);
735
736
      // (BeginLoc, EndLoc) represents the range of the operand we are currently
737
      // processing. Unlike Str, the range includes the leading '%'.
738
443
      SourceLocation BeginLoc = getAsmString()->getLocationOfByte(
739
443
          Percent - StrStart, SM, LO, TI, &LastAsmStringToken,
740
443
          &LastAsmStringOffset);
741
443
      SourceLocation EndLoc = getAsmString()->getLocationOfByte(
742
443
          NameEnd + 1 - StrStart, SM, LO, TI, &LastAsmStringToken,
743
443
          &LastAsmStringOffset);
744
745
443
      Pieces.emplace_back(N, std::move(Str), BeginLoc, EndLoc);
746
747
443
      CurPtr = NameEnd+1;
748
443
      continue;
749
443
    }
750
751
1
    DiagOffs = CurPtr-StrStart-1;
752
1
    return diag::err_asm_invalid_escape;
753
1
  }
754
6.59k
}
755
756
/// Assemble final IR asm string (GCC-style).
757
1.43k
std::string GCCAsmStmt::generateAsmString(const ASTContext &C) const {
758
  // Analyze the asm string to decompose it into its pieces.  We know that Sema
759
  // has already done this, so it is guaranteed to be successful.
760
1.43k
  SmallVector<GCCAsmStmt::AsmStringPiece, 4> Pieces;
761
1.43k
  unsigned DiagOffs;
762
1.43k
  AnalyzeAsmString(Pieces, C, DiagOffs);
763
764
1.43k
  std::string AsmString;
765
6.01k
  for (const auto &Piece : Pieces) {
766
6.01k
    if (Piece.isString())
767
3.31k
      AsmString += Piece.getString();
768
2.69k
    else if (Piece.getModifier() == '\0')
769
2.59k
      AsmString += '$' + llvm::utostr(Piece.getOperandNo());
770
99
    else
771
99
      AsmString += "${" + llvm::utostr(Piece.getOperandNo()) + ':' +
772
99
                   Piece.getModifier() + '}';
773
6.01k
  }
774
1.43k
  return AsmString;
775
1.43k
}
776
777
/// Assemble final IR asm string (MS-style).
778
154
std::string MSAsmStmt::generateAsmString(const ASTContext &C) const {
779
  // FIXME: This needs to be translated into the IR string representation.
780
154
  return std::string(AsmStr);
781
154
}
782
783
21
Expr *MSAsmStmt::getOutputExpr(unsigned i) {
784
21
  return cast<Expr>(Exprs[i]);
785
21
}
786
787
108
Expr *MSAsmStmt::getInputExpr(unsigned i) {
788
108
  return cast<Expr>(Exprs[i + NumOutputs]);
789
108
}
790
791
0
void MSAsmStmt::setInputExpr(unsigned i, Expr *E) {
792
0
  Exprs[i + NumOutputs] = E;
793
0
}
794
795
//===----------------------------------------------------------------------===//
796
// Constructors
797
//===----------------------------------------------------------------------===//
798
799
GCCAsmStmt::GCCAsmStmt(const ASTContext &C, SourceLocation asmloc,
800
                       bool issimple, bool isvolatile, unsigned numoutputs,
801
                       unsigned numinputs, IdentifierInfo **names,
802
                       StringLiteral **constraints, Expr **exprs,
803
                       StringLiteral *asmstr, unsigned numclobbers,
804
                       StringLiteral **clobbers, unsigned numlabels,
805
                       SourceLocation rparenloc)
806
    : AsmStmt(GCCAsmStmtClass, asmloc, issimple, isvolatile, numoutputs,
807
              numinputs, numclobbers),
808
5.73k
              RParenLoc(rparenloc), AsmStr(asmstr), NumLabels(numlabels) {
809
5.73k
  unsigned NumExprs = NumOutputs + NumInputs + NumLabels;
810
811
5.73k
  Names = new (C) IdentifierInfo*[NumExprs];
812
5.73k
  std::copy(names, names + NumExprs, Names);
813
814
5.73k
  Exprs = new (C) Stmt*[NumExprs];
815
5.73k
  std::copy(exprs, exprs + NumExprs, Exprs);
816
817
5.73k
  unsigned NumConstraints = NumOutputs + NumInputs;
818
5.73k
  Constraints = new (C) StringLiteral*[NumConstraints];
819
5.73k
  std::copy(constraints, constraints + NumConstraints, Constraints);
820
821
5.73k
  Clobbers = new (C) StringLiteral*[NumClobbers];
822
5.73k
  std::copy(clobbers, clobbers + NumClobbers, Clobbers);
823
5.73k
}
824
825
MSAsmStmt::MSAsmStmt(const ASTContext &C, SourceLocation asmloc,
826
                     SourceLocation lbraceloc, bool issimple, bool isvolatile,
827
                     ArrayRef<Token> asmtoks, unsigned numoutputs,
828
                     unsigned numinputs,
829
                     ArrayRef<StringRef> constraints, ArrayRef<Expr*> exprs,
830
                     StringRef asmstr, ArrayRef<StringRef> clobbers,
831
                     SourceLocation endloc)
832
    : AsmStmt(MSAsmStmtClass, asmloc, issimple, isvolatile, numoutputs,
833
              numinputs, clobbers.size()), LBraceLoc(lbraceloc),
834
216
              EndLoc(endloc), NumAsmToks(asmtoks.size()) {
835
216
  initialize(C, asmstr, asmtoks, constraints, exprs, clobbers);
836
216
}
837
838
587
static StringRef copyIntoContext(const ASTContext &C, StringRef str) {
839
587
  return str.copy(C);
840
587
}
841
842
void MSAsmStmt::initialize(const ASTContext &C, StringRef asmstr,
843
                           ArrayRef<Token> asmtoks,
844
                           ArrayRef<StringRef> constraints,
845
                           ArrayRef<Expr*> exprs,
846
216
                           ArrayRef<StringRef> clobbers) {
847
216
  assert(NumAsmToks == asmtoks.size());
848
216
  assert(NumClobbers == clobbers.size());
849
850
216
  assert(exprs.size() == NumOutputs + NumInputs);
851
216
  assert(exprs.size() == constraints.size());
852
853
216
  AsmStr = copyIntoContext(C, asmstr);
854
855
216
  Exprs = new (C) Stmt*[exprs.size()];
856
216
  std::copy(exprs.begin(), exprs.end(), Exprs);
857
858
216
  AsmToks = new (C) Token[asmtoks.size()];
859
216
  std::copy(asmtoks.begin(), asmtoks.end(), AsmToks);
860
861
216
  Constraints = new (C) StringRef[exprs.size()];
862
216
  std::transform(constraints.begin(), constraints.end(), Constraints,
863
142
                 [&](StringRef Constraint) {
864
142
                   return copyIntoContext(C, Constraint);
865
142
                 });
866
867
216
  Clobbers = new (C) StringRef[NumClobbers];
868
  // FIXME: Avoid the allocation/copy if at all possible.
869
216
  std::transform(clobbers.begin(), clobbers.end(), Clobbers,
870
229
                 [&](StringRef Clobber) {
871
229
                   return copyIntoContext(C, Clobber);
872
229
                 });
873
216
}
874
875
IfStmt::IfStmt(const ASTContext &Ctx, SourceLocation IL, bool IsConstexpr,
876
               Stmt *Init, VarDecl *Var, Expr *Cond, SourceLocation LPL,
877
               SourceLocation RPL, Stmt *Then, SourceLocation EL, Stmt *Else)
878
443k
    : Stmt(IfStmtClass), LParenLoc(LPL), RParenLoc(RPL) {
879
443k
  bool HasElse = Else != nullptr;
880
443k
  bool HasVar = Var != nullptr;
881
443k
  bool HasInit = Init != nullptr;
882
443k
  IfStmtBits.HasElse = HasElse;
883
443k
  IfStmtBits.HasVar = HasVar;
884
443k
  IfStmtBits.HasInit = HasInit;
885
886
443k
  setConstexpr(IsConstexpr);
887
888
443k
  setCond(Cond);
889
443k
  setThen(Then);
890
443k
  if (HasElse)
891
91.3k
    setElse(Else);
892
443k
  if (HasVar)
893
361
    setConditionVariable(Ctx, Var);
894
443k
  if (HasInit)
895
196
    setInit(Init);
896
897
443k
  setIfLoc(IL);
898
443k
  if (HasElse)
899
91.3k
    setElseLoc(EL);
900
443k
}
901
902
IfStmt::IfStmt(EmptyShell Empty, bool HasElse, bool HasVar, bool HasInit)
903
4.85k
    : Stmt(IfStmtClass, Empty) {
904
4.85k
  IfStmtBits.HasElse = HasElse;
905
4.85k
  IfStmtBits.HasVar = HasVar;
906
4.85k
  IfStmtBits.HasInit = HasInit;
907
4.85k
}
908
909
IfStmt *IfStmt::Create(const ASTContext &Ctx, SourceLocation IL,
910
                       bool IsConstexpr, Stmt *Init, VarDecl *Var, Expr *Cond,
911
                       SourceLocation LPL, SourceLocation RPL, Stmt *Then,
912
443k
                       SourceLocation EL, Stmt *Else) {
913
443k
  bool HasElse = Else != nullptr;
914
443k
  bool HasVar = Var != nullptr;
915
443k
  bool HasInit = Init != nullptr;
916
443k
  void *Mem = Ctx.Allocate(
917
443k
      totalSizeToAlloc<Stmt *, SourceLocation>(
918
443k
          NumMandatoryStmtPtr + HasElse + HasVar + HasInit, HasElse),
919
443k
      alignof(IfStmt));
920
443k
  return new (Mem)
921
443k
      IfStmt(Ctx, IL, IsConstexpr, Init, Var, Cond, LPL, RPL, Then, EL, Else);
922
443k
}
923
924
IfStmt *IfStmt::CreateEmpty(const ASTContext &Ctx, bool HasElse, bool HasVar,
925
4.85k
                            bool HasInit) {
926
4.85k
  void *Mem = Ctx.Allocate(
927
4.85k
      totalSizeToAlloc<Stmt *, SourceLocation>(
928
4.85k
          NumMandatoryStmtPtr + HasElse + HasVar + HasInit, HasElse),
929
4.85k
      alignof(IfStmt));
930
4.85k
  return new (Mem) IfStmt(EmptyShell(), HasElse, HasVar, HasInit);
931
4.85k
}
932
933
272k
VarDecl *IfStmt::getConditionVariable() {
934
272k
  auto *DS = getConditionVariableDeclStmt();
935
272k
  if (!DS)
936
272k
    return nullptr;
937
519
  return cast<VarDecl>(DS->getSingleDecl());
938
519
}
939
940
361
void IfStmt::setConditionVariable(const ASTContext &Ctx, VarDecl *V) {
941
361
  assert(hasVarStorage() &&
942
361
         "This if statement has no storage for a condition variable!");
943
944
361
  if (!V) {
945
0
    getTrailingObjects<Stmt *>()[varOffset()] = nullptr;
946
0
    return;
947
0
  }
948
949
361
  SourceRange VarRange = V->getSourceRange();
950
361
  getTrailingObjects<Stmt *>()[varOffset()] = new (Ctx)
951
361
      DeclStmt(DeclGroupRef(V), VarRange.getBegin(), VarRange.getEnd());
952
361
}
953
954
36.1k
bool IfStmt::isObjCAvailabilityCheck() const {
955
36.1k
  return isa<ObjCAvailabilityCheckExpr>(getCond());
956
36.1k
}
957
958
68
Optional<const Stmt*> IfStmt::getNondiscardedCase(const ASTContext &Ctx) const {
959
68
  if (!isConstexpr() || 
getCond()->isValueDependent()3
)
960
65
    return None;
961
3
  return !getCond()->EvaluateKnownConstInt(Ctx) ? 
getElse()2
:
getThen()1
;
962
3
}
963
964
ForStmt::ForStmt(const ASTContext &C, Stmt *Init, Expr *Cond, VarDecl *condVar,
965
                 Expr *Inc, Stmt *Body, SourceLocation FL, SourceLocation LP,
966
                 SourceLocation RP)
967
  : Stmt(ForStmtClass), LParenLoc(LP), RParenLoc(RP)
968
240k
{
969
240k
  SubExprs[INIT] = Init;
970
240k
  setConditionVariable(C, condVar);
971
240k
  SubExprs[COND] = Cond;
972
240k
  SubExprs[INC] = Inc;
973
240k
  SubExprs[BODY] = Body;
974
240k
  ForStmtBits.ForLoc = FL;
975
240k
}
976
977
150k
VarDecl *ForStmt::getConditionVariable() const {
978
150k
  if (!SubExprs[CONDVAR])
979
150k
    return nullptr;
980
981
135
  auto *DS = cast<DeclStmt>(SubExprs[CONDVAR]);
982
135
  return cast<VarDecl>(DS->getSingleDecl());
983
135
}
984
985
248k
void ForStmt::setConditionVariable(const ASTContext &C, VarDecl *V) {
986
248k
  if (!V) {
987
247k
    SubExprs[CONDVAR] = nullptr;
988
247k
    return;
989
247k
  }
990
991
69
  SourceRange VarRange = V->getSourceRange();
992
69
  SubExprs[CONDVAR] = new (C) DeclStmt(DeclGroupRef(V), VarRange.getBegin(),
993
69
                                       VarRange.getEnd());
994
69
}
995
996
SwitchStmt::SwitchStmt(const ASTContext &Ctx, Stmt *Init, VarDecl *Var,
997
                       Expr *Cond, SourceLocation LParenLoc,
998
                       SourceLocation RParenLoc)
999
    : Stmt(SwitchStmtClass), FirstCase(nullptr), LParenLoc(LParenLoc),
1000
6.20k
      RParenLoc(RParenLoc) {
1001
6.20k
  bool HasInit = Init != nullptr;
1002
6.20k
  bool HasVar = Var != nullptr;
1003
6.20k
  SwitchStmtBits.HasInit = HasInit;
1004
6.20k
  SwitchStmtBits.HasVar = HasVar;
1005
6.20k
  SwitchStmtBits.AllEnumCasesCovered = false;
1006
1007
6.20k
  setCond(Cond);
1008
6.20k
  setBody(nullptr);
1009
6.20k
  if (HasInit)
1010
81
    setInit(Init);
1011
6.20k
  if (HasVar)
1012
56
    setConditionVariable(Ctx, Var);
1013
1014
6.20k
  setSwitchLoc(SourceLocation{});
1015
6.20k
}
1016
1017
SwitchStmt::SwitchStmt(EmptyShell Empty, bool HasInit, bool HasVar)
1018
63
    : Stmt(SwitchStmtClass, Empty) {
1019
63
  SwitchStmtBits.HasInit = HasInit;
1020
63
  SwitchStmtBits.HasVar = HasVar;
1021
63
  SwitchStmtBits.AllEnumCasesCovered = false;
1022
63
}
1023
1024
SwitchStmt *SwitchStmt::Create(const ASTContext &Ctx, Stmt *Init, VarDecl *Var,
1025
                               Expr *Cond, SourceLocation LParenLoc,
1026
6.20k
                               SourceLocation RParenLoc) {
1027
6.20k
  bool HasInit = Init != nullptr;
1028
6.20k
  bool HasVar = Var != nullptr;
1029
6.20k
  void *Mem = Ctx.Allocate(
1030
6.20k
      totalSizeToAlloc<Stmt *>(NumMandatoryStmtPtr + HasInit + HasVar),
1031
6.20k
      alignof(SwitchStmt));
1032
6.20k
  return new (Mem) SwitchStmt(Ctx, Init, Var, Cond, LParenLoc, RParenLoc);
1033
6.20k
}
1034
1035
SwitchStmt *SwitchStmt::CreateEmpty(const ASTContext &Ctx, bool HasInit,
1036
63
                                    bool HasVar) {
1037
63
  void *Mem = Ctx.Allocate(
1038
63
      totalSizeToAlloc<Stmt *>(NumMandatoryStmtPtr + HasInit + HasVar),
1039
63
      alignof(SwitchStmt));
1040
63
  return new (Mem) SwitchStmt(EmptyShell(), HasInit, HasVar);
1041
63
}
1042
1043
7.62k
VarDecl *SwitchStmt::getConditionVariable() {
1044
7.62k
  auto *DS = getConditionVariableDeclStmt();
1045
7.62k
  if (!DS)
1046
7.48k
    return nullptr;
1047
140
  return cast<VarDecl>(DS->getSingleDecl());
1048
140
}
1049
1050
56
void SwitchStmt::setConditionVariable(const ASTContext &Ctx, VarDecl *V) {
1051
56
  assert(hasVarStorage() &&
1052
56
         "This switch statement has no storage for a condition variable!");
1053
1054
56
  if (!V) {
1055
0
    getTrailingObjects<Stmt *>()[varOffset()] = nullptr;
1056
0
    return;
1057
0
  }
1058
1059
56
  SourceRange VarRange = V->getSourceRange();
1060
56
  getTrailingObjects<Stmt *>()[varOffset()] = new (Ctx)
1061
56
      DeclStmt(DeclGroupRef(V), VarRange.getBegin(), VarRange.getEnd());
1062
56
}
1063
1064
WhileStmt::WhileStmt(const ASTContext &Ctx, VarDecl *Var, Expr *Cond,
1065
                     Stmt *Body, SourceLocation WL, SourceLocation LParenLoc,
1066
                     SourceLocation RParenLoc)
1067
42.9k
    : Stmt(WhileStmtClass) {
1068
42.9k
  bool HasVar = Var != nullptr;
1069
42.9k
  WhileStmtBits.HasVar = HasVar;
1070
1071
42.9k
  setCond(Cond);
1072
42.9k
  setBody(Body);
1073
42.9k
  if (HasVar)
1074
457
    setConditionVariable(Ctx, Var);
1075
1076
42.9k
  setWhileLoc(WL);
1077
42.9k
  setLParenLoc(LParenLoc);
1078
42.9k
  setRParenLoc(RParenLoc);
1079
42.9k
}
1080
1081
WhileStmt::WhileStmt(EmptyShell Empty, bool HasVar)
1082
412
    : Stmt(WhileStmtClass, Empty) {
1083
412
  WhileStmtBits.HasVar = HasVar;
1084
412
}
1085
1086
WhileStmt *WhileStmt::Create(const ASTContext &Ctx, VarDecl *Var, Expr *Cond,
1087
                             Stmt *Body, SourceLocation WL,
1088
                             SourceLocation LParenLoc,
1089
42.9k
                             SourceLocation RParenLoc) {
1090
42.9k
  bool HasVar = Var != nullptr;
1091
42.9k
  void *Mem =
1092
42.9k
      Ctx.Allocate(totalSizeToAlloc<Stmt *>(NumMandatoryStmtPtr + HasVar),
1093
42.9k
                   alignof(WhileStmt));
1094
42.9k
  return new (Mem) WhileStmt(Ctx, Var, Cond, Body, WL, LParenLoc, RParenLoc);
1095
42.9k
}
1096
1097
412
WhileStmt *WhileStmt::CreateEmpty(const ASTContext &Ctx, bool HasVar) {
1098
412
  void *Mem =
1099
412
      Ctx.Allocate(totalSizeToAlloc<Stmt *>(NumMandatoryStmtPtr + HasVar),
1100
412
                   alignof(WhileStmt));
1101
412
  return new (Mem) WhileStmt(EmptyShell(), HasVar);
1102
412
}
1103
1104
12.8k
VarDecl *WhileStmt::getConditionVariable() {
1105
12.8k
  auto *DS = getConditionVariableDeclStmt();
1106
12.8k
  if (!DS)
1107
12.6k
    return nullptr;
1108
147
  return cast<VarDecl>(DS->getSingleDecl());
1109
147
}
1110
1111
460
void WhileStmt::setConditionVariable(const ASTContext &Ctx, VarDecl *V) {
1112
460
  assert(hasVarStorage() &&
1113
460
         "This while statement has no storage for a condition variable!");
1114
1115
460
  if (!V) {
1116
0
    getTrailingObjects<Stmt *>()[varOffset()] = nullptr;
1117
0
    return;
1118
0
  }
1119
1120
460
  SourceRange VarRange = V->getSourceRange();
1121
460
  getTrailingObjects<Stmt *>()[varOffset()] = new (Ctx)
1122
460
      DeclStmt(DeclGroupRef(V), VarRange.getBegin(), VarRange.getEnd());
1123
460
}
1124
1125
// IndirectGotoStmt
1126
156
LabelDecl *IndirectGotoStmt::getConstantTarget() {
1127
156
  if (auto *E = dyn_cast<AddrLabelExpr>(getTarget()->IgnoreParenImpCasts()))
1128
14
    return E->getLabel();
1129
142
  return nullptr;
1130
142
}
1131
1132
// ReturnStmt
1133
ReturnStmt::ReturnStmt(SourceLocation RL, Expr *E, const VarDecl *NRVOCandidate)
1134
2.86M
    : Stmt(ReturnStmtClass), RetExpr(E) {
1135
2.86M
  bool HasNRVOCandidate = NRVOCandidate != nullptr;
1136
2.86M
  ReturnStmtBits.HasNRVOCandidate = HasNRVOCandidate;
1137
2.86M
  if (HasNRVOCandidate)
1138
45.4k
    setNRVOCandidate(NRVOCandidate);
1139
2.86M
  setReturnLoc(RL);
1140
2.86M
}
1141
1142
ReturnStmt::ReturnStmt(EmptyShell Empty, bool HasNRVOCandidate)
1143
20.6k
    : Stmt(ReturnStmtClass, Empty) {
1144
20.6k
  ReturnStmtBits.HasNRVOCandidate = HasNRVOCandidate;
1145
20.6k
}
1146
1147
ReturnStmt *ReturnStmt::Create(const ASTContext &Ctx, SourceLocation RL,
1148
2.86M
                               Expr *E, const VarDecl *NRVOCandidate) {
1149
2.86M
  bool HasNRVOCandidate = NRVOCandidate != nullptr;
1150
2.86M
  void *Mem = Ctx.Allocate(totalSizeToAlloc<const VarDecl *>(HasNRVOCandidate),
1151
2.86M
                           alignof(ReturnStmt));
1152
2.86M
  return new (Mem) ReturnStmt(RL, E, NRVOCandidate);
1153
2.86M
}
1154
1155
ReturnStmt *ReturnStmt::CreateEmpty(const ASTContext &Ctx,
1156
20.6k
                                    bool HasNRVOCandidate) {
1157
20.6k
  void *Mem = Ctx.Allocate(totalSizeToAlloc<const VarDecl *>(HasNRVOCandidate),
1158
20.6k
                           alignof(ReturnStmt));
1159
20.6k
  return new (Mem) ReturnStmt(EmptyShell(), HasNRVOCandidate);
1160
20.6k
}
1161
1162
// CaseStmt
1163
CaseStmt *CaseStmt::Create(const ASTContext &Ctx, Expr *lhs, Expr *rhs,
1164
                           SourceLocation caseLoc, SourceLocation ellipsisLoc,
1165
22.1k
                           SourceLocation colonLoc) {
1166
22.1k
  bool CaseStmtIsGNURange = rhs != nullptr;
1167
22.1k
  void *Mem = Ctx.Allocate(
1168
22.1k
      totalSizeToAlloc<Stmt *, SourceLocation>(
1169
22.1k
          NumMandatoryStmtPtr + CaseStmtIsGNURange, CaseStmtIsGNURange),
1170
22.1k
      alignof(CaseStmt));
1171
22.1k
  return new (Mem) CaseStmt(lhs, rhs, caseLoc, ellipsisLoc, colonLoc);
1172
22.1k
}
1173
1174
CaseStmt *CaseStmt::CreateEmpty(const ASTContext &Ctx,
1175
255
                                bool CaseStmtIsGNURange) {
1176
255
  void *Mem = Ctx.Allocate(
1177
255
      totalSizeToAlloc<Stmt *, SourceLocation>(
1178
255
          NumMandatoryStmtPtr + CaseStmtIsGNURange, CaseStmtIsGNURange),
1179
255
      alignof(CaseStmt));
1180
255
  return new (Mem) CaseStmt(EmptyShell(), CaseStmtIsGNURange);
1181
255
}
1182
1183
SEHTryStmt::SEHTryStmt(bool IsCXXTry, SourceLocation TryLoc, Stmt *TryBlock,
1184
                       Stmt *Handler)
1185
267
    : Stmt(SEHTryStmtClass), IsCXXTry(IsCXXTry), TryLoc(TryLoc) {
1186
267
  Children[TRY]     = TryBlock;
1187
267
  Children[HANDLER] = Handler;
1188
267
}
1189
1190
SEHTryStmt* SEHTryStmt::Create(const ASTContext &C, bool IsCXXTry,
1191
                               SourceLocation TryLoc, Stmt *TryBlock,
1192
267
                               Stmt *Handler) {
1193
267
  return new(C) SEHTryStmt(IsCXXTry,TryLoc,TryBlock,Handler);
1194
267
}
1195
1196
226
SEHExceptStmt* SEHTryStmt::getExceptHandler() const {
1197
226
  return dyn_cast<SEHExceptStmt>(getHandler());
1198
226
}
1199
1200
376
SEHFinallyStmt* SEHTryStmt::getFinallyHandler() const {
1201
376
  return dyn_cast<SEHFinallyStmt>(getHandler());
1202
376
}
1203
1204
SEHExceptStmt::SEHExceptStmt(SourceLocation Loc, Expr *FilterExpr, Stmt *Block)
1205
124
    : Stmt(SEHExceptStmtClass), Loc(Loc) {
1206
124
  Children[FILTER_EXPR] = FilterExpr;
1207
124
  Children[BLOCK]       = Block;
1208
124
}
1209
1210
SEHExceptStmt* SEHExceptStmt::Create(const ASTContext &C, SourceLocation Loc,
1211
124
                                     Expr *FilterExpr, Stmt *Block) {
1212
124
  return new(C) SEHExceptStmt(Loc,FilterExpr,Block);
1213
124
}
1214
1215
SEHFinallyStmt::SEHFinallyStmt(SourceLocation Loc, Stmt *Block)
1216
143
    : Stmt(SEHFinallyStmtClass), Loc(Loc), Block(Block) {}
1217
1218
SEHFinallyStmt* SEHFinallyStmt::Create(const ASTContext &C, SourceLocation Loc,
1219
143
                                       Stmt *Block) {
1220
143
  return new(C)SEHFinallyStmt(Loc,Block);
1221
143
}
1222
1223
CapturedStmt::Capture::Capture(SourceLocation Loc, VariableCaptureKind Kind,
1224
                               VarDecl *Var)
1225
382k
    : VarAndKind(Var, Kind), Loc(Loc) {
1226
382k
  switch (Kind) {
1227
10.3k
  case VCK_This:
1228
10.3k
    assert(!Var && "'this' capture cannot have a variable!");
1229
10.3k
    break;
1230
181k
  case VCK_ByRef:
1231
181k
    assert(Var && "capturing by reference must have a variable!");
1232
181k
    break;
1233
181k
  case VCK_ByCopy:
1234
181k
    assert(Var && "capturing by copy must have a variable!");
1235
181k
    assert(
1236
181k
        (Var->getType()->isScalarType() || (Var->getType()->isReferenceType() &&
1237
181k
                                            Var->getType()
1238
181k
                                                ->castAs<ReferenceType>()
1239
181k
                                                ->getPointeeType()
1240
181k
                                                ->isScalarType())) &&
1241
181k
        "captures by copy are expected to have a scalar type!");
1242
181k
    break;
1243
8.77k
  case VCK_VLAType:
1244
8.77k
    assert(!Var &&
1245
8.77k
           "Variable-length array type capture cannot have a variable!");
1246
8.77k
    break;
1247
382k
  }
1248
382k
}
1249
1250
CapturedStmt::VariableCaptureKind
1251
4.13M
CapturedStmt::Capture::getCaptureKind() const {
1252
4.13M
  return VarAndKind.getInt();
1253
4.13M
}
1254
1255
1.36M
VarDecl *CapturedStmt::Capture::getCapturedVar() const {
1256
1.36M
  assert((capturesVariable() || capturesVariableByCopy()) &&
1257
1.36M
         "No variable available for 'this' or VAT capture");
1258
1.36M
  return VarAndKind.getPointer();
1259
1.36M
}
1260
1261
2.85M
CapturedStmt::Capture *CapturedStmt::getStoredCaptures() const {
1262
2.85M
  unsigned Size = sizeof(CapturedStmt) + sizeof(Stmt *) * (NumCaptures + 1);
1263
1264
  // Offset of the first Capture object.
1265
2.85M
  unsigned FirstCaptureOffset = llvm::alignTo(Size, alignof(Capture));
1266
1267
2.85M
  return reinterpret_cast<Capture *>(
1268
2.85M
      reinterpret_cast<char *>(const_cast<CapturedStmt *>(this))
1269
2.85M
      + FirstCaptureOffset);
1270
2.85M
}
1271
1272
CapturedStmt::CapturedStmt(Stmt *S, CapturedRegionKind Kind,
1273
                           ArrayRef<Capture> Captures,
1274
                           ArrayRef<Expr *> CaptureInits,
1275
                           CapturedDecl *CD,
1276
                           RecordDecl *RD)
1277
  : Stmt(CapturedStmtClass), NumCaptures(Captures.size()),
1278
531k
    CapDeclAndKind(CD, Kind), TheRecordDecl(RD) {
1279
531k
  assert( S && "null captured statement");
1280
531k
  assert(CD && "null captured declaration for captured statement");
1281
531k
  assert(RD && "null record declaration for captured statement");
1282
1283
  // Copy initialization expressions.
1284
531k
  Stmt **Stored = getStoredStmts();
1285
914k
  for (unsigned I = 0, N = NumCaptures; I != N; 
++I382k
)
1286
382k
    *Stored++ = CaptureInits[I];
1287
1288
  // Copy the statement being captured.
1289
531k
  *Stored = S;
1290
1291
  // Copy all Capture objects.
1292
531k
  Capture *Buffer = getStoredCaptures();
1293
531k
  std::copy(Captures.begin(), Captures.end(), Buffer);
1294
531k
}
1295
1296
CapturedStmt::CapturedStmt(EmptyShell Empty, unsigned NumCaptures)
1297
  : Stmt(CapturedStmtClass, Empty), NumCaptures(NumCaptures),
1298
29.4k
    CapDeclAndKind(nullptr, CR_Default) {
1299
29.4k
  getStoredStmts()[NumCaptures] = nullptr;
1300
29.4k
}
1301
1302
CapturedStmt *CapturedStmt::Create(const ASTContext &Context, Stmt *S,
1303
                                   CapturedRegionKind Kind,
1304
                                   ArrayRef<Capture> Captures,
1305
                                   ArrayRef<Expr *> CaptureInits,
1306
                                   CapturedDecl *CD,
1307
531k
                                   RecordDecl *RD) {
1308
  // The layout is
1309
  //
1310
  // -----------------------------------------------------------
1311
  // | CapturedStmt, Init, ..., Init, S, Capture, ..., Capture |
1312
  // ----------------^-------------------^----------------------
1313
  //                 getStoredStmts()    getStoredCaptures()
1314
  //
1315
  // where S is the statement being captured.
1316
  //
1317
531k
  assert(CaptureInits.size() == Captures.size() && "wrong number of arguments");
1318
1319
531k
  unsigned Size = sizeof(CapturedStmt) + sizeof(Stmt *) * (Captures.size() + 1);
1320
531k
  if (!Captures.empty()) {
1321
    // Realign for the following Capture array.
1322
231k
    Size = llvm::alignTo(Size, alignof(Capture));
1323
231k
    Size += sizeof(Capture) * Captures.size();
1324
231k
  }
1325
1326
531k
  void *Mem = Context.Allocate(Size);
1327
531k
  return new (Mem) CapturedStmt(S, Kind, Captures, CaptureInits, CD, RD);
1328
531k
}
1329
1330
CapturedStmt *CapturedStmt::CreateDeserialized(const ASTContext &Context,
1331
29.4k
                                               unsigned NumCaptures) {
1332
29.4k
  unsigned Size = sizeof(CapturedStmt) + sizeof(Stmt *) * (NumCaptures + 1);
1333
29.4k
  if (NumCaptures > 0) {
1334
    // Realign for the following Capture array.
1335
17.2k
    Size = llvm::alignTo(Size, alignof(Capture));
1336
17.2k
    Size += sizeof(Capture) * NumCaptures;
1337
17.2k
  }
1338
1339
29.4k
  void *Mem = Context.Allocate(Size);
1340
29.4k
  return new (Mem) CapturedStmt(EmptyShell(), NumCaptures);
1341
29.4k
}
1342
1343
283k
Stmt::child_range CapturedStmt::children() {
1344
  // Children are captured field initializers.
1345
283k
  return child_range(getStoredStmts(), getStoredStmts() + NumCaptures);
1346
283k
}
1347
1348
0
Stmt::const_child_range CapturedStmt::children() const {
1349
0
  return const_child_range(getStoredStmts(), getStoredStmts() + NumCaptures);
1350
0
}
1351
1352
795k
CapturedDecl *CapturedStmt::getCapturedDecl() {
1353
795k
  return CapDeclAndKind.getPointer();
1354
795k
}
1355
1356
58.9k
const CapturedDecl *CapturedStmt::getCapturedDecl() const {
1357
58.9k
  return CapDeclAndKind.getPointer();
1358
58.9k
}
1359
1360
/// Set the outlined function declaration.
1361
29.4k
void CapturedStmt::setCapturedDecl(CapturedDecl *D) {
1362
29.4k
  assert(D && "null CapturedDecl");
1363
29.4k
  CapDeclAndKind.setPointer(D);
1364
29.4k
}
1365
1366
/// Retrieve the captured region kind.
1367
30.2k
CapturedRegionKind CapturedStmt::getCapturedRegionKind() const {
1368
30.2k
  return CapDeclAndKind.getInt();
1369
30.2k
}
1370
1371
/// Set the captured region kind.
1372
29.4k
void CapturedStmt::setCapturedRegionKind(CapturedRegionKind Kind) {
1373
29.4k
  CapDeclAndKind.setInt(Kind);
1374
29.4k
}
1375
1376
657k
bool CapturedStmt::capturesVariable(const VarDecl *Var) const {
1377
907k
  for (const auto &I : captures()) {
1378
907k
    if (!I.capturesVariable() && 
!I.capturesVariableByCopy()306k
)
1379
23.3k
      continue;
1380
883k
    if (I.getCapturedVar()->getCanonicalDecl() == Var->getCanonicalDecl())
1381
385k
      return true;
1382
883k
  }
1383
1384
271k
  return false;
1385
657k
}